Keras e épocas, batches, taxas de aprendizado, etc

Keras e épocas, batches, taxas de aprendizado, etc1. Intro2. Controle manual pelo usuárioa) Número de épocas (epochs) e tamanho do batch (batch_size)b) Quando o backpropagation é executado?3. Ajuste automático de hiperparâmetrosa) Taxa de aprendizado (learning rate) adaptativaMétodo de Adam (Adaptative Moment Estimation)FuncionamentoComo a Taxa de Aprendizado 𝛼 é Adaptada?Referência BibliográficaReferências Adicionais RecentesImplementação no KerasResumo (do método Adam)b) Momentum adaptativoRMSprop (Detalhes)Funcionamento do RMSprop no KerasMomentum no RMSprop?A Taxa de Aprendizado é ajustada automáticamente no RMSprop? Parâmetros Controláveis pelo Usuário no RMSprop (Keras)Referências Bibliográficas (RMSprop) Resumo das Características do RMSprop4. Early stopping automáticoMais DetalhesO que acontece?Usando ModelCheckpointMais Referências5. Como o Keras decide com base nos dados?6. Funcionalidades avançadas (Keras + TensorFlow)7. Como o Keras tenta evitar Overfitting1. Early Stopping2. Regularização Integrada 3. Dropout 4. Validação MonitoradaO Que Depende do Usuário?Exemplo de Boa Prática no KerasResumoDicas FinaisMaterial Extra1. Controle do Early Stopping no Keras2. Como restore_best_weights=True Funciona?Exemplo Prático3. Como Acompanhar a Função Loss em Tempo Real com Gráficos?Opção 1: Usando History + MatplotlibOpção 2: Gráfico em Tempo Real com LambdaCallback4. Referências Bibliográficas5. ResumoDiferença entre Conjunto de Validação vs Conjunto de Teste1. Papel de Cada Conjunto de Dados2. Por Que o Conjunto de Teste é Intocável?Exemplo Prático3. Quando o Conjunto de Validação é Usado?Fluxo "Correto" (esperado) no Keras:4. E Se Não Houver Conjunto de Validação?5. Referências Bibliográficas6. Resumo


1. Intro

O Keras (agora integrado ao TensorFlow como tf.keras) oferece várias formas de controlar os parâmetros de treinamento, incluindo épocas, batch size, e até a execução do backpropagation. Além disso, ele possui funcionalidades para ajuste automático de hiperparâmetros e early stopping.

A página Épocas, batches e mini-batches introduz mais informações à respeto do seja uma "época", o que são batches, definição do tamanho dos batches e atualizações dos parãmetros de treinamento da rede.

 

2. Controle manual pelo usuário

a) Número de épocas (epochs) e tamanho do batch (batch_size)

No Keras, você define esses parramentos diretamente no método .fit():

b) Quando o backpropagation é executado?

 

3. Ajuste automático de hiperparâmetros

O Keras oferece mecanismos para adaptar dinamicamente certos parâmetros durante o treinamento:

a) Taxa de aprendizado (learning rate) adaptativa

No caso do exemplo de código acima, a taxa de aprendizado desceria da seguinte forma:

XXXXXX


Método de Adam (Adaptative Moment Estimation)

Funcionamento

O método de "Adam" (Adaptive Moment Estimation) (Kingma & Ba, 2015), para atualização da taxa de aprendizado, consite num otimizador adaptativo que combina os benefícios do RMSprop (adaptação por média móvel dos gradientes ao quadrado) e do momentum (média móvel dos gradientes). A principal característica do Adam é que ele ajusta individualmente a taxa de aprendizado para cada parâmetro da rede neural, com base nas estimativas de primeiro e segundo momentos dos gradientes.

Passo a Passo da Atualização no Adam:

Seja o parâmetro no tempo , o gradiente em , e a taxa de aprendizado inicial.

  1. Calcula-se o gradiente (backpropagation).

  2. Estima-se o primeiro momento (média móvel dos gradientes - momentum):

    • (tipicamente 0.9) controla o decaimento do momentum.
  3. Estima-se o segundo momento (média móvel dos gradientes ao quadrado - adaptação por magnitude):

    • (tipicamente 0.999) controla o decaimento da adaptação.
  4. Correção de viés (importante nas primeiras iterações):

  5. Atualiza-se os parâmetros:

    • (ex.: 1E-8) evita divisão por zero!
