Будь-які відмінності в регуляризації в MLP між пакетними та індивідуальними оновленнями?


9

Щойно я дізнався про регуляризацію як про підхід до контролю над приміркою, і хотів би включити цю ідею в просту реалізацію зворотного розповсюдження та багатошарового персептрону (MLP), який я зібрав разом.

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

Формула, яку я маю на термін оновлення (з курсу Coursera ML), зазначається як пакетне оновлення, наприклад, для кожної ваги, після підсумовування всіх застосовних дельт для всього тренувального набору від поширення помилок, коригування lambda * current_weightдодається також перед комбінованим дельта віднімається в кінці партії, де lambdaпараметр регуляризації.

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

Наприклад, lambda * current_weight / Nде N - це розмір навчального набору - на перший погляд це виглядає розумно. Я нічого не міг знайти з цього приводу, і мені цікаво, чи це тому, що регуляризація працює не так добре з оновленням для кожного елемента, або навіть під іншою назвою чи зміненою формулою.

Відповіді:


2

Регуляризація доречна і в навчанні за окремими предметами. Я б запропонував почати з базового підходу для перевірки лямбда, незалежно від того, чи займаєтесь ви випробуваннями партії чи за предметом. Це найпростіший і безпечний підхід. Спробуйте вручну з кількома різними значеннями. наприклад 0,001. 0,003, 0,01, 0,03, 0,1 і т.д., і подивіться, як поводиться ваш набір перевірки. Пізніше ви можете автоматизувати цей процес, ввівши лінійний або локальний метод пошуку.

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

Нещодавно я натрапив на це перекреслене питання , яке здається досить схожим на ваше. Є посилання на документ про новий алгоритм SGD з деяким відповідним змістом. Це може бути корисно поглянути (особливо сторінки 1742-1743).


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

Регуляризація доречна і в навчанні за окремими предметами. Я б все-таки запропонував би почати з базового підходу для перевірки лямбда. Це найпростіший і безпечний підхід. Спробуйте вручну з кількома різними значеннями. наприклад 0,001. 0,003, 0,01, 0,03, 0,1 і т.д., і подивіться, як поводиться ваш набір перевірки. Пізніше ви можете автоматизувати цей процес, ввівши лінійний або локальний метод пошуку.
insys

Якщо ваш коментар вище був відредагований і замінив перше речення / питання у вашій відповіді, я думаю, я міг би прийняти це.
Ніл Слейтер

Дякую за вказівку, я згоден. Відредаговано в. Сподіваюсь, це зрозуміліше.
настає

2

Щоб доповнити сказане insys :

Регуляризація використовується при обчисленні зворотного розповсюдження всіх ваг у вашому MLP. Тому замість обчислення градієнта стосовно всіх входів навчального набору ( batch) ви використовуєте лише деякі / один елемент (и) ( stochastic or semi-stochastic). Ви обмежите результат оновлення стосовно одного елемента замість усіх, що також є правильним.

Крім того , якщо я правильно пам'ятаю, Ендрю NG використовується L2-regularization. /NВ lambda * current_weight / Nне є обов'язковим, він просто допомагає перемасштабування входу. Однак якщо ви вирішите не використовувати його, вам доведеться (в більшості випадків) вибрати інше значення для lambda.

Ви також можете скористатися алгоритмом пошуку Grid, щоб вибрати найкраще значення lambda( гіперпараметр => той, який потрібно вибрати).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.