Singular Thinker – Telegram
Singular Thinker
948 subscribers
405 photos
17 videos
5 files
250 links
We talk about things that find them interesting.
توی این کانال از مطالبی که برامون جذاب باشه حرف
میزنیم، یا مطالب جذاب بقیه رو نشر می‌دیم.
Contact/راه ارتباطی:
@Singular_Thinker
Download Telegram
Singular Thinker
حالا چرا این بحثش برام جالب بود چون که اخیرا دوباره تو یک سری از کانال‌های خبری و حتی کانال‌های هوش مصنوعی خبرهایی از این دست که کوت کردم می‌دیدم یا مثلا این خبر از euronews با این تیتر که "هوش مصنوعی گوگل یک کاربر را به مرگ تهدید کرد؛ «تو لکه ننگ این جهانی،…
هر ایرانی، هر جا که هست یک قدم از استفاده از کلمه "هوش مصنوعی" فاصله بگیره | یادگیری آماری به عنوان رویکرد کلی حل مسئله

چرا اینو میگم؟ بخاطر اینکه هوش مصنوعی اسم یه زمینه تحقیقاتیه که از 1950 توسط Alan Turing و Marvin Minsky و این آدما شروع شده و زمینه‌های خیلی مختلف و متفاوتی داره. در واقع یه چتر بزرگیه که کلی زیربخش‌های دیگه رو تو خودش جا داده و رویکردهای مختلفی هم برای ساختن این هوش مصنوعی که توانایی‌های انسان‌گونه داشته باشه بوده و هست.

مثلا میتونیم به یکی از این رویکردها به اسم GOFAI اشاره کنیم که سرواژه‌های Good old fashioned AI عه و در واقع سعی میکردن به صورت Symbolic هوش انسانی رو مدلسازی بکنن و در مقابل ایده‌هایی مثل شبکه عصبی قرار میگیره.

من خیلی تاریخ هوش مصنوعی رو خودم مسلط نیستم و نمیخوام که الان تو این پیام توضیح بدم ولی اگه یه کتاب مرجع بخوایم بگیم میتونیم به کتاب Stuart Russell اشاره کنیم و بریم ببینیم که دقیقا هوش مصنوعی شامل چه چیزهایی میشه و اصن از کجا شروع شد و ...

اینا به کنار شاخه‌ای از این چتر بزرگ هوش مصنوعی وجود داره که تحت عنوان یادگیری ماشین یا یادگیری آماری ازش یاد میشه که در واقع یادگیری بر پایه‌ی داده یا همون نمونه هست. امروزه اساسا چیزهایی که ما معمولا بهشون میگیم هوش مصنوعی مربوط به این دسته از روش‌ها هستن.

حالا کل این جریان یادگیری آماری به نظر من مثل یه ابزار کلی برای حل مسئله است مثلا میشه به عنوان یه راه سومی از روش‌های حل مسئله مورد استفاده در علوم بهش نگاه کرد.

یعنی چی؟ یعنی تو علم ما میاییم به جهان اطراف نگاه میکنیم و سعی میکنیم بر اساس فیزیک و ریاضی یک سری معادله بنویسیم که بتونه رفتار پدیده‌ها رو در یک سطح انتزاعی توضیح بده و بعد سعی میکنیم که این معادلات رو حل کنیم و براشون جواب پیدا کنیم.

معمولا ابتدا سعی میکنیم که بتونیم با ابزار ریاضی مسئله رو به طور دقیق حلش بکنیم و به اصطلاح حل تحلیلی برای مسئله پیدا کنیم. اگه بتونیم مسائل رو به صورت تحلیلی حل کنیم که خیلی عالیه چون خیلی دقیقه. اما خیلی وقتا نمیتونیم مثلا نمیتونیم انتگرال‌ها رو حساب بکنیم یا معادله دیفرانسیل ها رو جوابشو پیدا کنیم.

پس چه کنیم؟ حالا روش دوم استفاده از روش‌های محاسبات عددیه. اینطوریه که سعی میکنیم که کمی مسئله رو برای تیکه‌های کوچیک و با کمی فرض‌های ساده سازی حل بکنیم و سعی کنیم مسئله اصلی رو به صورت مجموعی از این مسئله‌های ساده‌تر در نظر بگیریم و به اصطلاح تقریب بزنیم.

