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

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

سرگشتگی (Perplexity)

جواب کوتاه

سرگشتگی، به انگلیسی Perplexity، یه عدده که می‌گه یه مدل زبانی روی یه متن آزمون، سر هر کلمه به‌طور میانگین بین چند تا گزینه مردده؛ هر چی کمتر، بهتر. یه تاس سالم شش‌وجهی سرگشتگی ۶ داره. حسابش این‌طوره: احتمالی که مدل به هر کلمه‌ی درست داده رو ضرب می‌کنیم، ریشه‌ی N‌ام می‌گیریم (N تعداد کلمه‌ها) و یک رو تقسیم بر اون می‌کنیم. سازنده‌ها موقع آموزش نگاهش می‌کنن، ولی سه مرز داره: مدل نباید متن آزمون رو دیده باشه، فقط بین مدل‌هایی با واژه‌نامه‌ی یکسان قابل مقایسه‌ست، و بهتر شدنش تضمین نمی‌کنه کار واقعی بهتر بشه.

یعنی چی

سرگشتگی می‌گه مدل سر هر کلمه بین چند تا گزینه مردده. کمتر، بهتر.

توی درس پیش‌بینی تکه‌ی بعد دیدیم که کل کار مدل اینه: برای تکه‌ی بعد به هر گزینه یه احتمال بده. حالا اگه یه متن آزمون داشته باشیم که کلمه‌هاش رو می‌دونیم، می‌شه دید مدل به کلمه‌ی درست چقدر احتمال داده بود. اگه زیاد، یعنی خوب حدس زده؛ اگه کم، یعنی غافلگیر شده. سرگشتگی همه‌ی این‌ها رو توی یه عدد خلاصه می‌کنه. اسمش هم از همینه: مدل چقدر سرگشته و مردده.

بین چند تا مردده

مثلا فرض کنید می‌خواید عدد یه تاس سالم رو قبل از ریختن حدس بزنید. هیچ سرنخی ندارید و شش تا گزینه‌ی یه‌جور دارید. سرگشتگی تاس سالم شش‌وجهی دقیقا می‌شه ۶.

کتاب درسی ژورافسکی و مارتین یه مثال ساده داره: یه زبان کوچیک با فقط سه کلمه، قرمز، آبی و سبز. مدل الف هیچی بلد نیست و به هر کدوم یک‌سوم می‌ده؛ سرگشتگیش ۳ می‌شه، مثل یه تاس سه‌وجهی. مدل ب از داده‌ی آموزشش یاد گرفته که قرمز خیلی میاد و بهش ۰٫۸ می‌ده و به بقیه ۰٫۱. روی متن «قرمز قرمز قرمز قرمز آبی» سرگشتگیش ۱٫۸۹ می‌شه. هنوز سه تا کلمه هست، ولی مدل ب انگار فقط بین حدود دو تا مردده، چون می‌دونه کدوم محتمل‌تره.

حسابش

این ۱٫۸۹ از کجا اومد؟ سه قدم ساده‌ست.

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

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

چرا برای هر کلمه

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

زمینه‌ی بیشتر

همون کتاب یه آزمایش واقعی هم داره. سه مدل خیلی ساده‌ی قدیمی رو روی ۳۸ میلیون کلمه از یه روزنامه‌ی انگلیسی آموزش دادن و روی ۱٫۵ میلیون کلمه‌ی دیگه آزمودن.

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

غربال داده

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

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

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

تشخیص متن ماشینی

خیلی از ابزارهایی که می‌گن «این متن رو هوش مصنوعی نوشته»، یه جاشون به سرگشتگی تکیه دارن: متنی که یه مدل خیلی راحت حدسش می‌زنه، یعنی سرگشتگیش کمه، مشکوک به ماشینی بودنه.

یه پژوهش ۲۰۲۳ این ابزارها رو با ۹۱ انشای واقعی آدم‌هایی امتحان کرد که انگلیسی زبان دومشون بود، برای یه آزمون زبان. میانگین هفت ابزار معروف، ۶۱ درصد این انشاها رو «نوشته‌ی هوش مصنوعی» حساب کرد؛ ۱۸ تا رو هر هفت ابزار با هم، و ۸۹ تا رو دست‌کم یکی. همون ابزارها انشای دانش‌آموزهای انگلیسی‌زبان رو درست تشخیص دادن. دلیل؟ انشاهایی که همه گرفتن، سرگشتگی خیلی کمتری داشتن؛ چون زبان‌آموزها معمولا کلمه‌های ساده‌تر و کمتری به کار می‌برن، و همین متن رو «قابل حدس» می‌کنه.

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

مرزهاش

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

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

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

یه عدد بی واژه‌نامه

مرز دوم، یعنی واژه‌نامه‌ی یکسان، یه چاره‌ی ساده داره: به‌جای «برای هر توکن»، عدد رو «برای هر بایت» حساب کنیم.

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

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

چند نکته

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

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

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

  • بین چند تا گزینه مردده؛ کمتر بهتر.
  • تاس سالم شش‌وجهی: ۶.
  • ضرب احتمال‌ها، ریشه، یک تقسیم بر اون.
  • زمینه‌ی بیشتر، تردید کمتر.
  • فقط با واژه‌نامه‌ی یکسان مقایسه کنید.

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

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

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

۱۵ پرسش

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

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

درس بعد