Здравствуйте!
Есть больше миллиона примеров данных для обучения нейросети. Правда часть из этих данных очень похожи друг на друга. Возникает вопрос, как лучше обучить сеть чтобы она показывала наилучшие результаты при прогнозе вне выборки.
Мой текущий алгоритм обучает INCREMENTAL, по одному примеру, после обучения всей эпохи я уменьшаю Learning Rate. Процесс обучения продолжается пока learing rate не становится очень маленьким или не начинает расти ошибка на CV множестве. Это даёт неплохой результат, но хочется еще лучше.
После завершения обучения INCREMENTAL я продолжаю обучение с помощью алгоритма iRPROP, он быстро сходится, а потом ошибка начинает расти. iRPROP алгоритм не использую изначально, потому обученная им сетка имеет довольно высокие веса.
Вопросы:
1) Есть ли зависимость именно Обобщения от INCREMENTAL Learning Rate, быть может я использую в конечном итоге очень малый Rate, а оптимальный learning rate фиксирован, скажем 0.1 или 0.01?
2) Какие есть варианты cost function выходного слоя для задачи регрессии? Для задачи классификации Виктор использует некую функцию на основе кросс-энтропии. А что насчет регрессии?
Я правильно понимаю, что cost function мы можем задавать только для выходного слоя?
По-умолчанию это MSE, я пробовал еще меньшую степень, скажем ошибка выходного слоя рассчитывается как
error = predicted - real
if(error > 0)
error = 1.5 * error ^ 0.5
else
error = -1.5 * (-error) ^ 0.5
вроде результат улучшается. Еще варианты?
3) Топология сети, сейчас это обычный перспептон 32:16:1
миллион входных примеров, выходы расположены гауссово примерно от -1 до +1, с выбросами далеко за пределы, скажем плюс 3.
4) До каких пор обучать, мне не нравится CV множество для проверки, да и часть данных для обучения получается теряются
Заранее спасибо.