حالا من میگم یه شق سومی هم هست. این که آقا بر حسب نمونه‌ها یا همون داده‌ها از مسئله که علاقه‌مندیم حلش کنیم جمع کردیم. سعی بکنیم که یه سری الگو(تابع) یاد بگیریم و این تابع رو به صورت یک بروآدگر آماری فرموله میکنیم. در واقع این بار به جای تقریب مسئله رو برآورد میکنیم. نمونه‌های قدیمی‌اش هم مثل مثلا اسپم دیتکشن برای ایمیل و الان هم که دیگه همه خودتون استادین و بهتر از من میدونید که کجاها میشه ازش استفاده کرد.

برای همین این جور ویدئوهای مثل پست قبلی یا این که میشنویم تیتر میزنن که هوش مصنوعی گفت که ۷۰ درصد شغل‌ها در ۵ ساله آینده از بین میرن و یا اینکه هوش مصنوعی گفت که نسل انسان رو میخواد منقرض کنه خیلی کله آدمو عصبی میکنه. چون هوش مصنوعی که یه شخص نیست بلکه یه اسم برای یه زمینه تحقیقاتی که شامل کلی زیربخشه. لطفا انسان‌پنداری‌اش هم نکنید حداقل فعلا. کلا به نظرم اصلا ازین کلمه استفاده نکنیم چه کاریه.

و این قضیه همونقدر به قول مهبد مسخره است اینکه ما بگیم هوش مصنوعی گفتش که مثلا من میخوام انسان‌ها رو بکشم که مثل این میمونه که اگه یک اکانتی تو اینستاگرام استوری گذاشت که برو بمیر بگیم که اینترنت گفت که برو بمیر. واقعا عین به عین همینه. چت جی پی تی مثل اینستاگرامه و هوش مصنوعی مثل اینترنت.

خلاصه که خواهشا هر کسی هر جا که هست، یک قدم از استفاده از کلمه هوش مصنوعی فاصله بگیره.
#note
@SingularThinker
👍115🔥1
مدلسازی زبان - قسمت پنجم

خب من بعد از یه وقفه‌ی طولانی برگشتم. قبل از هر توضیح اضافه‌ای بذارید بگم که کجا بودیم و اصلا میخواستیم چیکار کنیم. ما میخواستیم یه مدلسازی از زبان بکنیم به این صورت که اگه به ما یه جمله دادن ما بتونیم بگیم که کلمه‌ی بعدی احتمالا چی باید باشه. بعد دیدیم اولین ایده‌ای که به ذهن میرسه اینه که بریم تو مجموعه دادگان‌مون نگاه کنیم که بعد از این جمله چه کلماتی اومده و هر کدوم چندبار تکرار شدن و به نسبت این تکرار احتمال هر کلمه رو حساب میکنیم.

تو قسمت دوم دو تا مشکل خیلی اساسی این روشو گفتیم و بعد رفتیم دست به دامن شبکه های عصبی شدیم و دیدیم بر خلاف عکس و غیره اگه از ما بپرسن تو این جمله منظور از فلان ضمیر چیه ما اطلاعات کافی رو صرفا از خود این کلمه نمیتونیم بکشیم بیرون و باید کلمات و یا جملات قبلی رو هم در نظر بگیریم. اینجاست که میفهمیم به نوعی از شبکه عصبی احتیاج داریم که بتونه ترتیب رو متوجه بشه و رفتیم سراغ شبکه عصبی بازگشتی یا همون RNNها. بعد اومدیم اسم این اطلاعاتی که از کلمه های قبلی به بعدی منتقل میکنیم رو گذاشتیم hidden state یا memory state. بعد دیدیم مدلهای اولیه RNNها از کوتاهی حافظه رنج میبرن :)) و مثه ماهی گلی میمونن. بعد مدلهای LSTM اومدن که این مشکل حافظه رو حل بکنن.

