TLDR; Monitore a perda e não a precisão
Vou responder minha própria pergunta, pois acho que as respostas recebidas não entenderam o assunto e alguém pode ter o mesmo problema um dia.
Primeiro, deixe-me esclarecer rapidamente que o uso de paradas precoces é perfeitamente normal ao treinar redes neurais (consulte as seções relevantes no livro Deep Learning de Goodfellow et al., A maioria dos artigos sobre DL e a documentação do retorno de chamada de EarlyStopping de keras).
Agora, com relação à quantidade a ser monitorada: prefira a perda à precisão. Por quê? A perda quantifica a certeza do modelo sobre uma previsão (basicamente, tendo um valor próximo a 1 na classe certa e próximo a 0 nas outras classes). A precisão apenas explica o número de previsões corretas. Da mesma forma, qualquer métrica que utilize previsões concretas em vez de probabilidades tem o mesmo problema.
Obviamente, quaisquer que sejam as métricas que você escolher, elas devem ser calculadas em um conjunto de validação e não em um conjunto de treinamento (caso contrário, você estará perdendo completamente o objetivo de usar o EarlyStopping em primeiro lugar)
cross_entropy
perda é um candidato mais preferível queMSE
ouMAE
. Confira a seção Wrap-Up deste artigo e esta postagem sobre estatísticas .Na minha opinião, isso é subjetivo e específico do problema. Você deve usar o que for o fator mais importante em sua mente como a métrica de condução, pois isso pode tomar suas decisões sobre como alterar o modelo mais focado.
A maioria das métricas calculadas será correlacionada / similar de várias maneiras: por exemplo, se você usar o MSE para sua perda, gravando MAPE (erro médio percentual médio) ou perda simples , elas fornecerão curvas de perda comparáveis.eu1 1
Por exemplo, se você reportar uma pontuação de F1 no seu relatório / para seu chefe etc. (e supondo que é com isso que eles realmente se importam), usar essa métrica pode fazer mais sentido. O escore F1, por exemplo, leva em conta a precisão e o recall , ou seja, descreve a relação entre duas métricas mais refinadas .
Reunindo essas coisas, calcular pontuações diferentes da perda normal pode ser bom para a visão geral e para ver como sua métrica final é otimizada ao longo das iterações de treinamento. Esse relacionamento talvez possa lhe dar uma visão mais profunda do problema,
Geralmente, é melhor tentar várias opções, no entanto, a otimização para a perda de validação pode permitir a execução do treinamento por mais tempo, o que eventualmente também pode produzir uma pontuação F1 superior . Precisão e recall podem influenciar alguns mínimos locais, produzindo uma pontuação F1 quase estática - para que você pare de treinar. Se você estivesse otimizando para a perda pura, pode ter registrado flutuação suficiente na perda para permitir que você treine por mais tempo.
fonte
Se você estiver treinando uma rede profunda, eu recomendo que você não use a parada antecipada. No aprendizado profundo, isso não é muito usual. Em vez disso, você pode empregar outras técnicas, como desistir para generalizar bem. Se você insistir nisso, a escolha do critério depende da sua tarefa. Se você tiver dados desequilibrados, deverá empregar a
F1
pontuação e avaliá-la nos seus dados de validação cruzada. Se você tiver dados balanceados, tente usar a precisão nos dados de validação cruzada. Outras técnicas dependem muito da sua tarefa.É altamente recomendável que você encontre um modelo que se encaixe muito bem aos seus dados e que desista depois disso. Essa é a coisa mais comum que as pessoas usam para modelos profundos.
fonte