Estou tentando treinar uma rede neural profunda para classificação, usando propagação de volta. Especificamente, estou usando uma rede neural convolucional para classificação de imagens, usando a biblioteca Tensor Flow. Durante o treinamento, estou passando por um comportamento estranho e estou me perguntando se isso é típico ou se posso estar fazendo algo errado.
Portanto, minha rede neural convolucional possui 8 camadas (5 convolucionais e 3 totalmente conectadas). Todos os pesos e preconceitos são inicializados em pequenos números aleatórios. Em seguida, defino um tamanho da etapa e prossigo com o treinamento com minilotes, usando o Adam Optimizer da Tensor Flow.
O comportamento estranho do qual estou falando é que, nos 10 primeiros ciclos através dos meus dados de treinamento, a perda de treinamento, em geral, não diminui. Os pesos estão sendo atualizados, mas a perda de treinamento permanece aproximadamente no mesmo valor, às vezes subindo e às vezes diminuindo entre mini-lotes. Fica assim por um tempo, e eu sempre tenho a impressão de que a perda nunca vai diminuir.
De repente, a perda de treinamento diminui drasticamente. Por exemplo, em cerca de 10 ciclos através dos dados de treinamento, a precisão do treinamento varia de 20% a 80%. A partir daí, tudo acaba convergindo muito bem. O mesmo acontece sempre que executo o pipeline de treinamento do zero e abaixo está um gráfico que ilustra um exemplo de execução.
Então, o que eu quero saber é se esse é um comportamento normal com o treinamento de redes neurais profundas, pelo qual leva um tempo para "entrar em ação". Ou é provável que algo que eu esteja fazendo errado esteja causando esse atraso?
Muito obrigado!