Regularização (Dropout, Data Augmentation)

programador
1.1.2.4.4 – Arquiteturas CNN Profundas (Deep CNNs)
1.1.2.4.4.8 – Tecnicas de Treinamento
1.1.2.4.4.8.1 – Backpropagation
1.1.2.4.4.8.2 – Funcoes de Custo (Cross-Entropy, MSE)
1.1.2.4.4.8.3 – Otimizadores (SGD, Adam, RMSprop)
1.1.2.4.4.8.4 – Regularizacao (Dropout, Data Augmentation)
LEGENDA
Principal
Ramo
Metodo
Problemas
Modelo
Arquitetura

O overfitting ocorre quando a rede decora os dados de treinamento. Ela falha em generalizar para dados novos não vistos. Primeiramente, a regularização é um conjunto de técnicas para prevenir este problema. Duas abordagens populares são o Dropout e o Data Augmentation. Elas são frequentemente utilizadas em conjunto para melhores resultados. Por exemplo, redes profundas com milhões de parâmetros precisam de forte regularização. Consequentemente, estas técnicas são essenciais para aplicações práticas de deep learning. Portanto, este guia explica como e quando utilizar cada uma delas.

dropout: desligando neurônios aleatoriamente

O Dropout é uma técnica simples e extremamente eficaz. Durante o treinamento, ele “desliga” aleatoriamente uma fração dos neurônios. A probabilidade de desligamento é um hiperparâmetro (tipicamente 0.5). Por exemplo, com dropout 0.5, metade dos neurônios é zerada em cada iteração. Isto força a rede a aprender representações redundantes e robustas. Durante o teste, todos os neurônios permanecem ativos. Contudo, suas saídas são multiplicadas pela probabilidade de permanência (1 – dropout). Matematicamente, durante o treinamento:

\( \mathbf{h} = \mathbf{m} \odot \mathbf{a} \)
Onde m é uma máscara binária com valores 0 ou 1. Durante o teste:
\( \mathbf{h} = p \cdot \mathbf{a} \)
Utilize Dropout em redes totalmente conectadas grandes. Ele é menos comum em camadas convolucionais, mas ainda benéfico.

data augmentation: aumentando o conjunto de dados artificialmente

Data Augmentation cria variações artificiais das imagens de treinamento. Primeiramente, ela gera novos exemplos a partir dos existentes. Transformações comuns incluem rotações, translações e zoom. Por exemplo, girar uma imagem de um gato em 10 graus não muda sua classe. Outras transformações úteis são inversão horizontal, ajuste de brilho e recortes aleatórios. O aumento de dados é especialmente crucial quando o conjunto original é pequeno. Ele reduz drasticamente o overfitting, especialmente em visão computacional. Diferentemente do dropout, ele não altera a arquitetura da rede. Consequentemente, pode ser combinado com qualquer outra técnica de regularização. Por exemplo, aplica-se data augmentation antes do treinamento ou em tempo real durante o treinamento. Utilize data augmentation sempre que trabalhar com imagens. É uma prática padrão em praticamente todos os problemas de visão.

quando utilizar cada técnica

A escolha da técnica de regularização depende do problema. Utilize Dropout quando a rede tiver muitos parâmetros. Por exemplo, redes totalmente conectadas com milhões de pesos. O Dropout é menos necessário em redes já regularizadas por batch normalization. Utilize Data Augmentation sempre que possível em problemas de visão. Ele é especialmente útil quando o conjunto de dados é pequeno (menos de 10 mil imagens). Combine ambas as técnicas para melhores resultados. Por exemplo, aplique data augmentation no pré-processamento. Adicione camadas de dropout nas últimas camadas totalmente conectadas. Contudo, cuidado com regularização excessiva. Muito dropout (acima de 0.7) pode prejudicar o aprendizado. Data augmentation muito agressiva pode criar exemplos irreais. Portanto, experimente diferentes configurações para encontrar o equilíbrio ideal.

Otimizadores (SGD, Adam, RMSprop)

