۱. مقدمه
این ادامه مجموعه پستهای من در مورد فرآیند آموزش ChatGPT و چهارمین وبلاگ از این مجموعه است. من در مورد موارد زیر در وبلاگهای قبلاً منتشر شده صحبت کردهام:
الف) وبلاگ 1 مروری بر مراحل/مبانی فرآیند آموزش ChatGPT ارائه کرد.
https://ali-rouhanifar.blogsky.com/1403/08/18/post-62/ChatGPT-چیست؟
ب) وبلاگ 2 به جزئیات مربوط به مدل پاداش و عملکرد ضرری که در طول آموزش مدل پاداش استفاده شده بود، پرداخت، همچنین به جزئیات استدلال پرداخت که چرا ChatGPT ممکن است به همان درخواست پاسخ متفاوتی در زمانهای مختلف بدهد.
https://concepts-define.blogsky.com/1403/08/19/post-35/ChatGPT-قسمت-۲
ج) سپس وبلاگ 3 به جزئیات بهینهسازی خطمشی پروگزیمال[1] (PPO) و نحوه استفاده از مدل پاداش او برای تنظیم دقیق مدل ترانسفورمر تنظیم شده نظارت شده[2] (SFT) مرحله 1 پرداخت.
https://concepts-define.blogsky.com/1403/08/19/post-36/ChatGPT-قسمت-۳
این وبلاگ به جزئیات مرحله 1 فرآیند آموزش ChatGPT میپردازد و سعی میکند به سؤالات زیر پاسخ دهد:
۱) Generative Pre-training چیست، یعنی GPT در ChatGPT چیست؟!
۲) تنظیم دقیق افتراقی[3] چیست؟
این وبلاگ به جزئیات دقیق تری در مورد اینکه مدل زبان دقیقاً چیست و چگونه یک مدل زبان آموزش داده می شود، می پردازد.
اکنون، در ابتدا، مانند سایر وبلاگ های من در سری ChatGPT، قبل از توضیح بیشتر در مورد مرحله 1 آموزش ChatGPT، اجازه دهید یک مرور کلی از روند آموزش کامل ChatGPT داشته باشیم.
2. مروری بر روند آموزش ChatGPT
اجازه دهید قبل از پرداختن به پیچیدگیهای مرحله 1 آموزش ChatGPT، به طور خلاصه روند آموزشی ChatGPT را مرور کنیم:
1. در مرحله اول آموزش ChatGPT، ما یک مدل ترانسفورمر از قبل آموزش داده شده Generative داریم، بنابراین، قبلاً زبان را درک میکند. این مدل ترانسفورمر از پیش آموزشدیده بهگونهای تنظیم شده است که درخواست کاربر را درک کرده و پاسخ ارائه میکند. برای انجام این کار، برچسبزنان انسانی پاسخ و سریع را ارائه میدهند. با استفاده از این دادههای برچسبگذاریشده، مدل GPT برای دریافت مدل ترانسفورمر تنظیمشده دقیق نظارتشده (SFT) به خوبی تنظیم میشود.
2. در مرحله 2 آموزش ChatGPT، یک اعلان نادیده را به مدل ترانسفورمر تنظیم شده نظارت شده (SFT) ارسال میکنیم و پاسخهای متعددی را از مدل تنظیم دقیق نظارت شده ایجاد میکنیم که در وبلاگ دوم خود در اینجا
توضیح دادهام که چرا ممکن است یک مورد دریافت کند. پاسخهای مختلف برای یک اعلان سپس، ما از برچسبزنان انسانی داریم که این پاسخها را بر اساس «مقیاس لیکرت[4]» رتبهبندی میکنند - رتبهبندی براساس کیفیت پاسخها است - این رتبه به همراه درخواست کاربر و پاسخی است که برای آموزش مدل پاداشها شکایت میشود. مدل Rewards به ما میگوید که کیفیت پاسخ به یک درخواست ورودی خاص چقدر است.
3. در مرحله 3، یک اعلان نادیده کاربر را میگیریم و آن را از طریق مدل ترانسفورمر تنظیم شده نظارت شده عبور میدهیم تا یک پاسخ ایجاد شود.
سپس فرمان و پاسخ به مدل پاداش را که در مرحله 2 بالا آموزش داده شده بود، ارسال میکنیم. مدل Rewards یک عدد (رتبه) را تولید میکند که نشان میدهد کیفیت پاسخ چقدر بالا بوده است. ما از این رتبه برای تنظیم دقیقتر مدل ترانسفورماتور نظارت شده با تنظیم دقیق مرحله 1 استفاده میکنیم. پارامترهای مدل SFT را تنظیم میکنیم - انجام به روز رسانی پارامترها در چندین تکرار منجر به مدلی میشود که واقعی و غیر واقعی است - این مدل به ChatGPT تبدیل میشود. مراحل 1 تا 3 در تصویر زیر نشان داده شده است:
شکل: فرآیند آموزش ChatGPT
اکنون اجازه دهید ابتدا به پیچیدگیهای چگونگی ساخت مدل GPT بپردازیم، GPT چیست و تنظیم دقیق تشخیصی چیست؟
3. مدل از پیش آموزش دیده مولد: GPT در ChatGPT چیست؟
در بخشهای بالا اشاره شد که در مرحله 1 آموزش ChatGPT که مدل Pre-trained (GPT) به خوبی تنظیم شده است - به این ترتیب ما برچسب زنیهایی داشتیم که اعلان و پاسخ و پارامترهای مدل GPT را ارائه میدهند. به خوبی تنظیم شدهاند بیایید اکنون شروع کنیم ببینیم این مدل GPT چگونه آموزش داده شده است - اجازه دهید از یک مدل "آموزش ندیده" شروع کنیم و ببینیم چگونه GPT را دریافت میکنیم.
در مرحله آموزش GPT، مدل با دادههای زیادی که شامل چندین میلیارد توکن است، آموزش داده میشود. ما میتوانیم یک نشانه را به عنوان یک کلمه در نظر بگیریم - مدل برای یک کار خاص آموزش داده شده است - وظیفه پیشبینی "کلمه بعدی" است. یعنی دنبالهای از کلمات را به مدل میدهیم و از آن میخواهیم که کلمه بعدی را پیشبینی کند. مدل به این ترتیب پس از چندین میلیارد قدم چیزی را ثبت میکند.
شکل: پیش آموزش مدل GPT
شکل: پیش آموزش مدل GPT
میتوان مثالهای آموزشی برای پیشبینی کلمه بعدی ارائه داد. اگر در اینترنت بخزید[5] و متنهایی را از روزنامهها، وبسایتها، کتابهای آزمایشی دریافت کنید - در نهایت با متنهای زیادی مواجه میشویم و میتوانیم میلیاردها مثال تولید کنیم. بنابراین، ما چنین مثالهایی را ارائه میکنیم و مدل را یاد میگیریم. بنابراین، ما همان روند تمرینات عادی را طی میکنیم.
· مدل کلمه بعدی را تولید میکند.
· ما خطا را محاسبه میکنیم.
· تابع ضرر را محاسبه میکنیم.
· وزن یا پارامتر را به روز میکنیم.
این روند آموزشی است که جدید نیست. اگر قبلاً با آموزش یادگیری ماشین برخورد کردهاید، این حلقه جدید نیست.
در پایان، بردار اندازه vocab (تعداد نشانههای خاصی که احتمالاً میتوانیم تولید کنیم) x1 دریافت میکنیم و این بر روی یک softmax اعمال میشود تا توزیع احتمال را دریافت کنیم.
ما کلمهای را با بیشترین احتمال انتخاب نمیکنیم، بلکه با نمونهبرداری انجام میدهیم که ممکن است Temperature Sampling، Nucleus Sampling باشد - که در اینجا
بحث کردهام:
شکل: لایه Softmax توزیع احتمالی هر کلمه را در لغت نشان میدهد که سپس بر اساس استراتژی نمونهبرداری نمونهبرداری میشود.
درک فرآیند، کمی بیشتر:
درک اینکه چگونه فرآیند کمی بیشتر[6] کار میکند کمی بیشتر - شما کلمات را دارید، و بردار را برای کلمه تعبیه کردهاید و باید بردار را از لایههای رمزگشای ترانسفورمر عبور دهید. ما 96 مورد از اینها داریم - هر تعبیه کلمه از رمزگشا عبور میکند و پردازش میشود. در نهایت، زمانی که همه توکنها به روش مد پردازش شدند، خروجی را دریافت میکنیم.
با انجام این فرآیند – ما مدل زبان را درک میکنیم – اکنون «از پیش آموزش داده شده است».
شکل: رمزگذارهای ترانسفورمر
4. چرا پیش آموزش را انجام دادیم و تابع هدف برای پیش آموزش مولد چیست؟
تابع هدف برای پیش آموزش مولد[7]
همانطور که اشاره شد، با پیشآموزش مولد، مدل زبانی را آموزش دادهایم. مدلهای زبانی توالی کلمات را درک میکنند، و هدف اصلی یک مدل زبانی این است که با توجه به بافت کلمات قبلی که قبل از آن آمدهاند، پیشبینی کند چه کلمهای قرار است بعدی بیاید. از نظر ریاضی، تابع هدف را میتوان به صورت زیر نشان داد:
تابع هدف:
تابع هدف: GPT Pre-training
بنابراین، از نظر ریاضی، ما میخواهیم که ترانسفورمور پیشآموزش (GPT) هدفی را که نمونهای از مدلهای یادگیری ماشین و یادگیری عمیق است، بهینه کند. هدفی که ما در حال بهینهسازی آن هستیم، هدف مدل زبانی است که میخواهیم کلمه بعدی را با استفاده از تمام کلمات قبل از آن پیشبینی کنیم.
هنگامی که مدل زبان را همانطور که در بالا آموزش دادیم، مدل زبان را درک میکند – با توجه به یک توالی کلمه، میتواند کلمه بعدی را بفهمد.
چرا پیش آموزش را انجام دادیم؟
ما پیشآموزش را انجام دادیم زیرا میخواستیم این مدل مفهوم زبان را داشته باشد که مهم است. هنگامی که مدل مفهوم زبان را داشت، میتوانیم مدل را برای کارهای خاص مانند: پرسش-پاسخ، دستهبندی اسناد و تجزیه و تحلیل احساسات تنظیم کنیم. این مرحله تنظیم دقیق تشخیصی خواهد بود که در آن مدل برای کارهای خاص به خوبی تنظیم میشود.
5. مرحله تنظیم دقیق تبعیض آمیز
اکنون، ما مدلی داریم که درک زبانی دارد - در مرحله تنظیم دقیق، میخواهیم یک مسئله بسیار خاص را حل کنیم. فناوری اطلاعات میتواند پاسخگویی به پرسش، تحلیل احساسات یا دستهبندی اسناد یا هر مسئله دیگری مرتبط با زبان باشد. به عنوان مثال، در دستهبندی سند، دادن کلمه بعدی کافی نیست، ما میخواهیم احساس کلی سند را در مورد آنچه نشان میدهد، درک کنیم، یا میخواهیم دستهبندی سند را بفهمیم - از اینکه آیا این یک گزارش تحلیل خستگی است یا خیر. گزارش تحلیل استرس / به همین ترتیب. به طور معمول ما یک مدل از قبل آموزش دیده داریم، یک لایه خطی اضافه میکنیم، مقدار کمی از دادههای آموزشی را برای دستهبندی اسناد اضافه میکنیم، اساساً مجموعه کوچکی از پارامترها را یاد میگیریم و مدل را بیشتر تنظیم میکنیم.
شکل: تنظیم دقیق متمایز
از آنجایی که مجموعه کمی از پارامترها وجود دارد، تنظیم دقیق را بسیار آسان میکند.
برای چت بات و ChatGPT، ورودی یک اعلان و خروجی یک پاسخ است و مدل از پیش آموزش دیده به خوبی تنظیم شده است. ما نیازی به اضافه کردن پارامترهای بیشتری نداریم، بلکه دادههای بیشتری را به صورت درخواست و پاسخ کاربر و تنظیم دقیق پارامترها ارائه میدهیم. هدف مدل زبان در تنظیم دقیق نظارت شده استفاده میشود.
و در مرحله اول میبینیم که در آن برچسب رفتار خروجی مورد نظر را نشان میدهد و دادهها برای تنظیم دقیق یادگیری نظارت شده استفاده میشود.
این به عنوان یک نرم افزار اعمال نمیشود زیرا ما میخواهیم پیشبینی کلمه بعدی را به توزیع احتمال تبدیل کنیم - کلمه با بیشترین احتمال را انتخاب نمیکنیم، اما با نمونهگیری انجام میدهیم.