Tópicos Especiais em Estatística Comp.

Dropout e Funções de Erro

Prof. Jodavid Ferreira

UFPE

Dropout



  • Foi introduzida por Geoffrey Hinton em 2012 e é amplamente utilizada para melhorar a capacidade de generalização dos modelos.
  • O Dropout é uma técnica de regularização usada em redes neurais para prevenir o overfitting.

Overfitting é um problema comum em redes neurais, onde o modelo se ajusta excessivamente aos dados de treinamento e perde a capacidade de generalizar para novos dados.

Isso acontece porque a rede pode se tornar muito complexa e memorizar os padrões do conjunto de treinamento. O Dropout ajuda a mitigar esse problema introduzindo uma forma de “ruído” durante o treinamento.


Dropout


Quando se trata de combater o overfitting, o dropout definitivamente não é a única opção. Existem outras técnicas, como por exemplo:

  • Parada antecipada: interromper o treinamento automaticamente quando uma medida específica de desempenho (por exemplo, perda de validação, acurácia) parar de melhorar.

  • Decaimento de peso: incentivar a rede a usar pesos menores adicionando uma penalidade à função de perda (isso garante que as normas dos pesos sejam distribuídas de forma relativamente uniforme entre todos os pesos na rede, o que impede que apenas alguns pesos influenciem fortemente a saída da rede).

Dropout


  • Ruído: permitir algumas flutuações aleatórias nos dados através da augmentação (o que torna a rede robusta a uma maior distribuição de entradas e, portanto, melhora a generalização).

  • Combinação de modelos: fazer a média das saídas de redes neurais treinadas separadamente (requer muito poder computacional, dados e tempo).

Apesar da abundância de alternativas, o dropout continua sendo uma medida protetora extremamente popular contra o overfitting por causa de sua eficiência e eficácia.

Dropout



  • A ideia básica do Dropout é desligar (ou “drop”) aleatoriamente uma fração dos neurônios durante o treinamento, o que força a rede a não depender de neurônios específicos, mas sim a aprender representações mais robustas dos dados.

  • Isso previne que as unidades se adaptem excessivamente umas às outras.

Dropout



  • Durante o treinamento, em cada iteração, cada neurônio tem uma probabilidade \(p\) de ser “desligado”.


  • Isso significa que as ativações desses neurônios são temporariamente removidas da rede, juntamente com suas conexões.


  • Essa técnica é aplicada apenas durante o treinamento; na fase de inferência (teste), todos os neurônios estão ativos, mas suas saídas são escaladas por \(p\) para manter a consistência das ativações.

Dropout



  • Como o dropout remove algumas das unidades de uma camada, uma rede com dropout ponderará as unidades restantes mais fortemente durante cada execução de treinamento para compensar as entradas ausentes.

  • No entanto, no momento do teste, não é viável usar os pesos do modelo treinado em seus estados exagerados e, portanto, cada peso é reduzido multiplicando-se pelo hiperparâmetro \(p\).

Esse fenômeno pode ser observado no exemplo abaixo.

Vamos observar uma rede com quatro unidades em uma camada (imagem abaixo). O peso em cada unidade será inicialmente \(\dfrac{1}{4} = 0.25\).

Dropout



  • Se aplicarmos dropout com \(p = 0.5\) a essa camada, ela poderia acabar se parecendo com a seguinte imagem:

  • Como podemos ver, duas unidades foram “desligadas” aleatoriamente.

  • Isso significa que as conexões dessas unidades foram removidas temporariamente da rede.

  • Como apenas duas unidades são consideradas, cada uma terá um peso inicial de \(\dfrac{1}{2} = 0.5\).

Dropout



  • No entanto, o dropout é usado apenas no treinamento, então não queremos que esses pesos fiquem fixos nesse valor alto durante o teste.

  • Para resolver esse problema, quando passamos para a fase de teste, multiplicamos os pesos por \(p\) (como visto na imagem abaixo), terminando com \(0.5*0.5 = 0.25\), que nesse caso, coincidentemente foi igual ao peso inicial correto.

Dropout



