Какой вид регуляризации использует регуляризацию L2 или отсев в multiRNNCell?
Я работал над проектом, связанным с последовательным и автоматическим кодировщиком последовательностей для прогнозирования временных рядов. Итак, я использовал tf.contrib.rnn.MultiRNNCell
в кодере и декодере. Я запутался в том, какая стратегия используется для того, чтобы упорядочить мою модель seq2seq. Должен ли я использовать регуляризацию L2 в потере или с помощью DropOutWrapper (tf.contrib.rnn.DropoutWrapper
) в мультисети? Или я могу использовать обе стратегии... L2 для весов и смещений (проекционный слой) и DropOutWrapper между ячейками в multiRNNCell? Заранее спасибо:)
1 ответ
Вы можете использовать выпадение и регуляризацию L2 одновременно, как это обычно делается. Это совершенно разные виды регуляризации. Тем не менее, я хотел бы отметить, что в недавней литературе высказано предположение, что нормализация партии заменила необходимость отсева, как отмечалось в оригинальном документе о нормализации партии:
https://arxiv.org/abs/1502.03167
Из аннотации: "Он также действует как регуляризатор, в некоторых случаях устраняя необходимость в Dropout".
Регуляризация L2 обычно применяется, когда используется batchnorm. Ничто не мешает вам применять все 3 формы регуляризации. Вышеприведенное утверждение только указывает на то, что вы можете не увидеть улучшения, применяя выпадение, когда batchnorm уже используется.
Как правило, существуют оптимальные значения количества применяемой регуляризации L2 и вероятности отсева. Это гиперпараметры, которые вы настраиваете методом проб и ошибок или алгоритм поиска гиперпараметров.