اما این شبکه‌ها هم نتونستن به طور کامل مشکل به خاطر سپردن وابستگی‌های دور از هم رو حل بکنن. مثلا شما فرض کنید که تو دو جمله قبلی یه چیزی گفتید بعد الان با یه ضمیر دارید به اون اشاره می‌کنید این مدل مادر مرده باید تو بردار memory تونسته باشه اون مفهوم دو خط پیش رو نگه داره. از طرف دیگه این مدل‌ها نسبت به ترنسفورمر کمتر قابلیت موازی‌سازی محاسبات رو داره و از نظر مصرف میزان حافظه رو هم داره واسه همین وقتی مقاله ترنسفورمر تو سال ۲۰۱۷ اومد ترکوند.

خب آنچه در قسمت قبلی دیدید این بود که شبکه عصبی ترنسفورمر شامل چهار بخش کلی Embedding, Encoding, Decoding, Unembedding میشه. تو قسمت قبلی صرفا رو بخش اول تمرکز کردیم اینکه چطوری یه جمله شامل چندین کلمه رو میشه به بردارهایی تبدیل کرد که معنا رو کدگذاری میکنن و امیدوارم که این مفهومش جا افتاده باشه و این به خودی خود به نظرم خیلی مفهوم جالب و قشنگیه.

پیپر attention is all you need که تو سال ۲۰۱۷ اومد به نظرم یه شاهکار در زمینه مهندسیه چون به شکل خیلی هنرمندانه اومده کلی از ایده هایی که قبلا توسط بقیه معرفی شده بود رو به زیبایی در کنار هم قرار داده و جزو مقالات دارای پرشمارترین ارجاع هاست.

همچنین گفتم که :
بخش Encoder و Decoder خودشون از دو بخش اصلی تشکیل شده که به ترتیب Multi-Head Attention و MLP یا feed-forward NN هست.
حالا الان تمرکزمون رو بذاریم رو Multi-Head Attention و اصن Multi-Head اش رو هم بیخیال صرفا خود مکانیزم Attention. مکانیزم Attention چیه و اصن به چه دردی میخوره؟

اگه یادتون باشه تو بخش embedding ما هر token رو به صورت مجزا در نظر گرفتیم و تبدیلش کردیم به بردار و سعی کردیم معنا رو تو اون بردار کد کنیم. ولی دیدید میگن خب context هم مهمه واسه فهمیدن معنا یه جمله یا حتی یه کلمه اینجاست که بحث توجه میاد وسط به قول اون شعر معروف:

کار پاکان را قیاس از خود مگیر
گرچه باشد در نبشتن شیر شیر
آن یکی شیر است اندر بادیه
و آن دگر شیر است اندر بادیه
آن یکی شیر است که آدم می خورد
و آن دگر شیر است که آدم می خورد
حالا ما از کجا بفهمیم شیر که تو جمله میاد یعنی چی؟ باید ببینیم خب قبلش یا بعدش چی اومده و context یا همون بافتار این کلمه چیه. خب از کجا بدونیم به کجا باید «توجه» کنیم خب اونجاست که این مکانیزم کمک ما میکنه تا بتونیم بردار متناظر با هر token رو با استفاده از اطلاعات تو جمله بهبود ببخشیم. اما مکانیزم attention چطوری این کارو انجام میده؟
جواب به این سوال خیلی ظرافت داره. جواب خیلی کلی اینه که باید اون embedding خیلی خامی رو که داشتیم بروز بکنیم و از اطلاعات کلمه هایی که قبل و بعد هست استفاده کنیم حالا به بعضی از کلمه ها وزن بیشتری بدیم و به برخی دیگه وزن کمتر. سختیش کجاست اینکه دقیقا این وزنها و این به روزرسانی ها چطور انجام میشه و فرمولش چیه؟ اینجاییه که خیلی از آدما که تو فیلد کار میکنن نمیفهممن که چرا دقیقا این طوری حساب میکنیم. ازونجا که حس میکنم خیلی زبون درازی کردم و خیلی وقت نبودم این متن رو همین جا تمومش میکنم. باقی بقایتان.