Configurações de hiperparâmetros que têm se mostrado eficazes com a regularização por dropout incluem uma alta taxa de aprendizado decrescente e um alto momento. Isso se deve a alguns fatores específicos:

  1. Alta Taxa de Aprendizado Decrescente: A taxa de aprendizado determina o tamanho dos passos que o algoritmo de otimização dá na direção dos gradientes. Uma alta taxa de aprendizado permite que o modelo faça ajustes significativos nos pesos em cada iteração, acelerando o processo de treinamento. No entanto, taxas de aprendizado muito altas podem causar oscilações nos pesos ou mesmo impedir a convergência. Quando usamos dropout, a regularização ajuda a evitar que os pesos “explodam” (aumentem descontroladamente), permitindo assim que possamos usar uma alta taxa de aprendizado sem esses riscos. À medida que o treinamento progride, a taxa de aprendizado pode ser reduzida gradualmente (decrescente), o que ajuda o modelo a se estabilizar e ajustar finamente os pesos.

Dropout



  1. Alto Momento: O momento é um hiperparâmetro que ajuda a acelerar o gradiente descendente em direção ao mínimo ótimo, suavizando o processo de otimização. Ele faz isso acumulando uma fração das atualizações passadas para determinar a direção da atualização atual. Um alto momento significa que as atualizações são mais influenciadas pelas direções anteriores, ajudando a atravessar platôs e evitando que o algoritmo fique preso em mínimos locais. Com o dropout, o uso de um alto momento é benéfico porque o ruído introduzido pelo dropout pode ser compensado pelo efeito estabilizador do momento.

Dropout



  1. Exploração de Diferentes Regiões da Função de Perda: O dropout introduz ruído durante o treinamento ao desligar aleatoriamente unidades na rede. Esse ruído, em conjunto com uma alta taxa de aprendizado, permite que o modelo explore diferentes regiões da função de perda. Isso pode ajudar o modelo a escapar de mínimos locais e encontrar um ponto de convergência melhor, potencialmente levando a um desempenho superior.

Portanto, a combinação de uma alta taxa de aprendizado decrescente e um alto momento, junto com a regularização por dropout, pode melhorar significativamente a eficácia do treinamento de redes neurais, resultando em modelos mais robustos e com melhor capacidade de generalização.

Dropout



Desvantagem do Dropout

  • O dropout pode aumentar o tempo de treinamento, pois a rede precisa ser treinada várias vezes com diferentes subconjuntos de neurônios desligados.
  • No entanto, o aumento do tempo de treinamento é geralmente compensado pela melhoria na capacidade de generalização do modelo.
  • Complexidade adicional em determinar a taxa de Dropout ideal pode requerer experimentação adicional.
  • O Dropout pode não ser tão eficaz em redes neurais profundas, onde o overfitting é mais comum, pois a remoção aleatória de neurônios pode não ser suficiente para regularizar a rede adequadamente.

Otimizadores



  • Os otimizadores são algoritmos ou métodos usados para minimizar a função de perda durante o treinamento de uma rede neural. Eles ajustam os pesos das conexões na rede com o objetivo de encontrar os valores que minimizem a diferença entre as previsões da rede e os valores reais (rótulos).

Papel dos Otimizadores

  • Minimização da Função de Perda: O principal objetivo de um otimizador é minimizar a função de perda, que mede o quão bem a rede está performando.

  • Ajuste dos Pesos: Durante o treinamento, os otimizadores ajustam iterativamente os pesos das conexões neuronais para melhorar a performance da rede.

  • Eficiência e Convergência: Um bom otimizador deve ser eficiente em termos de tempo de computação e deve garantir a convergência para um mínimo global ou local da função de perda.

Otimizadores


  • Existem vários otimizadores comumente usados em redes neurais, cada um com suas próprias características e propriedades. Alguns dos otimizadores mais populares incluem:
  1. Gradiente Descendente: O otimizador mais simples e amplamente utilizado, que ajusta os pesos na direção oposta ao gradiente da função de perda.

  2. Gradiente Descendente Estocástico (SGD): Uma variação do gradiente descendente que atualiza os pesos com base em um subconjunto aleatório dos dados de treinamento.

  3. Adam: Um otimizador popular que combina as vantagens do gradiente descendente com o RMSprop e o momento.

  4. RMSprop: Um otimizador que ajusta a taxa de aprendizado de forma adaptativa com base na média dos gradientes quadrados.

  5. Momentum: Um otimizador que acumula um termo de momento para acelerar a convergência e suavizar o processo de otimização.

