Я намагаюся навчити глибоку нейронну мережу для класифікації, використовуючи зворотне поширення. Зокрема, я використовую звивисту нейронну мережу для класифікації зображень, використовуючи бібліотеку потоків тензорів. Під час тренувань я відчуваю якусь дивну поведінку, і мені просто цікаво, чи це типово, чи я можу робити щось не так.
Отже, моя конволюційна нейронна мережа має 8 шарів (5 згорткових, 3 повністю пов'язаних). Усі ваги та ухили ініціалізуються на невеликі випадкові числа. Потім я встановлюю розмір кроку і продовжую тренування з міні-партіями, використовуючи Адамін оптимізатор Tensor Flow.
Дивна поведінка, про яку я говорю, полягає в тому, що приблизно за перші 10 циклів через мої дані тренінгу втрата тренувань взагалі не зменшується. Ваги оновлюються, але втрати на тренуванні залишаються приблизно приблизно однаковими, часом піднімаючись, а іноді знижуючись між міні-партіями. Він залишається таким чином деякий час, і я завжди створюю враження, що втрати ніколи не зменшаться.
Потім раптом втрата тренувань різко зменшується. Наприклад, протягом приблизно 10 циклів через дані тренувань, точність тренувань становить приблизно від 20% до приблизно 80%. З цього моменту все закінчується красиво. Те саме відбувається щоразу, коли я запускаю навчальний конвеєр з нуля, а нижче - графік, що ілюструє один приклад пробігу.
Отже, що мені цікаво, чи це нормальна поведінка при навчанні глибоких нейронних мереж, внаслідок чого потрібно "певний час". Або ймовірно, що я щось роблю неправильно, що викликає цю затримку?
Дуже дякую!