آموزشترنسفورمرها

درس ۱۹ از ۶۲، هوش مصنوعی، حدود ۱۰ دقیقه خواندن

توجه چندسری (Multi-head)

جواب کوتاه

توجه چندسری یعنی به جای یه توجه بزرگ، چند توجه کوچیک‌تر کنار هم اجرا بشه؛ به هر کدوم می‌گن یه «سر». هر سر ماتریس‌های پرسش و کلید و مقدار خودش رو داره، پس می‌تونه یه جور ربط دیگه رو ببینه؛ مثلا یکی فاعل رو، یکی مفعول رو. توی مقاله‌ی ۲۰۱۷، بردار ۵۱۲ عددی هر کلمه به ۸ سر ۶۴ عددی رفت، خروجی سرها دوباره کنار هم چیده شد و یه بار دیگه در یه ماتریس یادگرفته ضرب شد. چون هر سر کوچیک‌تره، هزینه‌ی کل تقریبا مثل یه توجه بزرگه. مقاله نشون داد یه سر تنها بدتر بود و سرهای خیلی زیاد هم کیفیت رو پایین آورد.

یعنی چی

چند نفر با هم یه جمله رو می‌خونن، هر کدوم دنبال یه چیز.

توی درس خودتوجهی دیدیم هر کلمه به کلمه‌های همون جمله نگاه می‌کنه. ولی ربط کلمه‌ها یه جور نیست. «خورد» هم باید بدونه کی خورد، هم چی خورد. «سیاه» باید بدونه مال کیه. توجه چندسری می‌گه به جای یه نگاه، چند نگاه جدا داشته باشیم، هم‌زمان. به هر کدوم از این نگاه‌ها می‌گن یه «سر».

یه سر کمه

اگه فقط یه سر داشته باشیم، «خورد» فقط یه دسته وزن داره که جمعش یکه. حالا اگه بخواد هم به فاعل نگاه کنه هم به مفعول، مجبوره وزن رو تقسیم کنه؛ مثلا نصف به «گربه‌ی» و نصف به «شیر». خروجیش می‌شه یه میانگین قاطی، که نه خوب فاعل رو نشون می‌ده نه خوب مفعول رو. مقاله‌ی ۲۰۱۷ دقیقا همین رو گفته: با یه سر، میانگین گرفتن جلوی دیدن چند چیز با هم رو می‌گیره.

چند سر

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

سه جور سر

گفتیم سرها خودشون یاد می‌گیرن چی کار کنن. یه پژوهش ۲۰۱۹ سرهای رمزگذار یه ترنسفورمر ترجمه رو یکی‌یکی بررسی کرد ببینه واقعا چی کاره‌ان.

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

بریدن و چسبوندن

توی مقاله‌ی ۲۰۱۷ بردار هر کلمه ۵۱۲ عدد بود و ۸ سر داشتن. هر سر با ماتریس‌های خودش، پرسش و کلید و مقدار ۶۴ عددی می‌ساخت؛ ۸ ضرب در ۶۴ می‌شه همون ۵۱۲. بعد هر سر، جدا از بقیه، کل فرمول توجه رو حساب می‌کرد. آخرش خروجی ۸ سر کنار هم چیده می‌شد و دوباره ۵۱۲ عدد درمی‌اومد. یه قدم آخر هم بود: ضرب در یه ماتریس یادگرفته‌ی دیگه، تا چیزهایی که سرها پیدا کردن، با هم ترکیب بشن.

هزینه‌ش

شاید فکر کنید ۸ سر یعنی ۸ برابر کار. ولی نه؛ چون هر سر به جای ۵۱۲ عدد، با ۶۴ عدد کار می‌کنه. هشت تا ۶۴ می‌شه همون ۵۱۲. مقاله‌ی ۲۰۱۷ هم می‌گه هزینه‌ی کل، تقریبا مثل یه توجه تک‌سر با اندازه‌ی کامله. یعنی چند نگاه جدا رو تقریبا مجانی گرفتیم. تازه چون سرها به هم کاری ندارن، همه با هم حساب می‌شن.