ایشالا پنچ شنبه همین جمع (بزرگتر حتی) همینجا بریم برای قسمت ششم. پس تا بعد خرد یارتون🧠👋
#notes #language_modeling
@SingularThinker
🔥4💅1
If you know me, you know which one is my favourite #meme. Any guess? No it is not that one.
اول هفته تو با میم شروع کن هموطن :)) برای هموطنای خارج از کشور هم اول آخر هفته رو با میم شروع کنن.
@SingularThinker
6🔥2💅1
مدلسازی زبان - قسمت ششم

همین اولش بگم این قسمت ازوناست که اگه نیبینی هم خیلی چیزی رو از دست نمیدی. پس اگه حال و حوصله نداری یا بعدا بخون یا بزن قسمت بعدی چون تو این قسمت میخوایم ببینیم داخل این مکانیزم attention چه شکلیه؟

با ذکر این نکته که این تنها حالت ساختن این مکانیزم نیست و اساسا خود نویسنده‌های مقاله تو گوگل خودشون این مفهوم رو از پژوهش‌های قبلی الهام گرفته بودن ایشالا تو قسمتای اینده بیشتر در مورد تاریخش حرف میزنیم.

خب تا اینجا رو اومده بودیم که embedding درسته سعی میکنه معنای هر توکن رو تو یه بردار کدگذاری کنه ولی «این درد مشترک هرگز جدا جدا درمان نمی شود.» یعنی شما باید به کلمات قبل و بعد هم نگاه کنی تا بتونی دقیقا مفهوم اصلی هر کلمه/توکن رو بفهمی پس میایم با مکانیزم attention این بردار embedding برای هر کلمه رو بروزرسانی میکنیم. حالا بیاید یه مرحله بریم جلوتر و ببنیم چطوری این کارو انجام میدیم؟

خب بیاید تصور کنید که بردار E_i بردار embedding توکن iام در جمله باشه و شما میخواید اینو با استفاده از سایر کلمات بروزش بکنید. ساده ترین کار چیه؟ این که یه ترکیب خطی از سایر embeddingها رو با هم جمع کنیم.
E'_i = E_i + ΔE_i
ΔE_i = Sum(j=1 to n) {a_ji* E_j}

خب این خوبه ولی ممکنه یه سوال بکنه بگه که خب الان هر کدوم از این جهتا قبلا یه معنی خاصی داشت همین طوری ما زرتی اینا رو با هم جمع کنیم اینا که با هم قاطی میشه اینجاست که میگم که حق با شماست. پس بیایم چیکار کنیم بیایم اول با یه نگاشت خطی از فضای embedding بریم یه فضای دیگه و بعد همون قبلی رو بریم یعنی چی؟
V_j = W_v * E_j
ΔE_i = Sum(j=1 to n) {a_ji * V_j}

حالا این W_v رو از کجا میاریم هیچی دیگه اینم یه چیز رندومی میذاریم و در طی فرایند آموزش یادش میگیریم. خب حالا شاید بپرسید که این a_jiها رو چیکار کنیم؟ اینا چین اصن اینا وزن‌های ترکیب خطی‌ان که هر چی بزرگتر باشن تاثیر V_j مربوطه بیشتر میشه پس در واقع بیشتر به توکن jام توجه میکنیم. در واقع باید از یه تابع کرنل استفاده کنیم که شباهت بین بردار iام و jام رو بسنجه مثلا:
a_ji = k(E_i, E_j) / Sum(j=1 to n) {k(E_i, E_j)}

خب حالا این تابع کرنل که مقاله معروف استفاده کرده به چه صورته؟(آماده ای طاقتشو داری؟)
Q_i = W_q * E_i
K_j = W_k * E_j
a_ji = Softmax(Q_i * K_1, Q_i * K_2, ... , Q_i * K_n)

یعنی چی اصن اینا؟ والا سوال خوبیه. این Wها رو که مثل قبل باید یاد بگیریم. softmax هم که اگه معرف حضورتون نیست از بین n تا عدد میگه کدوم احتمالا ماکزیممه (بهترین از این نتانم توضیحش بدم فرمولشو خودت ببین)

حالا چرا سه تا بردار درست کردیم Q, K, V والا ندانم اینم. ولی بیا بگم چرا بهشون میگیم Q, K, V؟
کاری که ما فک میکنیم این جا داره اتفاق میفته این طوریه که فرض کن یه جمله داریم مثل: «در جنگل یک شیر درنده را دیدم». حالا میخوای بدونیم این شیر کدوم شیره؟

