Почему регуляризация L2 не добавляется обратно в исходную функцию потерь? - PullRequest
0 голосов
/ 30 декабря 2018

Я осознаю, что при использовании регулятора ядра, в частности потери l2, я должен добавить его обратно в функцию потерь, и это то, что делается в других постах.Однако в Керасе они не следуют этому процессу.Почему это так?

Например, рассмотрим этот и этот ноутбук.Они используют потерю l2 в качестве основного регулятора в некоторых слоях, но не добавляют обратно в первоначальную потерю.Это из-за конкретной потери, или это поведение, которому следуют только в Керасе, или я совершенно не понимаю всего?

Ответы [ 2 ]

0 голосов
/ 30 декабря 2018

Keras скрывает много сложности (и это не всегда хорошо).

Вы используете абстракцию Model: эта модель содержит всю необходимую информацию об архитектуре и обучениипроцедура.

Когда вы вызываете метод compile или train или train_on_batch, вы указываете функцию потерь, но под капотом происходит следующее:

  • Создание функции потерьзаданный (например, категориальная перекрестная энтропия)
  • Извлечение из модели примененных регуляризаций и добавление их всех к ранее определенному сроку потери

Вы можете видеть операции, которые будутдобавлен к сроку потери доступ к свойству .losses экземпляра модели (это список операций тензорного потока, обычно всех операций умножения, поскольку регуляризации находятся в for regularization_strenght * norm_p(variable).

0 голосов
/ 30 декабря 2018

Регуляризация L2 (или любая регуляризация веса) в Keras по-прежнему добавляется к функции потерь так же, как и следовало ожидать.Это просто происходит за кулисами, поэтому пользователю не нужно беспокоиться об этом.

Записанные вами ноутбуки - это правильный способ использования регуляции веса в Keras.

...