در پی پیشرفت چشمگیر و همهگیر شدن مدلهای زبانی بزرگ مانند GPT، آشنایی با این مدلهای هوش مصنوعی اهمیت دوچندانی پیدا کرده است.
مدلهای زبانی
مدل زبانی به مدلی گفته میشود که در ورودی، یک جمله (یا عبارت) را دریافت کرده و احتمال آن جمله در زبان را خروجی بدهد.
احتمال هر جمله برابر است با تعداد دفعات تکرار آن جمله در تمامی پیکرهی زبان (اعم از تمامی صحبتهای انجامشده و متون نوشتهشدهی آن زبان در دنیا) تقسیم بر تعداد تمامی جملات پیکرهی زبان.
به علت عدم دسترسی به تمامی جملات یک زبان، معمولاً پیکرهی بزرگی شامل متون زیاد به همراه تکنیکهای هوش مصنوعی برای توسعهی این مدلها استفاده میشود.
مدلهای زبانی استفادههای زیادی دارند، مانند:
نظارت و بهبود کیفیت کارهایی که خروجی آنها یک متن میباشد. برای مثال یک مدل تبدیل صوت به متن (ASR) در موارد متعددی برای چیزی که شنیده است چند جمله با احتمالهای نزدیک به هم به دست میآورد. اگر یک مدل زبانی بیاید بین آنها مقایسه انجام دهد، جملهی درست انتخاب میشود و کیفیت مدل بازشناسی گفتار افزایش مییابد.
استفادهی محبوب دیگر از مدلهای زبانی به دست آوردن احتمال کلمات مختلف برای ادامهی یک جمله میباشد. با این روش و استفاده از الگوریتمهایی مانند Top-K که هر بار چند کلمه با احتمال بالا را برای ادامهی جمله انتخاب میکنند و در ادامهی آن قرار میدهند و دوباره احتمال کلمات برای ادامهی هر کدام را حساب میکنند و در نهایت جملهای با احتمال بسیار بالا را خروجی میدهند، میتوان متن تولید کرد.
یک مثال بسیار کوتاه: در صورتی که بخواهیم با top-5 یک جمله با استفاده از یک مدل زبانی بایگرمی(در ادامه توضیح داده میشود) تولید کنیم پنج کلمه ای که بیشترین تکرار در شروع جمله را داشته باشند را انتخاب میکنیم. سپس به صورت رندم یکی از این کلمات را انتخاب میکنیم. در این انتخاب رندم کلماتی که تکرار بیشتری داشته باشند احتمال انتخاب بیشتری دارند. سپس برای کلمه ی انتخاب شده احتمال آن برای ادامه با هر کلمه ای محاسبه میشود و از بین آنها و چهار کلمه ای که از قبل داشتیم پنج عبارت با بالاترین احتمال انتخاب میشوند. این اتفاق آنقدر ادامه پیدا میکند تا به پایان جمله برسیم. در صورت تمایل به اطلاع دقیق از الگوریتم top-k میتوانید این مقاله را مطالعه کنید.
مدلهای زبانی کلاسیک
در صورت تقسیم تعداد تکرار هر جمله به تعداد کل جملات پیکره، احتمال برای جملاتی که در پیکره نباشند صفر میشود و این مطلوب نیست.
برای رسیدن به یک راهحل برای این مشکل، ابتدا فرمول احتمال را به یک فرم دیگر مینویسیم.
جملات را به صورت ضرب احتمال هر کلمه به شرط کلمات قبلی مینویسیم.
احتمال جملهی «علی با دوستش به مدرسه رفت» برابر است با ضرب این احتمالها:
احتمال کلمهی «علی» به شرط اینکه شروع جمله باشد. یعنی تعداد «علی»های شروع جمله تقسیم بر تعداد جملات پیکرهی زبانی. (چه مقدار از جملات با «علی» شروع شده اند).
احتمال کلمهی «با» به شرط اینکه قبل آن “علی” باشد. یعنی تعداد «با»های بعد از “علی” شروع جمله تقسیم بر تمامی کلمات بعد از “علی” شروع جمله. (در چه مقدار از جملاتی که با “علی” شروع شده اند کلمه ی بعدی «با» است).
«دوستش» به شرط “علی با”
«به» به شرط “علی با دوستش”
«مدرسه» به شرط “علی با دوستش به”
«رفت» به شرط “علی با دوستش به مدرسه”
طبق قواعد علم احتمال، مقدار بهدستآمده با تعداد تکرار جمله تقسیم بر تعداد کل جملات برابر میباشد. یعنی همچنان هر جملهای که عیناً در پیکره نباشد، احتمال صفر پیدا میکند. حالا که به فرمولی مناسبتر نسبت به تقسیم تکرار جمله به تعداد کل جملات رسیدهایم، میتوانیم مشکل را حل کنیم. کافی است قسمت شرط هر احتمال را تغییر دهیم. مثلاً برای رفت’ نگوییم به شرط اینکه حتماً قبل آن «علی با دوستش به مدرسه» آمده باشد. چون اگر عین این جمله در پیکره نباشد، این احتمال صفر میشود و ضربش در دیگر احتمالهای بهدستآمده باعث میشود احتمال جمله صفر بهدست بیاید. اگر برای کلمهی «رفت» از شرط کوتاهتری مثل “به مدرسه” استفاده کنیم، مشکلمان حل میشود. کافی است در پیکره جملهی “حسین به مدرسه رفت” را داشته باشیم تا احتمال این قسمت صفر نشود. برای قسمتهای دیگر جمله هم اگر شرط را کامل نگیریم و فقط یک یا چند کلمه قبلتر را در شرط بیاوریم، دیگر نیاز نیست جمله عیناً تکرار شده باشد و همین که آن قسمتهای چندکلمهای در پیکره باشند، ما احتمال مناسبی برای جمله بهدست میآوریم.
به این روش n-gram گفته میشود. در این روش ما جمله را n کلمهای بررسی میکنیم. برای مثال جملهی انگلیسی:
this is a sentence
با روشهای یونیگرم (تککلمهای)، بایگرم (دوکلمهای) و ترایگرم (سهکلمهای) به این شکل تقسیم میشود:

