Tópicos

Técnica de machine learning baseada no funcionamento do cérebro humano. Este tipo de modelos memorizam casos de treino e não padrões de previsão.

Neurões

Recebem um set de inputs, dados e conexões (a quais neurões se ligam). Cada neurão calcula o seu valor de ativação baseando-se nos inputs e nos pesos das conexões. O sinal calculado é, depois, passado para o output após ser filtrado por uma função de ativação.

Funções de Ativação

Funções que executam no final de cada camada e em cada neurónio, alterando o input que é cedido à camada seguinte.

Exemplos:

  • Sigmoid ou logística
  • Linear
  • Tangente hiperbólica (tanh)
  • Gaussian (normal)
  • Relu

Existem ainda funções de ativação que são exclusivamente utilizadas na última camada. É o caso da softmax.

Feedforward

Topologia onde os nós de uma camada estão totalmente conectados aos da camada seguinte. Mais conhecida como Multilayer Perceptron (MLP).

Treino da Rede

O objetivo com o treinamento da rede é fixar os valores dos pesos nas conexões, de modo a minimizar a função de custo.

Existem vários algoritmos de treino, mas abordamos apenas o backpropagation.

Backpropagation

Algoritmo baseado no vetor gradiente, método similar ao gradient descent. Um parâmetro importante, aqui, é o learning rate, que define qual a “distância que se anda”.

O treino executa por um dado número de épocas (epochs) e os exemplos são, tipicamente, divididos em batches.

Existem vários critérios de paragem para o treinamento:

  • Número fixo de épocas atingido
  • Baseado num nível de convergência definido

Forward propagation Realiza-se uma execução normal da rede e calcula-se o erro cometido ao longo das camadas.

Backpropagation Dado o erro cometido, este é propagado para trás e os pesos das conexões são ajustados de forma a que este seja minimizado.

Em suma, uma rede neuronal pode ser definido em termos de:

  • Funções de ativação
  • Uma topologia de rede (número de nós e camadas)
  • Algoritmo de treino

De notar que o número de nós na primeira camada é igual ao número de features existentes nos dados de treino e o número de nós na última camada ao número de outcomes possíveis (número de classes, por exemplo).

Desafios

Durante o treino de redes neuronais é comum o surgimento de alguns problemas.

Underfitting

Pelo facto do modelo ser muito simples ou possuir features insuficientes como input. Isto pode ser reconhecido quando o erro, tanto nos dados de treino como de validação, é muito alto.

Neste caso, o modelo deu underfit pelo facto de não possuir capacidade para aprender alguma coisa. A solução passa por adicionar mais samples, features ou reduzir a regularização do modelo (dropout layers, etc).

Novamente, estamos perante um caso de underfit. No entanto, desta vez o modelo deu underfit porque precisa de mais treino (a perda ainda não estabilizou). A solução passa por aumentar o número de épocas ou então a learning rate.

Overfitting

Modelo demasiado complexo ou treinado durante muito tempo, fazendo com que memorize todos os casos dos dados de treino e generalize pouco.

A solução para prevenir o overfit é, na maioria dos casos, ou reduzir a learning rate ou reduzir a complexidade da rede.

Problemas com os dados

Pode acontecer do problema não estar diretamente no modelo e no seu funcionamento, mas sim na forma como os dados representam o problema.

Aqui estamos perante um caso em que os dados de treino são, em relação aos de validação, muito menos. A solução passa, por exemplo, por realizar cross-validation.

Desta vez, é ao contrário. Os dados de validação são muito menos representantivos que os de treino. A solução passa por adicionar samples aos dados de validação.

Neste caso, os dados de validação são mais fáceis de prever que os de treino (o erro é menor no de validação). A solução passa por garantir que não existem samples duplicadas nos dois conjuntos de dados e que a divisão está a ser justa.