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