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