Методи налаштування гіперпараметрів у глибокому навчанні Javaid Nabi Towards Data Science

Джаваїд Набі

16 березня 2019 р. · 12 хв читання

Процес встановлення гіперпараметрів вимагає досвіду та великих спроб та помилок. Немає простих і простих способів встановити гіперпараметри - зокрема, швидкість навчання, розмір партії, імпульс та спад ваги.

налаштування

Моделі глибокого навчання наповнені гіперпараметрами, і пошук найкращої конфігурації для цих параметрів у такому великому розмірному просторі не є тривіальною проблемою.

Перш ніж обговорювати шляхи пошуку оптимальних гіперпараметрів, давайте спочатку зрозуміємо ці гіперпараметри: швидкість навчання, розмір партії, імпульс, і зниження ваги. Ці гіперпараметри діють як регулятори, які можна налаштувати під час навчання моделі. Щоб наша модель забезпечила найкращий результат, нам потрібно знайти оптимальне значення цих гіперпараметрів.

Градієнтний спуск

Gradient des c ent - це техніка оптимізації, яка зазвичай використовується в навчальних алгоритмах машинного навчання. Основна мета навчання алгоритмів ML - це регулювання ваг w, щоб мінімізувати втрати або витрати. Ця вартість є мірою того, наскільки добре працює наша модель, ми представляємо цю вартість J (w). Таким чином, мінімізуючи функцію витрат, ми можемо знайти оптимальні параметри, що забезпечують найкращі показники моделі [1].

Типовий графік функцій втрат для проблем регресії має форму чаші, як показано нижче.

В алгоритмі градієнтного спуску ми починаємо з випадкових параметрів моделі та обчислюємо помилку для кожної ітерації навчання, продовжуємо оновлювати параметри моделі, щоб наблизитись до значень, що призводить до мінімальних витрат. Будь ласка, зверніться до мого повідомлення для деталей. Алгоритми градієнтного спуску помножують градієнт (нахил) на скаляр, відомий як швидкість навчання (або розмір кроку) для визначення наступного пункту. Цей параметр говорить про те, наскільки далеко рухати ваги у напрямку градієнта.

Якщо ми позначимо dw і db як градієнти для оновлення наших параметрів W і b для алгоритму градієнтного спуску наступним чином:

Якщо рівень навчання невеликий, то навчання є більш надійним, але це займе багато часу, тому що кроки до мінімуму функції втрат є незначними.

Якщо рівень навчання високий, то навчання може не збігатися і навіть не розходитися. Зміни ваги можуть бути настільки великими, що оптимізатор перевищує мінімум і погіршує втрати. Таким чином, наша мета - знайти оптимальний рівень навчання, який може швидко знайти мінімальну втрату.

Для більш загальних моделей ви можете уявити градієнтний спуск як кулю, яка котиться вниз по долині. ми хочемо, щоб воно сиділо в найглибшому місці гір, проте неважко зрозуміти, що справа може піти не так.

Залежно від того, де куля починає котитися, вона може спиратися на дно долини. Але не в найнижчому. Це називається локальним мінімумом. Те, як ми ініціалізуємо вагові коефіцієнти моделі, може призвести її до спокою в локальному мінімумі. Щоб уникнути цього, ми ініціалізуємо весові вектори значеннями з випадкового розподілу.

Ми можемо представити поверхню втрат у 2-D, як показано нижче:

Червона крапка - це глобальні мінімуми, і ми хочемо досягти цієї точки. Використовуючи градієнтний спуск, оновлення виглядатимуть так:

З кожною ітерацією градієнтного спуску ми рухаємось до локальних оптимумів з коливаннями вгору і вниз. Якщо ми використовуємо більшу швидкість навчання, тоді вертикальні коливання матимуть вищу величину. Отже, це вертикальне коливання уповільнює наш градієнтний спуск і заважає нам використовувати значно більший темп навчання. Крім того, занадто мала швидкість навчання робить спуск градієнта повільнішим.

Ми хочемо повільнішого навчання у вертикальному напрямку та швидшого навчання у горизонтальному напрямку, що допоможе нам набагато швидше досягти глобальних мінімумів.

Щоб допомогти нам досягти того, що ми використовуємо Gradient Descent with Momentum [2].

Ми починаємо з нашого градієнтного спуску:

За імпульсом, замість використання dw і db незалежно для кожної епохи, ми беремо експоненціально зважені середні значення dw і db.

Де бета «β» - це ще один гіперпараметр, який називається імпульсом, і коливається від 0 до 1. Він встановлює вагу між середнім значенням попередніх значень і поточним значенням для обчислення нового середньозваженого.

Після обчислення експоненційно зважених середніх показників ми оновимо наші параметри.

Використовуючи експоненціально зважені середні значення dw і db, ми прагнемо усереднити коливання у вертикальному напрямку ближче до нуля. Тоді як у горизонтальному напрямку всі похідні вказують праворуч від горизонтального напрямку, тому середнє значення в горизонтальному напрямку все ще буде досить великим. Це дозволяє нашому алгоритму взяти більш прямий прямий шлях до локальних оптимумів і згладити вертикальні коливання. З цієї причини алгоритм потрапляє до локальних оптимумів з кількома ітераціями.

Мати інтуїцію того, як це працює, означає розглянути приклад кулі, яка котиться вниз з пагорба - Vᵈʷ і Vᵈᵇ забезпечують швидкість руху цієї кульки та змушують її рухатися швидше. Ми не хочемо, щоб наша куля настільки прискорювалася, що вона пропускає глобальні мінімуми, а отже β діє як тертя.

Існує три способи градієнтного спуску:

Пакетний градієнтний спуск: ‘

  • всі приклади одночасно: використовує всі навчальні екземпляри для оновлення параметрів моделі в кожній ітерації.
  • повільно сходиться з точними оцінками градієнта помилок.

Стохастичний градієнтний спуск (SGD):

  • один приклад за раз: Оновлює параметри, використовуючи лише один навчальний екземпляр у кожній ітерації. Навчальний екземпляр зазвичай вибирається випадковим чином.
  • швидко сходиться з шумними оцінками градієнта помилок.

Мініатюрний градієнтний спуск:

  • Приклади «b»: Замість використання всіх прикладів, Mini-batch Gradient Descent розділяє навчальний набір на менший розмір, який називається batch, що позначається «b». Таким чином, міні-пакет «b» використовується для оновлення параметрів моделі на кожній ітерації.

Мініатюрний градієнтний спуск прагне знайти баланс між стійкістю стохастичного градієнтного спуску та ефективністю пакетного градієнтного спуску.