Diferença de Keras entre val_loss e perda durante o treinamento

17

Qual é a diferença entre val_losse lossdurante o treinamento em Keras?

Por exemplo

Epoch 1/20
1000/1000 [==============================] - 1s - loss: 0.1760, val_loss: 0.2032  

Em alguns sites, li que na validação o abandono não estava funcionando.

Vladimircape
fonte
O que você lê sobre abandono é provavelmente que, quando o abandono é usado (ou dropoutseja, não é None), o abandono é aplicado apenas durante o treinamento (ou seja, nenhum abandono é aplicado durante a validação). Dessa forma, uma das diferenças entre perda de validação ( val_loss) e perda de treinamento ( loss) é que, ao usar o abandono, a perda de validação pode ser menor que a perda de treinamento (geralmente não esperada nos casos em que o abandono não é usado).
Psi

Respostas:

15

val_lossé o valor da função de custo para seus dados de validação cruzada e a perda é o valor da função de custo para seus dados de treinamento. Nos dados de validação, os neurônios que usam o abandono não descartam neurônios aleatórios. O motivo é que, durante o treinamento, usamos o abandono escolar, a fim de adicionar algum ruído para evitar o excesso de ajuste. Durante o cálculo da validação cruzada, estamos na fase de recall e não na fase de treinamento. Usamos todos os recursos da rede.

Graças a um de nossos queridos amigos, cito e explico o conteúdo daqui que é útil.

validation_split: Flutue entre 0 e 1. A fração dos dados de treinamento a serem usados ​​como dados de validação. O modelo separará essa fração dos dados de treinamento, não treinará nele e avaliará a perda e quaisquer métricas de modelo nesses dados no final de cada época. Os dados de validação são selecionados das últimas amostras nos dados x e y fornecidos, antes da reprodução aleatória.

validation_data: tupla (x_val, y_val) ou tupla (x_val, y_val, val_sample_weights) na qual avaliar a perda e quaisquer métricas de modelo no final de cada época. O modelo não será treinado nesses dados. Isso substituirá validation_split.

Como você pode ver

fit(self, x=None, y=None, batch_size=None, epochs=1, verbose=1, callbacks=None, validation_split=0.0, validation_data=None, shuffle=True, class_weight=None, sample_weight=None, initial_epoch=0, steps_per_epoch=None, validation_steps=None)

fitO método usado em Keraspossui um parâmetro denominado validation_split, que especifica a porcentagem de dados usados ​​para avaliar o modelo que é criado após cada época. Após avaliar o modelo usando essa quantidade de dados, isso será relatado por val_lossse você tiver definido verbose como 1; além disso, como a documentação especifica claramente, você pode usar validation_dataou validation_split. Os dados de validação cruzada são usados ​​para investigar se o seu modelo se ajusta demais aos dados ou não. É isso que podemos entender se nosso modelo tem capacidade de generalização ou não.

meios de comunicação
fonte