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