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