Estou treinando uma CNN para um problema de classificação de imagem de 3 classes. Minha perda de treinamento diminuiu sem problemas, que é o comportamento esperado. No entanto, minha perda de validação mostra muita flutuação.
É algo com que eu deveria me preocupar ou devo escolher o modelo com a melhor pontuação na minha medida de desempenho (precisão)?
Informações adicionais: Estou ajustando a última camada de um Resnet-18 pré-treinado em dados ImageNet no PyTorch. Devo observar que estou usando uma função de perda ponderada para a fase de treinamento, pois meus dados são altamente desequilibrados. Para plotar as perdas, no entanto, utilizo a perda não ponderada para poder comparar a perda de validação e treinamento. Eu usaria a perda não ponderada, não fosse que as distribuições do conjunto de dados de treinamento e de validação sejam um pouco diferentes (no entanto, elas são altamente desequilibradas).
Respostas:
Com a simples inspeção do seu enredo, eu poderia tirar algumas conclusões e listar as coisas a tentar. (Isso sem você saber mais sobre sua configuração: parâmetros de treinamento e hiperparâmetros do modelo).
Parece que a perda está diminuindo (coloque uma linha de melhor ajuste na perda de validação). Também parece que você pode treinar por mais tempo para melhorar os resultados, pois a curva ainda está voltada para baixo.
Primeiro, tentarei responder à sua pergunta do título:
Eu posso pensar em três possibilidades:
8
, a4/8
correção e a comparação com a6/8
correção têm uma grande diferença relativa ao observar a perda. Tomar a média dos erros com lotes tão pequenos levará a uma curva de perda não tão suave. Se você tiver memória / RAM GPU suficientes, tente aumentar o tamanho do lote.6
épocas. Isso impedirá que você dê grandes passos e, talvez, ultrapasse um mínimo e apenas salte ao redor dele.Específico à sua tarefa, eu também sugeriria tentar descongelar outra camada , para aumentar o escopo do seu ajuste fino. Isso dará ao Resnet-18 um pouco mais de liberdade para aprender, com base em seus dados.
Em relação à sua última pergunta:
Você deveria estar preocupado? Em suma, não. Uma curva de perda de validação como a sua pode ser perfeitamente adequada e fornecer resultados razoáveis; no entanto, eu tentaria algumas das etapas mencionadas acima antes de me decidir.
Você deve apenas escolher o modelo com melhor desempenho? Se você quer dizer tomar o modelo no seu ponto com a melhor perda de validação (precisão da validação), então eu diria para ter mais cuidado. No seu gráfico acima, isso pode ser equivalente à época 30, mas eu pessoalmente consideraria um ponto que treinou um pouco mais, em que a curva fica um pouco menos volátil. Novamente, depois de ter tentado algumas das etapas descritas acima.
fonte
Também recomendo que você use métodos para aumento e sobreamostragem de dados para compensar o desequilíbrio das classes. Este documento de standford explica algumas das idéias que você pode implementar A eficácia do aumento de dados na classificação de imagens usando o Deep Learning .
Eu espero que isso ajude!
fonte