Otimizadores



  • Atualmente o mais utilizado é o Adam, que é uma combinação do RMSprop e do Momentum.
  • O Adam é eficaz em muitos cenários devido à sua capacidade de ajustar a taxa de aprendizado de forma adaptativa e manter um histórico dos gradientes anteriores.

Busca do Mínimo Local/Global

Função de Perda (Loss Function)



  • Uma função de perda é uma medida que avalia o quão próximo as previsões de um modelo estão dos valores reais.

  • A escolha da função de perda depende do tipo de problema que estamos tentando resolver.

  • Em problemas de classificação, usamos funções de perda diferentes de problemas de regressão.

Função de Perda (Loss Function)



Problemas de Classificação

Cross-Entropy Loss (Perda de Entropia Cruzada)

A função de perda baseada na entropia cruzada é uma métrica amplamente utilizada em redes neurais profundas para problemas de classificação, por alguns motivos fundamentais:

  1. Quantificação de Incerteza e Similaridade: A entropia cruzada mede a diferença entre a distribuição de probabilidade verdadeira (\(y_i\)) e a distribuição de probabilidade predita pelo modelo (\(p_i\))1. No contexto de redes neurais, o objetivo é minimizar essa diferença para aumentar a precisão das previsões, especialmente quando há muitas classes ou grande incerteza. Quanto menor a entropia cruzada, mais próximo o modelo está de prever as probabilidades corretas.

Função de Perda (Loss Function)



  1. Foco nas Previsões Erradas: A função de entropia cruzada atribui uma penalidade maior para erros maiores. Isso ajuda o modelo a otimizar com mais eficácia, corrigindo suas previsões de maneira a reduzir os erros mais significativos.
  1. Facilidade para o Backpropagation: A função de entropia cruzada é diferenciável e resulta em gradientes estáveis, o que é crucial para o treinamento das redes neurais. Ela permite que os pesos sejam ajustados usando o método de backpropagation e otimização por gradiente descendente, tornando o aprendizado mais eficiente e direto, especialmente para funções de ativação como a softmax, que é comum em problemas de classificação.

Função de Perda (Loss Function)


A entropia cruzada utilizada em problemas de classificação em redes neurais é conceitualmente baseada na entropia de Shannon. A entropia de Shannon é uma medida fundamental da teoria da informação que quantifica a incerteza em uma distribuição de probabilidade.

Entropia de Shannon

A entropia de Shannon para uma distribuição de probabilidade \(p\) sobre um conjunto de eventos \(X\) é definida como:

\[ H(p) = - \sum_{x \in X} p(x) \log(p(x)) \]

Essa equação quantifica a quantidade média de informação necessária para descrever um evento \(x\) que ocorre com probabilidade \(p(x)\). A entropia é maior quando a incerteza é máxima (por exemplo, em uma distribuição uniforme) e menor quando há menor incerteza (por exemplo, quando um evento tem probabilidade próxima de 1).

Função de Perda (Loss Function)


Entropia Cruzada

A entropia cruzada expande essa ideia para medir a diferença entre duas distribuições de probabilidade: a distribuição verdadeira dos rótulos \(y\) e a distribuição predita pelo modelo \(p = p(x)\). Ela é definida como:

\[ H(y, p) = - \sum_{x \in X} y \log\left(p\right) \]

Aqui, estamos usando \(y\) como a “distribuição verdadeira” e \(p\) como a “distribuição predita” pelo modelo. Em termos intuitivos:

  • A entropia cruzada mede quanta informação adicional seria necessária para descrever os eventos corretamente, se usarmos a distribuição predita \(p\) em vez da verdadeira \(y\).

  • Quanto menor a entropia cruzada, mais próxima a distribuição \(p\) está da verdadeira distribuição \(y\), reduzindo a quantidade de “informação perdida” ou erro na previsão.