احتمال جمله در روش n-gram برابر است با ضرب احتمال تمامی دستهکلمههای nتایی که در آن وجود دارد. احتمال هر دستهکلمه هم برابر است با تعداد تکرار آن دستهکلمهی nتایی در زبان تقسیم بر تمامی دستهکلمات nتایی در زبان.
این روش علیرغم سادگی، نتایج بسیار جذابی به همراه داشت. برای مثال مدلهایی روی اشعار شکسپیر توسعه داده شدند که میتوانستند اشعاری با عبارات او تولید کنند.
با وجود قدرت بالای این مدلهای کلاسیک و بهبود آنها با تکنیکهای مختلف، همچنان تا مدلهای زبانی بزرگ امروزی فاصلهی زیادی داشتند.

کارهای انجامشده تا سال ۲۰۱۷ در زمینهٔ پردازش دادههای دنبالهای (sequential)
هرچند میتوان شبکههای عصبی کانولوشنی (CNN) را هم یکی از این روشها دانست، اما در زمینهٔ پردازش زبانهای طبیعی، محبوبترین مدلها در آن زمان GRU و LSTM بودند. این روشها به روشهای بازگشتی یا Recurrent مشهورند. در این روشها، هر بار یک داده از دنباله را به ورودی مدل میدهیم و مدل پس از پردازش، مقادیری را که بهعنوان حافظه دریافت میکند تغییر میدهد و سپس دادهٔ بعدی (مثلاً در متن، کلمهٔ بعدی) را به آن میدهیم. یکی از بزرگترین مشکلات این مدلهای بازگشتی، پاسخگو نبودن حافظهٔ آنها در متنهای طولانی و کند بودن پردازش آنها به علت پردازش تکبهتک ورودیها است. هرچند هنوز هم در مسائل زیادی از آنها استفاده میشود و مدلهای شناختهشدهای هستند.



Transformer
گوگل در سال ۲۰۱۷ با مقالهی Attention is All You Need تحول بزرگی در علم پردازش زبانهای طبیعی و در ادامه آن در تمامی حوزههای پردازش دادههای دنبالهای (Sequential) ایجاد کرد.

مهمترین عامل موفقیت در این معماری، استفاده از مکانیسم توجه (Attention) در بخشهای مختلف شبکهی عصبی است. این معماری دارای دو کامپوننت انکودر (encoder) و دیکودر (decoder) میباشد. سوال به انکودر داده میشود و پاسخی که تاکنون تولید شده به دیکودر داده میشود. برای تسکهایی مانند پرسش و پاسخ و ترجمهی ماشین، کارایی بسیار بالایی از خود نشان داد.

