Обучение нейронной сети — как интерпретировать результат?
Тренирую сеть. Есть такие вот результаты. Понятно, что всё плохо, но не понятно как, на сколько и почему.
Пробовал разное количество слоёв, нейронов в слое. Даже дропаут пробовал, хотя переобучением тут не пахнет. Цифры от указанных ниже не отличаются (плюс минус один процент).
На учебных примерах обычно точность на первых эпохах взлетает до 70-90%, а у меня получается сразу 40%, а дальше телепается как слива в проруби. Чего сети не хватает? Какие возможны варианты?
И бонусный вопрос. Часто говорят, что сеть нужно долго обучать, иногда неделю и больше. С чем это как правило связано - с объёмом выборки или с количеством эпох?
Есть какое-то типовое количество эпох, после которых понятно, что не взлетит? Например, если рандомом подбирать гиперпараметры сети, то после скольки эпох можно уже делать выводы?
В данной конфигурации при 200-х эпохах заметно переобучение - точность поднимается с 0,4 до 0,88, валидация наоборот снижается с 0,41 на 0,36.
На входе вектор, на выходе, я думаю, что классификация. =)
Что значит "не напутал со знаком"?
И можете что-то сказать про вторую половину вопроса?
Раз есть оверфиттинг - попробуйте дропаут на побольше выкрутить. Между стандартными Dense-слоями 0.5 - традиционное значение. Видел статьи, где дропаут делали аж 0.8-0.9 как раз потому что данных мало было.
Еще попробуйте в качестве оптимизатора Adam.
Сети, которые обучают неделями, - это всякие монструозные конструкции, где штук 20 слоев по 500 нейронов в каждом. И десятки миллионов примеров для обучения.
Дропаут пробовал, но правда маленький - 0,2. Особо не сказалось на результате. В принципе этот результат с дропаутом и есть (код в предыдущем комментарии). Adam тоже пробовал - существенной разницы не заметил. Во всяком случае пока что.
Недельный срок обучения зависит от размера сети и объёма данных - это понял. Тогда есть какое-то типовое значение количества эпох для тестового обучения? Типа 5-10 или бывает так, что обучение идёт "ступеньками"?
Количество эпох зависит от объема обучающих данных, от сложности задачи, от размера минибатча. Обычно batch_size берут в районе нескольких десятков, а не 500. Меньше batch_size => больше минибатчей в одну эпоху => больше раз изменятся веса слоев.