Função de Perda (Loss Function)


Para um problema de classificação binária:

\[\text{Cross-Entropy} = -\frac{1}{n} \sum_{i=1}^{n} \left[ y_i \log(p_i) + (1 - y_i) \log(1 - p_i) \right]\]

Para um problema de classificação multiclasse: \[\text{Cross-Entropy} = -\sum_{i=1}^{n} \sum_{g=1}^{c} y_{i,g} \log(p_{i,g}),\] em que:

  • \(n\) é o a quantidade de observações;
  • \(c\) é o número de classes;
  • \(y_{i,g}\) é o valor verdadeiro da \(i\)-ésima observação na \(g\)-ésima classe;
  • \(p_{i,g}\) é a probabilidade prevista da \(i\)-ésima observação na \(g\)-ésima classe.;

Função de Perda (Loss Function)


Considerando que estamos usando a função de ativação softmax na camada de saída, a função de perda da entropia cruzada é a escolha padrão para problemas de classificação multiclasse, esta é dada por:

\[ \sigma(z_{i,g}) = \frac{e^{z_{i,g}}}{\sum_{g=1}^{c} e^{z_{i,g}}} \]

em que:

  • \(z_{i,g}\) é a ativação para a \(i\)-ésima observação na \(g\)-ésima classe;
  • \(c\) é o número total de classes;
  • \(\sigma(z_{i,g})\) é a saída da função de função de ativação (nesse caso o softmax), e também é a probabilidade (\(p_{i,g}\)) prevista da \(i\)-ésima observação na \(g\)-ésima classe.

Essa função transforma o vetor de valores \(z_i\) em um vetor de probabilidades que somam 1, sendo usada geralmente na camada de saída de modelos de classificação.

Função de Perda (Loss Function)



Aplicação:

  • Classificação Binária: Usada quando estamos classificando dados em duas classes (e.g., email spam ou não spam).
  • Classificação Multiclasse: Usada quando estamos classificando dados em mais de duas classes (e.g., reconhecimento de dígitos manuscritos).

Vantagens:

  • Leva em consideração a incerteza do modelo ao prever probabilidades.
  • Penaliza previsões de alta confiança que estão incorretas mais fortemente.

Função de Perda (Loss Function)



RMSE (Root Mean Squared Error)

RMSE é uma função de perda comumente usada em problemas de regressão. Ela mede a média das diferenças quadradas entre os valores previstos e os valores reais.

Fórmula:

\[\text{RMSE} = \sqrt{\frac{1}{n} \sum_{i=1}^{n} (\hat{y}_i - y_i)^2}\]

Onde:

  • \(n\) é a quantidade de observações;
  • \(\hat{y}_i\) é o valor previsto da \(i\)-ésima observação;
  • \(y_i\) é o valor verdadeiro da \(i\)-ésima observação;

Referências para serem utilizadas



BRAGA, A. P.; CARVALHO, A.; LUDEMIR, T. Redes Neurais Artificiais: Teoria e Aplicações. .: [s.n.], 2000.

HOPFWELD, J. J. Neural networks and physical systems with emergent collective computational abilities. Proc. NatL Acad. Sci., v. 79, p. 2554–2558, 1982.

LUDWIG, O.; MONTGOMERY, E. Redes Neurais - Fundamentos e Aplicações com Programas em C. .: Ciência Moderna, 2007.

MINSKY, M.; PAPERT, S. Perceptrons: an introduction to computationational geometry. [S.l.]: MIT Press, 1969.

PINHEIRO, C. A. R. Inteligência Analítica: Mineração de Dados e Descoberta de Conhecimento. .: [s.n.], 2008.

RICH, E.; KNIGHT, K. Inteligência Artificial. .: [s.n.], 1993.

ROSENBLATT, F. Principles of Neurodynamics: Perceptrons and Theory of Brain Mechanisms. .: Washigton, DC, 1962.




OBRIGADO!


Slide produzido com quarto