Como a Taxa de Aprendizado 𝛼 é Adaptada?

Sobre a taxa :

Referência Bibliográfica

O artigo original que introduziu o Adam é o mais citado e recomendado para referência:

Kingma, D. P. and Ba, J. (2015) Adam: A method for stochastic optimization. arXiv preprint arXiv:1412.6980. Disponível em: https://arxiv.org/abs/1412.6980.

Referências Adicionais Recentes
  1. Reddi, S. J. et al. (2018) On the convergence of Adam and beyond. International Conference on Learning Representations (ICLR).

    • Discute problemas de convergência em Adam e propostas de melhorias (ex.: AMSGrad).
  2. Loshchilov, I. and Hutter, F. (2019) Decoupled weight decay regularization. ICLR.

    • Introduz o AdamW, uma variante do Adam que corrige o weight decay.
Implementação no Keras

No Keras/TensorFlow, o Adam já inclui todas as adaptações descritas:

Resumo (do método Adam)
CaracterísticaEfeito na Taxa de Aprendizado
Momentum ()Suaviza oscilações em gradientes ruidosos, mantendo direção consistente.
Adaptação ()Reduz a taxa efetiva para parâmetros com gradientes grandes/instáveis (ex.: ruídos).
Correção de viésGarante que e não sejam subestimados no início do treino.

O Adam é amplamente usado em redes profundas por sua eficiência em problemas com gradientes esparsos ou ruidosos (ex.: NLP, GANs). Para problemas onde ele oscila demais, variantes como AdamW ou NAdam podem ser melhores.


b) Momentum adaptativo

RMSprop (Detalhes)

Funcionamento do RMSprop no Keras

O RMSprop (Root Mean Square Propagation) é um método de otimização adaptativo que ajusta a taxa de aprendizado para cada parâmetro individualmente, com base na magnitude média dos gradientes recentes. Diferentemente do Adam, o RMSprop não usa momentum tradicional, mas pode ser combinado com momentum (uma variante chamada RMSprop com momentum).

Passo a Passo do RMSprop: Seja:

  1. Calcula-se o gradiente (via backpropagation).

  2. Atualiza-se a média móvel dos gradientes ao quadrado (adaptação da taxa de aprendizado):

    • é uma estimativa da média exponencial dos gradientes ao quadrado.
  3. Atualiza-se os parâmetros:

    • O termo ajusta a taxa de aprendizado individualmente para cada parâmetro:

      • Se é grande (gradientes variáveis), o passo de atualização é reduzido;
      • Se é pequeno (gradientes consistentes), o passo é ampliado.

Momentum no RMSprop?

O RMSprop puro não inclui momentum, mas o Keras permite adicioná-lo via parâmetro momentum:

A Taxa de Aprendizado é ajustada automáticamente no RMSprop?

Parâmetros Controláveis pelo Usuário no RMSprop (Keras)

ParâmetroDescriçãoValor Típico
learning_rateTaxa de aprendizado inicial ().0.001
rhoFator de decaimento da média móvel ().0.9
momentumSe , adiciona momentum clássico ao RMSprop.0.0 (sem momentum)
epsilonTermo de estabilização para evitar divisão por zero.1e-8

Referências Bibliográficas (RMSprop)

Artigo Original do RMSprop: Tieleman, T. and Hinton, G. (2012) Lecture 6.5-rmsprop: Divide the gradient by a running average of its recent magnitude. COURSERA: Neural Networks for Machine Learning.

Referências Recentes sobre Otimização Adaptativa:

  1. Ruder, S. (2016) An overview of gradient descent optimization algorithms. arXiv preprint arXiv:1609.04747.

  2. Reddi, S. J. et al. (2018) On the convergence of Adam and beyond. International Conference on Learning Representations (ICLR).

    • Discute problemas de convergência em métodos adaptativos, incluindo RMSprop.
  3. Zhang, J. et al. (2020) Why gradient clipping accelerates training: A theoretical justification for adaptivity. ICLR.

    • Analisa métodos adaptativos como RMSprop em cenários de otimização complexos.

Resumo das Características do RMSprop

