نمودار loss را چطور بخوانیم

نمودار loss صادقانهترین گزارش از یک اجرای آموزشی است. منحنی سالم چه شکلی است، انفجار نرخ یادگیری چه شکلی است، overfitting را چطور زود بفهمیم، و نقش eval split واقعاً چیست.
وقتی در TheTensorTune دکمه Start را میزنید، بلوک مانیتور شروع میکند یک خط رسم کردن. آن خط پراطلاعاتترین چیزی است که در کل برنامه وجود دارد و به بیشتر آدمها یاد ندادهاند باهاش چه کنند. نمودار loss یک امتیاز نیست؛ گزارش کامل یک اجراست — و وقتی چهار-پنج حالتش را بلد باشید، یک اجرا را با یک نگاه میخوانید.
این خط واقعاً چیست
loss همان غافلگیریِ مدل است. در هر گام آموزش، مدل یک دسته از نمونههای شما را برمیدارد، توکن بعدی را حدس میزند و میسنجد چقدر اشتباه بود. loss بالا یعنی خیلی اشتباه بود؛ loss پایین یعنی جواب شما را میدید که میآید. آموزش یعنی هل دادن چند میلیون عدد اینطوری و آنطوری تا دفعه بعد غافلگیری کمتر باشد. نمودار مانیتور برای هر گام یک نقطه میکشد، بهعلاوه یک خط چیندار دوم برای eval split — تکهای از داده که مدل هرگز رویش آموزش نمیبیند و برای سنجش صادقانه کنار گذاشته شده.
طرح سالم
منحنی سالم اول تند پایین میآید و بعد که به کف میرسد صاف میشود. در یکی از اجراهای نمایشی ما — یک مدل کوچک روی ۳۶ نمونهی پشتیبان مشتری — loss آموزش در طول ۹۰ گام از حدود ۴ به ۱.۴ افت کرد و eval loss هم دنبالش پایین آمد. این شکل یعنی مدل دارد الگوهای داده را یاد میگیرد، نه کلمهبهکلمهاش را؛ چون نمونههای eval را هرگز ندیده. وقتی خط چیندار، خط پیوسته را در رشدن دنبال میکند، به اجرا اعتماد کنید.
انفجار
بعضی وقتها منحنی پایین نمیآید — بالا میرود، یا به زیگزاگ تندی تبدیل میشود که هر گام بدتر میشود. این تقریباً همیشه نرخ یادگیری است. نرخ یادگیری اندازهی همان هل دادن است: خیلی کوچک باشد هیچ اتفاقی نمیافتد، خیلی بزرگ باشد هر گام از هدف میگذرد و مدل به جای بهتر شدن بدتر میشود. ما یک بار موقع تست گذاشتیمش روی 1.0 (نگذارید) و دیدیم loss راست بالا رفت. برای LoRA مقدار 2e-4 پیشفرض همیشگی و تستشده است. اگر نمودارتان منفجر شد، پایینش بیاورید و از نو شروع کنید — اجرای سوخته ارزش نجات دادن ندارد.
خطر آرام: overfitting
پرخطرتر طرح آن است که خط پیوسته همچنان پایین بیاید ولی خط چیندار برگردد و بالا برود. مدل دارد نمونههای آموزش را کلمهبهکلمه حفظ میکند و عملکردش روی دادهی ندیده بدتر میشود. روی دیتاستهای کوچک — که بیشتر دیتاستهای فاینتیون همیناند — این بعد از دو سه epoch اتفاق میافتد. فاجعه نیست؛ اطلاعات است. یا همانجا توقف کنید یا epochها را کم کنید. توقف زودهنگام TheTensorTune بهجای شما خط eval را میپاید و اجرایی را که دیگر بهتر نمیشود متوقف میکند.
یک عدد دیگر هم لایق جایش روی صفحه است: perplexity که صفحه مقایسه برای مدل پایه و تنظیمشده گزارش میکند. همان loss است تبدیلشده به «بهطور متوسط بین چند کلمه مدل مردد بود» — هرچه پایینتر، مطمئنتر. دیدن افت آن از ۵۵ به زیر ۹ روی eval split دیتاست نمایشی ما از هر عدد loss لذتبخشتر بود، چون روی دادهای اندازهگیری شده بود که مدل هرگز رویش آموزش ندیده بود. کل فلسفهی نگه داشتن eval split همین است: یک حس را تبدیل به عدد میکند.