Estou um pouco preocupado e confuso com a ideia de como a técnica de parada precoce é definida. Se você der uma olhada na Wikipedia , ela será definida da seguinte forma:
- Divida os dados de treinamento em um conjunto de treinamento e um conjunto de validação, por exemplo, na proporção de 2 para 1.
- Treine apenas no conjunto de treinamento e avalie o erro por exemplo no conjunto de validação de vez em quando, por exemplo, após cada quinta época.
- Pare o treinamento assim que o erro no conjunto de validação for superior ao da última vez que foi verificado.
- Use os pesos que a rede tinha na etapa anterior como resultado da execução do treinamento.
Eu estava usando o método nas minhas experiências (com 10 vezes a validação cruzada). Estou verificando o erro de validação em cada época (e também calculo a precisão da validação) e defino um parâmetro de paciência de 2. Isso significa que, se o erro de validação aumentar por duas épocas consecutivas -> interrompa o treinamento. Depois, usei os resultados da última época quando o modelo terminou.
Ian Goodfellow usa outra definição em seu livro de aprendizado profundo . Como quarto passo, ele sugere usar os pesos do melhor modelo de trabalho (por exemplo, salve o modelo toda vez que o erro de validação for verificado).
Não preciso do modelo salvo, apenas dos resultados do meu trabalho. Então, para mim, a proposta de parada antecipada da Goodfellow significaria que eu teria a maior precisão de validação que alcancei para o meu resultado final? De alguma forma, isso não parece legítimo. Não tenho essas informações em uma situação do mundo real quando não há um conjunto de desenvolvimento. Mas, nesse caso, qual é o motivo da parada antecipada em primeiro lugar? Determinar o número de épocas, por exemplo, calculando a média do número de épocas para as dobras e usá-lo para o teste mais tarde?