به قلم محدثه احمدی، ورودی 1400 ارشد مهندسی کامپیوتر صنعتی اصفهان
بازنگریشده توسط مسیح تنورساز، ورودی 1400 کارشناسی مهندسی کامپیوتر صنعتی اصفهان
به لطف مدلهای زبانی بزرگ یا به اختصار LLM، هوش مصنوعی به شکل خیلی گستردهای توجه همه رو به خودش جلب کرده. ChatGPT؛ معروفترین مدل زبانی بزرگ؛ به دلیل رابط کاربری بسیار روان و راحتش به سرعت محبوب شده. همین موضوع، پیشرفتهای اخیر هوش مصنوعی رو برای عموم مردم ملموستر کرده و باعث شده بیش از پیش ازش استفاده کنن. با این حال، نحوه عملکرد LLM ها هنوز به طور گسترده قابل درک نیست، مگر اینکه شما یک متخصص علوم داده یا فردی با نقش مرتبط با هوش مصنوعی باشید که تا حدودی با ابزارهای این حوزه آشنا باشید.
متاسفانه، اکثر مقالاتی که در موردشون نوشته میشه، تو یکی از این دو دسته قرار میگیرن: یا خیلی فنی هستن و نیاز به دانش قبلی زیادی دارن، یا اونقدر ساده هستن که در نهایت چیزی رو به خواننده آموزش نمیدن. این مقاله قراره بین این دو رویکرد تعادل برقرار کنه. بهتر بگم، قراره شما رو با نحوهی آموزش مدلهای زبان بزرگ و اینکه چرا اینقدر خوب کار میکنن آشنا کنه و این کار رو با برداشتن تکههای پازل در ادامهی مسیر انجام میدیم. البته باید بگیم که قرار نیست وارد جزئیات خیلی ریز بشیم و فقط میخوایم درک شهودیمون (و نه درک ریاضیمون) رو بیشتر کنیم.
اگه بخوایم به صورت سلسله مراتبی جایگاه مدلهای زبانی بزرگ رو در هوش مصنوعی بگیم، باید در نظر داشته باشیم که این مدلها در حقیقت، بخشی از یادگیری عمیق هستن که بر روی دادههای بدون ساختار از جمله متون و تصاویر متمرکزن. همچنین، هدف اصلیشون توسعه و بهبود شبکههای عصبی هستش. شبکههای عصبی بهبودیافته و پیچیده برای فهم، تولید و پردازش زبانهای طبیعی مثل فارسی و دیگر دادههای پیچیده، مورد استفاده قرار میگیرن.
مدلهای یادگیری عمیق بر پایه شبکههای عصبی مصنوعی و الهام گرفته از عملکرد مغز طراحی میشن. یادگیری ماشین، مادر شبکه عمیق هستش و به طور خاص بر روی تشخیص الگو در دادهها تمرکز داره و با استفاده از اون الگو، مشاهدات جدیدی رو بر روی دادهها اعمال میکنه. هر دوی این روشهای یادگیری سعی دارن مشکلات مختلفی رو با شناسایی یکسری الگوها در دیتا حل کنن. مدلهای زبانی به دلیل اینکه هم اندازشون به نسبت مدلهای قبل خیلی بزرگتره و هم اینکه روی دادههای خیلی بیشتری آموزش داده شدن، یکی از قویترین شبکههای عصبی موجود هستن. تمام این بخشها قسمت کوچکی از یک مفهوم بزرگتر به نام هوش مصنوعیان که به صورت کلی با ماشینهای هوشمند در ارتباطه.
خب ما میدونیم که برای فهم زبان نمیشه فقط به توکنایز(Tokenize) کردن تکیه کرد. روش کلی توکنایز اینه که اول داده متنی با یکسری روش شکسته میشه به اجزاء کوچکتر که حالا این اجزاء میتونن شامل حروف، کلمات یا مجموعهای از کلمات اون متن باشن. بعد از این مرحله مدل باید یاد بگیره که معنی هر جزء چیه. مدلهای قبل این مشکل رو داشتن که هر جزء رو مستقل از بقیه اجزاء میدیدن ولی اینجا سعی میشه روابط استخراج بشه.
مثلا شما در نظر بگیرید جمله "چه صبح خوبی!" رو نمیشه به صورت دقیق گفت که این جمله کنایه آمیز نیست و لازمه به جملات قبل و بعدش توجه بشه . پس برای الگو پیدا کردن، اون شیوه خیلی راحت یادگیری ماشین دیگه کاربردی نداره و باید از مدل پیچیدهتری استفاده بشه. اینجاست که شبکه عمیق عصبی به دادمون میرسه و علاوه بر کلمات، ساختار جمله و همنشینی کلمات کنار هم رو به عنوان ورودی در نظر میگیره. البته باید بگم که کار سادهای نیست و احتیاج به یک مدل خیلی پیچیده با تعداد پارامتر زیاد داره (به همین دلیل ما به این مدل زبانی میگیم مدل زبانی بزرگ!) به عنوان مثال چت جی پی تی عزیز، 176 میلیارد پارامتر داره. یعنی تقریبا 20 پارامتر به ازای هر انسان روی کره زمین!
خب حالا که دلیل استفاده از مدل زبانی بزرگ رو فهمیدیم، بهتره توضیح دادن درباره این مدل رو شروع کنیم:
برای شروع بیاین مسئله ساده رو در نظر بگیریم: چطور میتونیم کلمه بعدی از یک دنباله لغت رو پیشبینی کنیم؟
به صورت واضح ورودی شبکه عصبی دنبالهای از کلمات هستند و خروجی هم طبیعتا لغت بعدی خواهد بود. در حقیقت این موضوع یک نوع مسئله طبقه بندی[2] هست و تنها تفاوتش در اینه که به جای دو یا تعداد کمی کلاس، ما تعداد خیلی زیادی (شاید حدودا 50 هزارتا) کلاس داریم.
حالا که تسک ما تعریف شد، میدونیم که به لطف اینترنت و مراجع چاپی، حتی اگه دیتاست نداشته باشیم میتونیم خودمون درست کنیم. علاوه بر این که به دیتاست آماده احتیاجی نداریم، نیازی به برچسبگذاری هم نیست چون برچسب مشخصه، لغت بعدی. بد نیست بدونین که به این روش میگن یادگیری خود نظارتی[3].
تمام کاری که باید بکنیم به صورت خلاصه، تعلیم شبکه عصبی(همون LLM) برای پیشبینی کلمه بعد هست و اهمیتی نداره که جمله بلنده یا کوتاه، زبونش انگلیسیه یا فارسی و اصلا یک رشته توئیته یا یک فرمول ریاضی، چون تفاوتی در مسئله ایجاد نمیکنه. زمانی که تونستیم کلمه بعد رو پیشبینی کنیم به عنوان دیتای جدید اون لغت رو به دیتا اضافه میکنیم و حالا با احتساب کلمه جدید، لغت بعدی رو حدس میزنیم و این روش رو به همین شکل ادامه میدیم.
ممکنه براتون سوال پیش اومده باشه که چرا اسم چت جی پی تی، chat LLM نشد؟ جوری که مشخصه انگار مدلسازی زبان، آخر داستان نیست و در حقیقت شروع ماجراس. پس GPT از کجا میاد؟
این کلمه رو در زبان فارسی به شکل تحت الفظی ازش به عنوان "مدل مولد تبدیل کننده از پیش آموزش دیده" یاد میکنن. اما خب این ترجمه به فارسی سخته، فارسی راحتترش میشه توضیحی که در ادامه میدیم:
درباره اولین گام کمی صحبت کردیم، در این مرحله مقدار زیادی داده به شبکه تزریق میشه تا مدل نه تنها استاد گرامر بشه بلکه دانش خوبی درباره جهان و ادغام کلمات کنار هم بگیره اما مشکل اصلی اونجایی پیش میاد که مدل یاد نگرفته که مشاور خوبی باشه و به سوالات شما پاسخ بده و هنوز تا رسیدن به هوش مصنوعی فاصله داره. مثلا در جواب "اسمت چیه؟" ما میخوایم بگه "ChatGPT".
در این مرحله، اصطلاحا مدل با اهداف انسانی همسو نیست. همسویی برای مدلهای زبانی بزرگ موضوع مهمیه و ما یاد خواهیم گرفت که چجوری میتونیم این موضوع رو تا حد زیادی اصلاح کنیم. خوشبختانه مدلهای زبانی بزرگ از پیش آموزشدیده شده، کاملاً قابل هدایت هستند. بنابراین، اگرچه اونا در ابتدا به خوبی به دستورات پاسخ نمیدن، اما میشه به اونا یاد داد که این کار رو انجام بدن.
تا اینجا دادههای از قبل آموزش داده شده با مدل زبانی بزرگ رو داریم و اساسا همون کاری رو انجام میدیم که قبلاً انجام میدادیم، یعنی یادگیری پیشبینی تکبهتک کلمات و کنار هم قرار دادنشون. اما حالا این کار فقط با استفاده از جفت پرسش و پاسخهای باکیفیت به عنوان دادههای آموزشی شکل میگیره.
به این ترتیب، مدل یاد میگیره که صرفاً یک تکمیلکننده متن نباشه و به یک دستیار کارآمد تبدیل بشه. همچنین مدل یادمیگیره به گونهای به نیاز کاربر پاسخ بده که با هدف کاربر همسوتر باشه. اندازه این مجموعه داده آموزشی، معمولاً بسیار کوچکتر از مجموعه پیشآموزشه. دلیلشم هزینه هست! بالاخره ایجاد جفتهای سوال-پاسخ باکیفیت گرونه، چرا که انسان باید بسازتشون.
یک مرحله سوم هم وجود داره که بعضی از مدلهای زبانی بزرگ مثل ChatGPT طی میکنن، که «یادگیری تقویتی از بازخورد انسانی» (RLHF) نامیده میشه. ما در اینجا وارد جزئیات نمیشیم، اما هدف اون تنظیم دقیق ساختار مطابق میل انسانه. RLHF به همسویی کمک میکنه و تضمین میکنه که خروجی مدل زبانی بزرگ، ارزشها و ترجیحات انسانی رو منعکس کنه. تحقیقات اولیه نشون داده که این مرحله برای رسیدن یا فراتر رفتن از عملکرد سطح انسانی بسیار مهمه. در واقع، ترکیب زمینههای یادگیری تقویتی و مدلسازی زبان، به طور ویژهای امیدوارکننده به نظر میرسه و احتمالاً منجر به پیشرفتهای عظیمی در مقایسه با مدلهایی میشه که در حال حاضر داریم.
همونطور که اشاره شد، دستیار بودن مدل از طریق استانداردسازی ساختار و RLHF انجام میشه. حالا این سوال پیش میاد که اگه مدل زبانی بزرگ جواب رو ندونه چیکار میکنه؟ گویا این مدل یه رگ ایرونی داره و بلد نیستم تو معرفتش نیست و بالاخره یک جوابی برمیگردونه که به این فرایند به اصطلاح hallucination میگن که مدل یک سری حقایقی رو درست میکنه که نباید!
در مدلهای GPT، بخش ترانسفورمر مثل یک خوانندهی فوقالعاده متمرکز عمل میکنه که توانایی ویژهای به نام «توجه به خود» داره.
ترانسفورمر در مدلهای GPT متفاوت عمل میکنه. در ادامه تعدادی از کارهایی که انجام میده رو میاریم:
با استفاده از مکانیزم«توجه به خود»، ترانسفورمر در مدلهای GPT میتونه روابط بین کلمات در یک جمله رو بسیار بهتر درک کنه.
تولید کلمه، آخرین هدف و آخرین مرحله مدلهای GPT هست که پس از آموزش و تبدیل، انجام میشه و در این مرحله پاسخ نهایی درست میشه. هنگام ایجاد فرمتهای جدید متن، مدل میتونه از درک خود از زبان برای تولید متن منسجمتر و از نظر گرامری، صحیحتر استفاده کنه.
حالا که تا اینجای نوشته اومدید، بد نیس با چندتا از محبوبترین و جالبترین مدلهای زبانی بزرگ آشنا بشیم:
برت ( به انگلیسی Bert ): مدل معرفیشده توسط گوگل در سال ۲۰۱۸ است که مبتنی بر ترنسفورمره و میتونه یک توالی از داده رو به توالی دیگهای از داده تبدیل کنه(seq2seq). معماری برت شامل مجموعهای از رمزگذارهای ترنسفورمر و دارای ۳۴۲ میلیون پارامتره. برت بر روی حجم عظیمی از داده، آموزش دیده و سپس برای انجام وظایف خاصی مانند استنتاج زبان طبیعی و شباهت متن جملهها تنظیم شده.
فالکون (به انگلیسی: Falcon ): یک زبان برنامهنویسی متن باز، ساده، سریع، قدرتمند و با یادگیری آسونه که از مدلهای برنامهنویسی دستوری[4]، برنامهنویسی تابعی[5] و برنامهنویسی شیءگرا[6] پشتیبانی میکنه. فالکون دو نسخه کوچیکتر داره به نامهای فالکون 1 و فالکون 7 (با ۱ میلیارد و ۷ میلیارد پارامتر) که بهصورت رایگان در GitHub موجوده.
جیمنی (به انگلیسی : Gemini) : مجموعهای از مدلهای زبانی گوگله که چتبات همنام این شرکت رو پشتیبانی میکنه. این مدل جایگزین پالم و لاندا در قدرتدهی به چتبات شد که پس از تغییر مدل، از بارد به جیمنی تغییر نام پیدا کرد. جیمنی یک مدل چندوجهیه، یعنی میتونه علاوه بر متن، با تصاویر، صوت و ویدیو هم کار کنه. جمینی در اکثر معیارهای ارزیابیشده، از GPT-4 عملکرد بهتری رو از خودش نشون داده.
لاندا ( به انگلیسی Lambda) : مجموعهای از مدلها با معماری Seq2Seq که توسط Google Brain در سال ۲۰۲۱ معرفی شد. لاندا از یک مدل زبان ترانسفورماتور فقط با رمزگشا استفاده میکنه و روی حجم عظیمی از متن، پیشآموزش داده شده. در سال ۲۰۲۲، لاندا با ادعای داشتن احساس توسط یکی از مهندسان گوگل به نام بلیک لموین توجهات زیادی رو به خودش جلب کرد و حتی بعضی از کاربراش هم این ادعا رو تایید کردن.
واضحه که مدلهای زبانی بزرگ بسیار مفیدن و دانش و تواناییهای چشمگیری رو از خودشان تا الان نشون دادن. اما اینکه تا چه حد به هوش انسان شباهت دارن، هنوز مشخص نیست. تنها چیزی که مشخصه اینه که جهان دوباره نمیتونه به قبل از گسترش دستیارهای هوشمصنوعی برگرده، پس چه بهتر که درباره این فناوری دانش خودمون رو بیشتر کنیم و با موج همراه بشیم.
امیدوارم که این مقاله به شما کمک کرده باشه تا مدلهای زبانی بزرگ و هیجان جاری پیرامون اونها رو درک کرده باشید و اگر هم نقد یا نظری داشتین میتونین با ما در میون بذارین.
برای کسب اطلاعات بیشتر بد نیست به این منابع هم یه سری بزنید:
https://medium.com/data-science-at-microsoft/how-large-language-models-work-91c362f5b78f
[1] Large language model
[2] Classification
[3] Self-supervised learning
[4] Imperative programming
[5] Functional programming
[6] Object-oriented programming