Introdução teórica a Neural Network — Deep Learning — Parte 1

Entenda como funciona uma Rede Neural simples, o que é Função de Ativação: essência da previsão de um neurônio.

Como o nome fala, ele se baseia no funcionamento na rede neural humana, logo é importante saber alguns nomes que podem ser encontrados quando for aprofundar no tema.

Os neurônios se comunicam através de sinapses, que é a região onde dois neurônios entram em contato. Os impulsos recebidos por um neurônio A, em um determinado momento, são processados, e atingindo um dado inicio de ação, o neurônio A dispara, produzindo uma substância que flui para o axônio, que pode estar conectado a um dendrito de um outro neurônio B. O impulso pode diminuir ou aumentar a polaridade da membrana pós-sináptica, inibindo ou excitando a geração dos pulsos no neurônio B. Este processo depende de vários fatores, como a geometria da sinapse e o tipo de neurotransmissor.

Agora voltando para a nossa realidade, a Computação, o NNA (Neural Network Analysis) tem o mesmo racional: Os inputs são como se fossem os estímulos ou impulsos, enviados para os Neurônios que são descritos como Hidden no gráfico abaixo. Depois de recebido o impulso, ele é processado e é enviado para gerar três reações (resultados).

Esse algoritmo pode ser usado para fazer predição numérica ou de classificação, então resolve problemas supervisionados e não-supervisionados.

A Estrutura de uma Rede

Cada neurônio é representado por um valor que varia entre 0 e 1. E esse valor é definido por influência de 4 variáveis que são utilizados na sinapse (a "setinha" preta do gráfico acima):

  • Input: São os valores alimentados no modelo
  • Peso: é um valor pré definido que varia de acordo com as iterações
  • Bias: é um valor que soma ao final que serve para calibrar o valor final
  • Função de ativação: é a função que irá colocar os valores dentro do range 0 e 1

Para ajudar a visualizar, o gráfico ao lado mostra um NNA com uma camada e um output.

  • O círculo vermelho se refere um dos Input (a…)
  • O círculo verde se refere um dos Pesos(w…)
  • O círculo azul se refere ao bias da camada, que é adicionado na fórmula de NNA como uma constante.
  • O círculo amarelo se refere a função de NNA que é o somatório da multiplicação de todos os inputs e pesos, somado a constante bias.
  • O círculo roxo, entra por último e refere a função de ativação.

Em seguida, temos uma outra representação gráfica com as mesmas informações só que demonstrado de maneira um pouco diferente.

Aprofundando nas Múltiplas Camadas

Se você entendeu tudo até agora, parabéns!! O básico de NNA você já sabe, agora vamos complicar mais um pouco (mas nada de outro mundo não).

O que acabamos de ver é um exemplo mais simples, porque normalmente NNA possui inúmeras camadas escondidas (Hidden Layers) ou neurônios. Mas o racional não se altera como podemos ver abaixo.

Antes de entrar no assunto de treinar os pesos e bias, é importante saber entender como funciona a função de ativação porque, ao meu ver, é o pulo do gato de NNA.

A função de ativação é a etapa onde transformamos o valor da fórmula de NNA em um valor entre 0 e 1. Existe modelos extremistas, que consideram apenas o valor binário 0 — Não e 1 — Sim. Entretanto, um bom costume de avaliar é criar um threshold para considerar ou não, em outras palavras criar uma percentual a se considerado. Esse percentual é conhecido como valores intermediários de ativação, que podem ser por exemplo, valores acima de 70% ou 0,7.

Agora, o valor de Y pode ser qualquer coisa entre -inf e + inf. O neurônio realmente não conhece os limites do valor. Então, como decidimos se o neurônio deve ou não ser acionado?

Decidimos adicionar “funções de ativação” para esse propósito. Para verificar o valor Y produzido por um neurônio e decidir se as conexões externas devem considerar esse neurônio como Sim ou Não. Ou melhor, digamos - "ativado" ou não.

Até agora entendido né? Mas, matematicamente falando, o que é função de ativação?

Tipos de Funções de Ativação

No gráfico acima são demonstradas 6 diferentes tipos de funções de ativação.

Função Logística ou Sigmoid

A linha azul e verde se referem a Logística Regressão ou Sigmoid . A resposta sempre será entre 0 ou 1, normalmente usada para problemas de predição da probabilidade já que é de se esperar valores no mesmo intervalo.

Mas o que são esses números entre parênteses? Se chama de slope, ou valor de inclinação, que é a relação entre o valor de entrada e de resposta. Um valor padrão tem um slope de 1,0. Quando é menor que 1.0, a curva é mais superficial, se for maior, a curva é mais acentuada.

A função sigmoid é uma das mais utilizadas hoje em dia, entretanto, existe alguns problemas oriundos dessa função. O primeiro seria que ela pode ficar presa na fase de treino, fazendo com que a utilização da função softmax seja mais adequada mesmo sendo mais generalista (ideal para problemas de classificação de multiclasses).

Mas porque ele pode ficar presa na fase de treino?

Nota-se que o valor do eixo Y tende a variar muito menos do que o eixe X. Isso irá levar o gradiente ser muito pequeno naquela região.

Se o gradiente for muito pequeno ("vanishing gradients"), o modelo 'recusa' a aprender ou fica muito lento. O que fazer quando isso acontece?

Função Tanh

Não se preocupe! Existe uma variação do sigmoid chamada de Tanh que também está representado no gráfico na cor vermelha.

Como pode ver, a função Tanh é não linear e varia entre 1 e -1, logo não precisa se preocupar em estourar o resultado. O gradiente é mais forte do que sigmoid, sendo que ainda sim, pode ocorrer problemas de “vanishing gradients”.

Função ReLu

A reta ReLu de cor verde claro com azul, é a única que tem um comportamento linear. Contudo, a natureza dela é não linear, representando valores entre 0 e +inf.

Uma vantagem dela, é em termo de desempenho computacional. Dizemos que temos uma RN com inúmeras camadas com inúmeros neurônios. A ReLu não terá um problema de desempenho como teria a Sigmoid e Tanh, porque ela considera o primeiro quadrante apenas, o restante é descartado. Só que nem tudo são flores, por ele não considerar valores negativos o gradiente pode ser zero. Isso se deve que naquela região os valores dos pesos não irão se ajustar devido ao gradiente zero, isso irá levar a um erro em seu modelo. Existem algumas variações que foram feitas para mitigar esse tipo de possível caso.

Função Softplus

A Softplus (linha rosa) é uma variação da ReLu, só que mais suave e a sua derivada origina uma função logística. Já a função Gaussiana (linha amarela) ela é muito custosa operacionalmente e não traz grandes variações para as demais, fazendo com que seja menos atrativa para ser utilizada.