ورودی انکودر و دیکودر مشابه یکدیگر است. هرکدام از کلمات ابتدا توسط Word Embedder به یک وکتور از اعداد اعشاری تبدیل میشوند. اندازهی این وکتورها در نسخههای مختلف GPT-3 از ۷۶۸ تا ۱۲۲۸۸ متغیر است. در این تبدیل، سعی میشود هر اندیس از وکتور نمایانگر یک ویژگی و معنا باشد و وکتور هر کلمه دارای معنا و مفهوم آن کلمه باشد. برای آشنایی بیشتر با نحوه ی تبدیل کلمات به بردارهای معنادار میتوانید این مقاله را مطالعه کنید.
پس از تبدیل کلمات به بردار، یک ماژول دیگر به نام Positional Encoder با جمع کردن یک سری تابع سینوسی با این وکتورها، محل قرارگیری هر کلمه را در وکتور آن کلمه اعمال میکند. در صورت تمایل به آشنایی بیشتر میتوانید این مقاله را مطالعه کنید.
ادامهی کار در انکودر و دیکودر نیز تقریباً مشابه میباشد. از هر کلمه سه وکتور Query، Key و Value استخراج میشود. این کار با اعمال سه شبکهی عصبی روی وکتور کلمات انجام میشود (شبکهها روی تک کلمه اعمال میشوند، نه تمامی کلمات با هم). اکنون سه ماتریس دو بعدی داریم که یک بعد آن به اندازه ی سکوئنس میباشد و بعد دیگر به اندازه ی فیچر ها. سپس Query در Key ضرب میشود تا ارتباط تمامی کلمات با یکدیگر به دست بیاید. در نهایت، حاصلضرب این دو که یک ماتریس دو بعدی به اندازه ی طول سکوئنس و طول سکوئنس میباشد را در ماتریس دو بعدی Value ضرب میکنیم تا ارتباطی که هر کلمه با کلمات دیگر در عبارت داشته، روی مفهوم آن اثر بگذارد.
در توضیحات فوق برای سادهسازی مطلب از بیان residual connection، norm، softmax و سایر جزئیات صرفنظر شد. در صورت تمایل به کسب دانش بیشتر، میتوانید در این مقاله با معماری Transformer آشنا شوید.
در نهایت، خروجی قسمت سلف اتنشن هر دیکودر با استفاده از مکانیزم توجهی به نام cross attention با خروجی آخرین انکودر ترکیب میشود (Fusion) و نتیجهی آن پس از چند لایهی شبکه عصبی، احتمال هر کلمه برای این که کلمهی بعدی در پاسخ باشد را میدهد.
GPT
معماری ترنسفورمر در برخی تسکهای پردازش متن مانند ترجمهی ماشین عملکرد بسیار خوبی داشت، ولی مناسب استفاده برای یک مدل زبانی نبود؛ زیرا ساختار آن مناسب تسکهای دارای پرسش و پاسخ بود، برخلاف مدل زبانی که فقط بایستی احتمال یک جمله را محاسبه کند.
شرکت OpenAI با حذف کردن قسمت انکودر این مشکل را حل کرد. در GPT فقط قسمت دیکودر وجود دارد و ورودی به آن وارد میشود.
قدرت این مدل زبانی به قدری بالا بود که توانستند انواع کارهای مختلف را به آن آموزش دهند. از آن برای راهاندازی یک سیستم پرسش و پاسخ بدون نیاز به دادهی پرسش و پاسخ زیاد استفاده کردند. ابتدا تمامی متون در دسترس را به مدل آموزش دادند. به این مرحله پیشآموزش گفته میشود. مدل در این مرحله تمامی زبان و مطالب آن را یاد گرفت. سپس با داده و توکنهای خاص کارهای مختلف مانند پرسش و پاسخ را نیز آموزش دادند. در واقع، شروع و پایان سوال و شروع و پایان پاسخ را با وکتورهای خاصی مشخص کردند و آن وکتورها را نیز مانند کلمات در ورودی مدل قرار دادند.
برای مثال یک راه ساده به این شکل میباشد که سوال و جواب “آیا زمین گرد است؟” “بله زمین گرد است.” را با این توکن ها به مدل بدهیم:
«start_of_question» «آیا» «زمین» «گرد» «است» «علامت سوال» «end_of_question» «بله» «زمین» «گرد» «است» «علامت نقطه» «end_of_answer»
در صورت ادامه یافتن مکالمه، مابقی پرسش و پاسخ ها هم به همین شکل در ادامه ی این توکن ها قرار میگیرد.
مدل در این مرحله یاد گرفت هرگاه توکن سوال وجود دارد، در آنجا متن سوال قرار دارد و هرجا توکن پاسخ هست، در آنجا پاسخ قرار گرفته است. به این طریق، بدون نیاز به دادهی پرسش و پاسخ زیاد و مدلی که دو ورودی دارد، توانستند یک مدل زبانی با توانایی پرسش و پاسخ توسعه دهند.


برخی چالشها
چالشهای زیادی در زمینهی مدلهای زبانی وجود دارد، ولی یکی از مهمترین مشکلات آن که توجه کافی به آن نشده، ضررهای جبرانناپذیر توسعهی آنها به محیط زیست میباشد. برای مثال، تأمین برق مورد نیاز آموزش مدل GPT-4 بر اساس تخمین خود ChatGPT، تقریباً ۱۵۰۰ الی ۲۸۰۰ تن دیاکسید کربن تولید کرده است.

هزینهی کار روی این مدلها برای محققین دانشگاهی بسیار زیاد میباشد. برای مثال، هزینهی تهیهی سختافزار مورد نیاز آموزش مطلوب GPT-4 که حدود هزار الی دو هزار کارت گرافیک h100 میباشد در این تاریخ (پنجشنبه اول آذرماه ۱۴۰۳) تقریباً برابر بیست هزار میلیارد تومان است. از نظر اکثر اساتید دانشگاهی، این حوزه مختص شرکتهای غول پیکر میباشد نه دانشگاهها.

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

گوگل در سال ۲۰۱۷ معماری ترنسفورمر را معرفی کرد، ولی خیلی محتمل نیست که بتواند در زمینهی مدلهای زبانی بزرگ به شرکت OpenAI برسد. خلاقیتهای سادهای مانند همین حذف قسمت انکودر میتواند سرنوشت غولهای بزرگ این حوزه را تغییر دهد.