آزمون و اعتبارسنجی
تنها راهی که واقعاً نشان میدهد مدل تا چه اندازه به نمونههای جدید تعمیم میدهد این است که آن را روی نمونههای جدید امتحان کنیم. یک راه این است که مدل را وارد محیط عملیاتی کنید و عملکردش را زیر نظر بگیرید. این روش کار میکند، اما اگر مدل بسیار بد باشد کاربران شکایت خواهند کرد؛ بنابراین ایدهٔ خوبی نیست.
گزینهٔ بهتر این است که داده را به دو مجموعه تقسیم کنید: «مجموعهٔ آموزشی» و «مجموعهٔ آزمون». همانطور که نامها نشان میدهند، مدل با مجموعهٔ آموزشی آموزش میبیند و با مجموعهٔ آزمون سنجیده میشود. نرخ خطا روی نمونههای جدید «خطای تعمیم» یا «خطای خارج از نمونه» نام دارد. با ارزیابی مدل روی مجموعهٔ آزمون، برآوردی از این خطا به دست میآورید؛ این مقدار نشان میدهد مدل روی نمونههایی که قبلاً هرگز ندیده است احتمالاً چگونه عمل خواهد کرد.
اگر خطای آموزش پایین باشد، یعنی مدل روی مجموعهٔ آموزشی اشتباه کمی داشته باشد، اما خطای تعمیم زیاد باشد، به این معناست که مدل دادهٔ آموزشی را بیشبرازش کرده است.
تنظیم فراپارامتر و انتخاب مدل
ارزیابی مدل ساده است: از مجموعهٔ آزمون استفاده کنید. اما فرض کنید میان دو نوع مدل مردد هستید، مثلاً مدل خطی و مدل چندجملهای. چگونه انتخاب میکنید؟ یک راه این است که هر دو را آموزش دهید و با مجموعهٔ آزمون مقایسه کنید کدامیک بهتر تعمیم میدهد.
اکنون فرض کنید مدل خطی بهتر تعمیم میدهد، اما میخواهید برای جلوگیری از بیشبرازش مقداری منظمسازی اعمال کنید. مقدار فراپارامتر منظمسازی را چگونه انتخاب میکنید؟ شاید ۱۰۰ مدل متفاوت را با ۱۰۰ مقدار مختلف آموزش دهید. فرض کنید مقداری پیدا میکنید که مدل حاصل روی مجموعهٔ آزمون فقط ۵ درصد خطای تعمیم دارد. مدل را در محیط عملیاتی قرار میدهید، اما عملکرد واقعی بهجای ۵ درصد، حدود ۱۵ درصد خطا است. چه اتفاقی افتاده است؟
مشکل این است که خطای تعمیم را بارها روی همان مجموعهٔ آزمون اندازه گرفتهاید و مدل و فراپارامترها را طوری تنظیم کردهاید که روی همان مجموعهٔ خاص بهترین نتیجه را بدهند. بنابراین دیگر دلیلی نیست که مدل روی دادهٔ واقعاً جدید به همان خوبی عمل کند.
راهحل رایج «اعتبارسنجی کنارگذاری (Holdout Validation)» است. بخشی از مجموعهٔ آموزشی را جدا میکنید تا چند مدل نامزد را روی آن ارزیابی و بهترین را انتخاب کنید. این مجموعهٔ جداشده «مجموعهٔ اعتبارسنجی» یا «مجموعهٔ توسعه» و به اختصار dev set نام دارد. چند مدل با فراپارامترهای مختلف روی مجموعهٔ آموزشی کوچکشده، یعنی کل دادهٔ آموزشی منهای مجموعهٔ اعتبارسنجی، آموزش میبینند و مدلی انتخاب میشود که روی مجموعهٔ اعتبارسنجی بهترین عملکرد را دارد. پس از پایان این فرایند، بهترین مدل را دوباره روی کل مجموعهٔ آموزشی، این بار همراه با دادهٔ اعتبارسنجی، آموزش میدهید تا مدل نهایی ساخته شود. در پایان فقط یک بار این مدل نهایی را روی مجموعهٔ آزمون ارزیابی میکنید تا برآوردی از خطای تعمیم به دست آورید.
شکل ۱-۲۵. انتخاب مدل با استفاده از اعتبارسنجی کنارگذاری
این راهحل معمولاً بسیار خوب کار میکند، اما اگر مجموعهٔ اعتبارسنجی بیش از حد کوچک باشد، ارزیابی مدلها دقیق نخواهد بود و ممکن است اشتباهاً مدلی کمبهینه را انتخاب کنید. برعکس، اگر مجموعهٔ اعتبارسنجی بیش از حد بزرگ باشد، مجموعهٔ آموزشی باقیمانده بسیار کوچکتر از کل دادهٔ آموزشی میشود. مشکل اینجاست که مدل نهایی در نهایت روی کل مجموعهٔ آموزشی آموزش میبیند و مقایسهٔ مدلهای نامزدی که روی مجموعهای بسیار کوچکتر آموزش دیدهاند چندان ایدهآل نیست؛ مانند انتخاب سریعترین دوندهٔ سرعت برای شرکت در ماراتن.
یکی از راههای حل این مسئله «اعتبارسنجی متقابل تکرارشونده» است که از چند مجموعهٔ اعتبارسنجی کوچک استفاده میکند. هر مدل چند بار، هر بار پس از آموزش روی باقی داده، روی یکی از مجموعههای اعتبارسنجی ارزیابی میشود. با میانگینگیری از همهٔ ارزیابیهای یک مدل، معیار دقیقتری از عملکرد آن به دست میآید. عیب این روش آن است که زمان آموزش تقریباً به تعداد مجموعههای اعتبارسنجی ضرب میشود.
ناهماهنگی داده
گاهی تهیهٔ دادهٔ فراوان برای آموزش آسان است، اما این داده کاملاً نمایندهٔ دادهای نیست که در محیط عملیاتی استفاده خواهد شد. فرض کنید میخواهید برنامهای برای تلفن همراه بسازید که از گلها عکس بگیرد و گونهٔ آنها را خودکار تشخیص دهد. میتوانید میلیونها تصویر گل از وب دریافت کنید، اما این تصاویر دقیقاً شبیه عکسهایی نیستند که کاربران با دوربین تلفن و در شرایط واقعی برنامه میگیرند. شاید فقط ۱۰۰۰ تصویر واقعاً نماینده، یعنی تصویری که با خود برنامه گرفته شده باشد، داشته باشید.
در این وضعیت، مهمترین قاعده این است که هم مجموعهٔ اعتبارسنجی و هم مجموعهٔ آزمون باید تا حد ممکن نمایندهٔ دادهٔ محیط عملیاتی باشند. بنابراین این دو مجموعه باید فقط از تصاویر نماینده ساخته شوند. میتوانید ۱۰۰۰ تصویر واقعی را بر بزنید و نیمی را در مجموعهٔ اعتبارسنجی و نیمی را در مجموعهٔ آزمون قرار دهید؛ البته باید مطمئن شوید نسخههای تکراری یا تقریباً تکراری در هر دو مجموعه قرار نگیرند.
پس از آموزش مدل روی تصاویر وب، اگر عملکرد روی مجموعهٔ اعتبارسنجی ناامیدکننده باشد، معلوم نیست دلیل آن بیشبرازش مدل روی تصاویر آموزشی است یا صرفاً اختلاف توزیع میان تصاویر وب و تصاویر برنامهٔ همراه.
یک راهحل آن است که بخشی از تصاویر آموزشی وب را در مجموعهٔ دیگری کنار بگذارید؛ Andrew Ng این مجموعه را «مجموعهٔ train-dev» نامیده است. پس از آموزش مدل روی مجموعهٔ آموزشی اصلی، نه روی train-dev، مدل را روی train-dev ارزیابی میکنید. اگر روی train-dev ضعیف باشد، مدل حتماً دادهٔ آموزشی را بیشبرازش کرده است و باید مدل را سادهتر یا منظمتر کنید، دادهٔ آموزشی بیشتری تهیه کنید یا داده را پاکسازی کنید. اما اگر روی train-dev خوب و روی مجموعهٔ dev ضعیف باشد، مشکل از ناهماهنگی داده است. میتوانید تصاویر وب را پیشپردازش کنید تا بیشتر شبیه عکسهای برنامهٔ همراه شوند و مدل را دوباره آموزش دهید. وقتی مدل هم روی train-dev و هم روی dev خوب عمل کرد، در آخر یک بار روی مجموعهٔ آزمون ارزیابی میشود تا مشخص شود در محیط عملیاتی احتمالاً چه عملکردی خواهد داشت.
شکل ۱-۲۶. وقتی دادهٔ واقعی کم است، میتوان از دادهٔ مشابه و فراوان برای آموزش استفاده و بخشی از آن را بهصورت train-dev برای سنجش بیشبرازش کنار گذاشت؛ دادهٔ واقعی برای سنجش ناهماهنگی در dev و ارزیابی عملکرد نهایی در مجموعهٔ آزمون استفاده میشود.
تمرینها
در این فصل با برخی از مهمترین مفاهیم یادگیری ماشین آشنا شدیم. در فصلهای بعد با جزئیات بیشتری وارد موضوع میشویم و کد بیشتری مینویسیم؛ اما پیش از آن مطمئن شوید میتوانید به پرسشهای زیر پاسخ دهید:
- یادگیری ماشین را چگونه تعریف میکنید؟
- چهار نوع کاربردی را نام ببرید که یادگیری ماشین در آنها بسیار خوب عمل میکند.
- مجموعهٔ آموزشی برچسبخورده چیست؟
- دو وظیفهٔ رایج در یادگیری نظارتشده کداماند؟
- چهار وظیفهٔ رایج در یادگیری بدون نظارت را نام ببرید.
- برای اینکه یک ربات بتواند در زمینهای ناشناختهٔ گوناگون راه برود، از چه نوع الگوریتمی استفاده میکنید؟
- برای بخشبندی مشتریان به چند گروه، از چه نوع الگوریتمی استفاده میکنید؟
- مسئلهٔ تشخیص هرزنامه را یادگیری نظارتشده در نظر میگیرید یا یادگیری بدون نظارت؟
- سامانهٔ یادگیری برخط چیست؟
- یادگیری خارج از حافظه چیست؟
- چه نوع الگوریتمی برای پیشبینی به معیار شباهت متکی است؟
- تفاوت پارامتر مدل و فراپارامتر مدل چیست؟
- الگوریتمهای مدلمحور در پی یافتن چه چیزی هستند؟ رایجترین راهبرد آنها برای موفقیت چیست؟ چگونه پیشبینی انجام میدهند؟
- چهار مورد از چالشهای اصلی یادگیری ماشین را نام ببرید.
- اگر مدل روی دادهٔ آموزشی عالی عمل کند اما روی نمونههای جدید تعمیم ضعیفی داشته باشد، چه اتفاقی افتاده است؟ سه راهحل احتمالی نام ببرید.
- مجموعهٔ آزمون چیست و چرا باید از آن استفاده کنید؟
- هدف مجموعهٔ اعتبارسنجی چیست؟
- مجموعهٔ train-dev چیست، چه زمانی به آن نیاز دارید و چگونه از آن استفاده میکنید؟
- اگر فراپارامترها را با مجموعهٔ آزمون تنظیم کنید چه مشکلی ممکن است رخ دهد؟
پاسخ این تمرینها در پایان دفترچهٔ این فصل در نشانی https://homl.info/colab3 موجود است.