سعید حسنی
سعید حسنی
خواندن ۳ دقیقه·۳ ماه پیش

درباره Transformer: مدلی که همه چیز رو تغییر داد | 1

این مقاله 4 بخش هست که شما در حال خوندن قسمت اول (مقدمه) هستین.

تا حالا به این فکر کردی که:

  • یه سیستم هوشمند چطور می‌تونه از یه دنیای پر از اطلاعات، دقیقاً همون چیزی که می‌خوای رو پیدا کنه و بهت جواب بده؟ 🤔
  • چطور یه سیستم از کلی متن یاد می‌گیره و موقع نیاز درست همون جواب رو ارائه می‌کنه؟
  • یا اینکه چطور یه سیستم می‌تونه یه متن رو از زبانی به زبان دیگه ترجمه کنه بدون اینکه معنی اصلی گم بشه؟
  • چطور وقتی یه سوال پیچیده ازش می‌پرسی، خیلی سریع و دقیق جواب می‌ده؟

جواب این سوال‌ها رو توی مدل Transformer پیدا میکنیم. مدلی که اطلاعات رو تحلیل و پردازش می‌کنه و نتیجه‌ای دقیق و هوشمندانه تحویلت می‌ده. توی این سری مقاله ها، قراره با هم این مدل رو قدم به قدم کشف کنیم.🎯

ارگ کلاه فرنگی - بیرجند
ارگ کلاه فرنگی - بیرجند


چند وقت پیش، تصمیم گرفتم مهارت‌های برنامه‌نویسی خودم رو توی زبان C محک بزنم. از اونجایی که به شدت درگیر مدل‌های زبانی بزرگ شده بودم، فکر کردم، چرا مدل معروف Attention is All You Need رو پیاده‌سازی نکنم؟ 😎 اینجوری هم می‌تونم از طرفی دانش خودم رو توی C تقویت کنم و هم به قول فاینمن: "اگه نتونم چیزی رو بسازم، یعنی خوب درکش نکردم!".
این مقاله نتیجه همون پیاده‌سازیه. هر چی توی این مسیر یاد گرفتم، اینجا می‌نویسم و سعی می‌کنم جوری بنویسم که همه بتونیم با هم ازش یاد بگیریم. دور از جملات پیچیده و کلیشه‌ای، می‌خوام همه چی رو ساده توضیح بدم.❤️

یه مقدمه کوتاه

بریم سراغ اصل مطلب. مدل Transformer دو بخش اصلی داره: Encoder (رمزگذار) و Decoder (رمزگشا).

مدل Transformer، [منبع تصویر بالا]
مدل Transformer، [منبع تصویر بالا]


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

مثلاً فرض کن وقتی متن درباره "مشهد" و "طرقبه" حرف می‌زنی، به جای اینکه فقط این دو اسم رو به خاطر بسپاری، توی ذهنت یه تصویر کلی از استان به وجود میاری که این‌ها رو به هم مرتبط می‌کنه. مشهد رو به‌عنوان یه شهر مهم و مقدس به یاد میاری و طرقبه رو به‌عنوان یه منطقه گردشگری. در واقع، Encoder به جای اینکه به کلمات جدا از هم نگاه کنه، روابط بین اون‌ها رو می‌فهمه و یه تصویر بزرگ و هماهنگ از کل اطلاعات می‌سازه. ممکنه اینجا یه کم اذیت بشی😕، دو بار دیگه این مثال رو بخون، اگه متوجه نشدی، ازش بگذر که قسمت Encoder عمیق تر میشیم.

اما وقتی می‌خوای یه سوال خاص از اون اطلاعات بپرسی، مثل اینکه "جمعیت استان خراسان چقدره؟"، Decoder میاد سراغ اون اطلاعات و دقیقاً همون بخش‌هایی رو که مربوط به سوالت هستن پیدا می‌کنه و جوابت رو می‌ده.

مثلا در جواب "جمعیت استان خراسان چقدره؟"، Decoder بجای اینکه بیاد مثلا بگه: "خراسان استانی در شرق ایرانه، و مکان‌های دیدنی مثل ارگ کلاه فرنگی و ... و جمعیتش 6 میلیون نفره" فقط همون بخش "جمعیتش 6 میلیون نفره" رو بهت برمیگردونه و بقیه چیزا رو کنار میذاره.

تا همینجا برای مقدمه، کافیه. ادامه مقاله رو برای اینکه طولانی نشه، در بخش های دیگه میگم.✅

فهرست مطالبی که قراره در موردش عمیق بشیم:

هر کدوم از مطالب زیر که آماده شده، لینک میدم به صفحه مربوطه اش
  • بخش دوم: Encoder
  • بخش سوم: Attention چرا اینقدر خوبه؟ [هنوز آماده نشده...]
  • بخش چهارم: دیکودر (Decoder) [هنوز آماده نشده...]
transformerمدل زبانی بزرگllmdecoderencoder
یه برنامه نویس خوشحال ツ تلگرامم: TheCoderLife
شاید از این پست‌ها خوشتان بیاید