برای اهداف این سند:
هدف نهایی توسعه یادگیری ماشین، به حداکثر رساندن سودمندی مدل مستقر شده است.
شما معمولاً می توانید از همان مراحل و اصول اولیه در این بخش برای هر مشکل ML استفاده کنید.
این بخش مفروضات زیر را بیان می کند:
- شما قبلاً یک خط لوله آموزشی کاملاً در حال اجرا به همراه پیکربندی دارید که نتیجه معقولی به دست می آورد.
- شما منابع محاسباتی کافی برای انجام آزمایش های تنظیم معنادار و اجرای حداقل چندین کار آموزشی به صورت موازی دارید.
استراتژی تنظیم افزایشی
توصیه: با یک پیکربندی ساده شروع کنید. سپس، در حین ایجاد بینش در مورد مشکل، به تدریج بهبودهایی را انجام دهید. اطمینان حاصل کنید که هر گونه بهبودی مبتنی بر شواهد قوی است.
ما فرض می کنیم که هدف شما یافتن پیکربندی است که عملکرد مدل شما را به حداکثر برساند. گاهی اوقات، هدف شما به حداکثر رساندن بهبود مدل در یک مهلت ثابت است. در موارد دیگر، میتوانید مدل را به طور نامحدود بهبود دهید. به عنوان مثال، بهبود مستمر مدل مورد استفاده در تولید.
در اصل، میتوانید با استفاده از الگوریتمی برای جستجوی خودکار کل فضای پیکربندیهای ممکن، عملکرد را به حداکثر برسانید، اما این یک گزینه عملی نیست. فضای تنظیمات ممکن بسیار بزرگ است و هنوز هیچ الگوریتمی به اندازه کافی پیچیده برای جستجوی کارآمد در این فضا بدون راهنمایی انسان وجود ندارد. بیشتر الگوریتمهای جستجوی خودکار به یک فضای جستجوی طراحیشده دستی متکی هستند که مجموعهای از پیکربندیها را برای جستجو تعریف میکند، و این فضاهای جستجو میتوانند تا حدودی اهمیت داشته باشند.
مؤثرترین راه برای به حداکثر رساندن عملکرد این است که با یک پیکربندی ساده شروع کنید و به تدریج ویژگیها را اضافه کنید و بهبودها را در حین ایجاد بینش در مورد مشکل انجام دهید.
توصیه میکنیم از الگوریتمهای جستجوی خودکار در هر دور تنظیم استفاده کنید و با افزایش درک خود، فضاهای جستجو را بهطور مداوم بهروزرسانی کنید. همانطور که کاوش می کنید، طبیعتاً پیکربندی های بهتر و بهتری خواهید یافت و بنابراین "بهترین" مدل شما به طور مداوم بهبود می یابد.
اصطلاح "راه اندازی" به به روز رسانی به بهترین پیکربندی ما اشاره دارد (که ممکن است با راه اندازی واقعی یک مدل تولیدی مطابقت داشته باشد یا نباشد). برای هر «راه اندازی»، باید اطمینان حاصل کنید که تغییر بر اساس شواهد قوی است - نه فقط شانس تصادفی بر اساس یک پیکربندی خوش شانس - تا پیچیدگی غیر ضروری را به خط لوله آموزشی اضافه نکنید.
در سطح بالا، استراتژی تنظیم افزایشی ما شامل تکرار چهار مرحله زیر است:
- یک هدف برای دور بعدی آزمایشها انتخاب کنید. اطمینان حاصل کنید که هدف به درستی مشخص شده است.
- دور بعدی آزمایش ها را طراحی کنید. مجموعه ای از آزمایش ها را طراحی و اجرا کنید که به سمت این هدف پیش می رود.
- از نتایج تجربی بیاموزید. آزمایش را با یک چک لیست ارزیابی کنید.
- تعیین کنید که آیا تغییر نامزد را بپذیرید یا خیر.
بقیه این بخش این استراتژی را شرح می دهد.
یک هدف برای دور بعدی آزمایشها انتخاب کنید
اگر سعی کنید چندین ویژگی را اضافه کنید یا به چند سوال به طور همزمان پاسخ دهید، ممکن است نتوانید اثرات جداگانه روی نتایج را از هم جدا کنید. اهداف مثال عبارتند از:
- یک بهبود بالقوه در خط لوله را امتحان کنید (به عنوان مثال، تنظیم کننده جدید، انتخاب پیش پردازش و غیره).
- درک تاثیر یک ابرپارامتر مدل خاص (به عنوان مثال، تابع فعال سازی)
- خطای اعتبارسنجی را به حداقل برسانید.
پیشرفت بلندمدت را بر بهبود خطاهای اعتبارسنجی کوتاه مدت اولویت دهید
خلاصه: بیشتر اوقات، هدف اصلی شما این است که به مشکل تنظیم بینش برسید.
توصیه میکنیم بیشتر وقت خود را صرف کسب بینش در مورد مشکل کنید و زمان نسبتاً کمی را با حرص و طمع روی به حداکثر رساندن عملکرد مجموعه اعتبارسنجی متمرکز کنید. به عبارت دیگر، بیشتر وقت خود را صرف «اکتشاف» کنید و تنها مقدار کمی را صرف «استثمار» کنید. درک مشکل برای به حداکثر رساندن عملکرد نهایی بسیار مهم است. اولویت دادن به بینش بر دستاوردهای کوتاه مدت به موارد زیر کمک می کند:
- از ایجاد تغییرات غیرضروری که اتفاقاً در برنامههای با عملکرد خوب صرفاً از طریق تصادف تاریخی وجود دارد، خودداری کنید.
- تشخیص دهید که خطای اعتبارسنجی به کدام هایپرپارامترها حساس تر است، کدام هایپرپارامترها بیشترین تعامل را دارند و بنابراین نیاز به تنظیم مجدد با هم دارند، و کدام هایپرپارامترها نسبت به تغییرات دیگر حساس نیستند و بنابراین می توان آنها را در آزمایش های آینده برطرف کرد.
- ویژگیهای بالقوه جدید را برای امتحان کردن پیشنهاد دهید، مانند تنظیمکنندههای جدید در صورت مشکل بیش از حد برازش.
- ویژگی هایی را شناسایی کنید که کمکی نمی کنند و بنابراین می توان آنها را حذف کرد و پیچیدگی آزمایش های آینده را کاهش داد.
- تشخیص دهید که چه زمانی بهبودهای حاصل از تنظیم فراپارامتر احتمالاً اشباع شده است.
- برای بهبود کارایی تنظیم، فضاهای جستجوی ما را حول مقدار بهینه محدود کنید.
در نهایت، شما مشکل را درک خواهید کرد. سپس، میتوانید صرفاً روی خطای اعتبارسنجی تمرکز کنید، حتی اگر آزمایشها در مورد ساختار مشکل تنظیم اطلاعات حداکثری نداشته باشند.
دور بعدی آزمایش ها را طراحی کنید
خلاصه: مشخص کنید کدام فراپارامترها برای هدف آزمایشی، فراپارامترهای علمی، مزاحم و ثابت هستند. دنباله ای از مطالعات را برای مقایسه مقادیر مختلف فراپارامترهای علمی و در عین حال بهینه سازی بیش از فراپارامترهای مزاحم ایجاد کنید. فضای جستجوی فراپارامترهای مزاحم را برای متعادل کردن هزینه های منابع با ارزش علمی انتخاب کنید.
شناسایی فراپارامترهای علمی، مزاحم و ثابت
برای یک هدف معین، همه هایپرپارامترها در یکی از دسته های زیر قرار می گیرند:
- فراپارامترهای علمی آنهایی هستند که تأثیر آنها بر عملکرد مدل همان چیزی است که شما می خواهید اندازه گیری کنید.
- فراپارامترهای مزاحم آنهایی هستند که برای مقایسه مقادیر مختلف فراپارامترهای علمی نیاز به بهینه سازی دارند. فراپارامترهای مزاحم مشابه پارامترهای مزاحم در آمار هستند.
- فراپارامترهای ثابت در دور فعلی آزمایشها مقادیر ثابتی دارند. هنگامی که مقادیر مختلف هایپرپارامترهای علمی را با هم مقایسه می کنید، مقادیر فراپارامترهای ثابت نباید تغییر کنند. با تثبیت برخی فراپارامترها برای مجموعهای از آزمایشها، باید بپذیرید که نتایج حاصل از آزمایشها ممکن است برای تنظیمات دیگر فراپارامترهای ثابت معتبر نباشد. به عبارت دیگر، فراپارامترهای ثابت برای هر نتیجهای که از آزمایشها میگیرید، هشدارهایی ایجاد میکنند.
به عنوان مثال، فرض کنید هدف شما به شرح زیر است:
تعیین کنید که آیا مدلی با لایه های پنهان بیشتر خطای اعتبارسنجی کمتری دارد یا خیر.
در این مورد:
- نرخ یادگیری یک فراپارامتر مزاحم است زیرا تنها در صورتی میتوانید مدلها را با تعداد لایههای پنهان متفاوت مقایسه کنید که نرخ یادگیری بهطور جداگانه برای هر تعداد لایههای پنهان تنظیم شود. (نرخ یادگیری بهینه عموماً به معماری مدل بستگی دارد).
- اگر در آزمایشهای قبلی مشخص کرده باشید که بهترین تابع فعالسازی به عمق مدل حساس نیست، تابع فعالسازی میتواند یک فراپارامتر ثابت باشد. یا، مایلید نتیجه گیری خود را در مورد تعداد لایه های پنهان برای پوشش این تابع فعال سازی محدود کنید. از طرف دیگر، اگر آماده باشید آن را به طور جداگانه برای هر تعداد لایه پنهان تنظیم کنید، می تواند یک فراپارامتر مزاحم باشد.
یک هایپرپارامتر خاص می تواند یک هایپرپارامتر علمی، هایپرپارامتر مزاحم یا هایپرپارامتر ثابت باشد. تعیین هایپرپارامتر بسته به هدف آزمایشی تغییر می کند. به عنوان مثال، تابع فعال سازی می تواند یکی از موارد زیر باشد:
- هایپرپارامتر علمی: آیا ReLU یا tanh انتخاب بهتری برای مشکل ما است؟
- هایپرپارامتر مزاحم: آیا بهترین مدل پنج لایه بهتر از بهترین مدل شش لایه است که چندین عملکرد مختلف فعال سازی ممکن را مجاز می کنید؟
- هایپرپارامتر ثابت: برای شبکه های ReLU، آیا اضافه کردن نرمال سازی دسته ای در یک موقعیت خاص کمکی می کند؟
هنگام طراحی دور جدیدی از آزمایشات:
- فراپارامترهای علمی برای هدف آزمایشی را شناسایی کنید. (در این مرحله می توانید تمام هایپرپارامترهای دیگر را به عنوان هایپرپارامترهای مزاحم در نظر بگیرید.)
- برخی از فراپارامترهای مزاحم را به هایپرپارامترهای ثابت تبدیل کنید.
با منابع بی حد و حصر، همه هایپرپارامترهای غیر علمی را به عنوان فراپارامترهای مزاحم رها می کنید تا نتیجه گیری هایی که از آزمایشات خود می گیرید عاری از اخطارهای مربوط به مقادیر هایپرپارامتر ثابت باشد. با این حال، هر چه سعی کنید فراپارامترهای مزاحم بیشتری را تنظیم کنید، این خطر بیشتر است که نتوانید آنها را به اندازه کافی برای هر تنظیم فراپارامترهای علمی تنظیم کنید و در نهایت به نتایج اشتباه از آزمایشات خود برسید. همانطور که در بخش بعدی توضیح داده شد، می توانید با افزایش بودجه محاسباتی با این خطر مقابله کنید. با این حال، حداکثر بودجه منابع شما اغلب کمتر از آن چیزی است که برای تنظیم تمام پارامترهای غیر علمی لازم است.
ما توصیه می کنیم که یک هایپرپارامتر مزاحم را به یک هایپرپارامتر ثابت تبدیل کنید، زمانی که اخطارهای ارائه شده با رفع آن سنگین تر از هزینه گنجاندن آن به عنوان یک فراپارامتر مزاحم است. هر چه یک هایپرپارامتر مزاحم بیشتر با فراپارامترهای علمی تعامل داشته باشد، تثبیت مقدار آن آسیب بیشتری خواهد داشت. به عنوان مثال، بهترین مقدار استحکام پوسیدگی وزن معمولاً به اندازه مدل بستگی دارد، بنابراین مقایسه اندازههای مدلهای مختلف با فرض یک مقدار خاص از پوسیدگی وزن، چندان روشنگر نخواهد بود.
برخی از پارامترهای بهینه ساز
به عنوان یک قاعده کلی، برخی از فراپارامترهای بهینه ساز (مثلاً نرخ یادگیری، تکانه، پارامترهای زمان بندی نرخ یادگیری، بتای Adam و غیره) فراپارامترهای مزاحم هستند زیرا تمایل دارند بیشترین تعامل را با تغییرات دیگر داشته باشند. این هایپرپارامترهای بهینه ساز به ندرت ابرپارامترهای علمی هستند زیرا هدفی مانند "بهترین نرخ یادگیری برای خط لوله فعلی چیست؟" بینش زیادی ارائه نمی دهد. به هر حال، بهترین تنظیم می تواند با تغییر خط لوله بعدی تغییر کند.
ممکن است برخی از فراپارامترهای بهینه ساز را گهگاه به دلیل محدودیت منابع یا شواهد قوی مبنی بر عدم تداخل آنها با پارامترهای علمی اصلاح کنید. با این حال، به طور کلی باید فرض کنید که برای مقایسه منصفانه بین تنظیمات مختلف هایپرپارامترهای علمی، باید ابرپارامترهای بهینه ساز را جداگانه تنظیم کنید، و بنابراین نباید ثابت شوند. علاوه بر این، هیچ دلیل پیشینی برای ترجیح یک مقدار فراپارامتر بهینه ساز بر دیگری وجود ندارد. به عنوان مثال، مقادیر فراپارامتر بهینه ساز معمولاً به هیچ وجه بر هزینه محاسباتی گذرها یا گرادیان ها تأثیر نمی گذارد.
انتخاب بهینه ساز
انتخاب بهینه ساز معمولاً یکی از موارد زیر است:
- یک فراپارامتر علمی
- یک هایپرپارامتر ثابت
اگر هدف آزمایشی شما شامل مقایسه منصفانه بین دو یا چند بهینه ساز مختلف باشد، بهینه ساز یک ابرپارامتر علمی است. به عنوان مثال:
تعیین کنید کدام بهینه ساز کمترین خطای اعتبارسنجی را در تعداد معینی از مراحل ایجاد می کند.
از طرف دیگر، ممکن است به دلایل مختلف، بهینه ساز را به یک هایپرپارامتر ثابت تبدیل کنید، از جمله:
- آزمایشهای قبلی نشان میدهد که بهترین بهینهساز برای مشکل تنظیم شما به فراپارامترهای علمی فعلی حساس نیست.
- شما ترجیح می دهید مقادیر فراپارامترهای علمی را با استفاده از این بهینه ساز مقایسه کنید زیرا منحنی های آموزشی آن راحت تر است.
- شما ترجیح می دهید از این بهینه ساز استفاده کنید زیرا از حافظه کمتری نسبت به گزینه های جایگزین استفاده می کند.
فراپارامترهای منظم سازی
فراپارامترهای معرفی شده توسط یک تکنیک منظم سازی معمولاً فراپارامترهای مزاحم هستند. با این حال، انتخاب اینکه آیا اصلاً تکنیک منظم سازی را شامل شود یا نه، یک فراپارامتر علمی یا ثابت است.
به عنوان مثال، منظم کردن حذف، پیچیدگی کد را اضافه می کند. بنابراین، هنگام تصمیمگیری برای گنجاندن منظمسازی ترک تحصیل، میتوانید «عدم انصراف» را در مقابل «ترکآویت» یک فراپارامتر علمی قرار دهید، اما نرخ انصراف را یک فراپارامتر مزاحم قرار دهید. اگر تصمیم دارید بر اساس این آزمایش، منظمسازی خروج را به خط لوله اضافه کنید، نرخ انصراف در آزمایشهای آینده یک فراپارامتر مزاحم خواهد بود.
فراپارامترهای معماری
فراپارامترهای معماری اغلب ابرپارامترهای علمی یا ثابت هستند زیرا تغییرات معماری می تواند بر هزینه های سرویس و آموزش، تأخیر و نیازهای حافظه تأثیر بگذارد. به عنوان مثال، تعداد لایهها معمولاً یک فراپارامتر علمی یا ثابت است، زیرا تمایل دارد عواقب چشمگیری برای سرعت تمرین و استفاده از حافظه داشته باشد.
وابستگی به فراپارامترهای علمی
در برخی موارد، مجموعه هایپرپارامترهای مزاحم و ثابت به مقادیر فراپارامترهای علمی بستگی دارد. برای مثال، فرض کنید میخواهید تعیین کنید کدام بهینهساز در تکانه نستروف و آدام کمترین خطای اعتبارسنجی را تولید میکند. در این مورد:
- فراپارامتر علمی بهینه ساز است که مقادیر
{"Nesterov_momentum", "Adam"}
را می گیرد. - مقدار
optimizer="Nesterov_momentum"
فراپارامترهای{learning_rate, momentum}
را معرفی میکند، که ممکن است مزاحم یا هایپرپارامترهای ثابت باشند. - مقدار
optimizer="Adam"
فراپارامترهای{learning_rate, beta1, beta2, epsilon}
را معرفی میکند که ممکن است مزاحم یا اپرپارامترهای ثابت باشند.
فراپارامترهایی که فقط برای مقادیر خاصی از فراپارامترهای علمی وجود دارند، هایپرپارامترهای شرطی نامیده می شوند. دو ابرپارامتر شرطی را فقط به این دلیل که نام یکسانی دارند یکسان فرض نکنید! در مثال قبل، هایپرپارامتر شرطی به نام learning_rate
یک فراپارامتر متفاوت برای optimizer="Nesterov_momentum"
نسبت به optimizer="Adam"
است. نقش آن در دو الگوریتم مشابه است (اگرچه یکسان نیست)، اما محدوده مقادیری که در هر یک از بهینهسازها به خوبی کار میکنند، معمولاً با چندین مرتبه بزرگی متفاوت است.
مجموعه ای از مطالعات ایجاد کنید
پس از شناسایی فراپارامترهای علمی و مزاحم، باید مطالعه یا دنباله ای از مطالعات را طراحی کنید تا به سمت هدف آزمایشی پیشرفت کنید. یک مطالعه مجموعه ای از پیکربندی هایپرپارامتر را مشخص می کند تا برای تجزیه و تحلیل بعدی اجرا شوند. هر پیکربندی آزمایشی نامیده می شود. ایجاد یک مطالعه معمولاً شامل انتخاب موارد زیر است:
- فراپارامترهایی که در آزمایشها متفاوت هستند.
- مقادیری که این هایپرپارامترها می توانند بگیرند ( فضای جستجو ).
- تعداد آزمایشات
- یک الگوریتم جستجوی خودکار برای نمونه برداری از این تعداد آزمایش از فضای جستجو.
از طرف دیگر، میتوانید با تعیین مجموعهای از تنظیمات هایپرپارامتر به صورت دستی، یک مطالعه ایجاد کنید.
هدف از مطالعات این است که به طور همزمان:
- خط لوله را با مقادیر مختلف هایپرپارامترهای علمی اجرا کنید.
- "بهینه سازی حذف" (یا "بهینه سازی بیش از") فراپارامترهای مزاحم به طوری که مقایسه بین مقادیر مختلف ابرپارامترهای علمی تا حد امکان منصفانه باشد.
در سادهترین حالت، شما میتوانید برای هر پیکربندی پارامترهای علمی یک مطالعه جداگانه انجام دهید، که در آن هر مطالعه بر روی فراپارامترهای مزاحم تنظیم میشود. به عنوان مثال، اگر هدف شما انتخاب بهترین بهینه ساز از بین نستروف و آدام است، می توانید دو مطالعه ایجاد کنید:
- یک مطالعه که در آن
optimizer="Nesterov_momentum"
و فراپارامترهای مزاحم{learning_rate, momentum}
هستند. - مطالعه دیگری که در آن
optimizer="Adam"
و فراپارامترهای مزاحم عبارتند از{learning_rate, beta1, beta2, epsilon}
.
شما می توانید با انتخاب بهترین کارآزمایی از هر مطالعه، دو بهینه ساز را با هم مقایسه کنید.
میتوانید از هر الگوریتم بهینهسازی بدون گرادیان، از جمله روشهایی مانند بهینهسازی بیزی یا الگوریتمهای تکاملی، برای بهینهسازی بیش از فراپارامترهای مزاحم استفاده کنید. با این حال، ما ترجیح میدهیم از جستجوی شبه تصادفی در مرحله کاوش تنظیم استفاده کنیم، زیرا دارای مزایای مختلفی است که در این تنظیمات دارد. پس از پایان یافتن اکتشاف، توصیه میکنیم از پیشرفتهترین نرمافزار بهینهسازی بیزی (در صورت موجود بودن) استفاده کنید.
یک مورد پیچیدهتر را در نظر بگیرید که در آن میخواهید تعداد زیادی از مقادیر فراپارامترهای علمی را با هم مقایسه کنید، اما انجام این تعداد مطالعات مستقل غیرعملی است. در این صورت می توانید کارهای زیر را انجام دهید:
- پارامترهای علمی را در همان فضای جستجو به عنوان فراپارامترهای مزاحم قرار دهید.
- از یک الگوریتم جستجو برای نمونه برداری از مقادیر فراپارامترهای علمی و مزاحم در یک مطالعه استفاده کنید.
هنگام اتخاذ این رویکرد، فراپارامترهای شرطی می توانند مشکلاتی ایجاد کنند. از این گذشته، تعیین فضای جستجو دشوار است مگر اینکه مجموعه فراپارامترهای مزاحم برای همه مقادیر فراپارامترهای علمی یکسان باشد. در این مورد، ترجیح ما برای استفاده از جستجوی شبه تصادفی نسبت به ابزارهای بهینهسازی جعبه سیاه جذابتر حتی قویتر است، زیرا تضمین میکند مقادیر مختلف فراپارامترهای علمی به طور یکنواخت نمونهبرداری میشوند. صرف نظر از الگوریتم جستجو، اطمینان حاصل کنید که پارامترهای علمی را به طور یکسان جستجو می کند.
بین آزمایش های آموزنده و مقرون به صرفه تعادل برقرار کنید
هنگام طراحی یک مطالعه یا دنباله ای از مطالعات، بودجه محدودی را برای دستیابی به سه هدف زیر اختصاص دهید:
- مقایسه مقادیر کافی مختلف ابرپارامترهای علمی
- تنظیم فراپارامترهای مزاحم در فضای جستجوی کافی بزرگ.
- نمونه برداری از فضای جستجوی فراپارامترهای مزاحم به اندازه کافی متراکم.
هرچه بهتر بتوانید به این سه هدف دست یابید، بینش بیشتری می توانید از آزمایش استخراج کنید. مقایسه هر چه بیشتر مقادیر فراپارامترهای علمی، دامنه بینش هایی را که از آزمایش به دست می آورید، گسترش می دهد.
گنجاندن تا آنجا که ممکن است فراپارامترهای مزاحم و اجازه دادن به هر فراپارامتر مزاحم برای تغییر در محدوده وسیعی که ممکن است، اطمینان را افزایش می دهد که یک مقدار "خوب" از فراپارامترهای مزاحم در فضای جستجو برای هر پیکربندی از فراپارامترهای علمی وجود دارد. در غیر این صورت، ممکن است با جستجو نکردن مناطق احتمالی فضای فراپارامتر مزاحم که در آن مقادیر بهتری برای برخی از مقادیر پارامترهای علمی وجود دارد، مقایسههای ناعادلانهای بین مقادیر فراپارامترهای علمی انجام دهید.
از فضای جستجوی فراپارامترهای مزاحم تا حد امکان متراکم نمونه برداری کنید. انجام این کار اطمینان را افزایش می دهد که روند جستجو تنظیمات خوبی را برای فراپارامترهای مزاحم که اتفاقاً در فضای جستجوی شما وجود دارد، پیدا می کند. در غیر این صورت، به دلیل خوش شانسی برخی از مقادیر با نمونه برداری از فراپارامترهای مزاحم، ممکن است مقایسه های ناعادلانه ای بین مقادیر پارامترهای علمی انجام دهید.
متأسفانه، بهبود در هر یک از این سه بعد مستلزم یکی از موارد زیر است:
- افزایش تعداد آزمایشات و در نتیجه افزایش هزینه منابع.
- یافتن راهی برای صرفه جویی در منابع در یکی از ابعاد دیگر.
هر مشکلی ویژگیها و محدودیتهای محاسباتی خاص خود را دارد، بنابراین تخصیص منابع برای این سه هدف نیاز به سطحی از دانش دامنه دارد. پس از اجرای یک مطالعه، همیشه سعی کنید این احساس را داشته باشید که آیا مطالعه فوق پارامترهای مزاحم را به اندازه کافی تنظیم کرده است یا خیر. به این معنا که این مطالعه فضایی به اندازه کافی بزرگ را به اندازه کافی برای مقایسه عادلانه فراپارامترهای علمی جستجو کرد (همانطور که با جزئیات بیشتر در بخش بعدی توضیح داده شد).
از نتایج تجربی بیاموزید
توصیه: علاوه بر تلاش برای دستیابی به هدف علمی اصیل هر گروه از آزمایش ها، چک لیستی از سؤالات اضافی را نیز بررسی کنید. اگر مشکلاتی را کشف کردید، آزمایشها را بازبینی کرده و دوباره اجرا کنید.
در نهایت، هر گروه از آزمایش ها هدف خاصی دارند. شما باید شواهدی را که آزمایشها برای رسیدن به آن هدف ارائه میکنند، ارزیابی کنید. با این حال، اگر سؤالات درستی بپرسید، اغلب میتوانید مسائلی را برای تصحیح قبل از اینکه مجموعهای از آزمایشها به سمت هدف اصلی خود پیشرفت کنند، پیدا کنید. اگر این سوالات را نپرسید، ممکن است نتیجه گیری نادرستی بگیرید.
از آنجایی که اجرای آزمایشها میتواند گران باشد، باید بینشهای مفید دیگری را نیز از هر گروه آزمایش استخراج کنید، حتی اگر این بینشها بلافاصله با هدف فعلی مرتبط نباشند.
قبل از تجزیه و تحلیل مجموعه ای از آزمایشات برای پیشرفت به سمت هدف اصلی آنها، سؤالات اضافی زیر را از خود بپرسید:
- آیا فضای جستجو به اندازه کافی بزرگ است؟ اگر نقطه بهینه از یک مطالعه نزدیک به مرز فضای جستجو در یک یا چند بعد باشد، جستجو احتمالاً به اندازه کافی گسترده نیست. در این مورد، مطالعه دیگری را با فضای جستجوی گسترده اجرا کنید.
- آیا نقاط کافی را از فضای جستجو نمونه برداری کرده اید؟ اگر نه، امتیاز بیشتری بگیرید یا در اهداف تنظیم کمتر جاه طلب باشید.
- چه کسری از کارآزماییها در هر مطالعه غیرممکن است؟ یعنی، کدام آزمایشها از هم جدا میشوند، ارزشهای ضرر واقعاً بدی دریافت میکنند یا اصلاً اجرا نمیشوند زیرا برخی از محدودیتهای ضمنی را نقض میکنند؟ هنگامی که بخش بسیار زیادی از نقاط در یک مطالعه غیرممکن است، فضای جستجو را تنظیم کنید تا از نمونه برداری از چنین نقاطی اجتناب کنید، که گاهی اوقات نیاز به پارامترسازی مجدد فضای جستجو دارد. در برخی موارد، تعداد زیادی از نقاط غیر قابل اجرا می تواند نشان دهنده یک اشکال در کد آموزشی باشد.
- آیا مدل مسائل بهینه سازی را نشان می دهد؟
- از منحنی های آموزشی بهترین آزمایش ها چه می توانید بیاموزید؟ برای مثال، آیا بهترین آزمایشها دارای منحنیهای تمرینی منطبق با اضافهبرازش مشکلساز هستند؟
در صورت لزوم، بر اساس پاسخ به سؤالات قبلی، جدیدترین مطالعه یا گروهی از مطالعات را برای بهبود فضای جستجو و/یا نمونه کارآزماییهای بیشتر یا انجام برخی اقدامات اصلاحی دیگر اصلاح کنید.
هنگامی که به سؤالات قبلی پاسخ دادید، میتوانید شواهدی را که آزمایشها برای رسیدن به هدف اصلی شما ارائه میدهند، ارزیابی کنید. برای مثال، ارزیابی مفید بودن یک تغییر یا خیر .
مرزهای فضای جستجوی بد را شناسایی کنید
یک فضای جستجو مشکوک است اگر بهترین نقطه نمونه برداری شده از آن نزدیک به مرز آن باشد. اگر دامنه جستجو را در آن جهت گسترش دهید، ممکن است نقطه بهتری پیدا کنید.
برای بررسی مرزهای فضای جستجو، توصیه میکنیم آزمایشهای تکمیلشده را بر روی آنچه ما نمودارهای محوری فراپارامتر پایه مینامیم، ترسیم کنیم. در اینها، مقدار هدف اعتبارسنجی را در مقابل یکی از فراپارامترها (به عنوان مثال، نرخ یادگیری) رسم می کنیم. هر نقطه در طرح مربوط به یک آزمایش واحد است.
مقدار هدف اعتبارسنجی برای هر کارآزمایی معمولاً باید بهترین مقداری باشد که در طول دوره آموزشی به دست آمده است.
شکل 1: نمونه هایی از مرزهای فضای جستجوی بد و مرزهای فضای جستجو قابل قبول.
نمودارهای شکل 1 میزان خطا (کمتر بهتر) را در برابر میزان یادگیری اولیه نشان می دهد. اگر بهترین نقاط به سمت لبه فضای جستجو (در برخی ابعاد) جمع شوند، ممکن است لازم باشد مرزهای فضای جستجو را تا زمانی گسترش دهید که بهترین نقطه مشاهده شده دیگر به مرز نزدیک نباشد.
اغلب، یک مطالعه شامل کارآزماییهای «غیرقابل اجرا» میشود که از هم جدا میشوند یا نتایج بسیار بدی به دست میآورند (که با Xs قرمز در شکل 1 مشخص شدهاند). اگر همه آزمایشها برای نرخهای یادگیری بیشتر از مقدار آستانه غیرممکن باشند، و اگر آزمایشهایی که بهترین عملکرد را دارند، نرخ یادگیری در لبه آن منطقه داشته باشند، مدل ممکن است از مشکلات پایداری رنج ببرد که از دسترسی به نرخهای یادگیری بالاتر جلوگیری میکند .
نمونه برداری از نقاط کافی در فضای جستجو
به طور کلی، تشخیص اینکه آیا فضای جستجو به اندازه کافی متراکم شده است، می تواند بسیار دشوار باشد . 🤖 اجرای آزمایشهای بیشتر بهتر از اجرای آزمایشهای کمتر است، اما آزمایشهای بیشتر هزینه اضافی آشکاری را به همراه دارد.
از آنجایی که تشخیص اینکه چه زمانی به اندازه کافی نمونه برداری کرده اید بسیار سخت است، توصیه می کنیم:
- نمونه برداری از آنچه می توانید بپردازید.
- کالیبره کردن اعتماد به نفس شهودی شما از نگاه مکرر به نمودارهای محورهای مختلف فراپارامتر و تلاش برای دریافت حس تعداد نقاط در منطقه "خوب" فضای جستجو.
منحنی های تمرین را بررسی کنید
خلاصه: بررسی منحنیهای زیان راهی آسان برای شناسایی حالتهای شکست رایج است و میتواند به شما در اولویتبندی اقدامات احتمالی بعدی کمک کند.
در بسیاری از موارد، هدف اولیه آزمایشهای شما فقط مستلزم در نظر گرفتن خطای اعتبارسنجی هر آزمایش است. با این حال، هنگام کاهش هر آزمایش به یک عدد مراقب باشید زیرا این تمرکز می تواند جزئیات مهمی را در مورد آنچه در زیر سطح می گذرد پنهان کند. برای هر مطالعه، ما قویاً توصیه میکنیم که منحنیهای ضرر حداقل چند کارآزمایی را بررسی کنید. حتی اگر این برای پرداختن به هدف آزمایشی اولیه ضروری نباشد، بررسی منحنیهای ضرر (شامل از دست دادن آموزش و از دست دادن اعتبارسنجی) راه خوبی برای شناسایی حالتهای شکست رایج است و میتواند به شما در اولویتبندی اقدامات بعدی کمک کند.
هنگام بررسی منحنی های زیان، روی سؤالات زیر تمرکز کنید:
آیا هیچ یک از کارآزمایی ها بیش از حد مشکل ساز را نشان می دهند؟ زمانی که خطای اعتبارسنجی در طول تمرین شروع به افزایش میکند، تطبیق بیش از حد مشکلساز رخ میدهد. در تنظیمات آزمایشی که با انتخاب «بهترین» آزمایشی برای هر تنظیم فراپارامترهای علمی، فراپارامترهای مزاحم را بهینه میکنید، حداقل در هر یک از بهترین آزمایشها مطابق با تنظیمات فراپارامترهای علمی که مقایسه میکنید، بیش از حد مشکلساز را بررسی کنید. اگر هر یک از بهترین کارآزمایی ها بیش از حد مشکل ساز را نشان داد، یکی یا هر دو مورد زیر را انجام دهید:
- آزمایش را با تکنیک های منظم سازی اضافی دوباره اجرا کنید
- قبل از مقایسه مقادیر فراپارامترهای علمی، پارامترهای تنظیم موجود را مجددا تنظیم کنید. اگر فراپارامترهای علمی شامل پارامترهای منظمسازی باشند، این ممکن است اعمال نشود، زیرا در آن زمان تعجبآور نخواهد بود که تنظیمات کماستحکام آن پارامترهای منظمسازی منجر به بیشبرازش مشکلساز شود.
کاهش بیش از حد برازش اغلب با استفاده از تکنیکهای منظمسازی معمولی ساده است که حداقل پیچیدگی کد یا محاسبات اضافی را اضافه میکنند (به عنوان مثال، منظمسازی حذف، هموارسازی برچسب، کاهش وزن). بنابراین، اضافه کردن یک یا چند مورد از این موارد به دور بعدی آزمایشها معمولاً بیاهمیت است. برای مثال، اگر فراپارامتر علمی «تعداد لایههای پنهان» است و بهترین آزمایشی که از بیشترین تعداد لایههای پنهان استفاده میکند، بیش از حد مشکلساز را نشان میدهد، توصیه میکنیم به جای انتخاب فوری تعداد کمتر لایههای پنهان، دوباره با منظمسازی اضافی امتحان کنید.
حتی اگر هیچ یک از «بهترین» کارآزماییها، بیش از حد مشکلساز را نشان ندهند، اگر در هر یک از آزمایشها رخ دهد، ممکن است مشکلی وجود داشته باشد. انتخاب بهترین آزمایشی، پیکربندیهایی را که بیش از حد مشکلساز نشان میدهند سرکوب میکند و به نفع آنهایی است که این کار را نمیکنند. به عبارت دیگر، انتخاب بهترین آزمایشی به نفع پیکربندیهایی با منظمسازی بیشتر است. با این حال، هر چیزی که تمرین را بدتر می کند، می تواند به عنوان یک تنظیم کننده عمل کند، حتی اگر اینطور در نظر گرفته نشده باشد. به عنوان مثال، انتخاب یک نرخ یادگیری کمتر میتواند آموزش را با توقف فرآیند بهینهسازی منظم کند، اما ما معمولاً نمیخواهیم نرخ یادگیری را به این شکل انتخاب کنیم. توجه داشته باشید که "بهترین" آزمایش برای هر تنظیم از فراپارامترهای علمی ممکن است به گونه ای انتخاب شود که به نفع مقادیر "بد" برخی از فراپارامترهای علمی یا مزاحم باشد.
آیا واریانس مرحله به مرحله بالا در آموزش یا خطای اعتبارسنجی در اواخر آموزش وجود دارد؟ اگر چنین است، این می تواند با هر دو مورد زیر تداخل داشته باشد:
- توانایی شما برای مقایسه مقادیر مختلف فراپارامترهای علمی. به این دلیل که هر آزمایش به طور تصادفی در یک مرحله "خوش شانس" یا "بدشانس" به پایان می رسد.
- توانایی شما برای بازتولید نتیجه بهترین آزمایش در تولید. این به این دلیل است که مدل تولید ممکن است به همان مرحله "خوش شانس" مانند مطالعه ختم نشود.
محتمل ترین دلایل واریانس گام به گام عبارتند از:
- واریانس دسته ای به دلیل نمونه گیری تصادفی از مجموعه آموزشی برای هر دسته.
- مجموعه های اعتبار سنجی کوچک
- استفاده از نرخ یادگیری که در اواخر آموزش خیلی زیاد است.
درمان های احتمالی عبارتند از:
- افزایش اندازه دسته.
- به دست آوردن داده های اعتبار سنجی بیشتر
- استفاده از کاهش نرخ یادگیری
- با استفاده از میانگین گیری Polyak.
آیا آزمایشات در پایان آموزش همچنان در حال بهبود هستند؟ اگر چنین است، شما در رژیم "محاسبه محدود" هستید و ممکن است از افزایش تعداد مراحل آموزشی یا تغییر برنامه نرخ یادگیری بهره مند شوید.
آیا عملکرد در مجموعههای آموزشی و اعتبارسنجی مدتها قبل از مرحله آموزشی نهایی اشباع شده است؟ اگر چنین است، این نشان می دهد که شما در رژیم "محاسباتی محدود" هستید و ممکن است بتوانید تعداد مراحل آموزشی را کاهش دهید.
فراتر از این لیست، بسیاری از رفتارهای اضافی را می توان از بررسی منحنی های زیان آشکار کرد. به عنوان مثال، افزایش تلفات تمرینی در طول تمرین معمولاً نشان دهنده وجود اشکال در خط لوله تمرین است.
تشخیص مفید بودن یک تغییر با نمودارهای جداسازی
شکل 2: نمودار جداسازی که بهترین ارزش کاهش وزن را برای ResNet-50 آموزش دیده در ImageNet بررسی می کند.
اغلب، هدف مجموعه ای از آزمایش ها، مقایسه مقادیر مختلف یک فراپارامتر علمی است. به عنوان مثال، فرض کنید می خواهید مقدار کاهش وزن را تعیین کنید که منجر به بهترین خطای اعتبارسنجی می شود. نمودار جداسازی یک مورد خاص از نمودار محوری هایپرپارامتر پایه است. هر نقطه در یک نمودار جداسازی با عملکرد بهترین آزمایش در برخی (یا همه) فراپارامترهای مزاحم مطابقت دارد. به عبارت دیگر، پس از "بهینه سازی" فراپارامترهای مزاحم، عملکرد مدل را رسم کنید.
یک نمودار جداسازی انجام یک مقایسه سیب به سیب بین مقادیر مختلف ابرپارامتر علمی را ساده می کند. به عنوان مثال، نمودار جداسازی در شکل 2 ارزش کاهش وزن را نشان می دهد که بهترین عملکرد اعتبار سنجی را برای یک پیکربندی خاص از ResNet-50 آموزش دیده در ImageNet ایجاد می کند.
اگر هدف تعیین اینکه آیا اصلاً شامل کاهش وزن میشود یا خیر، بهترین نقطه از این نمودار را با خط پایه عدم کاهش وزن مقایسه کنید. برای مقایسه منصفانه، خط مبنا نیز باید نرخ یادگیری خود را به همان اندازه تنظیم کند.
هنگامی که دادههای تولید شده توسط جستجوی (شبه) تصادفی دارید و یک ابرپارامتر پیوسته برای نمودار جداسازی در نظر میگیرید، میتوانید نمودار جداسازی را با سطل کردن مقادیر محور x نمودار محورهایپرپارامتر اصلی و انجام بهترین آزمایش در هر برش عمودی تقریب بزنید. توسط سطل ها تعریف شده است.
نقشه های عمومی مفید را خودکار کنید
هر چه تلاش برای تولید طرحها بیشتر باشد، کمتر احتمال دارد که آنطور که باید به آنها نگاه کنید. بنابراین، توصیه میکنیم زیرساختهای خود را به گونهای تنظیم کنید که بهطور خودکار هر چه بیشتر قطعههای ممکن تولید شود. حداقل، توصیه میکنیم بهطور خودکار نمودارهای محورهایپرپارامتر پایه را برای همه ابرپارامترهایی که در آزمایش تغییر میدهید ایجاد کنید.
علاوه بر این، توصیه میکنیم منحنیهای ضرر را برای همه آزمایشها بهطور خودکار تولید کنید. علاوه بر این، توصیه میکنیم یافتن بهترین کارآزماییهای هر مطالعه و بررسی منحنیهای ضرر آنها را تا حد امکان آسان کنید.
شما می توانید بسیاری از طرح ها و تجسم های بالقوه مفید دیگر را اضافه کنید. به تعبیر جفری هینتون :
هر بار که چیز جدیدی را طرح ریزی می کنید، چیز جدیدی یاد می گیرید.
تعیین کنید که آیا تغییر نامزد را بپذیرید یا خیر
خلاصه: هنگام تصمیمگیری برای ایجاد تغییر در مدل یا روش آموزشی یا اتخاذ یک پیکربندی فراپارامتر جدید، به منابع مختلف تغییرات در نتایج خود توجه کنید.
هنگام تلاش برای بهبود یک مدل ، یک تغییر نامزد خاص در ابتدا ممکن است در مقایسه با یک پیکربندی فعلی ، خطای اعتبار سنجی بهتری داشته باشد. با این حال ، تکرار آزمایش ممکن است هیچ مزیت مداوم را نشان دهد. به طور غیررسمی ، مهمترین منابع نتایج متناقض را می توان در دسته های گسترده زیر گروه بندی کرد:
- واریانس روش آموزش ، واریانس RERAIN یا واریانس آزمایشی : تغییر بین تمرین که از همان هاپرپارامترها استفاده می کنند اما دانه های تصادفی متفاوت هستند. به عنوان مثال ، اولیه سازی های تصادفی مختلف ، شکن های داده های آموزش ، ماسک های ترک تحصیل ، الگوهای عملیات تقویت داده ها و ترتیب عملیات حسابی موازی ، همه منابع بالقوه واریانس آزمایش هستند.
- واریانس جستجوی HyperParameter یا واریانس مطالعه : تغییر در نتایج ناشی از روش ما برای انتخاب HyperParameters. به عنوان مثال ، شما ممکن است همان آزمایش را با یک فضای جستجوی خاص اما با دو دانه مختلف برای جستجوی شبه تصادفی انجام دهید و در نهایت انتخاب مقادیر مختلف هایپرپارامتر را انجام دهید.
- جمع آوری داده ها و واریانس نمونه برداری : واریانس از هر نوع تقسیم تصادفی به آموزش ، اعتبار سنجی و آزمایش یا واریانس به دلیل فرآیند تولید داده های آموزش به طور کلی.
درست است ، شما می توانید نرخ خطای اعتبار سنجی تخمین زده شده در مجموعه اعتبار سنجی محدود را با استفاده از تست های آماری سریع مقایسه کنید. با این حال ، اغلب واریانس آزمایشی به تنهایی می تواند از نظر آماری تفاوت معنی داری بین دو مدل مختلف آموزش دیده ایجاد کند که از همان تنظیمات هایپرپارامتر استفاده می کنند.
ما هنگام تلاش برای نتیجه گیری که فراتر از سطح یک نقطه فردی در فضای هایپرپارامترها است ، بیشتر نگران واریانس مطالعه هستیم. واریانس مطالعه به تعداد آزمایشات و فضای جستجو بستگی دارد. ما مواردی را مشاهده کرده ایم که واریانس مطالعه بزرگتر از واریانس آزمایش و مواردی است که بسیار کوچکتر است. بنابراین ، قبل از اتخاذ یک تغییر نامزد ، برای توصیف واریانس آزمایشی اجرا به اجرا ، بهترین زمان آزمایش را در نظر بگیرید. معمولاً می توانید پس از تغییرات اساسی در خط لوله ، فقط با شارژ مجدد واریانس آزمایشی از بین بروید ، اما ممکن است در بعضی موارد به تخمین های تازه تر نیاز داشته باشید. در برنامه های دیگر ، توصیف واریانس آزمایشی برای ارزش آن بسیار پرهزینه است.
اگرچه شما فقط می خواهید تغییراتی را اتخاذ کنید (از جمله تنظیمات جدید HyperParameter) که پیشرفت های واقعی را ایجاد می کنند ، خواستار اطمینان کامل از این که یک تغییر معین به شما کمک می کند ، جواب درستی نیز نیست. بنابراین ، اگر یک نقطه Hyperparameter جدید (یا تغییر دیگر) نتیجه بهتری نسبت به پایه داشته باشد (با در نظر گرفتن واریانس REATRAIN هر دو نقطه جدید و پایه به بهترین شکل ممکن) ، احتمالاً باید آن را به عنوان جدید اتخاذ کنید پایه برای مقایسه های آینده. با این حال ، ما فقط توصیه می کنیم تغییراتی را ایجاد کنید که پیشرفت هایی را ایجاد می کند که از هرگونه پیچیدگی اضافه شده ای برخوردار است.
پس از اکتشاف نتیجه می گیرد
خلاصه: ابزارهای بهینه سازی بیزی پس از اتمام در جستجوی فضاهای جستجوی خوب ، گزینه ای قانع کننده هستند و تصمیم گرفته اید که HyperParameters ارزش تنظیم را دارد.
سرانجام ، اولویت های شما از یادگیری بیشتر در مورد مشکل تنظیم به تولید بهترین پیکربندی واحد برای راه اندازی یا استفاده در غیر این صورت تغییر می کند. در آن مرحله ، باید یک فضای جستجوی تصفیه شده وجود داشته باشد که به راحتی شامل منطقه محلی در اطراف بهترین آزمایش مشاهده شده باشد و به اندازه کافی نمونه برداری شده است. کار اکتشافی شما باید اساسی ترین هاپرپارامترها را برای تنظیم و دامنه های معقول آنها نشان دهد که می توانید از آنها برای ساخت فضای جستجو برای یک مطالعه تنظیم خودکار نهایی با استفاده از بودجه تنظیم بزرگ استفاده کنید.
از آنجا که دیگر به حداکثر رساندن بینش در مورد مشکل تنظیم اهمیتی نمی دهید ، بسیاری از مزایای جستجوی شبه تصادفی دیگر اعمال نمی شود. بنابراین ، شما باید از ابزارهای بهینه سازی بیزی استفاده کنید تا به طور خودکار بهترین پیکربندی HyperParameter را پیدا کنید. ویزیر منبع باز انواع الگوریتم های پیشرفته را برای تنظیم مدل های ML ، از جمله الگوریتم های بهینه سازی بیزی ، پیاده سازی می کند.
فرض کنید فضای جستجو حاوی یک حجم غیر مهم از نقاط واگرا است ، به این معنی که امتیازاتی که از دست دادن آموزش NAN یا حتی از دست دادن آموزش بسیاری از انحرافات استاندارد بدتر از میانگین است. در این حالت ، ما توصیه می کنیم از ابزارهای بهینه سازی جعبه سیاه استفاده کنید که به درستی آزمایشاتی را انجام می دهند. (به بهینه سازی بیزی با محدودیت های ناشناخته برای یک روش عالی برای مقابله با این مسئله مراجعه کنید.) منبع باز ویزیر با علامت گذاری به عنوان آزمایشات به عنوان غیرقابل توصیف ، از علامت گذاری امتیازات واگرا پشتیبانی می کند ، اگرچه ممکن است از رویکرد مورد نظر ما از گلبارت و همکاران استفاده نکند. ، بسته به نحوه پیکربندی آن.
پس از نتیجه گیری اکتشاف ، بررسی عملکرد در مجموعه آزمون را در نظر بگیرید. در اصل ، شما حتی می توانید اعتبار سنجی را در مجموعه آموزش قرار داده و بهترین پیکربندی موجود را با بهینه سازی بیزی بازیابی کنید. با این حال ، این تنها درصورتی مناسب است که با این بار کاری خاص (به عنوان مثال ، یک رقابت Kaggle یک بار) راه اندازی آینده وجود نداشته باشد.
،برای اهداف این سند:
هدف نهایی توسعه یادگیری ماشین حداکثر رساندن سودمندی مدل مستقر است.
شما به طور معمول می توانید در این بخش در مورد هر مشکل ML از همان مراحل و اصول اساسی استفاده کنید.
این بخش فرضیات زیر را بیان می کند:
- شما در حال حاضر یک خط لوله آموزشی کاملاً اجرا همراه با پیکربندی دارید که نتیجه معقول به دست می آورد.
- شما منابع محاسباتی کافی برای انجام آزمایشات تنظیم معنی دار و حداقل چندین کار آموزشی به طور موازی دارید.
استراتژی تنظیم افزایشی
توصیه: با یک پیکربندی ساده شروع کنید. سپس ، به تدریج در هنگام ایجاد بینش در مورد مشکل ، پیشرفت هایی را انجام می دهد. اطمینان حاصل کنید که هرگونه پیشرفت بر اساس شواهد قوی است.
ما فرض می کنیم که هدف شما پیدا کردن پیکربندی است که عملکرد مدل شما را به حداکثر می رساند. گاهی اوقات ، هدف شما این است که به حداکثر رساندن بهبود مدل با یک مهلت ثابت باشد. در موارد دیگر ، شما می توانید مدل را به طور نامحدود بهبود بخشید. به عنوان مثال ، به طور مداوم بهبود مدل مورد استفاده در تولید.
در اصل ، شما می توانید با استفاده از یک الگوریتم عملکرد را به حداکثر برسانید تا به طور خودکار کل فضای تنظیمات ممکن را جستجو کنید ، اما این یک گزینه عملی نیست. فضای تنظیمات احتمالی بسیار بزرگ است و هنوز هیچ الگوریتمی به اندازه کافی پیشرفته وجود ندارد که بتوانند این فضا را بدون راهنمایی انسانی جستجو کنند. بیشتر الگوریتم های جستجوی خودکار به یک فضای جستجوی طراحی شده با دست متکی هستند که مجموعه ای از تنظیمات را برای جستجو تعریف می کند و این فضاهای جستجو می تواند کاملاً اهمیت داشته باشد.
مؤثرترین روش برای به حداکثر رساندن عملکرد ، شروع با یک پیکربندی ساده و اضافه کردن ویژگی ها و پیشرفت در هنگام ایجاد بینش در مورد مشکل است.
توصیه می کنیم در هر دور تنظیم از الگوریتم های جستجوی خودکار استفاده کنید و به طور مداوم فضاهای جستجو را با رشد درک خود به روز کنید. همانطور که کاوش می کنید ، به طور طبیعی تنظیمات بهتر و بهتری پیدا خواهید کرد و بنابراین مدل "بهترین" شما به طور مداوم بهبود می یابد.
اصطلاح "راه اندازی" به به روزرسانی بهترین پیکربندی ما (که ممکن است با راه اندازی واقعی یک مدل تولید مطابقت نداشته باشد) اشاره دارد. برای هر "پرتاب" ، شما باید اطمینان حاصل کنید که این تغییر مبتنی بر شواهد قوی است - فقط شانس تصادفی بر اساس یک پیکربندی خوش شانس - بنابراین شما پیچیدگی غیر ضروری را به خط لوله آموزش اضافه نمی کنید.
در سطح بالایی ، استراتژی تنظیم افزایشی ما شامل تکرار چهار مرحله زیر است:
- برای دور بعدی آزمایش ها یک گل انتخاب کنید. اطمینان حاصل کنید که هدف به درستی پیچیده شده است.
- دور بعدی آزمایشات را طراحی کنید. طراحی و اجرای مجموعه ای از آزمایشات که به سمت این هدف پیش می رود.
- از نتایج تجربی بیاموزید. آزمایش را در برابر یک لیست چک ارزیابی کنید.
- تعیین کنید که آیا تغییر نامزد را اتخاذ کنید.
باقیمانده این بخش این استراتژی را شرح می دهد.
برای دور بعدی آزمایش ها یک گل انتخاب کنید
اگر سعی می کنید چندین ویژگی اضافه کنید یا به طور همزمان به چندین سؤال پاسخ دهید ، ممکن است نتوانید اثرات جداگانه بر روی نتایج را جدا کنید. اهداف مثال شامل:
- پیشرفت بالقوه در خط لوله را امتحان کنید (به عنوان مثال ، یک تنظیم کننده جدید ، انتخاب پیش پردازش و غیره).
- تأثیر یک مدل خاص Hyperparameter را درک کنید (به عنوان مثال ، عملکرد فعال سازی)
- خطای اعتبار سنجی را به حداقل برسانید.
پیشرفت بلند مدت را نسبت به بهبود خطای اعتبار سنجی کوتاه مدت اولویت بندی کنید
خلاصه: بیشتر اوقات ، هدف اصلی شما کسب بینش در مورد مشکل تنظیم است.
ما توصیه می کنیم اکثر وقت خود را صرف بینش در مورد مشکل کنید و نسبتاً کمی با حریم و حرص و طمع روی حداکثر رساندن عملکرد در مجموعه اعتبار سنجی متمرکز شده است. به عبارت دیگر ، بیشتر وقت خود را صرف "اکتشاف" و فقط مقدار کمی از "بهره برداری" می کنید. درک مشکل برای به حداکثر رساندن عملکرد نهایی بسیار مهم است. اولویت بندی بینش نسبت به سودهای کوتاه مدت به:
- از شروع تغییرات غیر ضروری که اتفاق می افتد در اجراهای خوب صرفاً از طریق تصادف تاریخی وجود دارد ، خودداری کنید.
- مشخص کنید که کدام خطای اعتبار سنجی بیشترین حساسیت را دارد ، که هایپرپارامتری بیشترین تعامل را دارند و بنابراین باید در کنار هم مجدداً مورد استفاده قرار گیرند ، و کدام هاپرپارامترها نسبت به سایر تغییرات نسبتاً غیر حساس هستند و بنابراین می توانند در آزمایش های آینده ثابت شوند.
- ویژگی های جدید بالقوه را برای امتحان کردن پیشنهاد دهید ، مانند تنظیم کننده های جدید در هنگام استفاده از بیش از حد مسئله.
- ویژگی هایی را که کمکی نمی کنند شناسایی کنید و بنابراین می توان آن را حذف کرد و پیچیدگی آزمایش های آینده را کاهش می دهد.
- تشخیص دهید که چه زمانی بهبود تنظیمات Hyperparameter احتمالاً اشباع شده است.
- برای بهبود راندمان تنظیم ، فضاهای جستجوی ما را در اطراف مقدار بهینه محدود کنید.
در نهایت ، شما مشکل را درک خواهید کرد. سپس ، شما می توانید صرفاً روی خطای اعتبار سنجی تمرکز کنید ، حتی اگر آزمایشات حداکثر در مورد ساختار مشکل تنظیم نباشد.
دور بعدی آزمایشات را طراحی کنید
خلاصه: مشخص کنید که کدام هاپرپارامترها علمی ، مزاحمت و هیپرپارامترهای ثابت برای هدف آزمایشی هستند. دنباله ای از مطالعات را برای مقایسه مقادیر مختلف هایپرپارامترهای علمی در حالی که بهینه سازی بیش از حد های ناسازگار را ایجاد می کنید ، ایجاد کنید. فضای جستجوی HyperParameters Nuisance را برای تعادل هزینه های منابع با ارزش علمی انتخاب کنید.
هیپرامترهای علمی ، مزاحمت و ثابت را شناسایی کنید
برای یک هدف معین ، همه Hyperparameters در یکی از دسته های زیر قرار می گیرند:
- Hyperparameters علمی کسانی هستند که تأثیر آنها بر عملکرد مدل همان چیزی است که شما می خواهید اندازه گیری کنید.
- Hyperparameters مزاحم مواردی هستند که به منظور مقایسه عادلانه مقادیر مختلف HyperParameters علمی ، باید بهینه سازی شوند. Hyperparameters Nuisance مشابه پارامترهای مزاحم در آمار است.
- هایپرپارامترهای ثابت در دور فعلی آزمایشات دارای مقادیر ثابت هستند. مقادیر هیپرپارامترهای ثابت نباید وقتی مقادیر مختلف هایپرپارامترهای علمی را مقایسه می کنید ، تغییر کنند. با رفع برخی از hyperparameters برخی از آزمایشات ، باید بپذیرید که نتیجه گیری های حاصل از آزمایشات ممکن است برای سایر تنظیمات هایپرپارامترهای ثابت معتبر نباشد. به عبارت دیگر ، هایپرپارامترهای ثابت برای هر نتیجه گیری که از آزمایشات نتیجه می گیرید ، احتیاط می کند.
به عنوان مثال ، فرض کنید هدف شما به شرح زیر است:
تعیین کنید که آیا یک مدل با لایه های پنهان تر خطای اعتبار سنجی کمتری دارد یا خیر.
در این مورد:
- میزان یادگیری یک hyperparameter مزاحم است زیرا اگر نرخ یادگیری به طور جداگانه برای هر تعداد لایه های پنهان تنظیم شود ، فقط می توانید مدل ها را با تعداد مختلف لایه های پنهان مقایسه کنید. (نرخ یادگیری بهینه به طور کلی به معماری مدل بستگی دارد).
- اگر در آزمایشات قبلی مشخص کرده باشید که بهترین عملکرد فعال سازی نسبت به عمق مدل حساس نیست ، می تواند یک فشار خون ثابت باشد. یا ، شما مایل هستید که نتیجه گیری های خود را در مورد تعداد لایه های پنهان برای پوشش این عملکرد فعال سازی محدود کنید. از طرف دیگر ، اگر آمادگی لازم برای تنظیم جداگانه آن را برای هر تعداد لایه های پنهان داشته باشید ، می تواند یک hyperparameter مزاحم باشد.
یک هیپرپارامتر خاص می تواند یک هیپرپارامتر علمی ، هایپرپارامتر مزاحم یا هایپرپارامتر ثابت باشد. تعیین Hyperparameter بسته به هدف آزمایشی تغییر می کند. به عنوان مثال ، عملکرد فعال سازی می تواند هر یک از موارد زیر باشد:
- Hyperparameter علمی: آیا Relu یا Tanh انتخاب بهتری برای مشکل ما است؟
- Nuisance HyperParameter: آیا بهترین مدل پنج لایه بهتر از بهترین مدل شش لایه است که شما به چندین عملکرد مختلف فعال سازی ممکن اجازه می دهید؟
- Hyperparameter ثابت: برای شبکه های Relu ، آیا اضافه کردن عادی سازی دسته ای در یک موقعیت خاص به شما کمک می کند؟
هنگام طراحی دور جدید آزمایشات:
- هاپرپارامترهای علمی را برای هدف آزمایشی شناسایی کنید. (در این مرحله ، شما می توانید تمام هایپرپارامترهای دیگر را به عنوان هایپرپارامترهای مزاحم در نظر بگیرید.)
- برخی از هایپرپارامترهای مزاحم را به هایپرپارامترهای ثابت تبدیل کنید.
با داشتن منابع بی حد و حصر ، شما می توانید تمام هایپرپارامترهای غیر علمی را به عنوان هایپرپارامترهای مزاحم رها کنید تا نتیجه گیری هایی که از آزمایشات خود نتیجه می گیرید عاری از احتیاط در مورد مقادیر بیش از حد پاپارامتر باشد. با این حال ، هرچه فشار بیش از حد مزاحم شما سعی در تنظیم آن داشته باشید ، این خطر بیشتر است که شما نتوانید آنها را به اندازه کافی خوب برای هر تنظیمات از هیپرپارامترهای علمی تنظیم کنید و از آزمایشات خود به نتیجه گیری های اشتباه برسید. همانطور که در بخش بعدی توضیح داده شده است ، می توانید با افزایش بودجه محاسباتی با این خطر مقابله کنید. با این حال ، حداکثر بودجه منابع شما اغلب برای تنظیم همه هایپرپارامترهای غیر علمی کمتر از آنچه لازم است.
توصیه می کنیم هنگامی که احتیاط های معرفی شده با رفع آن ، کمتر از هزینه های وارد کردن آن به عنوان یک ابرپارامتر مزاحم ، یک فشارخون نوری در یک هایپرپارامتر ثابت را تبدیل کنید. هرچه یک هیپرپارامتر مزاحم بیشتر با هایپرپارامترهای علمی در تعامل باشد ، برای رفع ارزش آن آسیب بیشتری می یابد. به عنوان مثال ، بهترین مقدار قدرت پوسیدگی وزن به طور معمول به اندازه مدل بستگی دارد ، بنابراین مقایسه اندازه های مختلف مدل با فرض یک مقدار خاص از پوسیدگی وزن بسیار بصیرت نخواهد بود.
برخی از پارامترهای بهینه ساز
به عنوان یک قانون شست ، برخی از هایپرپارامترهای بهینه ساز (به عنوان مثال میزان یادگیری ، حرکت ، پارامترهای برنامه نرخ یادگیری ، آدام بتاس و غیره) دارای فشارخون های مزاحم هستند زیرا آنها تمایل به تعامل بیشتر با سایر تغییرات دارند. این هاپرپارامترهای بهینه سازی به ندرت هیپرامترهای علمی هستند زیرا هدفی مانند "بهترین نرخ یادگیری برای خط لوله فعلی چیست؟" بینش زیادی ارائه نمی دهد. از این گذشته ، بهترین تنظیم می تواند با تغییر خط لوله بعدی به هر حال تغییر کند.
شما ممکن است برخی از هایپرپارامترهای بهینه ساز را گاهی اوقات به دلیل محدودیت منابع یا به ویژه شواهد قوی که با پارامترهای علمی در تعامل نیستند ، برطرف کنید. با این حال ، شما به طور کلی باید فرض کنید که باید HyperParameters Optimizer را جداگانه تنظیم کنید تا مقایسه عادلانه ای بین تنظیمات مختلف HyperParameters علمی انجام شود ، و بنابراین نباید ثابت شود. علاوه بر این ، هیچ دلیل قبلی برای ترجیح یک مقدار بهینه ساز بیش از حد پارامتری نسبت به دیگری وجود ندارد. به عنوان مثال ، مقادیر HyperParameter Optimizer معمولاً بر هزینه محاسباتی گذرگاه های رو به جلو یا شیب به هیچ وجه تأثیر نمی گذارد.
انتخاب بهینه ساز
انتخاب بهینه ساز به طور معمول یا است:
- یک هیپرپارامتر علمی
- یکپرپارامتر ثابت ثابت
اگر هدف آزمایشی شما شامل مقایسه عادلانه بین دو یا چند بهینه ساز متفاوت باشد ، یک بهینه ساز یکپرپارامتر علمی است. به عنوان مثال:
تعیین کنید که بهینه ساز در تعداد معینی از مراحل کمترین خطای اعتبار سنجی را تولید می کند.
از طرف دیگر ، شما ممکن است به دلایل مختلفی از جمله:
- آزمایش های قبلی نشان می دهد که بهترین بهینه ساز برای مشکل تنظیم شما نسبت به هایپرپارامترهای علمی فعلی حساس نیست.
- شما ترجیح می دهید با استفاده از این بهینه ساز مقادیر هیپرپارامترهای علمی را مقایسه کنید زیرا منحنی های آموزشی آن در مورد آن آسان تر است.
- شما ترجیح می دهید از این بهینه ساز استفاده کنید زیرا از حافظه کمتری نسبت به گزینه های دیگر استفاده می کند.
Hyperparameters منظم
HyperParameters معرفی شده توسط یک تکنیک منظم ، معمولاً Hyperparameters مزاحم هستند. با این حال ، انتخاب این که آیا تکنیک تنظیم مجدد اصلاً شامل یا نبودن است ، یک هیپرپارامتر علمی یا ثابت است.
به عنوان مثال ، تنظیم مجدد ترکیبی پیچیدگی کد را اضافه می کند. بنابراین ، هنگام تصمیم گیری در مورد تنظیم تنظیمات ترک تحصیل ، می توانید "بدون ترک" در مقابل "ترک تحصیل" را به یک ابرقهرمان علمی تبدیل کنید اما میزان ترک تحصیل یک فشار خون ناسازگار است. اگر تصمیم دارید بر اساس این آزمایش ، تنظیمات ترک تحصیل را به خط لوله اضافه کنید ، میزان ترک تحصیل می تواند یک هیپرپارامتر مزاحم در آزمایش های آینده باشد.
هیپرامترهای معماری
هایپرپارامترهای معماری غالباً هیپرپارامترهای علمی یا ثابت هستند زیرا تغییرات معماری می تواند بر هزینه های خدمت و آموزش ، تأخیر و نیازهای حافظه تأثیر بگذارد. به عنوان مثال ، تعداد لایه ها به طور معمول یک هیپرپارامتر علمی یا ثابت است زیرا تمایل به عواقب چشمگیر برای سرعت آموزش و استفاده از حافظه دارد.
وابستگی به هایپرپارامترهای علمی
در بعضی موارد ، مجموعه های مزاحمت و هایپرپارامترهای ثابت به مقادیر هایپرپارامترهای علمی بستگی دارد. به عنوان مثال ، فرض کنید شما در تلاش هستید تا تعیین کنید که بهینه ساز در Nesterov Momentum و آدم در پایین ترین خطای اعتبار سنجی تولید می کند. در این مورد:
- Hyperparameter علمی بهینه ساز است که مقادیر
{"Nesterov_momentum", "Adam"}
را می گیرد - مقدار
optimizer="Nesterov_momentum"
HyperParameters{learning_rate, momentum}
را معرفی می کند ، که ممکن است یا فشار خون بالا باشد یا هایپرامترهای ثابت. - مقدار
optimizer="Adam"
HyperParameters{learning_rate, beta1, beta2, epsilon}
را معرفی می کند ، که ممکن است ناراحتی یا هایپرپارامتری ثابت باشد.
HyperParameters که فقط برای مقادیر مشخصی از Hyperparameters علمی وجود دارند ، هایپرپارامترهای مشروط نامیده می شوند. فرض نکنید که دو ابر پارامتری مشروط فقط به این دلیل هستند که به همین نام دارند! در مثال قبلی ، هایپرپارامتر مشروط به نام learning_rate
یکپرپارامتر متفاوتی برای optimizer="Nesterov_momentum"
نسبت به optimizer="Adam"
است. نقش آن در دو الگوریتم مشابه است (گرچه یکسان نیست) ، اما دامنه مقادیری که در هر یک از بهینه سازها به خوبی کار می کنند ، معمولاً با چندین مرتبه از بزرگی متفاوت است.
مجموعه ای از مطالعات را ایجاد کنید
پس از شناسایی هیپرامترهای علمی و مزاحم ، شما باید یک مطالعه یا دنباله ای از مطالعات را طراحی کنید تا در جهت هدف آزمایش پیشرفت کنید. یک مطالعه مجموعه ای از تنظیمات هایپرپارامتر را که برای تجزیه و تحلیل بعدی اجرا می شود ، مشخص می کند. به هر پیکربندی یک آزمایش گفته می شود. ایجاد یک مطالعه به طور معمول شامل انتخاب موارد زیر است:
- Hyperparameters که در آزمایشات متفاوت است.
- مقادیری که این هاپرپارامترها می توانند از آن استفاده کنند ( فضای جستجو ).
- تعداد آزمایشات
- یک الگوریتم جستجوی خودکار برای نمونه برداری از بسیاری از آزمایشات از فضای جستجو.
از طرف دیگر ، می توانید با مشخص کردن مجموعه تنظیمات HyperParameter به صورت دستی یک مطالعه ایجاد کنید.
هدف از مطالعات همزمان است:
- خط لوله را با مقادیر مختلف هیپرپارامترهای علمی اجرا کنید.
- "بهینه سازی دور" (یا "بهینه سازی بیش از") Hyperparameters مزاحم به گونه ای که مقایسه بین مقادیر مختلف هیپرپارامترهای علمی تا حد امکان عادلانه است.
در ساده ترین حالت ، شما می توانید یک مطالعه جداگانه برای هر پیکربندی از پارامترهای علمی ، که در آن هر مطالعه بر روی هایپرپارامترهای مزاحم تنظیم می شود ، انجام دهید. به عنوان مثال ، اگر هدف شما انتخاب بهترین بهینه ساز خارج از Nesterov Momentum و Adam است ، می توانید دو مطالعه ایجاد کنید:
- یک مطالعه که در آن
optimizer="Nesterov_momentum"
و hyperparameters nuisance{learning_rate, momentum}
- یک مطالعه دیگر که در آن
optimizer="Adam"
و هایپرپارامترهای مزاحم هستند{learning_rate, beta1, beta2, epsilon}
.
شما می توانید دو بهینه ساز را با انتخاب بهترین آزمایش از هر مطالعه مقایسه کنید.
شما می توانید از هر الگوریتم بهینه سازی عاری از شیب ، از جمله روش هایی مانند بهینه سازی بیزی یا الگوریتم های تکاملی ، برای بهینه سازی بیش از حد ناچیز استفاده کنید. با این حال ، ما ترجیح می دهیم به دلیل انواع مزایای آن در این تنظیم ، از جستجوی شبه تصادفی در مرحله اکتشاف تنظیم استفاده کنیم. پس از نتیجه گیری اکتشاف ، توصیه می کنیم از نرم افزار بهینه سازی پیشرفته بیزی (در صورت موجود بودن) استفاده کنید.
یک مورد پیچیده تر را در نظر بگیرید که می خواهید تعداد زیادی از مقادیر هیپرپارامترهای علمی را با هم مقایسه کنید ، اما این کار غیرقانونی است که بسیاری از مطالعات مستقل انجام شود. در این حالت ، می توانید موارد زیر را انجام دهید:
- پارامترهای علمی را در همان فضای جستجو مانند Hyperparameters Nuisance قرار دهید.
- از یک الگوریتم جستجو برای نمونه برداری از مقادیر هر دو هیپرپارامترهای علمی و مزاحم در یک مطالعه واحد استفاده کنید.
هنگام استفاده از این رویکرد ، هایپرپارامترهای مشروط می توانند مشکلاتی ایجاد کنند. از این گذشته ، مشخص کردن فضای جستجو دشوار است مگر اینکه مجموعه ای از Hyperparameters مزاحم برای تمام مقادیر هایپرپارامترهای علمی یکسان باشد. در این حالت ، اولویت ما برای استفاده از جستجوی شبه تصادفی نسبت به ابزارهای بهینه سازی جعبه سیاه و سفید حتی قوی تر است ، زیرا تضمین می کند مقادیر مختلف هیپرپارامترهای علمی به طور یکنواخت نمونه برداری می شوند. صرف نظر از الگوریتم جستجو ، اطمینان حاصل کنید که پارامترهای علمی را به طور یکنواخت جستجو می کند.
تعادل بین آزمایش های آموزنده و مقرون به صرفه برقرار کنید
هنگام طراحی یک مطالعه یا توالی مطالعات ، بودجه محدودی را برای دستیابی به سه هدف زیر اختصاص دهید:
- مقایسه مقادیر مختلف به اندازه کافی از هایپرپارامترهای علمی.
- تنظیم HyperParameters Nuisance در یک فضای جستجوی کافی.
- نمونه برداری از فضای جستجو از Hyperparameters Nuisance به اندازه کافی متراکم.
هرچه بتوانید به این سه هدف برسید ، بینش بیشتری می توانید از آزمایش استخراج کنید. مقایسه بیشتر مقادیر هیپرپارامترهای علمی در حد امکان دامنه بینش هایی را که از آزمایش به دست می آورید ، گسترش می دهد.
از جمله هرچه بیشتر فشار بیش از حد بیش از حد مزاحمت و اجازه دادن به هر فشار بیش از حد ناچیز در حد گسترده ای متفاوت است و باعث افزایش اعتماد به نفس می شود که یک مقدار "خوب" از hyperparameters nuisance در فضای جستجو برای هر پیکربندی از هایپرپارامترهای علمی وجود دارد. در غیر این صورت ، شما ممکن است با جستجوی مناطق احتمالی فضای فشار خون بالا که در آن مقادیر بهتری برای برخی از مقادیر پارامترهای علمی قرار دارد ، بین مقادیر هایپرپارامترهای علمی مقایسه کنید.
فضای جستجو از hyperparameters nuisance را تا حد امکان متراکم نمونه کنید. انجام این کار باعث افزایش اعتماد به نفس می شود که روش جستجو تنظیمات خوبی را برای Hyperparameter Nuisance که در فضای جستجوی شما وجود دارد ، پیدا می کند. در غیر این صورت ، شما ممکن است مقایسه ناعادلانه ای بین مقادیر پارامترهای علمی به دلیل برخی از مقادیر خوش شانس تر با نمونه گیری از hyperparameters nuisance انجام دهید.
متأسفانه ، پیشرفت در هر یک از این سه بعد به هر یک از موارد زیر نیاز دارد:
- افزایش تعداد آزمایشات و در نتیجه افزایش هزینه منابع.
- یافتن راهی برای صرفه جویی در منابع در یکی از ابعاد دیگر.
هر مشکلی که خاصیت و محدودیت های محاسباتی خود را دارد ، بنابراین تخصیص منابع در این سه هدف به برخی از دانش دامنه نیاز دارد. پس از انجام یک مطالعه ، همیشه سعی کنید این حس را داشته باشید که آیا این مطالعه به اندازه کافی به خوبی تنظیم شده است. یعنی ، این مطالعه فضای کافی را به اندازه کافی گسترده جستجو کرده است تا بتواند هاپرپارامترهای علمی را با یکدیگر مقایسه کند (همانطور که در بخش بعدی با جزئیات بیشتر توضیح داده شده است).
از نتایج تجربی بیاموزید
توصیه: علاوه بر تلاش برای دستیابی به هدف علمی اصلی هر گروه از آزمایشات ، یک لیست چک از سؤالات اضافی را طی کنید. اگر مسائل را کشف کردید ، آزمایشات را تجدید نظر و دوباره انجام دهید.
در نهایت ، هر گروه از آزمایش ها یک هدف خاص دارند. شما باید شواهدی را که آزمایشات در جهت آن هدف ارائه می دهد ارزیابی کنید. با این حال ، اگر سؤالات درست را بپرسید ، اغلب می توانید قبل از اینکه مجموعه ای از آزمایشات بتوانند به سمت هدف اصلی خود پیشرفت کنند ، مواردی را برای اصلاح پیدا کنید. اگر این سؤالات را نپرسید ، ممکن است نتیجه گیری نادرست داشته باشید.
از آنجا که آزمایشات در حال اجرا می تواند گران باشد ، شما باید بینش های مفید دیگری را نیز از هر گروه از آزمایشات استخراج کنید ، حتی اگر این بینش ها بلافاصله با هدف فعلی مرتبط نباشند.
قبل از تجزیه و تحلیل مجموعه ای از آزمایشات برای پیشرفت در جهت هدف اصلی خود ، سؤالات اضافی زیر را از خود بپرسید:
- آیا فضای جستجو به اندازه کافی بزرگ است؟ اگر نقطه بهینه از یک مطالعه در نزدیکی مرز فضای جستجو در یک یا چند بعد باشد ، احتمالاً جستجو به اندازه کافی گسترده نیست. در این حالت ، یک مطالعه دیگر را با یک فضای جستجوی گسترده انجام دهید.
- آیا از فضای جستجو به اندازه کافی نمونه برداری کرده اید؟ اگر اینطور نیست ، امتیاز بیشتری را اجرا کنید یا در اهداف تنظیم جاه طلب باشید.
- چه کسری از آزمایشات در هر مطالعه غیرقابل نفوذ است؟ یعنی ، کدام آزمایشات واگرایی می کنند ، ارزش های ضرر بدی را دریافت می کنند ، یا اصلاً نتوانند به دلیل نقض برخی محدودیت های ضمنی؟ هنگامی که بخش بسیار زیادی از نقاط در یک مطالعه غیرقابل نفوذ است ، فضای جستجو را تنظیم کنید تا از نمونه برداری از چنین نقاطی جلوگیری شود ، که گاهی اوقات نیاز به تنظیم مجدد فضای جستجو دارد. در بعضی موارد ، تعداد زیادی از نقاط غیرقابل نفوذ می تواند یک اشکال در کد آموزش را نشان دهد.
- آیا مدل مسائل بهینه سازی را نشان می دهد؟
- چه چیزی می توانید از منحنی های آموزش بهترین آزمایشات یاد بگیرید؟ به عنوان مثال ، آیا بهترین آزمایشات دارای منحنی های آموزشی سازگار با بیش از حد مشکل ساز است؟
در صورت لزوم ، بر اساس پاسخ به سؤالات قبلی ، جدیدترین مطالعه یا گروه مطالعات را برای بهبود فضای جستجو و/یا نمونه آزمایشات بیشتر اصلاح کنید ، یا اقدامات اصلاحی دیگری انجام دهید.
پس از پاسخ به سؤالات قبلی ، می توانید شواهدی را که آزمایشات در مورد هدف اصلی خود ارائه می دهد ، ارزیابی کنید. به عنوان مثال ، ارزیابی اینکه آیا تغییر مفید است یا خیر .
مرزهای فضای جستجوی بد را شناسایی کنید
اگر بهترین نقطه نمونه برداری از آن نزدیک به مرز آن باشد ، فضای جستجو مشکوک است. اگر دامنه جستجو را در آن جهت گسترش دهید ، ممکن است یک نکته حتی بهتر پیدا کنید.
برای بررسی مرزهای فضایی جستجو ، توصیه می کنیم آزمایشات تکمیل شده را در مورد آنچه که ما آن را محور HyperParameter Basic می نامیم ، ترسیم کنید. در این موارد ، ما ارزش عینی اعتبار سنجی را در مقابل یکی از هایپرپارامترها (به عنوان مثال نرخ یادگیری) ترسیم می کنیم. هر نقطه در طرح با یک آزمایش واحد مطابقت دارد.
ارزش عینی اعتبار سنجی برای هر آزمایش معمولاً باید بهترین ارزشی باشد که در طول آموزش به دست آورد.
شکل 1: نمونه هایی از مرزهای فضای جستجوی بد و مرزهای فضایی جستجو قابل قبول.
توطئه های شکل 1 میزان خطا (پایین تر است) در برابر نرخ یادگیری اولیه. اگر بهترین خوشه به سمت لبه فضای جستجو (در بعضی از ابعاد) ، ممکن است لازم باشد مرزهای فضای جستجو را گسترش دهید تا بهترین نقطه مشاهده شده دیگر به مرز نزدیک نباشد.
غالباً ، یک مطالعه شامل کارآزمایی های "غیرقابل نفوذ" است که نتایج بسیار بدی را واگذار می کنند یا به دست می آورند (با XS قرمز در شکل 1 مشخص شده است). اگر همه آزمایشات برای نرخ یادگیری بیشتر از برخی از ارزش آستانه غیرقابل نفوذ باشد ، و اگر بهترین آزمایشات در حاشیه آن در حاشیه آن منطقه باشد ، این مدل ممکن است از مسائل پایداری رنج ببرد که مانع از دسترسی به نرخ یادگیری بالاتر می شود .
نمونه برداری از امتیازات کافی در فضای جستجو
به طور کلی ، می توان دانست که آیا فضای جستجو به اندازه کافی متراکم نمونه برداری شده است. 🤖 انجام آزمایشات بیشتر بهتر از انجام آزمایشات کمتر است ، اما آزمایشات بیشتر هزینه اضافی آشکار را ایجاد می کند.
از آنجا که دانستن اینکه به اندازه کافی نمونه برداری کرده اید ، بسیار سخت است ، توصیه می کنیم:
- نمونه برداری از آنچه می توانید از آن استفاده کنید.
- کالیبراسیون اعتماد به نفس خود را از نگاه مکرر به توطئه های مختلف محور هایپرپارامتر و تلاش برای درک این مسئله که چند نکته در منطقه "خوب" فضای جستجو وجود دارد.
منحنی های آموزش را بررسی کنید
خلاصه: بررسی منحنی های ضرر یک روش آسان برای شناسایی حالت های شکست مشترک است و می تواند به شما در اولویت بندی اقدامات بعدی بالقوه کمک کند.
در بسیاری از موارد ، هدف اصلی آزمایشات شما فقط نیاز به خطای اعتبار سنجی هر آزمایش دارد. با این حال ، هنگام کاهش هر آزمایش به یک شماره ، مراقب باشید زیرا این تمرکز می تواند جزئیات مهم را در مورد آنچه در زیر سطح اتفاق می افتد پنهان کند. برای هر مطالعه ، ما اکیداً توصیه می کنیم که حداقل بهترین آزمایشات را به منحنی های ضرر و زیان بپردازید. حتی اگر این امر برای پرداختن به هدف اصلی آزمایشی ضروری نباشد ، بررسی منحنی های ضرر (از جمله هر دو از دست دادن آموزش و از دست دادن اعتبار سنجی) یک روش مناسب برای شناسایی حالت های خرابی مشترک است و می تواند به شما در اولویت بندی چه اقداماتی برای انجام بعدی کمک کند.
هنگام بررسی منحنی های ضرر ، روی سؤالات زیر تمرکز کنید:
آیا هیچ یک از محاکمات دارای بیش از حد مشکل ساز هستند؟ بیش از حد مشکل ساز هنگامی اتفاق می افتد که خطای اعتبار سنجی در طول آموزش شروع می شود. در تنظیمات آزمایشی که در آن شما با انتخاب آزمایش "بهترین" برای هر تنظیم از هیپرامترهای علمی ، بیش از حد پارامترها را بهینه می کنید ، حداقل در هر یک از بهترین آزمایشات مربوط به تنظیمات هایپرپارامترهای علمی که در مقایسه با آنها مقایسه می کنید ، بیش از حد مشکل ساز را بررسی کنید. اگر هر یک از بهترین آزمایشات بیش از حد مشکل ساز را نشان می دهد ، یا هر دو مورد را انجام دهید:
- آزمایش را با تکنیک های تنظیم مجدد اضافی دوباره انجام دهید
- پارامترهای منظم موجود را قبل از مقایسه مقادیر هایپرپارامترهای علمی دوباره انجام دهید. این ممکن است در صورتی که Hyperparameters علمی شامل پارامترهای منظم باشد ، اعمال نشود ، از این رو جای تعجب آور نخواهد بود اگر تنظیمات کم فشار از آن پارامترهای تنظیم کننده منجر به ایجاد بیش از حد مشکل ساز شود.
کاهش بیش از حد بیش از حد با استفاده از تکنیک های منظم تنظیم که به حداقل پیچیدگی کد یا محاسبات اضافی اضافه می کنند (به عنوان مثال ، تنظیم رها کردن ، صاف کردن برچسب ، پوسیدگی وزن) ساده است. بنابراین ، اضافه کردن یک یا چند مورد از این آزمایشات معمولاً بی اهمیت است. به عنوان مثال ، اگر Hyperparameter علمی "تعداد لایه های پنهان" باشد و بهترین آزمایشی که از بیشترین تعداد لایه های پنهان استفاده می کند ، بیش از حد مشکل ساز را نشان می دهد ، پس توصیه می کنیم به جای انتخاب بلافاصله تعداد کمتری از لایه های پنهان ، با تنظیم مجدد اضافی دوباره امتحان کنید.
Even if none of the "best" trials exhibit problematic overfitting, there might still be a problem if it occurs in any of the trials. Selecting the best trial suppresses configurations exhibiting problematic overfitting and favors those that don't. In other words, selecting the best trial favors configurations with more regularization. However, anything that makes training worse can act as a regularizer, even if it wasn't intended that way. For example, choosing a smaller learning rate can regularize training by hobbling the optimization process, but we typically don't want to choose the learning rate this way. Note that the "best" trial for each setting of the scientific hyperparameters might be selected in such a way that favors "bad" values of some of the scientific or nuisance hyperparameters.
Is there high step-to-step variance in the training or validation error late in training? If so, this could interfere with both of the following:
- Your ability to compare different values of the scientific hyperparameters. That's because each trial randomly ends on a "lucky" or "unlucky" step.
- Your ability to reproduce the result of the best trial in production. That's because the production model might not end on the same "lucky" step as in the study.
The most likely causes of step-to-step variance are:
- Batch variance due to randomly sampling examples from the training set for each batch.
- Small validation sets
- Using a learning rate that's too high late in training.
Possible remedies include:
- Increasing the batch size.
- Obtaining more validation data.
- Using learning rate decay.
- Using Polyak averaging.
Are the trials still improving at the end of training? If so, you are in the "compute bound" regime and may benefit from increasing the number of training steps or changing the learning rate schedule.
Has performance on the training and validation sets saturated long before the final training step? If so, this indicates that you are in the "not compute-bound" regime and that you may be able to decrease the number of training steps.
Beyond this list, many additional behaviors can become evident from examining the loss curves. For example, training loss increasing during training usually indicates a bug in the training pipeline.
Detecting whether a change is useful with isolation plots
Figure 2: Isolation plot that investigates the best value of weight decay for ResNet-50 trained on ImageNet.
Often, the goal of a set of experiments is to compare different values of a scientific hyperparameter. For example, suppose you want to determine the value of weight decay that results in the best validation error. An isolation plot is a special case of the basic hyperparameter axis plot. Each point on an isolation plot corresponds to the performance of the best trial across some (or all) of the nuisance hyperparameters. In other words, plot the model performance after "optimizing away" the nuisance hyperparameters.
An isolation plot simplifies performing an apples-to-apples comparison between different values of the scientific hyperparameter. For example, the isolation plot in Figure 2 reveals the value of weight decay that produces the best validation performance for a particular configuration of ResNet-50 trained on ImageNet.
If the goal is to determine whether to include weight decay at all, then compare the best point from this plot against the baseline of no weight decay. For a fair comparison, the baseline should also have its learning rate equally well tuned.
When you have data generated by (quasi)random search and are considering a continuous hyperparameter for an isolation plot, you can approximate the isolation plot by bucketing the x-axis values of the basic hyperparameter axis plot and taking the best trial in each vertical slice defined by the buckets.
Automate generically useful plots
The more effort it is to generate plots, the less likely you are to look at them as much as you should. Therefore, we recommend setting up your infrastructure to automatically produce as many plots as possible. At a minimum, we recommend automatically generating basic hyperparameter axis plots for all hyperparameters that you vary in an experiment.
Additionally, we recommend automatically producing loss curves for all trials. Furthermore, we recommend making it as easy as possible to find the best few trials of each study and to examine their loss curves.
You can add many other useful potential plots and visualizations. To paraphrase Geoffrey Hinton :
Every time you plot something new, you learn something new.
Determine whether to adopt the candidate change
Summary: When deciding whether to make a change to our model or training procedure or adopt a new hyperparameter configuration, note the different sources of variation in your results.
When trying to improve a model, a particular candidate change might initially achieve a better validation error compared to an incumbent configuration. However, repeating the experiment might demonstrate no consistent advantage. Informally, the most important sources of inconsistent results can be grouped into the following broad categories:
- Training procedure variance, retrain variance, or trial variance : the variation between training runs that use the same hyperparameters but different random seeds. For example, different random initializations, training data shuffles, dropout masks, patterns of data augmentation operations, and orderings of parallel arithmetic operations are all potential sources of trial variance.
- Hyperparameter search variance, or study variance : the variation in results caused by our procedure to select the hyperparameters. For example, you might run the same experiment with a particular search space but with two different seeds for quasi-random search and end up selecting different hyperparameter values.
- Data collection and sampling variance : the variance from any sort of random split into training, validation, and test data or variance due to the training data generation process more generally.
True, you can compare validation error rates estimated on a finite validation set using fastidious statistical tests. However, often the trial variance alone can produce statistically significant differences between two different trained models that use the same hyperparameter settings.
We are most concerned about study variance when trying to make conclusions that go beyond the level of an individual point in hyperparameters space. The study variance depends on the number of trials and the search space. We have seen cases where the study variance is larger than the trial variance and cases where it is much smaller. Therefore, before adopting a candidate change, consider running the best trial N times to characterize the run-to-run trial variance. Usually, you can get away with only recharacterizing the trial variance after major changes to the pipeline, but you might need fresher estimates in some cases. In other applications, characterizing the trial variance is too costly to be worth it.
Although you only want to adopt changes (including new hyperparameter configurations) that produce real improvements, demanding complete certainty that a given change helps isn't the right answer either. Therefore, if a new hyperparameter point (or other change) gets a better result than the baseline (taking into account the retrain variance of both the new point and the baseline as best as you can), then you probably should adopt it as the new baseline for future comparisons. However, we recommend only adopting changes that produce improvements that outweigh any complexity they add.
After exploration concludes
Summary: Bayesian optimization tools are a compelling option once you're done searching for good search spaces and have decided what hyperparameters are worth tuning.
Eventually, your priorities will shift from learning more about the tuning problem to producing a single best configuration to launch or otherwise use. At that point, there should be a refined search space that comfortably contains the local region around the best observed trial and has been adequately sampled. Your exploration work should have revealed the most essential hyperparameters to tune and their sensible ranges that you can use to construct a search space for a final automated tuning study using as large a tuning budget as possible.
Since you no longer care about maximizing insight into the tuning problem, many of the advantages of quasi-random search no longer apply. Therefore, you should use Bayesian optimization tools to automatically find the best hyperparameter configuration. Open-Source Vizier implements a variety of sophisticated algorithms for tuning ML models, including Bayesian Optimization algorithms.
Suppose the search space contains a non-trivial volume of divergent points , meaning points that get NaN training loss or even training loss many standard deviations worse than the mean. In this case, we recommend using black-box optimization tools that properly handle trials that diverge. (See Bayesian Optimization with Unknown Constraints for an excellent way to deal with this issue.) Open-Source Vizier has supports for marking divergent points by marking trials as infeasible, although it may not use our preferred approach from Gelbart et al. , depending on how it is configured.
After exploration concludes, consider checking the performance on the test set. In principle, you could even fold the validation set into the training set and retrain the best configuration found with Bayesian optimization. However, this is only appropriate if there won't be future launches with this specific workload (for example, a one-time Kaggle competition).
،For the purposes of this document:
The ultimate goal of machine learning development is to maximize the usefulness of the deployed model.
You can typically use the same basic steps and principles in this section on any ML problem.
This section makes the following assumptions:
- You already have a fully-running training pipeline along with a configuration that obtains a reasonable result.
- You have enough computational resources to conduct meaningful tuning experiments and to run at least several training jobs in parallel.
The incremental tuning strategy
Recommendation: Start with a simple configuration. Then, incrementally make improvements while building up insight into the problem. Make sure that any improvement is based on strong evidence.
We assume that your goal is to find a configuration that maximizes the performance of your model. Sometimes, your goal is to maximize model improvement by a fixed deadline. In other cases, you can keep improving the model indefinitely; for example, continually improving a model used in production.
In principle, you could maximize performance by using an algorithm to automatically search the entire space of possible configurations, but this is not a practical option. The space of possible configurations is extremely large and there are not yet any algorithms sophisticated enough to efficiently search this space without human guidance. Most automated search algorithms rely on a hand-designed search space that defines the set of configurations to search in, and these search spaces can matter quite a bit.
The most effective way to maximize performance is to start with a simple configuration and incrementally add features and make improvements while building up insight into the problem.
We recommend using automated search algorithms in each round of tuning and continually updating search spaces as your understanding grows. As you explore, you will naturally find better and better configurations and therefore your "best" model will continually improve.
The term "launch" refers to an update to our best configuration (which may or may not correspond to an actual launch of a production model). For each "launch," you must ensure that the change is based on strong evidence—not just random chance based on a lucky configuration—so that you don't add unnecessary complexity to the training pipeline.
At a high level, our incremental tuning strategy involves repeating the following four steps:
- Pick a goal for the next round of experiments. Make sure that the goal is appropriately scoped.
- Design the next round of experiments. Design and execute a set of experiments that progresses towards this goal.
- Learn from the experimental results. Evaluate the experiment against a checklist.
- Determine whether to adopt the candidate change.
The remainder of this section details this strategy.
Pick a goal for the next round of experiments
If you try to add multiple features or answer multiple questions at once, you may not be able to disentangle the separate effects on the results. Example goals include:
- Try a potential improvement to the pipeline (for example, a new regularizer, preprocessing choice, etc.).
- Understand the impact of a particular model hyperparameter (for example, the activation function)
- Minimize validation error.
Prioritize long term progress over short term validation error improvements
Summary: Most of the time, your primary goal is to gain insight into the tuning problem.
We recommend spending the majority of your time gaining insight into the problem and comparatively little time greedily focused on maximizing performance on the validation set. In other words, spend most of your time on "exploration" and only a small amount on "exploitation". Understanding the problem is critical to maximize final performance. Prioritizing insight over short term gains helps to:
- Avoid launching unnecessary changes that happened to be present in well-performing runs merely through historical accident.
- Identify which hyperparameters the validation error is most sensitive to, which hyperparameters interact the most and therefore need to be retuned together, and which hyperparameters are relatively insensitive to other changes and can therefore be fixed in future experiments.
- Suggest potential new features to try, such as new regularizers when overfitting is an issue.
- Identify features that don't help and therefore can be removed, reducing the complexity of future experiments.
- Recognize when improvements from hyperparameter tuning have likely saturated.
- Narrow our search spaces around the optimal value to improve tuning efficiency.
Eventually, you'll understand the problem. Then, you can focus purely on the validation error even if the experiments aren't maximally informative about the structure of the tuning problem.
Design the next round of experiments
Summary: Identify which hyperparameters are scientific, nuisance, and fixed hyperparameters for the experimental goal. Create a sequence of studies to compare different values of the scientific hyperparameters while optimizing over the nuisance hyperparameters. Choose the search space of nuisance hyperparameters to balance resource costs with scientific value.
Identify scientific, nuisance, and fixed hyperparameters
For a given goal, all hyperparameters fall into one of the following categories:
- scientific hyperparameters are those whose effect on the model's performance is what you're trying to measure.
- nuisance hyperparameters are those that need to be optimized over in order to fairly compare different values of the scientific hyperparameters. Nuisance hyperparameters are similar to nuisance parameters in statistics.
- fixed hyperparameters have constant values in the current round of experiments. The values of fixed hyperparameters shouldn't change when you compare different values of scientific hyperparameters. By fixing certain hyperparameters for a set of experiments, you must accept that conclusions derived from the experiments might not be valid for other settings of the fixed hyperparameters. In other words, fixed hyperparameters create caveats for any conclusions you draw from the experiments.
For example, suppose your goal is as follows:
Determine whether a model with more hidden layers has lower validation error.
در این مورد:
- Learning rate is a nuisance hyperparameter because you can only fairly compare models with different numbers of hidden layers if the learning rate is tuned separately for each number of hidden layers. (The optimal learning rate generally depends on the model architecture).
- The activation function could be a fixed hyperparameter if you have determined in prior experiments that the best activation function is not sensitive to model depth. Or, you are willing to limit your conclusions about the number of hidden layers to cover this activation function. Alternatively, it could be a nuisance hyperparameter if you are prepared to tune it separately for each number of hidden layers.
A particular hyperparameter could be a scientific hyperparameter, nuisance hyperparameter, or fixed hyperparameter; the hyperparameter's designation changes depending on the experimental goal. For example, activation function could be any of the following:
- Scientific hyperparameter: Is ReLU or tanh a better choice for our problem?
- Nuisance hyperparameter: Is the best five-layer model better than the best six-layer model when you allow several different possible activation functions?
- Fixed hyperparameter: For ReLU nets, does adding batch normalization in a particular position help?
When designing a new round of experiments:
- Identify the scientific hyperparameters for the experimental goal. (At this stage, you can consider all other hyperparameters to be nuisance hyperparameters.)
- Convert some nuisance hyperparameters into fixed hyperparameters.
With limitless resources, you would leave all non-scientific hyperparameters as nuisance hyperparameters so that the conclusions you draw from your experiments are free from caveats about fixed hyperparameter values. However, the more nuisance hyperparameters you attempt to tune, the greater the risk that you fail to tune them sufficiently well for each setting of the scientific hyperparameters and end up reaching the wrong conclusions from your experiments. As described in a later section , you could counter this risk by increasing the computational budget. However, your maximum resource budget is often less than would be needed to tune all non-scientific hyperparameters.
We recommend converting a nuisance hyperparameter into a fixed hyperparameter when the caveats introduced by fixing it are less burdensome than the cost of including it as a nuisance hyperparameter. The more a nuisance hyperparameter interacts with the scientific hyperparameters, the more damaging to fix its value. For example, the best value of the weight decay strength typically depends on the model size, so comparing different model sizes assuming a single specific value of the weight decay wouldn't be very insightful.
Some optimizer parameters
As a rule of thumb, some optimizer hyperparameters (eg the learning rate, momentum, learning rate schedule parameters, Adam betas etc.) are nuisance hyperparameters because they tend to interact the most with other changes. These optimizer hyperparameters are rarely scientific hyperparameters because a goal like "what is the best learning rate for the current pipeline?" doesn't provide much insight. After all, the best setting could change with the next pipeline change anyway.
You might fix some optimizer hyperparameters occasionally due to resource constraints or particularly strong evidence that they don't interact with the scientific parameters. However, you should generally assume that you must tune optimizer hyperparameters separately to make fair comparisons between different settings of the scientific hyperparameters, and thus shouldn't be fixed. Furthermore, there is no a priori reason to prefer one optimizer hyperparameter value over another; for example, optimizer hyperparameter values don't usually affect the computational cost of forward passes or gradients in any way.
The choice of optimizer
The choice of optimizer is typically either:
- a scientific hyperparameter
- a fixed hyperparameter
An optimizer is a scientific hyperparameter if your experimental goal involves making fair comparisons between two or more different optimizers. به عنوان مثال:
Determine which optimizer produces the lowest validation error in a given number of steps.
Alternatively, you might make the optimizer a fixed hyperparameter for a variety of reasons, including:
- Prior experiments suggest that the best optimizer for your tuning problem is not sensitive to current scientific hyperparameters.
- You prefer to compare values of the scientific hyperparameters using this optimizer because its training curves are easier to reason about.
- You prefer to use this optimizer because it uses less memory than the alternatives.
Regularization hyperparameters
Hyperparameters introduced by a regularization technique are typically nuisance hyperparameters. However, the choice of whether or not to include the regularization technique at all is either a scientific or fixed hyperparameter.
For example, dropout regularization adds code complexity. Therefore, when deciding whether to include dropout regularization, you could make "no dropout" vs "dropout" a scientific hyperparameter but dropout rate a nuisance hyperparameter. If you decide to add dropout regularization to the pipeline based on this experiment, then the dropout rate would be a nuisance hyperparameter in future experiments.
Architectural hyperparameters
Architectural hyperparameters are often scientific or fixed hyperparameters because architecture changes can affect serving and training costs, latency, and memory requirements. For example, the number of layers is typically a scientific or fixed hyperparameter since it tends to have dramatic consequences for training speed and memory usage.
Dependencies on scientific hyperparameters
In some cases, the sets of nuisance and fixed hyperparameters depends on the values of the scientific hyperparameters. For example, suppose you are trying to determine which optimizer in Nesterov momentum and Adam produces in the lowest validation error. در این مورد:
- The scientific hyperparameter is the optimizer, which takes values
{"Nesterov_momentum", "Adam"}
- The value
optimizer="Nesterov_momentum"
introduces the hyperparameters{learning_rate, momentum}
, which might be either nuisance or fixed hyperparameters. - The value
optimizer="Adam"
introduces the hyperparameters{learning_rate, beta1, beta2, epsilon}
, which might be either nuisance or fixed hyperparameters.
Hyperparameters that are only present for certain values of the scientific hyperparameters are called conditional hyperparameters . Don't assume two conditional hyperparameters are the same just because they have the same name! In the preceding example, the conditional hyperparameter called learning_rate
is a different hyperparameter for optimizer="Nesterov_momentum"
than for optimizer="Adam"
. Its role is similar (although not identical) in the two algorithms, but the range of values that work well in each of the optimizers is typically different by several orders of magnitude.
Create a set of studies
After identifying the scientific and nuisance hyperparameters, you should design a study or sequence of studies to make progress towards the experimental goal. A study specifies a set of hyperparameter configurations to be run for subsequent analysis. Each configuration is called a trial . Creating a study typically involves choosing the following:
- The hyperparameters that vary across trials.
- The values those hyperparameters can take on (the search space ).
- The number of trials.
- An automated search algorithm to sample that many trials from the search space.
Alternatively, you can create a study by specifying the set of hyperparameter configurations manually.
The purpose of the studies is to simultaneously:
- Run the pipeline with different values of the scientific hyperparameters.
- "Optimizing away" (or "optimizing over") the nuisance hyperparameters so that comparisons between different values of the scientific hyperparameters are as fair as possible.
In the simplest case, you would make a separate study for each configuration of the scientific parameters, where each study tunes over the nuisance hyperparameters. For example, if your goal is to select the best optimizer out of Nesterov momentum and Adam, you could create two studies:
- One study in which
optimizer="Nesterov_momentum"
and the nuisance hyperparameters are{learning_rate, momentum}
- Another study in which
optimizer="Adam"
and the nuisance hyperparameters are{learning_rate, beta1, beta2, epsilon}
.
You would compare the two optimizers by selecting the best performing trial from each study.
You can use any gradient-free optimization algorithm, including methods such as Bayesian optimization or evolutionary algorithms, to optimize over the nuisance hyperparameters. However, we prefer to use quasi-random search in the exploration phase of tuning because of a variety of advantages it has in this setting. After exploration concludes, we recommend using state-of-the-art Bayesian optimization software (if it is available).
Consider a more complicated case where you want to compare a large number of values of the scientific hyperparameters but it is impractical to make that many independent studies. In this case, you can do the following:
- Include the scientific parameters in the same search space as the nuisance hyperparameters.
- Use a search algorithm to sample values of both the scientific and nuisance hyperparameters in a single study.
When taking this approach, conditional hyperparameters can cause problems. After all, it is hard to specify a search space unless the set of nuisance hyperparameters is the same for all values of the scientific hyperparameters. In this case, our preference for using quasi-random search over fancier black-box optimization tools is even stronger, since it guarantees different values of the scientific hyperparameters will be sampled uniformly. Regardless of the search algorithm, ensure that it searches the scientific parameters uniformly.
Strike a balance between informative and affordable experiments
When designing a study or sequence of studies, allocate a limited budget to adequately achieve the following three goals:
- Comparing enough different values of the scientific hyperparameters.
- Tuning the nuisance hyperparameters over a large enough search space.
- Sampling the search space of nuisance hyperparameters densely enough.
The better you can achieve these three goals, the more insight you can extract from the experiment. Comparing as many values of the scientific hyperparameters as possible broadens the scope of the insights you gain from the experiment.
Including as many nuisance hyperparameters as possible and allowing each nuisance hyperparameter to vary over as wide a range as possible increases confidence that a "good" value of the nuisance hyperparameters exists in the search space for each configuration of the scientific hyperparameters. Otherwise, you might make unfair comparisons between values of the scientific hyperparameters by not searching possible regions of the nuisance hyperparameter space where better values might lie for some values of the scientific parameters.
Sample the search space of nuisance hyperparameters as densely as possible. Doing so increases confidence that the search procedure will find any good settings for the nuisance hyperparameters that happen to exist in your search space. Otherwise, you might make unfair comparisons between values of the scientific parameters due to some values getting luckier with the sampling of the nuisance hyperparameters.
Unfortunately, improvements in any of these three dimensions require either of the following:
- Increasing the number of trials, and therefore increasing the resource cost.
- Finding a way to save resources in one of the other dimensions.
Every problem has its own idiosyncrasies and computational constraints, so allocating resources across these three goals requires some level of domain knowledge. After running a study, always try to get a sense of whether the study tuned the nuisance hyperparameters well enough. That is, the study searched a large enough space extensively enough to fairly compare the scientific hyperparameters (as described in greater detail in the next section).
Learn from the experimental results
Recommendation: In addition to trying to achieve the original scientific goal of each group of experiments, go through a checklist of additional questions. If you discover issues, revise and rerun the experiments.
Ultimately, each group of experiments has a specific goal. You should evaluate the evidence the experiments provide toward that goal. However, if you ask the right questions, you can often find issues to correct before a given set of experiments can progress towards their original goal. If you don't ask these questions, you may draw incorrect conclusions.
Since running experiments can be expensive, you should also extract other useful insights from each group of experiments, even if these insights are not immediately relevant to the current goal.
Before analyzing a given set of experiments to make progress toward their original goal, ask yourself the following additional questions:
- Is the search space large enough? If the optimal point from a study is near the boundary of the search space in one or more dimensions, the search is probably not wide enough. In this case, run another study with an expanded search space.
- Have you sampled enough points from the search space? If not, run more points or be less ambitious in the tuning goals.
- What fraction of the trials in each study are infeasible? That is, which trials diverge, get really bad loss values, or fail to run at all because they violate some implicit constraint? When a very large fraction of points in a study are infeasible, adjust the search space to avoid sampling such points, which sometimes requires reparameterizing the search space. In some cases, a large number of infeasible points can indicate a bug in the training code.
- Does the model exhibit optimization issues?
- What can you learn from the training curves of the best trials? For example, do the best trials have training curves consistent with problematic overfitting?
If necessary, based on the answers to the preceding questions, refine the most recent study or group of studies to improve the search space and/or sample more trials, or take some other corrective action.
Once you have answered the preceding questions, you can evaluate the evidence the experiments provide towards your original goal; for example, evaluating whether a change is useful .
Identify bad search space boundaries
A search space is suspicious if the best point sampled from it is close to its boundary. You might find an even better point if you expand the search range in that direction.
To check search space boundaries, we recommend plotting completed trials on what we call basic hyperparameter axis plots . In these, we plot the validation objective value versus one of the hyperparameters (for example, learning rate). Each point on the plot corresponds to a single trial.
The validation objective value for each trial should usually be the best value it achieved over the course of training.
Figure 1: Examples of bad search space boundaries and acceptable search space boundaries.
The plots in Figure 1 show the error rate (lower is better) against the initial learning rate. If the best points cluster towards the edge of a search space (in some dimension), then you might need to expand the search space boundaries until the best observed point is no longer close to the boundary.
Often, a study includes "infeasible" trials that diverge or get very bad results (marked with red Xs in Figure 1). If all trials are infeasible for learning rates greater than some threshold value, and if the best performing trials have learning rates at the edge of that region, the model may suffer from stability issues preventing it from accessing higher learning rates .
Not sampling enough points in the search space
In general, it can be very difficult to know if the search space has been sampled densely enough. 🤖 Running more trials is better than running fewer trials, but more trials generates an obvious extra cost.
Since it is so hard to know when you have sampled enough, we recommend:
- Sampling what you can afford.
- Calibrating your intuitive confidence from repeatedly looking at various hyperparameter axis plots and trying to get a sense of how many points are in the "good" region of the search space.
Examine the training curves
Summary: Examining the loss curves is an easy way to identify common failure modes and can help you prioritize potential next actions.
In many cases, the primary objective of your experiments only requires considering the validation error of each trial. However, be careful when reducing each trial to a single number because that focus can hide important details about what's going on below the surface. For every study, we strongly recommend looking at the loss curves of at least the best few trials. Even if this is not necessary for addressing the primary experimental objective, examining the loss curves (including both training loss and validation loss) is a good way to identify common failure modes and can help you prioritize what actions to take next.
When examining the loss curves, focus on the following questions:
Are any of the trials exhibiting problematic overfitting? Problematic overfitting occurs when the validation error starts increasing during training. In experimental settings where you optimize away nuisance hyperparameters by selecting the "best" trial for each setting of the scientific hyperparameters, check for problematic overfitting in at least each of the best trials corresponding to the settings of the scientific hyperparameters that you're comparing. If any of the best trials exhibits problematic overfitting, do either or both of the following:
- Rerun the experiment with additional regularization techniques
- Retune the existing regularization parameters before comparing the values of the scientific hyperparameters. This may not apply if the scientific hyperparameters include regularization parameters, since then it wouldn't be surprising if low-strength settings of those regularization parameters resulted in problematic overfitting.
Reducing overfitting is often straightforward using common regularization techniques that add minimal code complexity or extra computation (for example, dropout regularization, label smoothing, weight decay). Therefore, it's usually trivial to add one or more of these to the next round of experiments. For example, if the scientific hyperparameter is "number of hidden layers" and the best trial that uses the largest number of hidden layers exhibits problematic overfitting, then we recommend retrying with additional regularization instead of immediately selecting the smaller number of hidden layers.
Even if none of the "best" trials exhibit problematic overfitting, there might still be a problem if it occurs in any of the trials. Selecting the best trial suppresses configurations exhibiting problematic overfitting and favors those that don't. In other words, selecting the best trial favors configurations with more regularization. However, anything that makes training worse can act as a regularizer, even if it wasn't intended that way. For example, choosing a smaller learning rate can regularize training by hobbling the optimization process, but we typically don't want to choose the learning rate this way. Note that the "best" trial for each setting of the scientific hyperparameters might be selected in such a way that favors "bad" values of some of the scientific or nuisance hyperparameters.
Is there high step-to-step variance in the training or validation error late in training? If so, this could interfere with both of the following:
- Your ability to compare different values of the scientific hyperparameters. That's because each trial randomly ends on a "lucky" or "unlucky" step.
- Your ability to reproduce the result of the best trial in production. That's because the production model might not end on the same "lucky" step as in the study.
The most likely causes of step-to-step variance are:
- Batch variance due to randomly sampling examples from the training set for each batch.
- Small validation sets
- Using a learning rate that's too high late in training.
Possible remedies include:
- Increasing the batch size.
- Obtaining more validation data.
- Using learning rate decay.
- Using Polyak averaging.
Are the trials still improving at the end of training? If so, you are in the "compute bound" regime and may benefit from increasing the number of training steps or changing the learning rate schedule.
Has performance on the training and validation sets saturated long before the final training step? If so, this indicates that you are in the "not compute-bound" regime and that you may be able to decrease the number of training steps.
Beyond this list, many additional behaviors can become evident from examining the loss curves. For example, training loss increasing during training usually indicates a bug in the training pipeline.
Detecting whether a change is useful with isolation plots
Figure 2: Isolation plot that investigates the best value of weight decay for ResNet-50 trained on ImageNet.
Often, the goal of a set of experiments is to compare different values of a scientific hyperparameter. For example, suppose you want to determine the value of weight decay that results in the best validation error. An isolation plot is a special case of the basic hyperparameter axis plot. Each point on an isolation plot corresponds to the performance of the best trial across some (or all) of the nuisance hyperparameters. In other words, plot the model performance after "optimizing away" the nuisance hyperparameters.
An isolation plot simplifies performing an apples-to-apples comparison between different values of the scientific hyperparameter. For example, the isolation plot in Figure 2 reveals the value of weight decay that produces the best validation performance for a particular configuration of ResNet-50 trained on ImageNet.
If the goal is to determine whether to include weight decay at all, then compare the best point from this plot against the baseline of no weight decay. For a fair comparison, the baseline should also have its learning rate equally well tuned.
When you have data generated by (quasi)random search and are considering a continuous hyperparameter for an isolation plot, you can approximate the isolation plot by bucketing the x-axis values of the basic hyperparameter axis plot and taking the best trial in each vertical slice defined by the buckets.
Automate generically useful plots
The more effort it is to generate plots, the less likely you are to look at them as much as you should. Therefore, we recommend setting up your infrastructure to automatically produce as many plots as possible. At a minimum, we recommend automatically generating basic hyperparameter axis plots for all hyperparameters that you vary in an experiment.
Additionally, we recommend automatically producing loss curves for all trials. Furthermore, we recommend making it as easy as possible to find the best few trials of each study and to examine their loss curves.
You can add many other useful potential plots and visualizations. To paraphrase Geoffrey Hinton :
Every time you plot something new, you learn something new.
Determine whether to adopt the candidate change
Summary: When deciding whether to make a change to our model or training procedure or adopt a new hyperparameter configuration, note the different sources of variation in your results.
When trying to improve a model, a particular candidate change might initially achieve a better validation error compared to an incumbent configuration. However, repeating the experiment might demonstrate no consistent advantage. Informally, the most important sources of inconsistent results can be grouped into the following broad categories:
- Training procedure variance, retrain variance, or trial variance : the variation between training runs that use the same hyperparameters but different random seeds. For example, different random initializations, training data shuffles, dropout masks, patterns of data augmentation operations, and orderings of parallel arithmetic operations are all potential sources of trial variance.
- Hyperparameter search variance, or study variance : the variation in results caused by our procedure to select the hyperparameters. For example, you might run the same experiment with a particular search space but with two different seeds for quasi-random search and end up selecting different hyperparameter values.
- Data collection and sampling variance : the variance from any sort of random split into training, validation, and test data or variance due to the training data generation process more generally.
True, you can compare validation error rates estimated on a finite validation set using fastidious statistical tests. However, often the trial variance alone can produce statistically significant differences between two different trained models that use the same hyperparameter settings.
We are most concerned about study variance when trying to make conclusions that go beyond the level of an individual point in hyperparameters space. The study variance depends on the number of trials and the search space. We have seen cases where the study variance is larger than the trial variance and cases where it is much smaller. Therefore, before adopting a candidate change, consider running the best trial N times to characterize the run-to-run trial variance. Usually, you can get away with only recharacterizing the trial variance after major changes to the pipeline, but you might need fresher estimates in some cases. In other applications, characterizing the trial variance is too costly to be worth it.
Although you only want to adopt changes (including new hyperparameter configurations) that produce real improvements, demanding complete certainty that a given change helps isn't the right answer either. Therefore, if a new hyperparameter point (or other change) gets a better result than the baseline (taking into account the retrain variance of both the new point and the baseline as best as you can), then you probably should adopt it as the new baseline for future comparisons. However, we recommend only adopting changes that produce improvements that outweigh any complexity they add.
After exploration concludes
Summary: Bayesian optimization tools are a compelling option once you're done searching for good search spaces and have decided what hyperparameters are worth tuning.
Eventually, your priorities will shift from learning more about the tuning problem to producing a single best configuration to launch or otherwise use. At that point, there should be a refined search space that comfortably contains the local region around the best observed trial and has been adequately sampled. Your exploration work should have revealed the most essential hyperparameters to tune and their sensible ranges that you can use to construct a search space for a final automated tuning study using as large a tuning budget as possible.
Since you no longer care about maximizing insight into the tuning problem, many of the advantages of quasi-random search no longer apply. Therefore, you should use Bayesian optimization tools to automatically find the best hyperparameter configuration. Open-Source Vizier implements a variety of sophisticated algorithms for tuning ML models, including Bayesian Optimization algorithms.
Suppose the search space contains a non-trivial volume of divergent points , meaning points that get NaN training loss or even training loss many standard deviations worse than the mean. In this case, we recommend using black-box optimization tools that properly handle trials that diverge. (See Bayesian Optimization with Unknown Constraints for an excellent way to deal with this issue.) Open-Source Vizier has supports for marking divergent points by marking trials as infeasible, although it may not use our preferred approach from Gelbart et al. , depending on how it is configured.
After exploration concludes, consider checking the performance on the test set. In principle, you could even fold the validation set into the training set and retrain the best configuration found with Bayesian optimization. However, this is only appropriate if there won't be future launches with this specific workload (for example, a one-time Kaggle competition).
،For the purposes of this document:
The ultimate goal of machine learning development is to maximize the usefulness of the deployed model.
You can typically use the same basic steps and principles in this section on any ML problem.
This section makes the following assumptions:
- You already have a fully-running training pipeline along with a configuration that obtains a reasonable result.
- You have enough computational resources to conduct meaningful tuning experiments and to run at least several training jobs in parallel.
The incremental tuning strategy
Recommendation: Start with a simple configuration. Then, incrementally make improvements while building up insight into the problem. Make sure that any improvement is based on strong evidence.
We assume that your goal is to find a configuration that maximizes the performance of your model. Sometimes, your goal is to maximize model improvement by a fixed deadline. In other cases, you can keep improving the model indefinitely; for example, continually improving a model used in production.
In principle, you could maximize performance by using an algorithm to automatically search the entire space of possible configurations, but this is not a practical option. The space of possible configurations is extremely large and there are not yet any algorithms sophisticated enough to efficiently search this space without human guidance. Most automated search algorithms rely on a hand-designed search space that defines the set of configurations to search in, and these search spaces can matter quite a bit.
The most effective way to maximize performance is to start with a simple configuration and incrementally add features and make improvements while building up insight into the problem.
We recommend using automated search algorithms in each round of tuning and continually updating search spaces as your understanding grows. As you explore, you will naturally find better and better configurations and therefore your "best" model will continually improve.
The term "launch" refers to an update to our best configuration (which may or may not correspond to an actual launch of a production model). For each "launch," you must ensure that the change is based on strong evidence—not just random chance based on a lucky configuration—so that you don't add unnecessary complexity to the training pipeline.
At a high level, our incremental tuning strategy involves repeating the following four steps:
- Pick a goal for the next round of experiments. Make sure that the goal is appropriately scoped.
- Design the next round of experiments. Design and execute a set of experiments that progresses towards this goal.
- Learn from the experimental results. Evaluate the experiment against a checklist.
- Determine whether to adopt the candidate change.
The remainder of this section details this strategy.
Pick a goal for the next round of experiments
If you try to add multiple features or answer multiple questions at once, you may not be able to disentangle the separate effects on the results. Example goals include:
- Try a potential improvement to the pipeline (for example, a new regularizer, preprocessing choice, etc.).
- Understand the impact of a particular model hyperparameter (for example, the activation function)
- Minimize validation error.
Prioritize long term progress over short term validation error improvements
Summary: Most of the time, your primary goal is to gain insight into the tuning problem.
We recommend spending the majority of your time gaining insight into the problem and comparatively little time greedily focused on maximizing performance on the validation set. In other words, spend most of your time on "exploration" and only a small amount on "exploitation". Understanding the problem is critical to maximize final performance. Prioritizing insight over short term gains helps to:
- Avoid launching unnecessary changes that happened to be present in well-performing runs merely through historical accident.
- Identify which hyperparameters the validation error is most sensitive to, which hyperparameters interact the most and therefore need to be retuned together, and which hyperparameters are relatively insensitive to other changes and can therefore be fixed in future experiments.
- Suggest potential new features to try, such as new regularizers when overfitting is an issue.
- Identify features that don't help and therefore can be removed, reducing the complexity of future experiments.
- Recognize when improvements from hyperparameter tuning have likely saturated.
- Narrow our search spaces around the optimal value to improve tuning efficiency.
Eventually, you'll understand the problem. Then, you can focus purely on the validation error even if the experiments aren't maximally informative about the structure of the tuning problem.
Design the next round of experiments
Summary: Identify which hyperparameters are scientific, nuisance, and fixed hyperparameters for the experimental goal. Create a sequence of studies to compare different values of the scientific hyperparameters while optimizing over the nuisance hyperparameters. Choose the search space of nuisance hyperparameters to balance resource costs with scientific value.
Identify scientific, nuisance, and fixed hyperparameters
For a given goal, all hyperparameters fall into one of the following categories:
- scientific hyperparameters are those whose effect on the model's performance is what you're trying to measure.
- nuisance hyperparameters are those that need to be optimized over in order to fairly compare different values of the scientific hyperparameters. Nuisance hyperparameters are similar to nuisance parameters in statistics.
- fixed hyperparameters have constant values in the current round of experiments. The values of fixed hyperparameters shouldn't change when you compare different values of scientific hyperparameters. By fixing certain hyperparameters for a set of experiments, you must accept that conclusions derived from the experiments might not be valid for other settings of the fixed hyperparameters. In other words, fixed hyperparameters create caveats for any conclusions you draw from the experiments.
For example, suppose your goal is as follows:
Determine whether a model with more hidden layers has lower validation error.
در این مورد:
- Learning rate is a nuisance hyperparameter because you can only fairly compare models with different numbers of hidden layers if the learning rate is tuned separately for each number of hidden layers. (The optimal learning rate generally depends on the model architecture).
- The activation function could be a fixed hyperparameter if you have determined in prior experiments that the best activation function is not sensitive to model depth. Or, you are willing to limit your conclusions about the number of hidden layers to cover this activation function. Alternatively, it could be a nuisance hyperparameter if you are prepared to tune it separately for each number of hidden layers.
A particular hyperparameter could be a scientific hyperparameter, nuisance hyperparameter, or fixed hyperparameter; the hyperparameter's designation changes depending on the experimental goal. For example, activation function could be any of the following:
- Scientific hyperparameter: Is ReLU or tanh a better choice for our problem?
- Nuisance hyperparameter: Is the best five-layer model better than the best six-layer model when you allow several different possible activation functions?
- Fixed hyperparameter: For ReLU nets, does adding batch normalization in a particular position help?
When designing a new round of experiments:
- Identify the scientific hyperparameters for the experimental goal. (At this stage, you can consider all other hyperparameters to be nuisance hyperparameters.)
- Convert some nuisance hyperparameters into fixed hyperparameters.
With limitless resources, you would leave all non-scientific hyperparameters as nuisance hyperparameters so that the conclusions you draw from your experiments are free from caveats about fixed hyperparameter values. However, the more nuisance hyperparameters you attempt to tune, the greater the risk that you fail to tune them sufficiently well for each setting of the scientific hyperparameters and end up reaching the wrong conclusions from your experiments. As described in a later section , you could counter this risk by increasing the computational budget. However, your maximum resource budget is often less than would be needed to tune all non-scientific hyperparameters.
We recommend converting a nuisance hyperparameter into a fixed hyperparameter when the caveats introduced by fixing it are less burdensome than the cost of including it as a nuisance hyperparameter. The more a nuisance hyperparameter interacts with the scientific hyperparameters, the more damaging to fix its value. For example, the best value of the weight decay strength typically depends on the model size, so comparing different model sizes assuming a single specific value of the weight decay wouldn't be very insightful.
Some optimizer parameters
As a rule of thumb, some optimizer hyperparameters (eg the learning rate, momentum, learning rate schedule parameters, Adam betas etc.) are nuisance hyperparameters because they tend to interact the most with other changes. These optimizer hyperparameters are rarely scientific hyperparameters because a goal like "what is the best learning rate for the current pipeline?" doesn't provide much insight. After all, the best setting could change with the next pipeline change anyway.
You might fix some optimizer hyperparameters occasionally due to resource constraints or particularly strong evidence that they don't interact with the scientific parameters. However, you should generally assume that you must tune optimizer hyperparameters separately to make fair comparisons between different settings of the scientific hyperparameters, and thus shouldn't be fixed. Furthermore, there is no a priori reason to prefer one optimizer hyperparameter value over another; for example, optimizer hyperparameter values don't usually affect the computational cost of forward passes or gradients in any way.
The choice of optimizer
The choice of optimizer is typically either:
- a scientific hyperparameter
- a fixed hyperparameter
An optimizer is a scientific hyperparameter if your experimental goal involves making fair comparisons between two or more different optimizers. به عنوان مثال:
Determine which optimizer produces the lowest validation error in a given number of steps.
Alternatively, you might make the optimizer a fixed hyperparameter for a variety of reasons, including:
- Prior experiments suggest that the best optimizer for your tuning problem is not sensitive to current scientific hyperparameters.
- You prefer to compare values of the scientific hyperparameters using this optimizer because its training curves are easier to reason about.
- You prefer to use this optimizer because it uses less memory than the alternatives.
Regularization hyperparameters
Hyperparameters introduced by a regularization technique are typically nuisance hyperparameters. However, the choice of whether or not to include the regularization technique at all is either a scientific or fixed hyperparameter.
For example, dropout regularization adds code complexity. Therefore, when deciding whether to include dropout regularization, you could make "no dropout" vs "dropout" a scientific hyperparameter but dropout rate a nuisance hyperparameter. If you decide to add dropout regularization to the pipeline based on this experiment, then the dropout rate would be a nuisance hyperparameter in future experiments.
Architectural hyperparameters
Architectural hyperparameters are often scientific or fixed hyperparameters because architecture changes can affect serving and training costs, latency, and memory requirements. For example, the number of layers is typically a scientific or fixed hyperparameter since it tends to have dramatic consequences for training speed and memory usage.
Dependencies on scientific hyperparameters
In some cases, the sets of nuisance and fixed hyperparameters depends on the values of the scientific hyperparameters. For example, suppose you are trying to determine which optimizer in Nesterov momentum and Adam produces in the lowest validation error. در این مورد:
- The scientific hyperparameter is the optimizer, which takes values
{"Nesterov_momentum", "Adam"}
- The value
optimizer="Nesterov_momentum"
introduces the hyperparameters{learning_rate, momentum}
, which might be either nuisance or fixed hyperparameters. - The value
optimizer="Adam"
introduces the hyperparameters{learning_rate, beta1, beta2, epsilon}
, which might be either nuisance or fixed hyperparameters.
Hyperparameters that are only present for certain values of the scientific hyperparameters are called conditional hyperparameters . Don't assume two conditional hyperparameters are the same just because they have the same name! In the preceding example, the conditional hyperparameter called learning_rate
is a different hyperparameter for optimizer="Nesterov_momentum"
than for optimizer="Adam"
. Its role is similar (although not identical) in the two algorithms, but the range of values that work well in each of the optimizers is typically different by several orders of magnitude.
Create a set of studies
After identifying the scientific and nuisance hyperparameters, you should design a study or sequence of studies to make progress towards the experimental goal. A study specifies a set of hyperparameter configurations to be run for subsequent analysis. Each configuration is called a trial . Creating a study typically involves choosing the following:
- The hyperparameters that vary across trials.
- The values those hyperparameters can take on (the search space ).
- The number of trials.
- An automated search algorithm to sample that many trials from the search space.
Alternatively, you can create a study by specifying the set of hyperparameter configurations manually.
The purpose of the studies is to simultaneously:
- Run the pipeline with different values of the scientific hyperparameters.
- "Optimizing away" (or "optimizing over") the nuisance hyperparameters so that comparisons between different values of the scientific hyperparameters are as fair as possible.
In the simplest case, you would make a separate study for each configuration of the scientific parameters, where each study tunes over the nuisance hyperparameters. For example, if your goal is to select the best optimizer out of Nesterov momentum and Adam, you could create two studies:
- One study in which
optimizer="Nesterov_momentum"
and the nuisance hyperparameters are{learning_rate, momentum}
- Another study in which
optimizer="Adam"
and the nuisance hyperparameters are{learning_rate, beta1, beta2, epsilon}
.
You would compare the two optimizers by selecting the best performing trial from each study.
You can use any gradient-free optimization algorithm, including methods such as Bayesian optimization or evolutionary algorithms, to optimize over the nuisance hyperparameters. However, we prefer to use quasi-random search in the exploration phase of tuning because of a variety of advantages it has in this setting. After exploration concludes, we recommend using state-of-the-art Bayesian optimization software (if it is available).
Consider a more complicated case where you want to compare a large number of values of the scientific hyperparameters but it is impractical to make that many independent studies. In this case, you can do the following:
- Include the scientific parameters in the same search space as the nuisance hyperparameters.
- Use a search algorithm to sample values of both the scientific and nuisance hyperparameters in a single study.
When taking this approach, conditional hyperparameters can cause problems. After all, it is hard to specify a search space unless the set of nuisance hyperparameters is the same for all values of the scientific hyperparameters. In this case, our preference for using quasi-random search over fancier black-box optimization tools is even stronger, since it guarantees different values of the scientific hyperparameters will be sampled uniformly. Regardless of the search algorithm, ensure that it searches the scientific parameters uniformly.
Strike a balance between informative and affordable experiments
When designing a study or sequence of studies, allocate a limited budget to adequately achieve the following three goals:
- Comparing enough different values of the scientific hyperparameters.
- Tuning the nuisance hyperparameters over a large enough search space.
- Sampling the search space of nuisance hyperparameters densely enough.
The better you can achieve these three goals, the more insight you can extract from the experiment. Comparing as many values of the scientific hyperparameters as possible broadens the scope of the insights you gain from the experiment.
Including as many nuisance hyperparameters as possible and allowing each nuisance hyperparameter to vary over as wide a range as possible increases confidence that a "good" value of the nuisance hyperparameters exists in the search space for each configuration of the scientific hyperparameters. Otherwise, you might make unfair comparisons between values of the scientific hyperparameters by not searching possible regions of the nuisance hyperparameter space where better values might lie for some values of the scientific parameters.
Sample the search space of nuisance hyperparameters as densely as possible. Doing so increases confidence that the search procedure will find any good settings for the nuisance hyperparameters that happen to exist in your search space. Otherwise, you might make unfair comparisons between values of the scientific parameters due to some values getting luckier with the sampling of the nuisance hyperparameters.
Unfortunately, improvements in any of these three dimensions require either of the following:
- Increasing the number of trials, and therefore increasing the resource cost.
- Finding a way to save resources in one of the other dimensions.
Every problem has its own idiosyncrasies and computational constraints, so allocating resources across these three goals requires some level of domain knowledge. After running a study, always try to get a sense of whether the study tuned the nuisance hyperparameters well enough. That is, the study searched a large enough space extensively enough to fairly compare the scientific hyperparameters (as described in greater detail in the next section).
Learn from the experimental results
Recommendation: In addition to trying to achieve the original scientific goal of each group of experiments, go through a checklist of additional questions. If you discover issues, revise and rerun the experiments.
Ultimately, each group of experiments has a specific goal. You should evaluate the evidence the experiments provide toward that goal. However, if you ask the right questions, you can often find issues to correct before a given set of experiments can progress towards their original goal. If you don't ask these questions, you may draw incorrect conclusions.
Since running experiments can be expensive, you should also extract other useful insights from each group of experiments, even if these insights are not immediately relevant to the current goal.
Before analyzing a given set of experiments to make progress toward their original goal, ask yourself the following additional questions:
- Is the search space large enough? If the optimal point from a study is near the boundary of the search space in one or more dimensions, the search is probably not wide enough. In this case, run another study with an expanded search space.
- Have you sampled enough points from the search space? If not, run more points or be less ambitious in the tuning goals.
- What fraction of the trials in each study are infeasible? That is, which trials diverge, get really bad loss values, or fail to run at all because they violate some implicit constraint? When a very large fraction of points in a study are infeasible, adjust the search space to avoid sampling such points, which sometimes requires reparameterizing the search space. In some cases, a large number of infeasible points can indicate a bug in the training code.
- Does the model exhibit optimization issues?
- What can you learn from the training curves of the best trials? For example, do the best trials have training curves consistent with problematic overfitting?
If necessary, based on the answers to the preceding questions, refine the most recent study or group of studies to improve the search space and/or sample more trials, or take some other corrective action.
Once you have answered the preceding questions, you can evaluate the evidence the experiments provide towards your original goal; for example, evaluating whether a change is useful .
Identify bad search space boundaries
A search space is suspicious if the best point sampled from it is close to its boundary. You might find an even better point if you expand the search range in that direction.
To check search space boundaries, we recommend plotting completed trials on what we call basic hyperparameter axis plots . In these, we plot the validation objective value versus one of the hyperparameters (for example, learning rate). Each point on the plot corresponds to a single trial.
The validation objective value for each trial should usually be the best value it achieved over the course of training.
Figure 1: Examples of bad search space boundaries and acceptable search space boundaries.
The plots in Figure 1 show the error rate (lower is better) against the initial learning rate. If the best points cluster towards the edge of a search space (in some dimension), then you might need to expand the search space boundaries until the best observed point is no longer close to the boundary.
Often, a study includes "infeasible" trials that diverge or get very bad results (marked with red Xs in Figure 1). If all trials are infeasible for learning rates greater than some threshold value, and if the best performing trials have learning rates at the edge of that region, the model may suffer from stability issues preventing it from accessing higher learning rates .
Not sampling enough points in the search space
In general, it can be very difficult to know if the search space has been sampled densely enough. 🤖 Running more trials is better than running fewer trials, but more trials generates an obvious extra cost.
Since it is so hard to know when you have sampled enough, we recommend:
- Sampling what you can afford.
- Calibrating your intuitive confidence from repeatedly looking at various hyperparameter axis plots and trying to get a sense of how many points are in the "good" region of the search space.
Examine the training curves
Summary: Examining the loss curves is an easy way to identify common failure modes and can help you prioritize potential next actions.
In many cases, the primary objective of your experiments only requires considering the validation error of each trial. However, be careful when reducing each trial to a single number because that focus can hide important details about what's going on below the surface. For every study, we strongly recommend looking at the loss curves of at least the best few trials. Even if this is not necessary for addressing the primary experimental objective, examining the loss curves (including both training loss and validation loss) is a good way to identify common failure modes and can help you prioritize what actions to take next.
When examining the loss curves, focus on the following questions:
Are any of the trials exhibiting problematic overfitting? Problematic overfitting occurs when the validation error starts increasing during training. In experimental settings where you optimize away nuisance hyperparameters by selecting the "best" trial for each setting of the scientific hyperparameters, check for problematic overfitting in at least each of the best trials corresponding to the settings of the scientific hyperparameters that you're comparing. If any of the best trials exhibits problematic overfitting, do either or both of the following:
- Rerun the experiment with additional regularization techniques
- Retune the existing regularization parameters before comparing the values of the scientific hyperparameters. This may not apply if the scientific hyperparameters include regularization parameters, since then it wouldn't be surprising if low-strength settings of those regularization parameters resulted in problematic overfitting.
Reducing overfitting is often straightforward using common regularization techniques that add minimal code complexity or extra computation (for example, dropout regularization, label smoothing, weight decay). Therefore, it's usually trivial to add one or more of these to the next round of experiments. For example, if the scientific hyperparameter is "number of hidden layers" and the best trial that uses the largest number of hidden layers exhibits problematic overfitting, then we recommend retrying with additional regularization instead of immediately selecting the smaller number of hidden layers.
Even if none of the "best" trials exhibit problematic overfitting, there might still be a problem if it occurs in any of the trials. Selecting the best trial suppresses configurations exhibiting problematic overfitting and favors those that don't. In other words, selecting the best trial favors configurations with more regularization. However, anything that makes training worse can act as a regularizer, even if it wasn't intended that way. For example, choosing a smaller learning rate can regularize training by hobbling the optimization process, but we typically don't want to choose the learning rate this way. Note that the "best" trial for each setting of the scientific hyperparameters might be selected in such a way that favors "bad" values of some of the scientific or nuisance hyperparameters.
Is there high step-to-step variance in the training or validation error late in training? If so, this could interfere with both of the following:
- Your ability to compare different values of the scientific hyperparameters. That's because each trial randomly ends on a "lucky" or "unlucky" step.
- Your ability to reproduce the result of the best trial in production. That's because the production model might not end on the same "lucky" step as in the study.
The most likely causes of step-to-step variance are:
- Batch variance due to randomly sampling examples from the training set for each batch.
- Small validation sets
- Using a learning rate that's too high late in training.
Possible remedies include:
- Increasing the batch size.
- Obtaining more validation data.
- Using learning rate decay.
- Using Polyak averaging.
Are the trials still improving at the end of training? If so, you are in the "compute bound" regime and may benefit from increasing the number of training steps or changing the learning rate schedule.
Has performance on the training and validation sets saturated long before the final training step? If so, this indicates that you are in the "not compute-bound" regime and that you may be able to decrease the number of training steps.
Beyond this list, many additional behaviors can become evident from examining the loss curves. For example, training loss increasing during training usually indicates a bug in the training pipeline.
Detecting whether a change is useful with isolation plots
Figure 2: Isolation plot that investigates the best value of weight decay for ResNet-50 trained on ImageNet.
Often, the goal of a set of experiments is to compare different values of a scientific hyperparameter. For example, suppose you want to determine the value of weight decay that results in the best validation error. An isolation plot is a special case of the basic hyperparameter axis plot. Each point on an isolation plot corresponds to the performance of the best trial across some (or all) of the nuisance hyperparameters. In other words, plot the model performance after "optimizing away" the nuisance hyperparameters.
An isolation plot simplifies performing an apples-to-apples comparison between different values of the scientific hyperparameter. For example, the isolation plot in Figure 2 reveals the value of weight decay that produces the best validation performance for a particular configuration of ResNet-50 trained on ImageNet.
If the goal is to determine whether to include weight decay at all, then compare the best point from this plot against the baseline of no weight decay. For a fair comparison, the baseline should also have its learning rate equally well tuned.
When you have data generated by (quasi)random search and are considering a continuous hyperparameter for an isolation plot, you can approximate the isolation plot by bucketing the x-axis values of the basic hyperparameter axis plot and taking the best trial in each vertical slice defined by the buckets.
Automate generically useful plots
The more effort it is to generate plots, the less likely you are to look at them as much as you should. Therefore, we recommend setting up your infrastructure to automatically produce as many plots as possible. At a minimum, we recommend automatically generating basic hyperparameter axis plots for all hyperparameters that you vary in an experiment.
Additionally, we recommend automatically producing loss curves for all trials. Furthermore, we recommend making it as easy as possible to find the best few trials of each study and to examine their loss curves.
You can add many other useful potential plots and visualizations. To paraphrase Geoffrey Hinton :
Every time you plot something new, you learn something new.
Determine whether to adopt the candidate change
Summary: When deciding whether to make a change to our model or training procedure or adopt a new hyperparameter configuration, note the different sources of variation in your results.
When trying to improve a model, a particular candidate change might initially achieve a better validation error compared to an incumbent configuration. However, repeating the experiment might demonstrate no consistent advantage. Informally, the most important sources of inconsistent results can be grouped into the following broad categories:
- Training procedure variance, retrain variance, or trial variance : the variation between training runs that use the same hyperparameters but different random seeds. For example, different random initializations, training data shuffles, dropout masks, patterns of data augmentation operations, and orderings of parallel arithmetic operations are all potential sources of trial variance.
- Hyperparameter search variance, or study variance : the variation in results caused by our procedure to select the hyperparameters. For example, you might run the same experiment with a particular search space but with two different seeds for quasi-random search and end up selecting different hyperparameter values.
- Data collection and sampling variance : the variance from any sort of random split into training, validation, and test data or variance due to the training data generation process more generally.
True, you can compare validation error rates estimated on a finite validation set using fastidious statistical tests. However, often the trial variance alone can produce statistically significant differences between two different trained models that use the same hyperparameter settings.
We are most concerned about study variance when trying to make conclusions that go beyond the level of an individual point in hyperparameters space. The study variance depends on the number of trials and the search space. We have seen cases where the study variance is larger than the trial variance and cases where it is much smaller. Therefore, before adopting a candidate change, consider running the best trial N times to characterize the run-to-run trial variance. Usually, you can get away with only recharacterizing the trial variance after major changes to the pipeline, but you might need fresher estimates in some cases. In other applications, characterizing the trial variance is too costly to be worth it.
Although you only want to adopt changes (including new hyperparameter configurations) that produce real improvements, demanding complete certainty that a given change helps isn't the right answer either. Therefore, if a new hyperparameter point (or other change) gets a better result than the baseline (taking into account the retrain variance of both the new point and the baseline as best as you can), then you probably should adopt it as the new baseline for future comparisons. However, we recommend only adopting changes that produce improvements that outweigh any complexity they add.
After exploration concludes
Summary: Bayesian optimization tools are a compelling option once you're done searching for good search spaces and have decided what hyperparameters are worth tuning.
Eventually, your priorities will shift from learning more about the tuning problem to producing a single best configuration to launch or otherwise use. At that point, there should be a refined search space that comfortably contains the local region around the best observed trial and has been adequately sampled. Your exploration work should have revealed the most essential hyperparameters to tune and their sensible ranges that you can use to construct a search space for a final automated tuning study using as large a tuning budget as possible.
Since you no longer care about maximizing insight into the tuning problem, many of the advantages of quasi-random search no longer apply. Therefore, you should use Bayesian optimization tools to automatically find the best hyperparameter configuration. Open-Source Vizier implements a variety of sophisticated algorithms for tuning ML models, including Bayesian Optimization algorithms.
Suppose the search space contains a non-trivial volume of divergent points , meaning points that get NaN training loss or even training loss many standard deviations worse than the mean. In this case, we recommend using black-box optimization tools that properly handle trials that diverge. (See Bayesian Optimization with Unknown Constraints for an excellent way to deal with this issue.) Open-Source Vizier has supports for marking divergent points by marking trials as infeasible, although it may not use our preferred approach from Gelbart et al. , depending on how it is configured.
After exploration concludes, consider checking the performance on the test set. In principle, you could even fold the validation set into the training set and retrain the best configuration found with Bayesian optimization. However, this is only appropriate if there won't be future launches with this specific workload (for example, a one-time Kaggle competition).