شباهت معنایی: فاصلهی دو بردار
جواب کوتاه
برای اینکه بفهمیم دو امبدینگ، یعنی دو معنی، چقدر شبیهان، دو راه هست: فاصلهی معمولی بین نوک دو بردار، مثل خطکش؛ یا زاویهی بین دو بردار، مثل زاویهسنج. مدلهای زبانی بیشتر از زاویه استفاده میکنن، که بهش میگن شباهت کسینوسی: ضرب داخلی دو بردار تقسیم بر طولهاشون. یک یعنی همجهت، صفر یعنی بیربط. خوبیش اینه که فقط جهت رو میسنجه، نه طول؛ پس یه پیام کوتاه و یه مقالهی بلند دربارهی یه موضوع، شبیه حساب میشن. با همین عدد میشه نزدیکترین کلمهها یا متنها رو پیدا کرد؛ فقط یادتون باشه «نزدیک» گاهی یعنی «مرتبط»، نه «هممعنی».
دو جور سنجیدن
دو تا فلش داریم. هر دو دقیقا یه طرف رو نشون میدن، فقط یکی دو برابر اون یکی بلندتره. این دو تا شبیهان یا نه؟
جوابش بستگی داره با چی بسنجید. اگه با خطکش فاصلهی نوک دو تا فلش رو اندازه بگیرید، از هم دورن. اگه با زاویهسنج زاویهی بینشون رو اندازه بگیرید، صفره؛ یعنی کاملا یه طرفن.
توی درس امبدینگ دیدیم هر معنی یه بردار، یعنی یه فلش، توی یه فضای چندصدبعدیه. حالا سوال اینه: شباهت دو معنی رو با کدوم بسنجیم؟ مدلهای زبانی و ابزارهای جستجوی معنایی بیشتر زاویه رو انتخاب میکنن. بیاید ببینیم چرا، ولی اول با دست حسابش کنیم.
حساب با دست
سه تا بردار کوچیک، هر کدوم سه عدد، تا بشه با دست حساب کرد:
قدم اول، ضرب داخلی: عددهای همجای دو بردار رو در هم ضرب کن و جمع بزن. برای A و B میشه ۲ ضرب در ۴، بهعلاوهی ۱ ضرب در ۲، بهعلاوهی صفر؛ یعنی ۱۰. همون ضرب داخلییه که توی مسیر یادگیری ماشین دیدیم.
قدم دوم، طولها: طول هر بردار، رادیکال جمع مربع عددهاشه. طول A حدود ۲٫۲۴ و طول B حدود ۴٫۴۷.
قدم سوم، تقسیم: ۱۰ تقسیم بر ۲٫۲۴ ضرب در ۴٫۴۷، میشه دقیقا یک. یعنی A و B کاملا همجهتان، با اینکه فاصلهی خطکشیشون ۲٫۲۴ هست. ولی A و C ضرب داخلیشون صفره، چون هیچجا هر دو عدد غیرصفر ندارن؛ پس شباهتشون صفره، یعنی عمود بر هم و بیربط.
چرا زاویه
چرا زاویه بیشتر به کار میره؟ یه مثال از دنیای واقعی:
یه پیام کوتاه و یه مقالهی بلند، هر دو دربارهی چای. اگه بردار هر متن از کلمههاش ساخته بشه، مقالهی بلند همون کلمهها رو بارها داره و بردارش خیلی بلندتره. خطکش میگه این دو تا خیلی فرق دارن؛ ولی هر دو دربارهی یه موضوعن. زاویه این رو درست میبینه، چون طول رو کنار میذاره و فقط جهت رو نگاه میکنه.
یه نکتهی فنی هم هست: اگه همهی بردارها رو اول طوری کوچیک یا بزرگ کنیم که طولشون یک بشه، که بهش میگن نرمال کردن، شباهت کسینوسی و فاصلهی خطکشی دیگه به هم ربط مستقیم پیدا میکنن، و شباهت کسینوسی همون ضرب داخلی ساده میشه. برای همین میشه بردارها رو از اول نرمال نگه داشت تا حساب سادهتر بشه.
وقتی همه طول یک دارن
خطکش و زاویهسنج همیشه با هم دعوا ندارن. یه حالت هست که هر دو یه حرف رو میزنن.
اگه اول طول همهی بردارها رو یک کنیم، یعنی هر بردار رو بر طول خودش تقسیم کنیم، بهش نرمال کردن (Normalization) میگن. ویکیپدیا میگه برای بردارهای طول یک، مجذور فاصلهی معمولی دقیقا برابر دو ضرب در یک منهای کسینوسه. مثلا اگه شباهت کسینوسی دو بردار ۰٫۹ باشه، مجذور فاصلهشون میشه ۰٫۲. پس ترتیب نزدیکترینها با هر دو روش یکی میشه. و چون طولها یکه، خود ضرب داخلی هم همون کسینوسه؛ برای همین خیلی از سیستمها بردارها رو از اول نرمال میکنن و فقط ضرب داخلی میگیرن، که حسابش از همه سادهتره.
یه نکتهی دیگه: اگه میخواید یه مرز بذارید، مثلا «بالای فلان عدد یعنی تکراری»، اون رو روی چند جفت نمونهی واقعی خودتون، با همون مدل امبدینگی که دارید، امتحان کنید؛ نه اینکه یه عدد رو از جای دیگه بردارید.
نزدیکترینها
حالا که میتونیم شباهت هر جفت رو حساب کنیم، یه کار خیلی کاربردی شدنیه: برای یه کلمه، همهی کلمههای دیگه رو بر اساس شباهت مرتب کنیم. با همون چهارده جملهی درس قبل:
نزدیکترین به «چای»، «قهوه» هست؛ به «سگ»، «گربه»؛ به «ماشین»، «اتوبوس». بی اینکه کسی به کامپیوتر گفته باشه اینها همدستهان.
همین کار با جملهها و سندها، پایهی جستجوی معنایی هست: سوال شما یه بردار میشه، و سندهایی که بردارشون بیشترین شباهت رو داره، اول میان. درس جستجوی برداری نشون میده چطور این کار رو برای میلیونها سند سریع انجام میدن.
وقتی میلیونها متن داریم
توی آزمایش درس، هر کلمه رو با همهی بقیه مقایسه کردیم. با میلیونها متن چی؟
مقایسه با همه درسته، ولی کنده: هر سوال باید با تکتک بردارها حساب بشه. ویکیپدیا میگه سیستمهای RAG بهجای پیدا کردن دقیق نزدیکترینها، از جستجوی نزدیکترین همسایهی تقریبی (Approximate Nearest Neighbor) استفاده میکنن: بردارها از قبل طوری چیده میشن که بشه اول یه گوشهی کوچیک از فضا رو انتخاب کرد و فقط همونجا رو گشت. خیلی سریعتره، و گاهی یه جواب خیلی نزدیک رو از دست میده. درس جستجوی برداری طرز کارش رو کامل گفته.
چند نکته
- زاویه، نه طول. شباهت کسینوسی متن کوتاه و بلند رو منصفانه مقایسه میکنه.
- یک، صفر، منفی یک. همجهت، بیربط، مخالف.
- عدد مطلق، معیار نیست. اینکه از چه عددی به بالا «شبیه» حساب بشه، به مدل و کار بستگی داره.
- نزدیک یعنی همجا، نه لزوما هممعنی. متضادها هم میتونن نزدیک باشن.
درس بعد یه چیز جالبتر از بردارها نشون میده: میشه باهاشون معنی رو جمع و تفریق کرد: بردار کلمه و جمع و تفریق معنی.
جمعبندی. آنچه از این درس با خودتان میبرید.
- دو راه: فاصلهی خطکشی، یا زاویه.
- شباهت کسینوسی: ضرب داخلی ÷ طولها.
- زاویه فقط جهت رو میسنجه، نه طول.
- نزدیکترینها: مرتب کردن بر اساس شباهت.
- نزدیک گاهی یعنی مرتبط، نه هممعنی.
خودتون رو بسنجید
۱۵ پرسش، هر بار تازه از میان ۳۰ پرسش این درس. آخرش فقط کارنامه رو میبینید: چند تا درست، چند تا نادرست.