هر کدوم از کلمه ها رو embeddingشون رو پیدا میکنیم و بعد میایم متناسب با وزن ها Q,K, V رو هم حساب میکنیم. Q شروع کلمه query عه یعنی انگار این بردار Q یه سوالی رو کدگذاری کرده . مثلا Q مرتبط با کلمه شیر(Q_4) این رو کد کرده که آیا بعد از من صفتی اومده که من رو توصیف کنه؟ K شروع کلمه Key و انگار این بردار داره جواب یه سوال خاصی رو کد میکنه. مثلا این طور که آیا من دارم کلمه قبل از خودم رو توصیف میکنم؟

حالا اتفاقی که میفته اینه که وقتی Qمرتبط با کلمه شیر رو در تک تک Kها ضرب میکنیم چون Q_4 با بردار K_5 در یک جهت هستن پس وقتی مفهوم کدگذاری شده برای کلمه شیر رو بروزرسانی بکنیم به کلمه «درنده» بیشتر توجه میکنیم و V_5 تاثیر زیادی رو ما میذاره؟

حالا این مکانیزم توجه برای کلمه شیر بود. مثلا کلمه درنده حالا میتونه دقیقا سوال برعکسی رو بپرسه بگه آیا قبل من اسمی وجود داره که من توصیفش کنم؟

حالا همه اینا تازه میشه یه head از این مکانیزم attention. توی هر مرحله میتونیم به ازای هر کلمه چندین بار سوال بپرسیم مثلا کلمه شیر بار بعدی میتونه بپرسه آیا قبل یا بعد من کلمه ای هست که مرتبط باشه با مفهوم طبیعیت و حیات وحش؟ حالا این بار وزن مرتبط با جنگل زیاد میشه و به اون توجه میکنه. خب پس این میشه Multi-Head attention mechanism.

خب حالا شاید سوال پیش بیاد مثلا مدلای مرسوم چند تا Head دارن؟ به قول یه بنده خدایی دارای صدها head. مثلا مدل GPT3 از ۹۶تا Head استفاده میکرد
و قسمت جذابش اینجاست که این ۹۶ تا به طور موازی انجام میشه و یهو برای همه iها هم انجام میشه من اینجا برای سادگی فقط برای یه دونه توضیح دادم. پس
E'_i = E_i + ΔE_i(1) + ΔE_i(2) + ... + ΔE_i(96)

#language_modeling #note
@SingularThinker
🔥31👍1
Singular Thinker
مدلسازی زبان - قسمت ششم همین اولش بگم این قسمت ازوناست که اگه نیبینی هم خیلی چیزی رو از دست نمیدی. پس اگه حال و حوصله نداری یا بعدا بخون یا بزن قسمت بعدی چون تو این قسمت میخوایم ببینیم داخل این مکانیزم attention چه شکلیه؟ با ذکر این نکته که این تنها حالت…
خب اگه متوجه نشدید که چی شده احتمالا تقصیر من و بخشی محدودیت انتقال محتوا از طریق متن باشه ولی اگه مشتاقید میتونید از من بپرسید و یا این ویدیو بسیار زیبا رو ببینید. ولی حالا آخرش شاید بپرسیم که حالا این GPT چطوری میتونه جمله «رییس جمهور آمریکا در سالم ۲۰۲۱ آقای ...» رو درست کامل کنه؟ این اطلاعات که اصن تو جمله‌ها نبوده که سوال خوبیه ولی با همراه باشید و برخلاف عنوان مقاله attention is 1/3 of all you need :>

پ.ن: برابرهای فارسی embedding خیلی عجیبه مثلا «جاسازی» «تعبیه» «نهفته سازی» و شاید بهترینشون «درون سپاری» باشه.

پ‌ن۲: سربسته بگم این یکی از سخت‌ترین چیزایی بود که توضیح دادم چطور شد؟

#language_modeling #note
@SingularThinker
🔥3👎1
با #meme‌ های متفاوت اومدم این سری :)))
@SingularThinker
💅8🔥51