- Info@SaminRay.Com
- 88866172 021
مدل ChatGPT چگونه کار میکند؟
از زمان انتشار ChatGPT، عموم مردم با آن سروکار داشتهاند و سعی داشتند بینند که چه کارهایی میتواند انجام دهد، اما ChatGPT واقعاً چگونه کار میکند؟
از زمان انتشار ChatGPT، عموم مردم با آن سروکار داشتهاند و سعی داشتند بینند که چه کارهایی میتواند انجام دهد، اما ChatGPT واقعاً چگونه کار میکند؟ در حالی که جزئیات عملکرد داخلی آن هنوز منتشر نشده است، در این نوشتار سعی میکنیم با نحوه عملکرد آن بر اساس تحقیقات اخیر منتشر شده آشنا شویم. برای تهیه این نوشتار از محتوای مقاله InstructGPT استفاده شده است. طبق گفته OpenAI، در واقع ChatGPT با استفاده از روشهای مشابه InstructGPT، اما با تفاوتهای جزئی در تنظیم جمعآوری دادهها آموزشدیده است. متأسفانه، گزارشهای کمی در خصوص ChatGPT در دسترس عموم قرار گرفته است.
ChatGPT آخرین مدل زبانی OpenAI است که پیشرفت قابل توجهی نسبت به مدل قبلی موسوم GPT-3 از خود نشان داده است. مانند بسیاری از مدلهای زبانی جامع ، ChatGPT میتواند متن در طیف وسیعی از سبکها برای اهداف مختلف تولید کند، اما بادقت، جزئیات و انسجام بسیار بیشتر از مدلهای زبانی پیشین. این موضوع نشاندهنده ظهور نسل بعدی مدلهای زبانی جامع OpenAI است که با تمرکز بیشتر بر روی مکالمات تعاملی طراحی شده است.
سازندگان ChatGPT با ارائه راهکاری ترکیبی از یادگیری نظارت شده و یادگیری تقویتی برای تنظیم دقیق استفاده کردهاند، اما بااینوجود این مؤلفه یادگیری تقویتی است که ChatGPT را منحصربهفرد کرده است. سازندگان از تکنیک خاصی به نام "یادگیری تقویتی از بازخورد انسانی" موسوم به RLHF در آموزش ChatGPT استفاده کردهاند. در این روش از بازخورد انسانی در حلقه آموزشی برای بهحداقل رساندن خروجیهای مضر، نادرست یا مغرضانه استفاده میشود.
در مقاله "چالش Capability/Alignment در مدلهای NLP" به این موضوع اشاره شد که مدلهای زبانی مرسوم تا قبل از ChatGPT از معضل misalignment رنج میبردند. در واقع چنین باید گفت که الگوریتم منحصربهفرد آموزش مدل زبانی جامع ChatGPT با این هدف طراحی شده است تا مشکل مدلهای زبانی جامع پیش از خود را رفع کند. برای مطالعه این موضوع میتوانید به پست "چالش Capability/Alignment در مدلهای NLP" مراجعه نمایید. اما سازندگان ChatGPT دقیقاً چگونه از بازخورد انسانی برای حل مشکل alignment استفاده میکنند؟
یادگیری تقویت از بازخورد انسانی
این روش بهطورکلی از سه مرحله مجزا تشکیل شده است:
- مرحله Supervised Fine Tuning: بهمنظور ایجاد یک مدل پایه، یک مدل زبان از پیش آموزشدیده شده، بر روی مقدار نسبتاً کمی از دادههایی که توسط افراد خبره برچسبگذاری شدهاند، fine tune میشود؛ تا مدل جدید با یک Policy نظارت شده (مدل SFT) بهگونهای آموزش داده شود که بتواند خروجی را از بین یک لیست انتخاب شده از درخواستها تولید کند.
- مرحله تقلید ترجیحات انسانی: از افراد خبره خواسته میشود تا به تعداد نسبتاً زیادی از خروجیهای مدل SFT امتیاز دهند، بهاینترتیب مجموعهداده جدیدی شامل دادههای مقایسهای ایجاد میشود. یک مدل جدید با استفاده از این مجموعه داده آموزش داده میشود. به این مدل جدید مدل پاداش (RM) گفته میشود.
- مرحله بهینهسازی Proximal Policy یا PPO: از مدل پاداش برای تنظیم دقیقتر و بهبود مدل SFT استفاده میشود. مدل حاصل از این مرحله بهاصطلاح Policy Model نامیده میشود.
مرحله اول فقط یکبار انجام میشود، در حالی که مراحل دوم و سوم را میتوان به طور مداوم تکرار کرد تا دادههای مقایسهای بیشتری از آخرین Policy Model آوری شود و از آن برای آموزش یک مدل پاداش جدید و سپس یک Policy جدید استفاده شود. در ادامه سعی میشود کمی بیشتر به جزئیات اشاره شود.
گام اول: تنظیم دقیق مدل نظارت شده (SFT)
اولین مرحله شامل جمعآوری دادههای توصیفی بهمنظور آموزش یک Policy Model نظارت شده است که به آن مدل SFT گفته میشود.
- جمعآوری دادهها: فهرستی از درخواستهای انتخاب شده و از گروهی از افراد خبره خواسته میشود تا پاسخ خروجی مورد انتظار را یادداشت کنند. برای ChatGPT، از دو منبع مختلف درخواست استفاده شده است: برخی مستقیماً از دادههای تولید شده توسط افراد خبره یا توسعهدهندگان تهیه شدهاند، برخی نیز از درخواستهای مشتریان GPT-3 انتخاب شدهاند. از آنجایی که کل این فرایند آهسته و پرهزینه است، نتیجه یک مجموعه داده نسبتاً کوچک و باکیفیت بالا (احتمالاً از 12 تا 15 هزار نقطه داده) است که قرار است از آن برای تنظیم دقیق یک مدل زبان از پیش آموزشدیده استفاده شود.
- انتخاب مدل: بهجای تنظیم دقیق مدل اصلی GPT-3، توسعهدهندگان ChatGPT یک مدل از پیش آموزشدیده از سری GPT-3.5 را انتخاب کردند. احتمالاً مدل پایه استفاده شده آخرین مدل text-davinci-003 است که در واقع یک مدل GPT-3 که باهدف کدنویسی تنظیم دقیق شده است.
بسیار جالب است که بهمنظور ایجاد یک ربات چت باهدف عمومی مانند ChatGPT، توسعهدهندگان تصمیم گرفتند بهجای یک مدل مختص متن، از یک "مدل کد" برای انجام فرایند تنظیم دقیق استفاده کنند.
با توجه به حجم محدود داده برای این مرحله، مدل SFT که پس از این فرایند به دست میآید احتمالاً خروجی میدهد که هنوز چندان موردتوجه کاربر نیست و بر اساس مطالب قبلی از misalignment رنج میبرد. علت این مسئله این است که مرحله یادگیری با نظارت هزینههای مقیاسپذیری بالایی دارد. برای غلبه بر این مشکل، بهجای درخواست از افراد خبره برای ایجاد مجموعه دادههای بسیار بزرگتر که فرایندی کند و پرهزینه است، درخواست شد تا خروجیهای مختلف مدل SFT را برای ایجاد یک مدل پاداش رتبهبندی کنند.
نمایش مراحل بیان شده در گام اول
گام دوم: مدل پاداش (RM):
هدف این گام آموزش یک مدل پاداش به طور مستقیم از داده است. هدف از این کار دادن امتیاز به خروجیهای مدل SFT، متناسب با میزان مطلوب بودن این خروجیها برای انسان است. این فرایند یک مدل از دادهها استخراج میکند که ترجیحات انسان را تقلید میکند. نکتهای که باید به آن توجه داشت این است که این امر بهشدت منعکسکننده ترجیحات خاص گروه منتخب برچسبزنان انسانی و دستورالعملهای مشترکی است که آنها موافقت کردند که از آنها پیروی کنند. در ادامه نحوه عملکرد آن آمده است:
- لیستی از درخواستها انتخاب میشود و مدل SFT چندین خروجی (بین 4 تا 9 عدد) برای هر درخواست ایجاد میکند.
- افراد خبره خروجیها را از بهترین به بدترین رتبهبندی میکنند. نتیجه یک مجموعه داده برچسبگذاری شده جدید است که در آن رتبهبندیها همان برچسبها هستند. اندازه این مجموعه داده تقریباً 10 برابر بزرگتر از مجموعه داده انتخاب شده برای مدل SFT است.
- این دادههای جدید برای آموزش یک مدل پاداش (RM) استفاده میشود. این مدل تعدادی از خروجیهای مدل SFT را بهعنوان ورودی میگیرد و آنها را با الگوگرفتن از ترجیحات انسانی رتبهبندی میکند.
برای برچسبزنها، رتبهبندی خروجیها بسیار سادهتر از تولید آنها از ابتدا است، بهاینترتیب فرایند بسیار کارآمدتر میشود. در عمل، این داده از مجموعهای از 30 تا 40 هزار درخواست و تعدادی متغیر از خروجیهای تولید شده بهازای هر درخواست که در طول مرحله رتبهبندی به هر برچسب کننده ارائه شده است، ایجاد میشود.
نمایش مراحل بیان شده در گام دوم
مرحله 3: تنظیم دقیق مدل SFT از طریق Proximal Policy Optimization
در این مرحله از یادگیری تقویتی برای بهینهسازی مدل پاداش استفاده میشود تا از این طریق سیاست SFT تنظیم دقیق شود. الگوریتم یادگیری تقویتی مورداستفاده Proximal Policy Optimization است و مدل تنظیم دقیق شده حاصل از آن با عنوان مدل PPO شناخته میشود.
حال سؤال این است که PPO چیست؟ در ادامه نکات اصلی این روش آورده شده است.
- PPO الگوریتمی است که از آن برای آموزش Agentها در یادگیری تقویتی استفاده میشود. این الگوریتم On-Policy نامیده میشود؛ زیرا بهجای یادگیری از تجربیات گذشته؛ مانند الگوریتمهای Off-Policy مانند DQN از سیاست فعلی عملیات یادگیری و بهروزرسانی را انجام میدهد. این بدان معنی است که PPO به طور مداوم سیاست فعلی را بر اساس اقداماتی که Agent انجام میدهد و پاداشهایی که دریافت میکند، تطبیق میدهد.
- PPO از یک روش بهینهسازی منطقه اعتماد برای آموزش سیاست استفاده میکند، به این معنی که تغییر در خطمشی را بهگونهای محدود میکند تا در فاصله معینی از خطمشی قبلی واقع شود تا بهاینترتیب از ایجاد ثبات اطمینان حاصل شود. این برخلاف سایر روشهای گرادیان سیاست است که گاهی اوقات میتوانند بهروزرسانیهای بزرگی را در سیاست ایجاد کنند و یادگیری را بیثبات کند.
- PPO از یک تابع ارزش برای تخمین بازگشت مورد انتظار یک وضعیت یا عملکرد معین استفاده میکند. تابع ارزش برای محاسبه تابع مزیت استفاده میشود تا نشاندهنده تفاوت بین بازده مورد انتظار و بازده فعلی باشد. سپس از تابع مزیت برای بهروزرسانی سیاست از طریق مقایسه اقدامات انجام شده توسط سیاست فعلی و اقدامی که توسط سیاست قبلی انجام میشد استفاده میشود. این امر به PPO اجازه میدهد تا بر اساس تخمین ارزش اقدامات انجام شده، بهروزرسانیهای آگاهانهتری را در سیاست انجام دهد.
در این مرحله، مدل PPO از مدل SFT مقداردهی اولیه میشود و تابع ارزش از مدل پاداش مقداردهی اولیه میشود. در این الگوریتم محیط از نوع یک محیط brandit است بهگونهای که یک درخواست تصادفی ارائه میدهد و انتظار پاسخ به درخواست را دارد. با توجه به درخواست و پاسخ، یک جایزه که توسط مدل پاداش تعیین میشود، تولید میکند و داستان به پایان میرسد. در شکل زیر گامهای این مرحله به تصویر کشیده شده است.
نمایش مراحل بیان شده در گام سوم
مرجع:
https://www.assemblyai.com/blog/how-chatgpt-actually-works/
https://arxiv.org/pdf/2203.02155.pdf
https://openai.com/blog/chatgpt/