بیزهاااد
بیزهاااد

@The_DarkWatcher

16 تغريدة 39 قراءة Feb 16, 2023
مدل ChatGPT را با رسم شکل توضیح دهید. «۲ نمره»
چون صحبت در مورد #ChatGPT زیاد شده و ماسک هم منو از توییتر انداخته بیرون و وقت آزاد دارم، خواستم برای دوستایی که کارشون NLP یا Machine Learning نیست ولی کنجکاون که چطوری کار میکنه یه رشته توییت (بدون پرداختن به جزییات فنی)‌ بنویسم.
چطوری این سیستم بلده که هم کد پایتون بنویسه، هم جُک براتون بگه، و هم حرف فلسفی بزنه؟ متاسفانه بعضی از جزییات این سیستم واضح نیست چون OpenAI برخلاف اسمش اونقدا هم open نیست. ولی به طور کلی ساخت یه همچین مدلی بنا به گفته خودشون ۳ مرحله کلی داشته.
مرحله ۱)
یکی از پایه‌ای ترین مسائلی که ما (چون مرض داریم) در NLP روش کار میکنیم اینه: «بیاین یه مدلی بسازیم که با دیدن یک متن بتونه لغت بعدی رو حدس بزنه». مثلا مدلی که با دیدن «کوکب خانوم زن پاکیزه و» حدس بزنه که لغلاتی مثل «باسلیقه» و «جوان» در ادامه محتمل هستن ولی «بنفش» نیست
اولین مرحله ساخت ChatGPT دقیقا همینه - ساختن مدلی که لغت بعدیِ یک رشته از لغات رو حدس بزنه. این مدل با دیدن حجم زیادی از متون موجود در وِب ساخته میشه (به عنوان مثلا ویکیپدیا و متن میلیون‌ها کتاب و غیره). این مدل چیزیه که شاید به اسم GPT3 یا ورژن‌های قبلیش به گوشتون خورده باشه.
این مدل (با اینکه هدف ساده‌ای داره) اکثرتوانایی‌های عجیب و غریب ChatGPT رو در خودش داره. مثلا اگه شما به این مدل بگین متن ورودی اینه که «آنچه در ادامه خواهید دید غزلی در مورد گرانی گوجه است …» مدل (فقط با پیش‌بینی لغت بعدی و بعدییش و …) شروع به نوشتن شعری در مورد 🍅خواهد کرد!
اما من برای اینکه بتونم شعری در مورد 🍅 از مدل بکشم بیرون، مجبور شدم یه متن الکی وارد کنم که مدل رو مجبور کنه که شعر بگه. به متنی که من به عنوان ورودی دادم میگن prompt و خیلی‌ها شروع کردن به مطالعه‌ی اینکه چطوری prompt خوبی مثل «متنی که در …» بنویسیم که نتیجه مطلوب رو بگیریم.
مرحله ۲ و ۳ ساخت ChatGPT سعی دارن که این مشکل رو حل کنن. به جای اینکه من بخوام به زور یه prompt خوب پیدا کنم، طراحان مدل گفتن بیاین طوری تغییرش بدیم که شما اکثر خواسته‌هاتون رو بتونین با چت کردن به سیستم وارد کنید. در این صورت کافییه که بگین «یک غزل در مورد گرانی گوجه بگو» و خلاص
مرحله ۲)
این مرحله کمتر جذابه. تنها کاری که انجام شده اینه که مدل قبلی رو بگیریم و فرآیند یادگیریِ لغت بعدی (که روی متون وِب انجام شده بود) رو روی متن‌های چَت انجام بدیم. متن‌هایی که نفر اول توش گفته «آقا یه جُک راجع به تونس بگو» و دومی میگه «یه بار یکی رفت تونس یکی رفت نتونس»!
با دیدن این چت‌ها، مدل یاد میگیره که ورودی ها رو به صورت گفتگو ببینه و خروجی‌هاش رو به صورت پاسخ به گفتگو تولید کنه. اکثر زحمتی که کمپانی OpenAI در این مرحله کشیده اینه که به یه سری آدم پول بده که متن به حالت چَت بنویسن. هم از طرف کاربر و هم از طرف سرویسی که قراره پاسخ بده.
مرحله ۳)
حالا که شما یک مدل دارید که باهاتون چت میکنه. اگر بهش بگید که «یک غزل در مورد گرونی 🍅 بگو» میتونه چندین جواب مختلف بهتون بده، مثلا چندین غزل مختلف یا حتی جواب بده «آقا، من شاعر خوبی نیستم! بیخیال من شو!». همه این جواب‌ها کاملا منطقی هستن.
توی همه جواب‌ها مدل به درستی لغت‌های بعدی رو یکی بعد از دیگری پیش‌بینی کرده، ولی ما غزل‌ها رو به جواب آخر ترجیح میدیم. مرحله ۳ سعی میکنه که مدل رو به سمت خروجی دلخواه ما (یعنی غزلی در مورد گوجه) هُل بده.
برای انجام این کار، بچه‌ها توی OpenAI، خروجی‌های مختلفی از مدل گرفتن و به یه سری آدم گفتن این جواب‌ها رو بر اساس کیفیت (از خوب به بد)‌ مرتب کنن. قاعدتا اونها غزل‌های درست حسابی رو بالاتر از پاسخ «آقا، بیخیال من شو» قرار دادن.
من اینجا دیگه به شدت جزییات رو حذف میکنم ولی بر اساس لیست مرتب شده پاسخ‌ها (با استفاده از Reinforcement Learning) میشه مدل رو بهتر کرد و سوق داد به سمت جواب‌هایی که ما بیشتر می‌پسندیم. ولی فراموش نکنیم که در نهایت #ChatGPT مدلیست که فقط لغت بعدی رو حدس میزنه.
حقیقتا شگفت انگیزترین چیز اینه که همچین صورت مساله‌ی ساده‌ای (لغت بعدی رو حدس زدن)‌ توانایی این رو پیدا میکنه که جُک و غزل بگه و کد پایتون بزنه.
الان انرژیم تموم شد ولی ایشالا بعدا مینویسم چرا همین سادگی صورت مساله باعث میشه بشه ChatGPT رو بازی داد و خروجی نامناسب ازش گرفت.
در نهایت بگم که ChatGPT برای زبان فارسی (به خاطر کم بودن متن‌هایی که در زبان فارسی پردازش کرده) عملکردش چندان جالب نیست ولی خودم به خاطر ‌مثال‌هایی که اینجا زدم کنجکاو شدم ببینم که ChatGPT چیکار میکنه با مثال‌های من که میتونین اینجا ببینین 🤦‍♂️
این هم همون سوال‌ها ولی به انگلیسی :)

جاري تحميل الاقتراحات...