O começo de tudo

A história das redes neurais é curiosa, engraçada e triste ao mesmo tempo. Então, senta que lá vem história...

Certo dia, em 1958, um certo cientista nova-yorkino, chamado Frank Rosenblatt, inspirado pelo trabalho de seus colegas que estudavam sobre o cérebro humano, terminou de projetar um algoritmo que conseguia aprender sozinho a resolver problemas simples. Nascia ali, o Perceptron (que veremos mais adiante no curso).

A ideia inicial do Perceptron, na verdade, era ser uma máquina ao invés de um programa. E foi o que aconteceu. Utilizando o poderosíssimo IBM 704 que fazia 12 mil adições por segundo (só para você ter uma noção, um iPhone 7 faz 300 bilhões) os cientistas construíram uma máquina denominada Mark I Perceptron.

A ideia do Mark I Perceptron era que, para uma dada imagem de entrada, a máquina deveria aprender sozinha a classificar a saída em 0 ou 1.

Mas... 1958? Nem imagens existiam naquela época! Então, como projetaram isso?

Os cientistas na época conectaram 400 foto-células a entrada do Mark I para simular uma imagem 20x20 (um pouco maior talvez do que as letras desse texto). E para permitir a calibração da máquina, cada entrada dessa era conectada a um potenciômetro que eram ajustados automaticamente por motores elétricos para mapear as entradas na saída final 0 ou 1.

The winter is coming... 😔

O Perceptron, na época, foi um sucesso! Afinal de contas, ele foi um dos primeiros algoritmos capazes de aprender sozinho. Além disso, já foi provado que o Perceptron tem garantia de sucesso quando as duas classes são linearmente separáveis. Porém, é aí que está o problema: o Perceptron nada mais é que um classificador binário linear. Ou seja, ele só funciona quando o seu problema é binário (2 classes) e seus dados podem ser separados por uma simples reta. Essas condições, no mundo real, são muito difíceis de acontecer. Só para exemplificar, como você separia os dados abaixo com apenas uma reta?

Fonte da imagem

Pois é. O Perceptron também não consegue resolver esse simples problema (para quem não reparou, o gráfico acima representa a porta XOR). Na época, isso desanimou tanto os estudiosos da área de Inteligência Artificial, que pesquisas nessa área só foram retomadas de fato na década de 80. Tal período ficou conhecido como o inverno da Inteligência Artificial (AI Winter).

Algoritmo de backpropagation

O maior problema do Perceptron era que ele era apenas um só. Intuitivamente, é fácil perceber que um neurônio só não faz uma rede neural (assim como uma andorinha só não faz verão). Pensando assim, muita gente tentou colocar um monte de Perceptrons conectados entre si para tentar resolver um problema. Porém, muitos do que fizeram isso se depararam com um problema: como propagar o erro da saída para as entradas? Em outras palavras, como fazer esse monte de Perceptrons aprenderem ao mesmo tempo sem que um atrapalhe o que o outro aprendeu?".

Pensando nisso, o famoso Geoffrey Hinton desenvolveu o algoritmo backpropagation na década de 80. Utilizando o conceito de gradientes e regra da cadeia, tal algoritmo pega o erro de uma rede neural e propaga-o até as entradas, fazendo leves ajustes nos parâmetros (pesos) da rede. Com isso, Redes Neurais com mais de um neurônio e mais de uma camada poderiam começar a ser desenvolvidas e treinadas em problemas mais complexos. Como eu disse, poderiam...

O problema era que na década de 80, e mesmo na década de 90, o treinamento de tais redes e aplicação do backpropagation era muito pesado ainda. Mesmo supercomputadores se matavam para treinar e executar tais redes ainda. Então, o que fazer?

Obrigado, gamers!

Mais uma vez o mundo foi salvo graças as pessoas gamers. Isso mesmo. Essa obsessão das pessoas gamers em sempre querer computadores mais potentes e jogos com gráficos cada vez melhores, fez com que a indústria dos computadores, especialmente a das GPUs se desenvolvessem num ritmo assustador - regido pela Lei de Murphy. Mas, o que os jogos têm a ver com o desenvolvimento das Redes Neurais?

A resposta é: matrizes! Como vamos ver num dos próximos assuntos, Redes Neurais tem tudo a ver com matrizes. Basicamente, Redes Neurais fazem um monte de cálculo sobre matrizes, como: soma, multiplicão, operaçõe ponto-a-ponto, etc... E, como GPUs são computadores especializados em cálculos sobre matrizes, o campo das Redes Neurais pode se desenvolver como nunca. Cada vez mais, redes mais complexas e pesadas puderam ser desenvolvidas e treinadas.


Agora que já tivemos uma introdução sobre a história das Redes Neurais, chegou a hora de aprendermos mais sobre elas. Então, prepara um café que chegou a hora de começar os estudos...

Referências

Este conteúdo é baseado nos seguintes materiais: