در این پست میآموزیم که نرمالسازی دستهای[1] چیست، چرا به آن نیاز است، چگونه کار میکند و چگونه با استفاده از Keras آن را پیادهسازی کنیم.
نرمالسازی دستهای برای اولین بار توسط دو محقق در گوگل، سرگئی آیوف[2] و کریستین سگدی[3] در مقاله خود با عنوان «نرمالسازی دستهای: تسریع آموزش عمیق شبکه با کاهش تغییر متغیر داخلی داخلی[4]» در سال 2015 معرفی شد. نویسندگان نشان دادند که نرمالسازی دستهای نتیجه برتر ImageNet (2014) با حاشیه قابل توجهی تنها با استفاده از 7 درصد از مراحل آموزش را بهبود بخشید. امروزه، Normalization دستهای تقریباً در تمام معماریهای CNN استفاده میشود.
در این پست، ابتدا یک معماری استاندارد به اشتراک گذاشته شده در نمونه کتابخانه Keras در مجموعه داده CIFAR10 را آموزش خواهیم داد. سپس نرمالسازی دستهای را به معماری اضافه میکنیم و نشان میدهیم که دقت در دورههای کمتری به طور قابلتوجهی (۱۰ درصد) افزایش مییابد.
تغییر متغیر داخلی
قبل از اینکه به موضوع نرمالسازی دستهای بپردازیم، اجازه دهید ابتدا یک اصل اساسی در یادگیری ماشین را درک کنیم. فرض کنید یک مجموعه داده گل داریم و میخواهیم یک دستهبندی باینری برای گل رز بسازیم. اگر تصویر گل رز باشد خروجی 1 است و در غیر این صورت خروجی 0 است.
زیرمجموعهای از دادههای آموزشی را در نظر بگیرید که عمدتاً دارای جوانههای رز قرمز به عنوان گل رز و گلهای وحشی به عنوان نمونههای غیر گل رز هستند. اینها در شکل 1 نشان داده شده است.
شکل 1
۱. Skewed Datasets چیست؟
هنگامی که روی یک پروژه یادگیری ماشین کار میکنید، ممکن است بارها با مجموعه دادههایی روبرو شوید که توزیع بین تعداد نمونههای کلاسهای مختلف مطابقت نداشته باشد.
به عنوان مثال
۱) ممکن است در حال ساخت یک مدل ML باشید تا دستهبندی کنید که آیا مجموعهای از تصاویر قطعات موتور دارای ناهنجاری/ترک[1] هستند یا نه، یا یک مدل رایجتر هستند.
2) ممکن است در حال ساخت یک مدل ML برای خواندن اسکنهای پزشکی باشید و بخواهید مطمئن شوید اگر بیمار بیماری نادری داشته باشد یا خیر.
در چنین مواردی، ممکن است همیشه امکان توزیع 50-50 از هر دو کلاس نمونه در مجموعه داده وجود نداشته باشد، زیرا نمونههای کافی با بیماری یا با نقص/ناهنجاری ممکن است در دسترس نباشند.
مجموعه دادهها در چنین مواردی عبارتند از: Skewed
۲. ماتریس سردرگمی[2]، دقت و یادآوری
برای مجموعه دادههای کج، معیارهای خطا مانند "دقت" کار نمیکند. فرض کنید شما 100 تصویر پزشکی دارید و از این 100، 10 بیمار یک بیماری نادر دارند. حال، هر چه که باشد، حتی اگر همه 100 مورد را به عنوان فاقد بیماری دستهبندی کنید، دقت مدل شما هنوز 90 درصد است، بدیهی است که این بدان معنا نیست که شما یک مدل خوب ساختهاید.
بنابراین در مواردی که مجموعه دادههای Skewed هستند، به معیارهای خطای متفاوتی نیاز دارید. اولین کاری که باید انجام دهید ترسیم یک ماتریس سردرگمی است. برای ساختن ماتریس سردرگمی، کلاس Actual را در محور X و کلاس Predicted را در محور Y میگیرید. این در شکل 1 نشان داده شده است. فرض کنید y = 1 نشان دهنده مثبت و y = 0 نشان دهنده منفی باشد.
۱. مقدمه
من تصمیم گرفتم مجموعه پستهای بعدی خود را در مورد الگوریتمهای تقویتی[1] شامل AdaBoost (تقویت تطبیقی) | افزایش گرادیان | XGBoost (تقویت گرادیان فوق العاده) داشته باشم. نیازی به ذکر نیست که چندین وبلاگ عالی، ویدیوهای یوتیوب و کتابهای درسی در این زمینه وجود دارد. با این حال، این یادداشتها برای تقویت درک من در مورد خانواده الگوریتمهای تقویتکننده هستند - بسیار خوشحالم اگر این محتوا برای دیگر علاقهمندان به علم داده در سراسر جهان مفید باشد.
بگذارید از ریشه شروع کنیم!
۲. تقویت - زمینه و فلسفه
یادگیرندگان قوی در مقابل یادگیرندگان ضعیف[2]
مسائل پیچیده در حوزههای هوشمصنوعی (AI) ممکن است با استفاده از «یادگیرندگان قوی» به عنوان مدلهای شبکه عصبی حل شوند. با این حال، مدلهایی مانند DNNها به (الف) پارامترهای یادگیری بیشتری نیاز دارند - بسته به اندازه شبکه (ب) دادههای بیشتری برای یادگیری خوب به منظور پیشبینی تعمیمیتر نیاز دارند (ج) نیاز سختافزاری بالا دارند. بدون شک حل چنین مسائلی مسیری است که ما به ویژه در حوزه تحقیقات یادگیری عمیق در حال حرکت هستیم – با این حال، موارد متعددی وجود دارد که در آنها با محدودیتهایی مواجه میشویم – محدودیتهایی از نظر دادههای موجود برای آموزش. یک مدل، محدودیتها از نظر سختافزار موجود و غیره. در چنین مواردی است که "یادگیرندگان ضعیف" به نجات ما میآیند!
اجازه دهید اکنون چکیده و مقدمه مقاله رابرت ای شاپیر با عنوان «قدرت یادگیری ضعیف» را مرور کنیم - تاریخ این مقاله به سال 1990 برمیگردد (!) اما نکته اولیه مقاله حتی امروز بسیار مرتبط است.
A concept class is learnable (or, strongly learnable) if given access to a source of examples of the unknown concept, the learner with high probability is able to output a hypothesis that is correct but on all but on an arbitrary small fraction of the instances. A concept/class is weakly learnable if the learner can produce a hypothesis that performs only slightly better than random guessing
رابرت ای شاپیر در این مقاله بیان میکند: «یک کلاس مفهومی قابل یادگیری است (یا به شدت قابل یادگیری است) اگر به منبعی از مثالهای مفهوم مجهول دسترسی پیدا کند، یادگیرنده با احتمال بالا میتواند فرضیهای را ارائه دهد که درست است اما در همه موارد به جز در همه موارد. کسری دلخواه کوچک از نمونهها. اگر یادگیرنده بتواند فرضیهای ارائه دهد که فقط کمی بهتر از حدس زدن تصادفی باشد، یک مفهوم/کلاس ضعیف قابل یادگیری است.
فرضیه ~ معادله با وزن / پارامترهای آن
۱. مقدمه
این ادامه مجموعه پستهای من در مورد فرآیند آموزش 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، ورودی یک اعلان و خروجی یک پاسخ است و مدل از پیش آموزش دیده به خوبی تنظیم شده است. ما نیازی به اضافه کردن پارامترهای بیشتری نداریم، بلکه دادههای بیشتری را به صورت درخواست و پاسخ کاربر و تنظیم دقیق پارامترها ارائه میدهیم. هدف مدل زبان در تنظیم دقیق نظارت شده استفاده میشود.
و در مرحله اول میبینیم که در آن برچسب رفتار خروجی مورد نظر را نشان میدهد و دادهها برای تنظیم دقیق یادگیری نظارت شده استفاده میشود.
این به عنوان یک نرم افزار اعمال نمیشود زیرا ما میخواهیم پیشبینی کلمه بعدی را به توزیع احتمال تبدیل کنیم - کلمه با بیشترین احتمال را انتخاب نمیکنیم، اما با نمونهگیری انجام میدهیم.
۱. مقدمه
این وبلاگ به جزئیات دقیق مرحله 3 آموزش ChatGPT میپردازد و اجزای مرحله 3 را شرح میدهد. قبل از اینکه وارد این پیچیدگیها شویم، اجازه دهید یک بار دیگر مراحل اساسی آموزش ChatGPT را مرور کنیم!
شکل: 3 مرحله در آموزش ChatGPT
2. مروری بر مراحل آموزش ChatGPT
آموزش ChatGPT را میتوان به 3 مرحله اساسی تقسیم کرد:
الف) ChatGPT از مدل Generative Pretrained Transformer استفاده میکند که برای درک زبان از قبل آموزش داده شده است. این مدل ترانسفورمر از پیش آموزشدیده بیشتر تنظیم شده است - برای تنظیم دقیق این مدل، ما برچسبزنان انسانی داریم که اعلان اولیه و همچنین پاسخ را ارائه میدهند. سپس برای تنظیم دقیق به شبکه داده میشود. شبکه برای بدست آوردن مجموعهای از پارامترها برای مدل دقیق تنظیم شده آموزش دیده است.
ب) در مرحله 2 آموزش ChatGPT، یک دستور را میگیریم و آن را چندین بار از یک مدل عبور میدهیم، به طوری که “n” پاسخهای متفاوتی دریافت میکنیم. در وبلاگ دوم
https://concepts-define.blogsky.com/1403/08/19/post-35/ChatGPT-قسمت-۲
توضیح دادهام که چگونه همان مدل زبان میتواند پاسخهای متفاوتی را به یک اعلان ارائه میدهد. سپس از برچسبزنان انسانی میخواهیم که این پاسخها را رتبهبندی کنند و رتبه نشاندهنده کمیت کیفیت پاسخها است، یعنی اینکه «برچسبزنان انسانی» چقدر پاسخها را دوست دارند. رتبهبندی در مقیاس بین 1 و 7 انجام میشود - مقیاس به عنوان "مقیاس لیکرت" نامیده میشود که یک سیستم رتبهبندی است که در پرسشنامهها استفاده میشود و برای اندازهگیری نگرشها، نظرات یا ادراک افراد طراحی شده است
https://www.britannica.com/topic/Likert-Scale
این رتبهبندی برای آموزش مدل «پاداش» دیگری استفاده میشود که یک اعلان ورودی و پاسخ را میگیرد و خروجیها یک اسکالر – یک «پاداش» – که عددی بین ۱ تا ۷ است، خواهد بود.
ج) در مرحله 3 آموزش ChatGPT، ما از مدل "پاداش" استفاده میکنیم - آنچه اساساً در مرحله 3 اتفاق میافتد این است که یک اعلان نادیده و پاسخ به مدل تنظیم شده نظارت شده را ارسال میکنیم و دریافت میکنیم یک پاسخ پاسخ از طریق مدل "پاداش" - مدل پاداش رتبهای را به دست میدهد که برای تنظیم دقیق پارامترهای مدل نظارتشده دقیقتر برای خروجی یک پاسخ واقعیتر و قابل قبولتر استفاده میشود. سپس مدل حاصل به ChatGPT تبدیل میشود.
اکنون مرحله 3 آموزش ChatGPT را روشن میکنیم. برای انجام این کار، باقیمانده این وبلاگ از بخشهای زیر تشکیل شده است:
· در بخش 3، به جزئیاتی در مورد چگونگی ایجاد پاسخ توسط ChatGPT میپردازیم.
· در بخش 4، ما در مورد مدل "پاداش" صحبت میکنیم که برای تنظیم دقیقتر مدل تنظیم دقیق نظارت شده مرحله 1 استفاده میشود. مهمتر از همه، در بخش 4 در مورد مفهوم بهینهسازی سیاست پروگزیمال و تابع ضرر مربوطه صحبت میکنیم. استفاده میشود که در طول فرآیند آموزش "به حداکثر" میرسد تا پاسخ واقعیتر و قابل قبولتر به درخواست ایجاد شود.
3. ChatGPT چگونه پاسخ ایجاد میکند؟
اجازه دهید به طور خاص بر روی مرحله 3 تمرکز کنیم و اجازه دهید سعی کنیم و هر یک از اجزای نشان داده شده در زیر را با جزئیات بیشتر شرح دهیم. این بخش نحوه استفاده از آموزش تقویتی در ChatGPT را برجسته میکند.
شکل: مرحله 3 آموزش ChatGPT
ما یک مدل نظارت شده با تنظیم دقیق داریم که به آن یک اعلان ارسال میکنیم و یک پاسخ تولید میکنیم. بیایید ببینیم یک پاسخ از GPT چگونه به نظر میرسد.
شکل: دنباله یک پاسخ کامل از ChatGPT
بنابراین، باید تاکید کرد که GPT (3.5/4) با استفاده از تمام کلماتی که قبلا به عنوان زمینه ورودی آمده بودند، یک کلمه را در یک زمان تولید میکند.
بنابراین، ما یک اعلان ورودی داریم و آن را به مدل تنظیم شده نظارت شده ارسال میکنیم تا یک کلمه در یک زمان تولید شود (همانطور که در شکل زیر مشخص شده است) تا زمانی که همه کلمات برای آن پاسخ تولید شوند.
شکل: مرحله 3 آموزش ChatGPT ابهامزدایی شده است
4. چگونه از مدل پاداش مرحله 2 استفاده میشود؟
سپس، اعلان و پاسخ به مدل "پاداش" - که قبلا آموزش داده شده است - ارسال می شود تا مقدار اسکالر را بدست آوریم - پاداش که به ما میگوید چقدر پاسخ خوب بوده است. سپس از Reward برای تنظیم دقیق مدل تنظیم دقیق نظارت شده اصلی مرحله 1 استفاده میکنیم. بنابراین، پارامترهای مدل تنظیم دقیق نظارت شده اصلی باید به روز شوند. اجازه دهید ببینیم که چگونه این اتفاق افتاد.
پارامترهای مدل تنظیمشده نظارت شده با استفاده از «بهینهسازی سیاست پروگزیمال» بهروزرسانی میشوند که دستهای از تکنیکها برای به حداکثر رساندن پاداش با گنجاندن پاداش در خود تابع ضرر هستند.
ریاضیات تابع ضرر از تابع ضرر بهینهسازی سیاست پروگزیمال (PPO):
همانطور که گفته شد، در Proximal Policy Optimisation از Reward در خود تابع ضرر استفاده میشود. اجازه دهید ریاضیات تابع ضرر را با کمی جزئیات بررسی کنیم.
معادله زیر از مقاله گرفته شده است: الگوریتمهای بهینهسازی سیاست پروگزیمال:
تابع ضرر بهینهسازی سیاست پروگزیمال (PPO)
با تکرار، پاداش ایجاد شده باید برای تنظیم دقیق مدل نظارت شده تنظیم دقیق استفاده شود. در بالا ما تابع ضرر برای به روز رسانی گرادیان استفاده شده است. در معادله بالا:
· ϴ پارامتری در مدل نظارت دقیق است که ما آن را به روز خواهیم کرد
· t مرحله زمان است
· هر مرحله زمانی، ما یک پاسخ کامل داریم که یک مرحلهای است.
· r نسبت پاداش است - نسبت پاداش با پارامترهای جدید برای ورودی داده شده تقسیم بر پاداش پارامترهای قدیمی با همان ورودی داده شده است.
بنابراین، اگر نسبت پاداش بالاتر از 1 باشد، به این معنی است که آموزش در جهت درست پیش میرود.
· “A” تابع مزیت است - در یادگیری تقویتی، تابع مزیت ارزیابی میکند که خروجی با توجه به ورودی چقدر با کیفیت بوده است. بنابراین، عددی است که متناسب با پاداش است.
بنابراین، اگر پاسخ بسیار خوب باشد، محصول r.A بسیار بالا خواهد بود.
· Clip - ما نمیخواهیم بهروزرسانی گرادیان را خیلی سریع کنیم - ما کران بالا و پایین نسبت را با ϵ برش میدهیم - بزرگی ϵ تعیین میکند که چقدر اجازه میدهیم بهروزرسانی گرادیان تغییر کند.
· سپس ما یک انتظار داریم - و این به این واقعیت مربوط میشود که میتوانیم برای یک ورودی یکسان، چندین نوع پاسخ ایجاد کنیم. بنابراین، ما میخواهیم این را شبیهسازی کنیم - میانگین مقادیر را میگیریم و بنابراین کل بهینهسازی سیاست پروگزیمال به یک خروجی از ChatGPT وابسته نیست. ما بهروزرسانیهای گرادیان را از طریق «Gradient Ascend» انجام میدهیم زیرا در حال به حداکثر رساندن مقدار هستیم.
https://openai.com/blog/chatgpt
https://arxiv.org/abs/1707.06347
https://arxiv.org/abs/2203.02155
https://www.assemblyai.com/blog/how-chatgpt-actually-works/
https://www.youtube.com/@CodeEmporium