Відповіді:
З http://cs231n.github.io/neural-networks-2/#reg :
Максимальні обмеження норми. Іншою формою регуляризації є встановлення абсолютної верхньої межі величини вагового вектора для кожного нейрона та використання прогнозованого градієнтного спуску для забезпечення обмеження. На практиці це відповідає виконанню оновлення параметрів як звичайному, а потім примусовому виконанню обмеження, затискаючи вектор ваги кожного нейрона для задоволенняТипові значення - на замовлення 3 або 4. Деякі люди повідомляють про поліпшення при використанні цієї форми регуляризації. Однією з його привабливих властивостей є те, що мережа не може «вибухнути», навіть якщо рівень навчання встановлений занадто високим, оскільки оновлення завжди обмежені.
Я знайшов відповідь McLawrence в іншому питанні дуже корисною. Відтворено нижче:
Що означає обмеження ваги
max_norm?
maxnorm(m)буде, якщо L2-норма вагових ваг перевищуєmмасштаб вашої всієї матриці ваги на коефіцієнт, що зменшує норму доm. Як ви можете знайти в коді keras вclass MaxNorm(Constraint):def __call__(self, w): norms = K.sqrt(K.sum(K.square(w), axis=self.axis, keepdims=True)) desired = K.clip(norms, 0, self.max_value) w *= (desired / (K.epsilon() + norms)) return wДодатково
maxnormмаєaxisаргумент, уздовж якого обчислюється норма. У вашому прикладі ви не вказуєте вісь, тому норма обчислюється по всій матриці ваги. Якщо, наприклад, ви хочете обмежити норму кожного згорткового фільтра, припускаючи, що ви використовуєтеtfупорядкування розмірів, вагова матриця матиме форму(rows, cols, input_depth, output_depth). Обчислення норми перевищитьaxis = [0, 1, 2]кожен фільтр до заданої норми.Навіщо це робити?
Інше обмеження вагової матриці - це ще один вид регуляризації. Якщо ви використовуєте простий термін регуляризації L2, ви штрафуєте великі ваги за допомогою функції втрат. З цим обмеженням ви безпосередньо регулюєтесь. Як також пов'язано в
kerasкоді, це, здається, працює особливо добре в поєднанні зdropoutшаром. Більше інформації див. У главі 5.1 цього документу
axis=0.