آموزشمدل‌های زبانی بزرگ (LLM)

درس ۱۷ از ۸۵، هوش مصنوعی، حدود ۱۴ دقیقه خواندن

بردار کلمه و جمع و تفریق معنی

جواب کوتاه

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

فلش رابطه

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

توی درس امبدینگ دیدیم هر کلمه یه نقطه، یا یه فلش، توی فضای معنیه و کلمه‌های هم‌معنی نزدیک هم‌ان. سال ۲۰۱۳ پژوهشگرها یه چیز دیگه هم دیدن: فاصله‌ی بین دو کلمه هم معنی داره.

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

حساب با عدد

بیاید با عدد ببینیم. فرض کنید هر کلمه فقط دو عدد داره: یکی می‌گه چقدر «زنانه»‌ست، یکی می‌گه چقدر «شاهانه»‌ست. این عددها نمونه‌ان، برای اینکه بشه با دست حساب کرد:

قدم اول: عددهای «پادشاه» رو منهای عددهای «مرد» کن؛ هر عدد از عدد هم‌جای خودش. می‌شه زنانه صفر و شاهانه سه. این همون «شاهانه بودن» خالیه، بی مرد بودنش.

قدم دوم: عددهای «زن» رو بهش اضافه کن. می‌شه زنانه سه و شاهانه چهار.

قدم سوم: بگرد ببین کدوم کلمه به این عددها نزدیک‌تره. اینجا دقیقا «ملکه» می‌شه. توی یه مدل واقعی، که هر کلمه صدها عدد داره، جواب هیچ‌وقت دقیقا روی یه کلمه نمی‌افته؛ برای همین نزدیک‌ترین کلمه رو با همون شباهت کسینوسی پیدا می‌کنن.

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

چه رابطه‌هایی

این فقط برای پادشاه و ملکه نیست. همون پژوهش ۲۰۱۳ کلی رابطه‌ی دیگه هم نشون داد:

رابطه‌های معنایی: مثلا کشور و پایتختش. «پاریس» منهای «فرانسه» به‌علاوه‌ی «ایتالیا»، نزدیک «رم» درمیاد. یعنی «پایتخت» هم یه فلشه.

رابطه‌های دستوری: مثلا یه صفت و صفت عالیش. «بزرگ‌ترین» منهای «بزرگ» به‌علاوه‌ی «کوچیک»، نزدیک «کوچیک‌ترین» درمیاد. زمان حال و گذشته‌ی فعل‌ها هم همین‌طوره.

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

ترفند پنهان

حالا یه چیزی که کمتر کسی می‌گه. وقتی دنبال نزدیک‌ترین کلمه به «پادشاه − مرد + زن» می‌گردیم، کلمه‌های خود سوال، یعنی «پادشاه» و «مرد» و «زن»، از فهرست جواب‌ها کنار گذاشته می‌شن. این توی خود مقاله‌ی ۲۰۱۳ هم نوشته شده.

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

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

کدوم نمی‌خونه

با جمع و تقسیم بردارها یه کار دیگه هم می‌شه کرد، که توی همون مقاله‌ی ۲۰۱۳ اومده: پیدا کردن کلمه‌ی ناجور توی یه فهرست. مثل اون سوال‌های هوش که می‌گن «کدوم با بقیه فرق داره؟».

روشش ساده‌ست. بردارهای همه‌ی کلمه‌های فهرست رو جمع می‌کنیم و تقسیم بر تعدادشون؛ این می‌شه میانگین. بعد شباهت هر کلمه رو با میانگین حساب می‌کنیم؛ کمترین، ناجوره.

ما این رو با همون چهارده جمله‌ی درس امبدینگ امتحان کردیم. توی «چای، قهوه، گربه»، شباهت چای و قهوه با میانگین ۰٫۸۷ و ۰٫۸۶ بود و گربه ۰٫۳۵؛ پس گربه ناجوره. توی «گربه، سگ، اتوبوس» هم اتوبوس با ۰٫۶۰ کمتر از بقیه بود. ولی توی «ماشین، اتوبوس، چای» فرقشون خیلی کم بود (۰٫۷۴، ۰٫۷۶ و ۰٫۷۱)؛ با چهارده جمله، این‌قدر داده نیست که مرز خیلی روشن باشه. با متن‌های خیلی بیشتر، این فرق‌ها واضح‌تر می‌شن.

این بردارها چطور یاد گرفته شدن

بردارهای ۲۰۱۳ با دو تا بازی ساده یاد گرفته شدن، هر دو بر پایه‌ی همون ایده‌ی همنشین‌ها.

ویکی‌پدیا می‌گه ابزار ۲۰۱۳ دو روش داشت. توی اولی، که اسمش CBOW هست، کوتاه‌شده‌ی Continuous Bag of Words یعنی «کیسه‌ی پیوسته‌ی کلمه‌ها»، مدل از کلمه‌های دور و بر، کلمه‌ی وسط رو حدس می‌زنه؛ مثل یه بازی جای خالی. توی دومی، Skip-gram یعنی «کلمه‌ی پرشی»، برعکس، از کلمه‌ی وسط، همسایه‌هاش رو حدس می‌زنه. اولی سریع‌تره، دومی برای کلمه‌های کمیاب بهتره. بردارهاش معمولا بین ۱۰۰ تا ۱۰۰۰ عدد بودن، و پنجره‌ی همسایه‌ها برای روش دوم حدود ۱۰ کلمه و برای اولی حدود ۵ کلمه پیشنهاد می‌شد.

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

کلمه‌ای که دیده نشده

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

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

کجا کم میاره

بردار کلمه با همه‌ی جالب بودنش، یه مشکل بزرگ داره: هر کلمه فقط یه بردار داره.

«شیر» توی فارسی می‌تونه شیر خوراکی باشه، شیر جنگل، یا شیر آب. ولی بردار کلمه برای «شیر» فقط یه نقطه داره، که یه جایی وسط همه‌ی این معنی‌هاست. وقتی کسی می‌گه «شیر رو ببند»، بردار کلمه نمی‌دونه منظور شیر آبه.

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

راه‌حل مشکل اول، یعنی چندمعنایی، اینه که بردار هر کلمه با توجه به جمله‌ای که توشه ساخته بشه. مدل‌های زبانی امروزی دقیقا همین کار رو می‌کنن، و درس بعد درباره‌ی همینه.

چند نکته

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

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

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

  • رابطه‌ی دو کلمه، یه فلش توی فضای معنی.
  • پادشاه − مرد + زن ≈ ملکه.
  • هم رابطه‌ی معنایی، هم دستوری.
  • کلمه‌های سوال کنار گذاشته می‌شن.
  • هر کلمه فقط یه بردار، حتی با چند معنی.

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

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

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

۱۵ پرسش

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

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

درس بعد