Neural Network — Deep Learning — Parte 4: Introdução Teórica

Source: Deep Learning on Medium

Neural Network — Deep Learning — Parte 4: Introdução Teórica

Nesse quarto e último módulo, irei mostrar como funciona a técnica backpropagation, o que significa vanish gradient e por fim, quais são os modelos de deep learning que são mais usados hoje em dia.

Caso você não tenha conferido os posts anteriores, segue o link:

Backpropagation

Eu fui um dos entusiastas no assunto que precisei contar com um apoio de um exemplo simples e fazer o passo a passo no caderno. Mas feito isso, tudo ficou claro o funcionamento. De ante mão, já digo que é preciso relembrar regra da cadeia mas antes de chegar nesse detalhe, caso você queira saber só os conceitos, irei abordar em seguida.

Executando uma rede neural, é de se esperar que faça um forward propagation, automatizando os pesos (weights) e a tendência (bias). Mas como a rede neural treina e automatiza eles?

O treino começa a partir da função de perda (loss function), em outras palavras cost functions. Pois, é considerado o valor da função de perda volta para rede neural, recalculando seus pesos e tendências.

Por isso o nome, backpropagation, pega o valor do erro e propaga de volta na rede neural para o peso e tendência serem recalculados.

Se você ficou satisfeito até aqui, ótimo! Porque agora, iremos entrar mais no detalhe da matemática que está por trás disso.

Para simplificar o entendimento, vamos pegar a função de perda:

Função de perda

E considerar que nossa rede neural só tenha 2 camadas com um neurônio em cada, como mostra a figura abaixo:

Rede neural simples

Portanto, nossa função de perda será:

onde T é o nosso valor real.

Seguindo, utilizaremos o nosso Erro para atualizar os valores b2, w2, b1 e w1.

Mas como chegaremos ao Gradiente Descendente com a função de perda?

Gradiente Descendente n é taxa de aprendizado

Então, como sabemos que E é uma função de a2, que a2 é uma função de z2 e por fim, z2 é uma função de w2.

Supondo que estejamos usando a função de ativação Sigmoid, nossa derivada ficará estruturada da seguinte maneira:

Portanto o somatório das derivadas:

Uma observação que não é tão intuitiva na regra da cadeia para a2 é que ela resultará na seguinte função:

Caso queiram que exemplifique a derivada de ordem superior, é só me escrever que resolvo em um caderno e mando por email.

Depois de ter calculado a regra da cadeia irá compor o gradiente de w2:

A mesma coisa para tendência, que só precisa alterar uma das derivadas e resultará na seguinte equação:

Agora para fazermos o mesmo para o peso w1 devemos seguir a função abaixo:

Por fim, você realizou um iteração do seu backpropagation. Recapitulando, para completar o treino da rede neural devemos seguir as seguintes etapas:

  • Inicializar o peso e tendência
  • Repetir os seguintes passos:

1- Calcular o output realizando apenas o foward propagation

2- Calcular o erro entre o valor observado e o estimado

3- Atualizar os pesos e tendências com backpropagation

4- Repetir as três etapas acima, até que seja atingido o número de epoch(iterações) especificado, ou atingindo o threshold do erro entre o valor estimado com o observado

Vanish Gradient

Se tivermos uma rede neural utilizando sigmoid como função de ativação, o resultado irá variar entre 0–1. Assim, quando aplicamos backpropagation, os valorem tendem a ficar cada vez menores. Com isso, os neurônios no início da rede neural tendem a levar mais tempo para calcular o backpropagation.

Acaba que impacta na acurácia e no tempo de processamento da rede. Problema de vanish gradient podem ser evitados, optando em utilizar a função de ativação que seja mais adequada para a situação em questão.

Deep Learning

Basicamente, deep learning é redes neurais com muitas camadas ocultas com muitos neurônios. Existem algumas estruturas de Deep Learning que ficaram conhecidas pelas suas aplicações:

  • Redes neurais convolucionais (Convolutional Neural Networks) — CNN são utilizados para problemas que utiliza imagens como input. Sendo assim, usado para reconhecimento de imagem, detecção de objetos, entre outras aplicações de imagens.
Arquitetura de uma CNN

Por ser utilizado em problemas de imagem, os vetores de input serão um dos seguintes formatos (n x m x 1), para escala de cor cinza de cada pixel e (n x m x 3) para imagens coloridas, já que temos 3 paletas de cores primárias: azul, verde e vermelho para cada pixel.

Uma pergunta que possa estar passando na sua cabeça, é porque utilizamos redes convulcionais e não simplesmente transforma em uma dimensão mais simples (n x m) x 1?

Se fizermos isso, resultará em um grande número de parâmetros que deverão ser otimizados, logo terá um custo computacional bastante elevado. Além do mais, utilizar técnicas de redução do número de parâmetro (ex: max pooling), ajudará a prevenir o overfitting.

  • Redes neurais recorrentes (Recurrent Neural Network) — RNN tem uma grande vantagem em utilizar os inputs de forma dependentes, criando assim, uma série de loops fazendo com que utilize não apenas os novos inputs, mas também o output do input anterior.

Um tipo bem popular de RNN é o Long Short Term Memory e GRU, que por sua estrutura, evitam que ocorra vanish gradient. De forma resumida, são técnicas utilizadas para série temporal, textos, tudo que requer uma sequência de aprendizado lógico.

Alguns elementos são utilizados nesse tipo de rede neural, que são: Forget gates, Input gates, Output gates.

Outras variações importantes de RNN são Redes de Hopfield e Máquina de Boltzmann.

  • Auto Encoder — É uma variação de modelos não supervisionado, que substitui uma aplicação, quando conveniente, PCA entre outras. RBMs — conhecidas como Restricted Boltzman Machines é um tipo de auto encoder muito popular, podendo ser aplicado para dados não balanceados e dados faltantes.

Uma outra aplicação de RBM é para redes Deep Belief Network, que tem uma ampla utilização para problemas de conhecer, agrupar e gerar imagens, sequências de vídeos e dados de captura de movimento.

  • Generative Adversarial Network — Essa estrutura é uma das mais emblemáticas e curiosas, na minha opinião. É uma rede com características probabilísticas que consegue criar músicas, imagens do zero. São compostas por duas estruturas de deep learning conhecidas como generadores e discriminadores. O link abaixo é de uma quadro criado a partir de um algoritmo de GAN e foi vendido por USD 432,500.
  • Deep Neural Network Capsules (CapsNet)— CNN captura apenas a existência de recursos e falha em capturar a relação espacial entre um parte e um todo (por exemplo, as posições corretas do olho, nariz, e boca para formar um rosto). Este problema na CNN é devido ao max-pooling que descarta as informações sobre a posição, tamanho, orientação. Como
    uma alternativa à CNN, a rede de cápsulas (CapsNet), uma nova arquitetura de rede introduzida recentemente pela Sabour 2017. O CapsNet captura várias informações com o mesmo recurso, substituindo os neurônios de saída escalar na CNN por cápsulas de saída vetorial; e
    captura relações espaciais de parte a parte inteira, substituindo o
    max-pooling na CNN. O CapsNets demonstrou desempenho superior às CNNs no reconhecimento de dígitos.