My Authors
Read all threads
O que os neurônios, que você aprende na escola, tem a ver com inteligência artificial? E como, graças a eles, temos hoje um dos melhores métodos em IA?

Vamos falar delas: redes neurais! 🧠

PARTE 1

#AIThreadBR com pitada de #NeuroThreadBR
Não é de hoje a ideia de obter uma inteligência artificial. Como? Sendo q a própria inteligência biológica é um tema ainda estudado e discutido?

Nos anos 40 propuseram "implementar a ideia de neurônios para um computador".

Isso ajudaria entender como os neurônios se comunicam!
Neurônios são compostos por:

🔷 dendritos que recebem uma informação
🔷 núcleo que processa informação
🔷 axônio que passa a informação pra outro neurônio
Na década de 60, propuseram uma forma computacional para o neurônio, o perceptron, é muito parecido com os neurônios biológicos e já era funcional. Ele recebe informação por uma espécia de dendritos, processa a informação no seu "núcleo" e transmite uma saída análoga à um axônio.
Assim como não temos um neurônio no corpo, a ideia era juntar todos esses perceptrons em uma espécie de rede. Essa rede conectava um neurônio no outro. Aí nascia o que conhecemos hoje como rede neural.

A rede neural é composta por camadas de neurônios. A primeira camada é
chamada de camada de entrada e a última é camada de saída. As do meio recebem um nome engraçado: redes escondidas.
E como funciona essa rede neural? Então vamos lá na receita:

1- Você precisa de dados de entrada e dados de saída.

Por exemplo, você quer uma rede que aprenda a classificar se é gato ou se não é.
A entrada pode ser uma foto de gato como entrada e a saída ser 1 ou "Verdadeiro" (é um gato). Ou a foto de um cachorro e a saída ser 0 ou "Falso" (não é um gato).

Suponha que tenha várias dessas fotos de cachorros e gatos, cada um com sua classificação 1/Verdadeiro ou 0/Falso.
2- Os dados de entrada vão ser inseridos na cama de entrada.

Imagina assim, cada neurônio da cama de entrada vai receber um pixel dessa imagem.
3- Os neurônios vão passar informação para camada escondida.

Em geral, todo neurônio da camada escondida recebe informação de todos neurônios anteriores. Se a entrada foi [0, 1, 2], todos neurônios vão receber [0, 1, 2]. Ok?
4- Os neurônios da camada escondida vão processar essa informação.

Assim como nos neurônios biológicos tem o processamento no núcleo, aqui eles também vão processar. Em geral, eles dão um peso para cada input e somam.
Se eles recebem [0, 1, 2], eles dão um peso [w1, w2, w3] e somam: w1*0 + w2*1 + w3*2 = z (um número).
Esse número z vai passar por uma função não-linear! Não vou entrar nos detalhes da importância da não-linearidade mas é importante que seja não linear. A função mais comum é a ReLU:

ReLU = max(0, z)

Se z for maior que 0, ReLU = z
Se z for menor que 0, ReLU = 0
Isso vai continuar por toda rede neural!

5- Na última camada, vai ter um neurônio que vai dar como saída seu número "z".

Aqui é a resposta que queremos! Se o dado que entrou foi a foto de um gato, queremos que esse último z = 1.
Se for foto de um cachorro, queremos que z = 0.
Supondo que a foto seja um gato, e z saiu igual 2, DEU RUIM! O QUE FAZER?

Primeiro, calma, quantifica o quão errado esse resultado via uma função de erro. Função de erro é qualquer função que quantifica a diferença entre dois valores. A mais comum é a própria diferença (2 - 1).
Essa função de erro recebe o nome de LOSS FUNCTION ou função de perda.

A loss function tem um papel importante porque já como ela quantifica a diferença, é possível avisar todos neurônios o quanto tava errado e o que eles devem mudar nos seus pesos [w1, w2, w3].
6- Avisar as mudanças pros neurônios!

Esse aviso é por meio de algo chamado derivadas e gradiente descendente. O gradiente descendente ajuda a encontrar quais valores de [w1, w2, w3] dão o menor valor pra loss function. E avisa os neurônios o quanto eles devem mudar nos pesos!
O gradiente descendente não é algo tão simples pra explicar numa thread mas quem tiver interesse, esse vídeo em português explica direito e com ilustrações como funciona essa etapa:
7- Continuar processo de 2-6 até obter uma loss function esperada!

Quando a loss function chega no valor esperado, a gente diz que a rede convergiu. Quer dizer que a rede tem os melhores pesos para o objetivo que você quer que ela faça.
No nosso caso, isso quer dizer que a rede tem todos pesos ideais pra entender o que é um gato e o que não é um gato!

Em outras palavras, ela aprendeu.
Se você tá pensando que toda vez a gente programa todas essas funções pro computador, não!

Em geral usamos uma ferramenta chamada Tensorflow e Keras que nos ajuda a criar essas camadas de forma simples. Mas criar uma rede neural do zero é uma boa maneira de estudar e aprender!
Estava pensando em falar sobre as irmãs das redes neurais, as redes neurais convolucionais mas a thread vai ficar grande demais! Fica para a parte 2 que pretendo escrever em breve!

Créditos das imagens: towardsdatascience.
Missing some Tweet in this thread? You can try to force a refresh.

Keep Current with Inteligência Artificial BR - #AIThreadBR

Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

Twitter may remove this content at anytime, convert it as a PDF, save and print for later use!

Try unrolling a thread yourself!

how to unroll video

1) Follow Thread Reader App on Twitter so you can easily mention us!

2) Go to a Twitter thread (series of Tweets by the same owner) and mention us with a keyword "unroll" @threadreaderapp unroll

You can practice here first or read more on our help page!

Follow Us on Twitter!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3.00/month or $30.00/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!