چند تا سر

پس هر چی سر بیشتر، بهتر؟ نه لزوما. مقاله‌ی ۲۰۱۷ تعداد سرها رو عوض کرد و نتیجه‌ها رو مقایسه کرد. یه سر تنها به‌طور روشن بدتر بود. ولی سرهای خیلی زیاد هم کیفیت رو پایین آورد. یادتون باشه هر چی سر بیشتر، هر سر عددهای کمتری داره. اون‌ها برای مدل اصلیشون ۸ تا رو انتخاب کردن، و برای مدل بزرگ‌ترشون، که بردار هر کلمه ۱۰۲۴ عدد داشت، ۱۶ تا. پس مدل بزرگ‌تر، سر بیشتر؛ درس عمق و پهنا سراغ همینه.

سرهای اضافه

اگه سرها این‌قدر مهمن، همه‌شون لازمن؟ دو پژوهش ۲۰۱۹ جواب جالبی دادن: نه.

همون پژوهش قبلی سرها رو یکی‌یکی خاموش کرد و دید از ۴۸ سر رمزگذار، ۳۸ تا رو می‌شه برداشت و ترجمه‌ی انگلیسی به روسی فقط ۰٫۱۵ BLEU بدتر می‌شه؛ و سرهای تخصصی، همون سه جور بالا، آخر از همه برداشته می‌شدن. پژوهش دوم، با عنوان «شونزده سر واقعا از یکی بهترن؟»، دید درصد زیادی از سرها رو موقع استفاده، بعد از آموزش، می‌شه برداشت بی اینکه کیفیت خیلی افت کنه، و بعضی لایه‌ها حتی با یه سر تنها هم کار می‌کنن.

پس چرا از اول سر کمتر نمی‌ذارن؟ پژوهش دوم یه نشونه‌ی اولیه داد که داشتن سرهای زیاد بیشتر موقع آموزش کمک می‌کنه، نه موقع استفاده؛ یعنی سرها به یادگیری کمک می‌کنن، حتی اگه آخرش بعضی‌هاشون اضافه بشن. برداشتن سرهای اضافه بعدا هم مدل رو سریع‌تر و کم‌حافظه‌تر می‌کنه.

چند نکته

  • هر سر، ماتریس‌های خودش. برای همین جور دیگه‌ای نگاه می‌کنه.
  • کار هر سر رو مدل یاد می‌گیره، نه آدم.
  • خروجی‌ها کنار هم، بعد یه ضرب آخر.
  • نگاه سرها رو می‌شه دید؛ درس دیدن توجه.

یه چیز دیگه مونده که بدون اون، مدل نمی‌تونه متن بسازه: اینکه موقع نوشتن، کلمه‌های آینده رو نبینه. درس بعد: ماسک: نگاه نکردن به آینده.

جمع‌بندی. آنچه از این درس با خودتان می‌برید.

  • به جای یه توجه، چند توجه کنار هم.
  • هر سر، ماتریس‌های خودش.
  • ۵۱۲ عدد، ۸ سر، هر سر ۶۴.
  • خروجی‌ها کنار هم، یه ضرب آخر.
  • هزینه تقریبا همون یه سر بزرگ.

خودتون رو بسنجید

۱۵ پرسش، هر بار تازه از میان ۳۰ پرسش این درس. آخرش فقط کارنامه رو می‌بینید: چند تا درست، چند تا نادرست.

خودتون رو بسنجید

۱۵ پرسش

  • هر بار پرسش‌ها و ترتیب گزینه‌ها عوض می‌شه.
  • تا آخر نمی‌گیم کدوم جواب درست بوده؛ می‌تونید برگردید و جوابتون رو عوض کنید.
  • آخرش کارنامه می‌گیرید: چند تا درست، چند تا نادرست.
  • اگه وسطش بستید، دوباره که باز کنید از همون‌جا ادامه می‌دید.

فصل‌های این درس

درس بعد