Como usar a parada precoce corretamente para treinar redes neurais profundas?


20

Eu tenho um modelo de rede neural profunda e preciso treiná-lo no meu conjunto de dados, que consiste em cerca de 100.000 exemplos, meus dados de validação contêm cerca de 1000 exemplos. Como leva tempo para treinar cada exemplo (cerca de 0,5s para cada exemplo) e para evitar o excesso de ajustes, eu gostaria de aplicar uma parada antecipada para evitar cálculos desnecessários. Mas não tenho certeza de como treinar corretamente minha rede neural com paradas precoces, várias coisas que ainda não entendo:

  • Qual seria uma boa frequência de validação? Devo verificar meu modelo nos dados de validação no final de cada época? (O tamanho do meu lote é 1)

  • É o caso de as primeiras épocas produzirem resultados piores antes de começar a convergir para um valor melhor? Nesse caso, devemos treinar nossa rede por várias épocas antes de verificar se há uma parada precoce?

  • Como lidar com o caso em que a perda de validação pode subir e descer? Nesse caso, a parada precoce pode impedir que meu modelo aprenda mais, certo?

Agradeço antecipadamente.


Eu recomendo fortemente um tamanho de lote maior que um. Os tamanhos usuais são 32, 64 e 128.
ComputerScientist

Respostas:


20

Qual seria uma boa frequência de validação? Devo verificar meu modelo nos dados de validação no final de cada época? (O tamanho do meu lote é 1)

Não há regra de ouro, é bastante comum calcular o erro de validação após cada época. Como a sua validação é muito menor do que o seu conjunto de treinamento, não diminui muito o treinamento.

É o caso de as primeiras épocas produzirem resultados piores antes de começar a convergir para um valor melhor?

sim

Nesse caso, devemos treinar nossa rede por várias épocas antes de verificar se há uma parada precoce?

Você poderia, mas a questão é quantas épocas você deve pular. Portanto, na prática, na maioria das vezes as pessoas não pulam nenhuma época.

Como lidar com o caso em que a perda de validação pode subir e descer? Nesse caso, a parada precoce pode impedir que meu modelo aprenda mais, certo?

As pessoas normalmente definem uma paciência, ou seja, o número de épocas a serem esperadas antes da parada antecipada, se não houver progresso no conjunto de validação. A paciência geralmente é definida entre 10 e 100 (10 ou 20 é mais comum), mas realmente depende do seu conjunto de dados e da sua rede.

Exemplo com paciência = 10:

insira a descrição da imagem aqui


Deve-se usar o modelo quando parado precocemente ou patienceantes que o modelo pare antes (o 'melhor' sem melhorias adicionais)?
stackunderflow

2
épocas @displayname paciência antes parou
Franck Dernoncourt

11

Recentemente, me deparei com um artigo intitulado "Parada antecipada - mas quando?" por Lutz Prechelt que tem muitos ótimos exemplos de como usar as paradas precoces com explicações claras do que cada um faz e fórmulas para eles.

Espero que dê uma olhada nisso possa ajudar.


O artigo foi escrito em um estilo estranho, mas a informação foi útil.
1937 Josiah

3

Para adicionar outras excelentes respostas, você também pode - não parar. Eu costumo:

  • executar NN por muito mais tempo, eu teria pensado que é sensato,
  • salve os pesos do modelo a cada N épocas e
  • quando vejo que a perda de treinamento se estabilizou, escolhi o modelo com menor perda de validação.

É claro que isso só faz sentido quando você não paga por minuto (ou o custo é pequeno o suficiente) e quando você pode interromper o treinamento manualmente. O lado positivo é que é muito mais fácil determinar o menor erro de validação em retrospectiva.


1
Eu também faço isso. Embora, como você, eu saiba que é um luxo. Quando os modelos começaram a ocupar muito espaço, descobri que, usando os números anteriores de perda e escore f, eu também podia determinar programaticamente quando excluir modelos anteriores - para que você termine com uma janela móvel dos melhores modelos candidatos que consomem aproximadamente muito espaço no disco rígido, como provavelmente valerá a pena.
QA Collective
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.