Entregador
1.1.2.4.4 – Arquiteturas CNN Profundas (Deep CNNs)
1.1.2.4.4.8 – Tecnicas de Treinamento
1.1.2.4.4.8.1 – Backpropagation
1.1.2.4.4.8.2 – Funcoes de Custo (Cross-Entropy, MSE)
1.1.2.4.4.8.3 – Otimizadores (SGD, Adam, RMSprop)
1.1.2.4.4.8.4 – Regularizacao (Dropout, Data Augmentation)
LEGENDA
Principal
Ramo
Metodo
Problemas
Modelo
Arquitetura

Otimizadores são algoritmos que atualizam os pesos das redes neurais. Eles determinam como o gradiente descendente é aplicado. Primeiramente, a escolha do otimizador impacta velocidade e qualidade da convergência. Diferentes otimizadores oferecem diferentes vantagens e desvantagens. Por exemplo, o SGD é simples, mas pode ser lento. O Adam, por outro lado, é rápido e robusto para muitos problemas. Consequentemente, entender os otimizadores é crucial para treinar redes eficientemente. Portanto, este guia explica os três otimizadores mais populares.

sgd (stochastic gradient descent) e momentum

O SGD é o otimizador mais fundamental e simples. Ele atualiza os pesos usando o gradiente do erro em relação a cada peso. Primeiramente, a regra de atualização é:

\( w_{t+1} = w_t – \eta \nabla L(w_t) \)
A taxa de aprendizado (η) controla o tamanho do passo. Uma desvantagem é que o SGD pode oscilar em vales estreitos. O momentum resolve este problema acumulando gradientes passados. A atualização com momentum é:
\( v_{t+1} = \beta v_t + \nabla L(w_t) \)
\( w_{t+1} = w_t – \eta v_{t+1} \)
O momentum suaviza as atualizações e acelera a convergência. Por exemplo, ele ajuda a atravessar platôs e regiões planas. Utilize SGD com momentum quando precisar de máxima generalização. Ele frequentemente alcança melhor desempenho em conjuntos de teste do que otimizadores adaptativos.

rmsprop: taxas de aprendizado adaptativas por parâmetro

O RMSprop adapta a taxa de aprendizado para cada parâmetro individualmente. Ele foi desenvolvido para lidar com gradientes não-estacionários. Primeiramente, ele mantém uma média móvel dos quadrados dos gradientes. A fórmula é:

\( E[g^2]_t = \beta E[g^2]_{t-1} + (1-\beta) g_t^2 \)
Em seguida, a atualização do peso é:
\( w_t = w_{t-1} – \frac{\eta}{\sqrt{E[g^2]_t + \epsilon}} g_t \)
Parâmetros com gradientes grandes têm taxas de aprendizado reduzidas. Parâmetros com gradientes pequenos, por outro lado, têm taxas aumentadas. O RMSprop é especialmente útil para redes recorrentes (RNNs). Ele também funciona bem em problemas com gradientes esparsos. Contudo, o RMSprop pode ser sensível aos hiperparâmetros. Experimente diferentes valores de β (tipicamente 0.9) e η.

adam: combinando momentum e rmsprop

O Adam (Adaptive Moment Estimation) é hoje o otimizador mais popular. Ele combina as vantagens do momentum e do RMSprop. Primeiramente, ele mantém duas médias móveis: momento (m) e variância (v). As atualizações são:

\( m_t = \beta_1 m_{t-1} + (1-\beta_1) g_t \)
\( v_t = \beta_2 v_{t-1} + (1-\beta_2) g_t^2 \)
Ambas as médias são corrigidas para o viés inicial:
\( \hat{m}_t = \frac{m_t}{1-\beta_1^t}, \quad \hat{v}_t = \frac{v_t}{1-\beta_2^t} \)
A regra de atualização final é:
\( w_t = w_{t-1} – \eta \frac{\hat{m}_t}{\sqrt{\hat{v}_t} + \epsilon} \)
O Adam é robusto à escolha dos hiperparâmetros. Valores padrão (η=0.001, β1=0.9, β2=0.999) funcionam bem para muitos problemas. Utilize Adam para a maioria das aplicações de deep learning. Ele converge rapidamente e é fácil de usar. Contudo, para tarefas com poucos dados, SGD pode generalizar melhor.