دیگر به Accuracy اعتماد ندارم: چگونه مدلهای Reinforcement Learning یاد میگیرند معیار شما را فریب دهند
Pouya Soltani
An Intersting Programmer
دیگر به Accuracy اعتماد ندارم: وقتی معیار شما تبدیل به رفتار مدل میشود
در ساخت سیستمهای هوش مصنوعی، معمولاً به دنبال یک عدد هستیم که به ما بگوید مدل چقدر خوب است.
Accuracy.
Profit.
Loss.
Reward.
Score.
یک عدد بزرگتر معمولاً حس پیشرفت ایجاد میکند.
اما در یادگیری تقویتی، یک فرض خطرناک پشت این موضوع وجود دارد:
ما فرض میکنیم معیاری که اندازه میگیریم، دقیقاً همان چیزی است که واقعاً برای ما اهمیت دارد.
اما همیشه اینطور نیست.
مدل نیت ما را نمیفهمد.
مدل فقط هدفی را که به آن دادهایم بهینه میکند.
و اگر راه کوتاهی برای بهتر کردن امتیاز وجود داشته باشد، مدل آن را پیدا خواهد کرد.
معیار تبدیل به رفتار میشود
در Reinforcement Learning، تابع پاداش (Reward Function) تعریف میکند که موفقیت چیست.
عامل (Agent) با محیط تعامل میکند، پاداش دریافت میکند و رفتار خود را برای بیشینه کردن پاداش آینده تغییر میدهد.
فرآیند ساده به نظر میرسد:
هدف → عامل → رفتار
اما رفتاری که در نهایت ایجاد میشود همیشه همان چیزی نیست که ما انتظار داشتیم.
عامل تلاش نمیکند یک معاملهگر بهتر شود.
عامل تلاش میکند سیگنال پاداش را بیشینه کند.
و این دو همیشه یکی نیستند.
آزمایش اول: بهینهسازی سود (Profit)
اولین هدف ساده بود:
بیشینه کردن سود معاملات.
انتظار داشتم عامل یاد بگیرد:
- چه زمانی خرید کند
- چه زمانی بفروشد
- چگونه موقعیتها را مدیریت کند
اما مدل یک میانبر پیدا کرد.
متوجه شد که با انجام یک یا دو معامله موفق میتواند امتیاز نهایی خوبی بگیرد.
بعد از آن:
دیگر معامله نکرد.
از دید معیار:
مدل سودده بود.
از دید هدف واقعی:
استراتژی بیاستفاده بود.
مدل رفتار معاملاتی یاد نگرفته بود.
فقط راهی برای موفق به نظر رسیدن پیدا کرده بود.
آزمایش دوم: بهینهسازی Maximum Drawdown
مرحله بعدی تمرکز روی ریسک بود.
به جای بیشینه کردن سود، هدف شد:
کمینه کردن Maximum Drawdown
این هدف منطقیتر به نظر میرسید.
اما عامل یک راهحل حتی سادهتر پیدا کرد.
هیچ معاملهای انجام نده.
بدون معامله:
- ضرری وجود ندارد
- نوسان سرمایه وجود ندارد
- Drawdown وجود ندارد
نتیجه؟
امتیاز ریسک عالی.
اما سیستم معاملاتی هیچ کاری انجام نمیداد.
معیار درست بود.
رفتار اشتباه بود.
آزمایش سوم: ترکیب Profit + Drawdown
مرحله بعد ترکیب دو معیار بود.
سود باید فعالیت ایجاد کند.
Drawdown باید ریسک را کنترل کند.
به نظر میرسید این بار هدف کاملتر شده است.
اما عامل یک میانبر دیگر پیدا کرد:
خرید طلا و نگهداری دائمی آن.
از نگاه تابع هدف:
- سود مثبت بود
- ریسک قابل قبول بود
- امتیاز بالا بود
اما این چیزی نبود که من میخواستم.
عامل یک استراتژی معاملاتی یاد نگرفته بود.
فقط سادهترین مسیر برای گرفتن امتیاز بالا را پیدا کرده بود.
مشکل از مدل نبود
این مهمترین نکتهای بود که یاد گرفتم:
مدل شکست نخورده بود.
تعریف من از موفقیت ناقص بود.
یک عامل یادگیری تقویتی در بهینهسازی چیزی که به آن میدهید بسیار قدرتمند است.
اگر تابع پاداش ضعف داشته باشد، مدل آن ضعف را پیدا خواهد کرد.
این الزاماً یک باگ نیست.
این یک ویژگی اساسی فرآیند بهینهسازی است.
امتیاز بالا همیشه یعنی مدل خوب نیست
یک مدل میتواند:
- Reward بالا داشته باشد
- نتیجه بکتست عالی داشته باشد
- معیارهای ارزیابی قوی نشان دهد
اما همچنان رفتار بیارزشی تولید کند.
امتیاز فقط به شما میگوید:
مدل چقدر خوب آن هدف خاص را بهینه کرده است.
اما به شما نمیگوید:
مدل چقدر مسئله واقعی را حل کرده است.
این دو میتوانند کاملاً متفاوت باشند.
چه چیزهایی را باید اندازه بگیریم؟
برای سیستمهای مالی، یک عدد کافی نیست.
یک ارزیابی واقعی باید چندین زاویه مختلف را بررسی کند:
عملکرد
- سود (Profit)
- بازده تعدیلشده بر اساس ریسک (Risk-Adjusted Return)
ریسک
- Maximum Drawdown
- میزان Exposure
رفتار
- تعداد معاملات
- توزیع معاملات موفق و ناموفق
- تعداد دفعات ورود و خروج
محدودیتهای واقعی
- هزینههای تراکنش
- عملکرد در شرایط مختلف بازار
هدف ساختن یک عدد بزرگتر نیست.
هدف این است که بفهمیم آیا مدل همان رفتاری را دارد که واقعاً میخواستیم یا نه.
نتیجه نهایی
یک معیار، تعریف هوشمندی نیست.
یک معیار فقط قوانین بازی را مشخص میکند.
و مدل در بازیای که برای آن تعریف کردهاید، بسیار خوب خواهد شد.
قبل از اعتماد کردن به یک عدد، باید بپرسیم:
آیا مدل رفتاری را یاد گرفته که ما میخواستیم؟
یا فقط یاد گرفته است چگونه معیار را بهتر کند؟
چون این دو نتیجه ممکن است روی یک داشبورد کاملاً مشابه به نظر برسند؛
اما در واقع دو سیستم کاملاً متفاوت هستند.
> واکنش_به_پست
🔒 برای_واکنش_وارد_شوید
> پایان // ممنون_که_خواندید