As Arquiteturas Cognitivas: Descodificando o Funcionamento das Redes Neurais
- Kauan Pinto Peruna
- 29 de set.
- 3 min de leitura
As redes neurais são uma solução super eficiente para lidar com funções-alvo de valores reais, discretos ou vetoriais. Elas brilham quando se trata de decifrar dados complexos e difíceis de interpretar. Nos últimos anos, têm mostrado resultados incríveis em tarefas como reconhecimento de escrita à mão, fala, objetos e até em desafios de Processamento de Linguagem Natural (PLN).
Podemos pensar nelas como funções do tipo: NN: X Y, onde X pode ser um espaço contínuo ([0,1]n) ou discreto ({0,1}n), e Y pode ser algo como [0,1]ou {0,1}. Assim, elas podem ser classificadoras ou até aproximar outras funções de valores reais.
Embora o nome tenha vindo de uma inspiração biológica, a ligação com o que sabemos sobre sistemas neurais reais é bem pequena. No fundo, as redes neurais são apenas um algoritmo poderoso com uma arquitetura bem definida.
Ah, e sabe o que é mais legal? Depois de um tempo apagadas, desde os anos 90, elas voltaram com tudo, graças a computadores mais rápidos e potentes!
1.
Atualmente, o avanço das redes neurais se deve principalmente às novas arquiteturas, como o uso de GPUs (Graphics Processing Unit) e processamento paralelo e à disponibilidade de muito mais dados do que antes. Curiosamente, desde os anos 80, quando as redes neurais eram usadas para reconhecimento óptico de caracteres (OCR), quase nada mudou nos algoritmos. O que realmente deu o boost foi a evolução na arquitetura.
Uma visão bem interessante e moderna sobre redes neurais é o papel das representações intermediárias. Antes, eram vistas apenas como mais um tipo de aproximador de funções. Agora, o pessoal acredita que as camadas ocultas (as representações intermediárias geradas durante o aprendizado) podem ter significado real. Essa ideia tem ganhado força em aplicações como aprendizado por transferência (transfer learning).
1.1 Unidades Básicas
Em uma função linear, tudo gira em torno de uma unidade básica: oi=wx o famoso produto escalar entre os pesos (w) e os valores de entrada (x) que gera uma saída. Mas, em redes neurais, precisamos de não-linearidade para que elas sejam mais expressivas. Se tudo fosse linear, mesmo empilhando várias camadas, ainda teríamos só outra função linear, sem ganhar nada de poder.
Uma solução seria usar o sinal do produto escalar, tipo: oi=sgn(w·x). Mas isso não funciona aqui porque esse tipo de unidade não é diferenciável, atrapalhando muito o treinamento usando o gradiente descendente.
Como precisamos calcular e propagar os erros da saída até as entradas, usamos unidades com limiares que sejam diferenciáveis, como as famosas funções de ativação (ReLU, sigmoide, tanh). Elas são o segredo para treinar redes neurais e dar a elas todo o poder que têm hoje.

Uma maneira de adicionar não-linearidade diferenciável é usando uma aproximação suave e não-linear:
oi=[1+exp(-wx)]-1
Olha só! Ela parece muito com uma função de degrau. Essa ideia foi criada nos anos 70, mas não exatamente no contexto de redes neurais.
O lance básico é a soma linear. A entrada total de uma unidade é definida como:

1.2 História: Computação Neural
Em 1943, McCullough e Pitts mostraram que unidades de limiar linear eram expressivas, podiam ser usadas para calcular funções lógicas e — ajustando corretamente os pesos — poderiam construir portas lógicas básicas.
AND: wij=Tj/n
OR: wij=Tj
NOT: usa peso negativo
Com essas portas básicas, podemos circuitos lógicos, máquinas de estados finitos e até computadores. Além disso, como as representações DNF (Formal Normal Disjuntiva) e CNF (Forma Normal Conjuntiva) são universais, qualquer função booleana pode ser definida usando uma rede de duas camadas.
O aprendizado veio logo depois. Em 1949, Hebb sugeriu que, se duas unidades estão ativas (disparando), os pesos entre elas devem aumentar, como indica a seguinte equação:
wij=wij+Roio
Na qual é uma constante chamada taxa de aprendizado, que age sobre o produto das ativações.
Em 1959, Rosenblatt sugeriu que, quando um valor de saída alvo é fornecido para um único neurônio com entrada fixa, ele pode mudar os pesos incrementalmente e aprender a produzir a saída, usando a regra de aprendizado do perceptron.
Isso levou ao algoritmo de aprendizado do perceptron, o qual é a base do aprendizado em máquinas hoje em dia.
Referências:
1. Development and Application of Artificial Neural Network. Acesso em: 06/01/2024. Disponível em: https://link.springer.com/article/10.1007/s11277-017-5224-x
2. Neural Network Dynamics. Acesso em: 06/01/2024. Disponível em:
3. Introduction to Artificial Neural Network. Acesso em: 06/01/2024. Disponível em: https://scholar.google.com.br/scholar?hl=pt-BR&as_sdt=0%2C5&q=neural+network&oq=#d=gs_qabs&t=1736645689880&u=%23p%3DX41tKzl-oAYJ
4. A view of artificial neural network. Acesso em: 06/01/2024. Disponível em: https://ieeexplore.ieee.org/abstract/document/7012785/
5. Convolutional Neural Network. Acesso em: 06/01/2024. Disponível em: https://link.springer.com/chapter/10.1007/978-1-4842-2845-6_6
06. Neural Network model and deep learning. Acesso em: 06/01/2024. Disponível em: https://www.cell.com/current-biology/fulltext/S0960-9822(19)30204-0
Comentários