FeatureRMSprop PuroRMSprop + Momentum
Taxa de aprendizadoAjustada por parâmetroAjustada por parâmetro
MomentumNãoSim
Uso típicoRNNs, problemas com gradientes instáveisCNNs, problemas mais complexos

O RMSprop é especialmente útil em redes recorrentes (RNNs) e problemas onde os gradientes variam muito em magnitude. Para problemas modernos, muitas vezes é substituído pelo Adam, que combina RMSprop e momentum.


4. Early stopping automático

O Keras inclui um callback pronto para parar o treinamento quando o modelo para de melhorar no conjunto de validação (não no conjunto de teste!):

Mais Detalhes

  1. Monitoramento Contínuo:

    • A cada época, o Keras verifica se a métrica monitorada (ex.: val_loss) melhorou em relação ao melhor valor histórico.
    • Se melhorou, ele atualiza a cópia em memória dos melhores pesos.
  2. Critério de Parada (patience):

    • Se a métrica não melhorar por patience épocas consecutivas, o treinamento é interrompido.
    • O Keras restaura automaticamente os pesos salvos em memória (os melhores encontrados).
  3. Onde os Pesos São Armazenados?

    • Memória RAM: O Keras mantém apenas dois conjuntos de pesos na RAM:

      • Pesos atuais (última época treinada).
      • Melhores pesos (cópia atualizada quando a métrica melhora).

Obs.: Nenhum arquivo em disco é gerado por padrão (a menos que você use ModelCheckpoint).

O que acontece?

No caso do exemplo anterior:

Neste caso o treinamento continua até a época 25 (sem melhoras) e então para.

Na época 20 os pesos foram copiados para a variável best_weigths (em RAM).

Entre as épocas 21 à 25 os pesos foram atualizados, mas best_weights não foi alterado (pois vai_lossnão melhorou).

Finalmente, o Keras descarta os pesos da época 25 e restaura best_weights (da época 20).

Usando ModelCheckpoint

Se for desejado gravar arquivos de pesos da rede, temporários em disco, pode-se usar o método ModelCheckpoint para gerá-los (formato .h5 ou .keras) refletindo os melhores pesos:

Desta forma, um arquivo melhores_pesos.h5é gerado no disco, cada vez que val_loss atingir um novo mínimo. Pode-se ajustar ModelCheckpoint para gerar nomes de arquivos dinâmicos (ex.: pesos_epoch_{epoch:02d}.h5).

Mais Referências

 

5. Como o Keras decide com base nos dados?

Conjunto de dadosFinalidade
TreinoCalcula gradientes e atualiza pesos.
ValidaçãoMonitora desempenho para early stopping, ajuste de LR, etc. Nunca afeta os pesos.
TesteAvaliação final (após o treinamento). Não influencia o modelo.

 

6. Funcionalidades avançadas (Keras + TensorFlow)

7. Como o Keras tenta evitar Overfitting

O Keras oferece mecanismos robustos para evitar overfitting, mas é crucial saber usá-los corretamente. Vamos reforçar os pontos-chave que garantem um treinamento equilibrado:

1. Early Stopping

2. Regularização Integrada

3. Dropout

Obs.: Redes muito complexas sem Dropout ou L2 podem memorizar os dados.

4. Validação Monitorada


O Que Depende do Usuário?

Exemplo de Boa Prática no Keras

 

Resumo

  1. Épocas e batch size: Definidos em model.fit(epochs=..., batch_size=...).
  2. Backpropagation: Ocorre a cada mini-batch (automático).
  3. Parâmetros automáticos: Otimizadores como Adam ajustam LR e momentum.
  4. Early stopping: Implementado via callbacks, monitorando validação.
  5. Base para decisões: Sempre validação (nunca teste).

Se precisar de mais flexibilidade, você pode criar otimizadores personalizados ou usar subclasses de tf.keras.callbacks.Callback.

Dicas Finais

Sempre visualize loss vs val_loss (usando TensorBoard/Matplotlib). Se as curvas divergirem, é sinal de overfitting:

Combinando as técnicas acima, seu modelo terá alta performance sem overfitting!


Material Extra

1. Controle do Early Stopping no Keras

O EarlyStopping no Keras não é controlado apenas pelo parâmetro patience. Ele possui outros parâmetros importantes:

Parâmetros Principais do EarlyStopping:

ParâmetroDescriçãoValor Padrão
monitorMétrica monitorada (ex.: 'val_loss', 'val_accuracy').'val_loss'
patienceNúmero de épocas sem melhoria antes de parar.0
min_deltaMelhoria mínima exigida para considerar "progresso" (ex.: 0.001).0
restore_best_weightsRestaura os pesos da época com melhor métrica (monitor).False
modeDefine se a métrica deve ser minimizada ('min') ou maximizada ('max').'auto'

Exemplo de uso avançado:

2. Como restore_best_weights=True Funciona?

Quando ativado, o Keras:

  1. Monitora a métrica escolhida (ex.: val_loss) a cada época.
  2. Armazena em memória os pesos da rede sempre que a métrica melhora.
  3. Se após patience épocas não houver melhora, o treinamento é interrompido.
  4. Restaura automaticamente os pesos da época onde a métrica foi a melhor.

Exemplo Prático

Sem restore_best_weights:

3. Como Acompanhar a Função Loss em Tempo Real com Gráficos?

Você pode usar callbacks do Keras para plotar gráficos dinâmicos durante o treinamento. Duas abordagens comuns:

Opção 1: Usando History + Matplotlib

Opção 2: Gráfico em Tempo Real com LambdaCallback

Observação: Para gráficos interativos e/ou mais avançados, use bibliotecas como Plotly ou TensorBoard. O TensorBoard é a ferramenta recomendada pelo Keras para visualização em tempo real.

Para saber mais sobre TensorBoard:


4. Referências Bibliográficas

Chollet, F. (2021) Deep Learning with Python. 2nd ed. Manning Publications.

Documentação Oficial:


5. Resumo

DúvidaResposta
Como EarlyStopping funciona?Monitora uma métrica (ex.: val_loss) e para após patience épocas sem melhoria.
restore_best_weights?Restaura os pesos da época onde a métrica monitorada foi ótima.
Como plotar loss em tempo real?Usar History + Matplotlib ou LambdaCallback para atualização dinâmica.

Diferença entre Conjunto de Validação vs Conjunto de Teste

Ponto crucial! Vamos esclarecer a diferença entre conjunto de validação e conjunto de teste, e por que o Keras (e boas práticas em ML) nunca usam o teste durante o treinamento.

1. Papel de Cada Conjunto de Dados

ConjuntoFinalidadeQuando é Usado?
TreinoAjustar os pesos da rede (backpropagation).Durante todo o treinamento.
ValidaçãoMonitorar desempenho para early stopping, ajuste de hiperparâmetros e seleção de modelos.Durante o treinamento, mas não afeta os pesos.
TesteAvaliação final do modelo, simulando cenários do mundo real.Apenas uma vez, após o treinamento.

2. Por Que o Conjunto de Teste é Intocável?

Exemplo Prático

Suponha que você:

  1. Ajuste a taxa de aprendizado com base no erro do teste.
  2. Pare o treinamento quando o erro no teste for mínimo.
    Resultado aparente: "Meu modelo tem 95% de acerto no teste!"
    Problema real: O teste não é mais independente – você otimizou o modelo para ele, e ele não refletirá o desempenho real em novos dados.

3. Quando o Conjunto de Validação é Usado?

O conjunto de validação é o substituto seguro do teste durante o treinamento. Ele permite:

Fluxo "Correto" (esperado) no Keras:

4. E Se Não Houver Conjunto de Validação?

Algumas abordagens usam apenas treino e teste, mas isso é arriscado:

5. Referências Bibliográficas

  1. Goodfellow, I., Bengio, Y. and Courville, A. (2016) Deep Learning. MIT Press.

    • Capítulo 11 discute a importância da separação treino/validação/teste.
  2. Raschka, S. (2020) Model evaluation, model selection, and algorithm selection in machine learning. arXiv:1811.12808.

6. Resumo

ConjuntoUsoQuando
Treino:Ajuste de pesos→ Backpropagation
Validação:Monitoramento→ Early stopping, ajuste de LR
Teste:Avaliação finalSó no fim!

Se você usar o teste para tomar decisões durante o treino, estará superestimando o desempenho real do modelo. A validação existe justamente para evitar isso!


Fernando Passold, em 10/06/2025