Начальный скачок в убытке с TensorFlow - PullRequest
0 голосов
/ 13 января 2019

Предположим, у меня есть сохраненная модель, которая почти на минимуме, но с некоторыми возможностями для улучшения. Например, потеря (как сообщает tf.keras.Models.model.evaluate ()) может составить 11,390, и я знаю, что модель может снизиться до 11,300.

Проблема в том, что попытки уточнить эту модель (используя tf.keras.Models.model.fit ()) последовательно приводят к тому, что веса получают начальный «толчок» в течение первой эпохи, что отправляет потери вверх. После этого он начинает уменьшаться, но не всегда сходится к правильному минимуму (и может даже не вернуться к тому, с чего начал).

Это выглядит так:

tf.train.RMSPropOptimizer (0,0002):

0 11.982
1 11.864
2 11.836
3 11.822
4 11.809
5 11.791
(...)
15 11.732

tf.train.AdamOptimizer (0,001):

0 14.667
1 11.483
2 11.400
3 11.380
4 11.371
5 11.365

tf.keras.optimizers.SGD (0,00001):

0 12.288
1 11.760
2 11.699
3 11.650
4 11.666
5 11.601

Набор данных с 30М наблюдениями, размер партии 500К во всех случаях.

Я могу смягчить это, уменьшив скорость обучения, но тогда, чтобы сойтись, потребуется вечность.

Есть ли какой-нибудь способ предотвратить "дикий" тренинг вначале, не влияя на уровень долгосрочной конвергенции?

1 Ответ

0 голосов
/ 13 января 2019

Как вы пытались уменьшить скорость обучения, это путь.

например. скорость обучения = 0,00001

tf.train.AdamOptimizer(0.00001)

Особенно с Адамом, который должен быть многообещающим, поскольку скорость обучения в то же время является верхней границей для размера шага.

Кроме того, вы можете попробовать планирование скорости обучения , где вы устанавливаете скорость обучения в соответствии с заранее заданным расписанием.

Также я чувствую, что из того, что вы показываете, когда вы снижали скорость обучения, это не кажется слишком плохим с точки зрения скорости сходимости. Возможно, другой гиперпараметр, который вы могли бы настроить в вашем случае, - это уменьшить размер пакета, чтобы уменьшить стоимость вычислений за обновление.

Примечание: Я нахожу термин «не тот минимум» довольно обманчивым. Чтобы лучше понять невыпуклую оптимизацию для искусственных нейронных сетей, я хотел бы указать на книгу глубокого обучения Яна Гудфеллоу и др.

...