از متن تا احتمال: مسیر داخل مدل
جواب کوتاه
داخل یه مدل زبانی، متن چهار مرحله رو طی میکنه. اول تکهتکه میشه و هر تکه یه شماره میگیره. بعد هر شماره از یه جدول یه بردار میگیره و جاش توی جمله بهش اضافه میشه. بعد بردارها از دهها بلوک پشت سر هم رد میشن؛ هر بلوک یه بخش «توجه» داره که بردارها با هم حرف میزنن، و یه شبکهی کوچیک که هر بردار تنها روش فکر میکنه. آخر سر، بردار آخرین تکه برای هر تکهی واژهنامه یه امتیاز میسازه، و سافتمکس این امتیازها رو احتمال میکنه.
سفر یه جمله
بیاید یه جمله بدیم به یه مدل زبانی و دنبالش کنیم ببینیم از کجاها رد میشه، تا آخرش یه کلمه بیرون بیاد.
جملهی ما «امروز صبح یه لیوان» هست، و مدل باید حدس بزنه تکهی بعد چیه. توی درس پیشبینی تکهی بعد دیدیم تمام کار مدل همینه. حالا میخوایم ببینیم داخلش چه اتفاقی میافته.
این درس فقط نقشهست. هر ایستگاهش یه درس کامل جدا داره، که پیوندش رو همونجا گذاشتیم. اگه یه بار کل مسیر رو ببینید، هر درس بعدی رو راحتتر سر جاش میذارید.
ورود: از کلمه تا بردار
مدل فقط با عدد کار میکنه، پس اول باید متن عدد بشه. این دو قدم داره:
قدم اول، تکه و شماره. متن با توکنسازی تکهتکه میشه. هر تکه توی واژهنامهی مدل یه شمارهی ثابت داره، مثل شمارهی صفحه توی یه فرهنگ لغت. حالا جملهی ما یه ردیف شمارهست.
قدم دوم، بردار. مدل یه جدول بزرگ داره که برای هر شماره یه ردیف عدد نگه میداره؛ همون امبدینگ. هر شماره ردیف خودش رو برمیداره و میشه یه بردار. بعد یه چیز دیگه هم بهش اضافه میشه: اینکه این تکه کجای جملهست، اول، دوم یا سوم. چرا؟ چون بخش بعدی مدل بهتنهایی ترتیب رو نمیبینه، و «سگ گربه رو گاز گرفت» با «گربه سگ رو گاز گرفت» خیلی فرق داره.
داخل یه بلوک
حالا بردارها وارد اصل کار میشن: یه سری بلوک که پشت سر هم چیده شدن. همهی بلوکها یه شکل دارن. داخل هر کدوم دو تا بخش هست:
بخش اول، توجه. اینجا بردارها با هم حرف میزنن. هر بردار نگاه میکنه کدوم بردارهای دیگه براش مهمان و از اونها چیزی برمیداره. همون کاری که توی درس امبدینگ وابسته به جمله دیدیم: «شیر» از «آب» میفهمه که شیر آبه. جزئیاتش توی درس مکانیزم توجه هست.
بخش دوم، شبکهی کوچیک. بعد از توجه، هر بردار تنهایی از یه شبکهی عصبی کوچیک دولایه رد میشه. اینجا دیگه بردارها با هم حرف نمیزنن؛ هر کدوم جدا پردازش میشه. اگه توجه رو «جمع کردن اطلاعات از بقیه» فرض کنیم، این بخش «فکر کردن روی اون اطلاعات»ـه.
راه کناری. یه ترفند مهم هم هست: خروجی هر بخش، به ورودی همون بخش اضافه میشه، نه اینکه جاش رو بگیره. مثل اینکه روی یه برگه یادداشت اضافه کنید، نه اینکه برگه رو عوض کنید. اینطوری چیزی که از قبل بوده گم نمیشه، و آموزش مدل هم پایدارتر میمونه.
چند تا بلوک
این بلوکها، که بهشون لایه هم میگن، چند بار پشت هم تکرار میشن. چند بار؟ بستگی به مدل داره:
اولین ترنسفورمر، سال ۲۰۱۷، ۶ لایه داشت و هر بردارش ۵۱۲ عدد. یه خانوادهی مدل که سال ۲۰۲۰ معرفی شد، از ۱۲ لایه با بردار ۷۶۸ عددی شروع میشد و بزرگترینش ۹۶ لایه داشت با بردار ۱۲۲۸۸ عددی. یعنی هر تکهی متن، ۹۶ بار پشت هم از توجه و شبکهی کوچیک رد میشد.
همهی این لایهها پر از عددهاییان که موقع آموزش تنظیم شدن. به این عددها میگن پارامتر؛ اون مدل بزرگ ۱۷۵ میلیارد تا داشت. درس پارامتر چیست نشون میده این عددها چیان و کجای مدل نشستن.
عددها کجان
گفتیم مدلها میلیاردها پارامتر دارن. اینهمه عدد دقیقا کجای این مسیرن؟
بیشترشون توی بلوکهان. یه پژوهش ۲۰۲۰ حساب کرد هر بلوک حدود ۱۲ ضرب در مجذور اندازهی بردار (d) عدد داره: حدود ۴ سهمش مال توجهه و حدود ۸ سهمش مال شبکهی کوچیک. یعنی دو سوم عددها توی همون بخشیه که «فکر کردن روی اطلاعات» صداش زدیم. حالا حساب کنیم: مدل مشهور ۲۰۲۰، ۹۶ بلوک داشت و بردارهاش ۱۲٬۲۸۸ عدد؛ ۹۶ ضرب در ۱۲ ضرب در مجذور ۱۲٬۲۸۸ میشه حدود ۱۷۴ میلیارد. جدول کلمهها هم حدود ۰٫۶ میلیارد اضافه میکنه، و جمعش همون ۱۷۵ میلیاردیه که گزارش شد. درس پارامترهای ترنسفورمر این حساب رو قدم به قدم رفته.
خروج: امتیاز و احتمال
بعد از آخرین لایه، هر تکه یه بردار نهایی داره. برای حدس تکهی بعد، مدل فقط بردار آخرین تکه رو برمیداره، یعنی «لیوان»؛ چون اون حالا اطلاعات کل جملهی قبلش رو هم با خودش داره.
امتیاز. این بردار در یه جدول بزرگ دیگه ضرب میشه و برای هر تکهی واژهنامه یه عدد درمیاد؛ یه امتیاز. هر چی امتیاز بیشتر، مدل اون تکه رو مناسبتر میدونه. فرض کنید فقط پنج تکه داریم، با امتیازهایی که توی تصویر هست.
احتمال. امتیازها میتونن هر عددی باشن، حتی منفی. برای اینکه بشن احتمال، یعنی همه مثبت و جمعشون صد درصد، از سافتمکس رد میشن. ما همین پنج امتیاز رو با پایتون حساب کردیم: «چای» ۵۵٫۱ درصد، «قهوه» ۲۴٫۸، «شیر» ۱۲٫۳، «آب» ۷٫۵، و «ماشین» فقط ۰٫۴ درصد. دقت کنید امتیاز چای فقط کمی از قهوه بیشتر بود، ولی احتمالش بیشتر از دو برابر شد؛ سافتمکس فرقها رو بزرگ میکنه.
حالا یکی از این تکهها انتخاب میشه، به جمله اضافه میشه، و کل مسیر از اول برای تکهی بعدی تکرار میشه. اینکه چطور انتخاب میشه، همیشه بیشترین یا گاهی یه کم شانسی، درسهای ایستگاه بعدان.
فقط به عقب
یه قانون مهم دیگه هم توی مدلهای متنساز هست: موقع توجه، هر تکه فقط به تکههای قبل از خودش نگاه میکنه، نه بعدش.
دلیلش سادهست: وقتی مدل داره متن میسازه، تکههای بعدی هنوز وجود ندارن. پس از همون موقع آموزش هم بهش اجازه نمیدن آینده رو ببینه، تا یاد بگیره فقط از روی گذشته حدس بزنه. به این میگن ماسک، و همین باعث میشه مدل بتونه متن رو تکهبهتکه، از اول تا آخر، بسازه.
خوندن و نوشتن
یه چیز دیگه هم توی این سفر هست: خوندن پرامپت و نوشتن جواب، دو جور کار متفاوتن.
وقتی پرامپت شما میاد، همهی تکههاش رو مدل با هم از بلوکها رد میکنه؛ چون همه از قبل معلومن، کارت گرافیک میتونه همه رو یهجا حساب کنه. ولی جواب اینطوری نیست: هر تکهی تازه فقط وقتی معلوم میشه که تکهی قبلی انتخاب شده باشه، پس هر تکه یه دور کامل از همهی بلوکها لازم داره. برای همین یه پرامپت چندصفحهای زود خونده میشه، ولی جواب کلمهکلمه روی صفحه میاد. برای اینکه هر دور تازه کار قبلیها رو از نو انجام نده، مدل کلید و مقدار تکههای قبلی رو نگه میداره؛ درس KV کش.
چند نکته
- همهچیز عدده. متن از اول تبدیل به شماره و بردار میشه.
- جا جدا اضافه میشه. وگرنه ترتیب کلمهها گم میشه.
- هر بلوک دو بخش داره. توجه برای حرف زدن با بقیه، شبکهی کوچیک برای فکر کردن تنهایی.
- فقط آخرین تکه حدس میزنه. بردارش حالا کل جمله رو میدونه.
- فقط به عقب. هیچ تکهای آینده رو نمیبینه.
ساختمان کامل این مسیر، لایه به لایه، توی مسیر ترنسفورمر هست. درس بعد این مسیر سراغ عددهای داخل مدل میره: پارامتر چیست و چند میلیارد یعنی چه.
جمعبندی. آنچه از این درس با خودتان میبرید.
- متن، تکه، شماره.
- شماره، بردار، بهعلاوهی جا.
- بلوکها: توجه و شبکهی کوچیک، پشت هم.
- بردار آخر، یه امتیاز برای هر تکه.
- سافتمکس: امتیاز به احتمال.
خودتون رو بسنجید
۱۵ پرسش، هر بار تازه از میان ۳۰ پرسش این درس. آخرش فقط کارنامه رو میبینید: چند تا درست، چند تا نادرست.