Mas o que uma rede neural está aprendendo?
- #Machine Learning
- #Python
- #Inteligência Artificial (IA)
A primeira Rede Neural foi proposta em 1944 por Warren McCulloch e Walter Pitts. Mais de oitenta anos depois a ideia continua rendendo frutos e está presente em tecnologias emergentes do nosso tempo, como reconhecimento de voz ou os modelos generativos. Mas o que eles estão aprendendo? E por que isso importa? Nesse ensaio busco responder essas duas perguntas.
Contexto Histórico
Warren McCulloch e Walter Pitts, pensaram em um mecanismo capaz de simular, vagamente, a mente humana. Em relação às arquiteturas modernas, haviam limitações e diferenças, por exemplo, em McCulloch et al. (1944), eles não apresentaram método de treinamento das redes neurais. Também carecia de dois conceitos contemporâneos, "weights“ e "threshold”.
A primeira rede neural treinável foi apresentada uma década mais tarde, em 1957 por Frank Rosenblatt. O Perceptron, como o chamou, possuía semelhanças com nossos modelos atuais, embora a limitação de apenas uma camada (layer). A alegria da descoberta durou pouco. Em Perceptrons, Minsky e Papert apontaram limitações, que faziam do Perceptron uma arquitetura impraticável para alguns problemas. Como visto Raschka et al (2023), umas destas limitações consistia na impacidade da arquitetura de separar dados não-linearmente separáveis, isto ficou conhecido como, “o problem do XOR".
Fig1: A arquitetura do Perceptron (image source: https://towardsdatascience.com/perceptrons-the-first-neural-network-model-8b3ee4513757?gi=43aefb609b6b)
Nos dias atuais, avanços na matemática e a popularização das Graphical Process Units (GPUs), despertaram o interesse em aplicar os conceitos das Redes Neurais, o que antes se limitava a duas ou três camadas, pode conter hoje, cinquenta. Daqui surge o termo, “Deep” em “Deep Learning”.
O que é uma rede neural?
Entenda uma rede neural, também, como uma forma de Aprendizado de Máquina (Machine Learning). Na prática, elas também usam dados de treinos para aprenderem novas habilidades. Para isso elas contam com alguns elementos como pesos (weights) e threshold, através de um processo interativo esses valores, que são iniciados aleatoriamente, são ajustados de modo a possibilitar a rede neural “aprender”.
Função de Ativação
Então porque simplesmente não ficamos com os modelos convencionais de Machine Learning? Bem, porque desta forma não somos capazes de aprender não-linearidades. vamos recordar a definição de um modelo linear:
Apenas adicionar mais camadas não é o suficiente para capturar padrões mais complexos (do resultado desta equação), há a necessidade de um ingrediente que torna isto possível, no contexto das redes neurais chamamos esse ingrediente de Função de Ativação.
BackPropagation
Finalmente, é preciso que os nossos parâmetros sejam atualizados, em um contexto onde há inúmeros pesos (w). A forma mais popular de simplificar o uso do Gradient Descent (GD) para múltiplas camadas é usado um algoritmo chamado BackPropagation (BP). O gif abaixo contém uma síntese de todos esses elementos, para este caso a função de ativação escolhida foi a Sigmoid.
Fig.2 Funcionamento de uma rede neural: inputs, layer, weights, neuron, outputs. (image source: https://developers.google.com/machine-learning/crash-course/neural-networks/activation-functions)
Conclusão
Em suma, todos esses anos de avanços e o que possibilita termos as tecnologias de hoje são possíveis, graças a capacidade das redes neurais de captarem padrões não-lineares, como no mundo real os dados são mais complexos do que esperamos, as redes neurais se tornaram estrelas por esta capacidade. Isto é possível também, devido a quantidade de camadas o que nos faz recordar a importância das GPUs, e de métodos de treinamento eficientes como a BP (LeCun et al 1998).
Referências
McCulloch, W. S., & Pitts, W. (1943). A logical calculus of the ideas immanent in nervous activity. The bulletin of mathematical biophysics, 5, 115-133.
Rosenblatt, F. (1958). The perceptron: a probabilistic model for information storage and organization in the brain. Psychological review, 65(6), 386.
Minsky, M., & Papert, S. A. (2017). Perceptrons, reissue of the 1988 expanded edition with a new foreword by Léon Bottou: an introduction to computational geometry. MIT press.
Raschka, S., Liu, Y. H., & Mirjalili, V. (2022). Machine Learning with PyTorch and Scikit-Learn: Develop machine learning and deep learning models with Python. Packt Publishing Ltd.
LeCun, Y., Boser, B., Denker, J. S., Henderson, D., Howard, R. E., Hubbard, W., & Jackel, L. D. (1989). Backpropagation applied to handwritten zip code recognition. Neural computation, 1(4), 541-551.
Nota do autor
- Seja paciente sobre possíveis erros gramaticais, a julgar pela recorrência deles você sabe o quanto eu usei o ChatGPT ou qualquer outra ferramenta para escrever o mesmo.
- Este trabalho levou tempo para ser pesquisado e filtrado, escrever é uma tarefa nobre e árdua. Se sentir confortável, deixe seu feedback (construtivo).
- Em caso de dúvidas, deixe nos comentários abaixo (farei o possível para responder a tempo).
Leituras Adicionais, para se aprofundar no tema:
Você também pode me encontrar aqui, ou me seguir na DIO para conteúdo dessa natureza: