Redes Neurais Artificiais
Conceito, perceptrons e MLP
Inspiração biológica
Como o próprio nome diz, as redes neurais artificiais são baseadas na rede de neurônios biológica, que são responsáveis pelo processamento cerebral.
A entrada de um neurônio é formada pelas saídas de vários outros neurônios.
A comunicação é realizada por neurotransmissores, que transportam os sinais quimicamente entre os neurônios. Cada neurônio recebe essa comunicação com pesos em cada entrada vinda dos outros neurônios e o neurônio é ativado se a soma ponderada de suas entradas for maior que um limiar, que pode ser definido de diferentes maneiras (veremos um exemplo em breve).
Processo de aprendizado
O aprendizado ocorre através de modificações constantes nas sinapses que conectam os neurônios, de acordo com a liberação de neurotransmissores. Logo, de acordo com novos eventos, algumas ligações entre neurônios são fortalecidas, enquanto outras são enfraquecidas.
O ajuste nas ligações dos neurônios é uma das principais características desse modelo, um dos seus superpoderes 🚀.
Redes Neurais Artificiais — RNAs
Esses modelos aprendem funções matemáticas (dada uma entrada ele aprende a responder saídas específicas, até se tornar uma função) e podem ser usados tanto para regressão quanto para classificação.
A disposição desse modelo é similar ao funcionamento do sistema biológico, onde os neurônios podem ser ativados por estímulos de entrada (função de ativação).
Entretanto é bom lembrar que esse é um modelo inspirado biologicamente (o cérebro possui cerca de 100 bilhões de neurônios, enquanto as RNAs ficam abaixo de 1 mil normalmente).
A entrada seriam os valores que temos e nas arestas teríamos os pesos para cada neurônio, na camada oculta são realizados os cálculos e temos o resultado, que pode ser a classificação ou regressão. Aqui ilustramos apenas uma camada oculta, mas podem haver várias camadas intermediárias.
Cada camada realiza o mesmo cálculo, geralmente baseado na soma ponderada das entradas na unidade. O conhecimento obtido fica armazenado nos pesos dos neurônios.
Esse modelo é caixa preta, ou seja, é difícil conseguir extrair o conhecimento sobre o aprendizado obtido para interpretação (quando não é impossível).
É um modelo de aprendizado supervisionado, ou seja, fornecemos os dados rotulados com as classes e representados numericamente para o modelo aprender. E posteriormente conseguimos classificar uma nova instância (ou estimar o valor de saída, no caso da regressão).
Existem duas tarefas preliminares essenciais antes da realização do treinamento das redes:
- Escolha da arquitetura de rede (número de neurônios e de camadas ocultas);
- Escolha da função de ativação dos neurônios.
Perceptrons
Esse foi o primeiro e mais simples modelo de redes neurais artificias proposto por Rosenblat (1959).
Ele é descrito com vários neurônios de entrada com seus valores ponderados e um único neurônio de saída que possui uma função de ativação, que em sua forma mais simples podem ser uma função de threshold ou logística.
A aprendizagem nos perceptrons consiste em dois elementos:
- Os pesos entre as unidades de entrada e saída;
- O valor do threshold.
O treinamento ocorre da seguinte maneira:
- Os valores dos pesos são inicializados aleatoriamente, geralmente no intervalo de (-1, 1);
- Para cada exemplo de treinamento é calculada a saída observada da rede o(E);
- Se a saída desejada t(E) for diferente da observada então os pesos da rede são ajustados para que elas se aproximem;
- Isso é feito aplicando-se a regra de aprendizado do perceptron.
O aprendizado não termina necessariamente após todos os exemplos terem sido usados, é possível repetir o ciclo (época) novamente até que se produza as saídas corretas, ou boas o suficiente (chamada de convergência).
A regra geral de aprendizagem acontece da seguinte maneira: quando t(E) for diferente de o(E), então é adicionado um delta[i] ao peso de w[i], onde delta[i] é definido como:
Onde:
- n (eta) é a taxa de aprendizado, ou quão rápido o aprendizado acontecerá, é importante dar passos pequenos no aprendizado para garantir que o ponto ideal não seja deixado para trás;
- t(E) - o(E) é a diferença entre o valor espero e o valor obtido, nós dá a direção do aumento ou diminuição dos pesos;
- xi é o valor de entrada do neurônio.
Essa regra é aplicada em várias épocas, e pode ser parada de acordo com diferentes critérios:
- Quando classificamos um determinado número menos de exemplos de forma errada;
- Quando os valores de delta[i] são muito pequenos;
- Quando o número máximo de épocas é alcançado (nós definimos ele).
Decepção e avanço em redes neurais
O perceptron é um classificador linear, ou seja, é possível classificar instâncias que sejam linearmente separáveis (um exemplo simples é a operação lógica XOR), na época que esse fato foi provado cientificamente houve uma grande decepção por toda a expectativa que havia sobre as redes neurais, entretanto alguns anos depois ocorreu o desenvolvimento das MLP — Multilayer Perceptron que permitem aprender conceitos bem mais complexos.
MLP — Multilayer Perceptron
A Rede Perceptron Multicamada pode ser pensada como uma rede formada por vários neurônios similares do tipo perceptron. Nesse caso nós temos pelo menos uma camada oculta, ao contrário do perceptron que não possuía mais camadas intermediárias.
Apesar da sua robustez, o aprendizado na MLP baseia-se no cálculo diferencial, o que significa que funções como a utilizada no perceptron de threshold não podem ser utilizadas, já que não são diferenciáveis no ponto em questão. Então temos que usar uma função que seja diferenciável, e a função sigmóide é bastante utilizada para isso.
Arquitetura da rede
As MLPs possuem os neurônios das camadas vizinhas completamente conectados e possuem arquitetura do tipo feedforward, ou seja, os valores são propagados numa única direção, ao contrário de outras categorias onde existem ciclos de retroalimentação.
Aprendizado — Backpropagation
O aprendizado ocorre de maneira similar ao perceptron, a diferença está em como os pesos da rede são ajustados.
Agora não estamos trabalhando apenas com um erro, mas com uma lista de erros entre todos os neurônios nas diferentes camadas.
- Primeiro calcula-se o termo de erro para as unidade na camada de saída;
- Depois calcula-se os termos de erro para a unidade oculta, com as informações obtidas anteriormente, isso acontece pois o algoritmo também leva em consideração a influência dos sinais vindos das camadas ocultos para as camadas de saída.
Como você pode notar, é realizada de trás para frente, por isso tem o nome de backpropagation.
Os critérios de parada podem assumir os mesmos do perceptron.
O algoritmo de backpropagation não consegue identificar mínimos globais, ou seja, é possível que durante a curva de erro seja detectado um mínimo local (um erro mínimo no qual a próxima iteração resulta em um erro maior) que não corresponde ao global e nesse algoritmo nós não conseguimos detectar isso.
Para evitar isso uma das soluções é utilizar o termo momentum, que é parte do valor anterior de cada iteração, isso faz com que o movimento da curva dos erros seja acelerada e que os vales (mínimos locais) seja ultrapassados. Outro benefício é acelerar a convergência do algoritmo.
Possíveis problemas de MLPs
Apesar do poder das MLPs, também existem alguns problemas:
- Treinamento lento;
- Quanto maior a rede, maior o número de parâmetros para serem estimados (e consequentemente maior o erro de estimação, o que trás o perigo de overfitting);
- Sensibilidade à variação dos valores de inicialização, mínimos locais podem ser descobertos ou encobertos dependente de onde começamos na curva de erro;
- Não interpretável (caixa-preta);
- Número e magnitude de outliers impactam no seu desempenho.
Gostou do conteúdo?
Siga a Luna no Medium. E não se esqueça de deixar alguns aplausos 👏🏽Qualquer dúvida ou sugestão é só deixar nos comentários!