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?
Respostas:
Resposta mais curta possível: Sim! Mas deixe-me adicionar algum contexto ...
Acredito que você esteja se referindo à Seção 7.8, páginas 246 e seguintes, sobre Parada precoce no livro Deep Learning. O procedimento descrito lá, no entanto, é significativamente diferente do seu. Goodfellow et al. sugira dividir seus dados em três conjuntos primeiro: um conjunto de treinamento, desenvolvimento e teste. Em seguida, você treina (no conjunto de treinamento) até que o erro desse modelo aumente (no conjunto de desenvolvedores); nesse ponto, você para. Por fim, você usa o modelo treinado que teve o menor erro do conjunto de desenvolvedores e o avalia no conjunto de testes. Nenhuma validação cruzada envolvida.
No entanto, parece que você está tentando fazer a parada antecipada (ES) e a validação cruzada (CV), bem como a avaliação do modelo no mesmo conjunto. Ou seja, você parece estar usando todos os seus dados para CV, treinando em cada divisão com ES e, em seguida, usando o desempenho médio dessas divisões de CV como resultado final da avaliação. Se for esse o caso, isso é realmente um ajuste excessivo (e certamente não é o que é descrito por Goodfellow et al.), E sua abordagem fornece exatamente o resultado oposto ao que se destina a ES - como uma técnica de regularização para evitarsobreajuste. Se não estiver claro o motivo: Como você "atingiu o pico" em suas instâncias finais de avaliação durante o tempo de treinamento para descobrir quando ("cedo") interromper o treinamento; Ou seja, você está otimizando com relação às instâncias de avaliação durante o treinamento, que está (super) ajustando seu modelo (nesses dados de avaliação), por definição.
Então, agora, espero ter respondido às suas outras [duas] perguntas.
A resposta de higgs broson (para sua última pergunta, como citado acima) já oferece uma maneira significativa de combinar CV e ES para poupar algum tempo de treinamento: você pode dividir seus dados completos em apenas dois conjuntos - um desenvolvedor e um conjunto de testes - e use o conjunto de desenvolvedores para fazer o CV enquanto aplica o ES em cada divisão. Ou seja, você treina em cada divisão do seu conjunto de desenvolvedores e para uma vez que o menor erro nas instâncias de treinamento que você separa para avaliar essa divisão foi atingido [1]. Em seguida, você calcula a média do número de épocas necessárias para atingir o menor erro de cada divisão e treina o conjunto completo de desenvolvedores para esse número (médio) de épocas. Por fim, você valida esse resultado no conjunto de testes que você anulou e ainda não o tocou.
[1] Embora, diferentemente do Higgs Bros, eu recomendaria avaliar após cada época. Duas razões para isso: (1), comparativamente ao treinamento, o tempo de avaliação será insignificante. (2), imagine seu min. o erro está na época 51, mas você avalia na época 50 e 60. Não é improvável que o erro na época 60 seja menor do que na época 50; No entanto, você escolheria 60 como seu parâmetro de época, o que claramente é sub-ideal e, de fato, até contraria o propósito de usar o ES em primeiro lugar.
fonte
A maneira como você pode usar a validação cruzada para determinar o número ideal de épocas para treinar com paradas precoces é a seguinte: suponha que estivéssemos treinando entre 1 a 100 épocas. Para cada dobra, treine seu modelo e registre o erro de validação a cada, digamos, 10 épocas. Salve essas trajetórias de erro de validação versus número de épocas treinadas e calcule a média entre todas as dobras. Isso produzirá uma curva "erro médio de teste versus época". O ponto de parada a ser usado é o número de épocas que minimiza o erro médio de teste. Em seguida, você pode treinar sua rede no conjunto de treinamento completo (sem validação cruzada) para tantas épocas.
O objetivo da parada antecipada é evitar o excesso de ajustes. Você usa a validação cruzada N-fold para estimar o erro de generalização do seu modelo criando N conjuntos de trens / testes sintéticos e (geralmente) calculando a média dos resultados. Felizmente, o conjunto de testes (também conhecido como novos dados do mundo real) que você recebe mais tarde será semelhante o suficiente aos conjuntos de testes sinéticos que você gerou com o CV, de modo que o ponto de parada que você encontrou anteriormente esteja próximo do ideal, com este novo teste dados.
fonte