AI-For-Beginners/translations/pt-BR/lessons/3-NeuralNetworks/04-OwnFramework
localizeflow[bot] facf1de88c chore(i18n): sync translations with latest source changes (chunk 2/8, 134 changes) 2026-01-30 01:45:58 +00:00
..
lab chore(i18n): sync translations with latest source changes (chunk 2/8, 134 changes) 2026-01-30 01:45:58 +00:00
OwnFramework.ipynb chore(i18n): sync translations with latest source changes (chunk 2/8, 134 changes) 2026-01-30 01:45:58 +00:00
README.md chore(i18n): sync translations with latest source changes (chunk 2/8, 134 changes) 2026-01-30 01:45:58 +00:00

README.md

Introdução às Redes Neurais. Perceptron Multicamadas

Na seção anterior, você aprendeu sobre o modelo de rede neural mais simples - o perceptron de uma camada, um modelo linear de classificação de duas classes.

Nesta seção, vamos expandir esse modelo para um framework mais flexível, permitindo:

  • realizar classificação multiclasse além de classificação de duas classes
  • resolver problemas de regressão além de classificação
  • separar classes que não são linearmente separáveis

Também desenvolveremos nosso próprio framework modular em Python que nos permitirá construir diferentes arquiteturas de redes neurais.

Quiz pré-aula

Formalização de Aprendizado de Máquina

Vamos começar formalizando o problema de Aprendizado de Máquina. Suponha que temos um conjunto de dados de treinamento X com rótulos Y, e precisamos construir um modelo f que faça previsões mais precisas. A qualidade das previsões é medida pela função de perda . As seguintes funções de perda são frequentemente usadas:

  • Para problemas de regressão, quando precisamos prever um número, podemos usar erro absolutoi|f(x(i))-y(i)|, ou erro quadráticoi(f(x(i))-y(i))2
  • Para classificação, usamos perda 0-1 (que é essencialmente o mesmo que acurácia do modelo), ou perda logística.

Para o perceptron de uma camada, a função f foi definida como uma função linear f(x)=wx+b (aqui w é a matriz de pesos, x é o vetor de características de entrada, e b é o vetor de viés). Para diferentes arquiteturas de redes neurais, essa função pode assumir uma forma mais complexa.

No caso de classificação, muitas vezes é desejável obter probabilidades das classes correspondentes como saída da rede. Para converter números arbitrários em probabilidades (por exemplo, para normalizar a saída), frequentemente usamos a função softmax σ, e a função f torna-se f(x)=σ(wx+b)

Na definição de f acima, w e b são chamados de parâmetros θ=⟨w,b⟩. Dado o conjunto de dados ⟨X,Y⟩, podemos calcular um erro geral em todo o conjunto de dados como uma função dos parâmetros θ.

O objetivo do treinamento de redes neurais é minimizar o erro variando os parâmetros θ

Otimização por Gradiente Descendente

Existe um método bem conhecido de otimização de funções chamado gradiente descendente. A ideia é que podemos calcular uma derivada (no caso multidimensional chamada de gradiente) da função de perda em relação aos parâmetros e variar os parâmetros de forma que o erro diminua. Isso pode ser formalizado da seguinte maneira:

  • Inicializar os parâmetros com alguns valores aleatórios w(0), b(0)
  • Repetir o seguinte passo várias vezes:
    • w(i+1) = w(i)-η∂ℒ/∂w
    • b(i+1) = b(i)-η∂ℒ/∂b

Durante o treinamento, os passos de otimização devem ser calculados considerando todo o conjunto de dados (lembre-se de que a perda é calculada como uma soma de todas as amostras de treinamento). No entanto, na prática, usamos pequenas porções do conjunto de dados chamadas minibatches, e calculamos os gradientes com base em um subconjunto de dados. Como o subconjunto é escolhido aleatoriamente a cada vez, esse método é chamado de gradiente descendente estocástico (SGD).

Perceptrons Multicamadas e Retropropagação

A rede de uma camada, como vimos acima, é capaz de classificar classes linearmente separáveis. Para construir um modelo mais rico, podemos combinar várias camadas da rede. Matematicamente, isso significaria que a função f teria uma forma mais complexa e seria calculada em várias etapas:

  • z1=w1x+b1
  • z2=w2α(z1)+b2
  • f = σ(z2)

Aqui, α é uma função de ativação não linear, σ é uma função softmax, e os parâmetros θ=<w1,b1,w2,b2>.

O algoritmo de gradiente descendente permaneceria o mesmo, mas seria mais difícil calcular os gradientes. Dado o princípio da regra da cadeia de diferenciação, podemos calcular as derivadas como:

  • ∂ℒ/∂w2 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂w2)
  • ∂ℒ/∂w1 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂α)(∂α/∂z1)(∂z1/∂w1)

A regra da cadeia de diferenciação é usada para calcular as derivadas da função de perda em relação aos parâmetros.

Note que a parte mais à esquerda de todas essas expressões é a mesma, e assim podemos calcular as derivadas de forma eficiente começando pela função de perda e indo "para trás" através do grafo computacional. Assim, o método de treinamento de um perceptron multicamadas é chamado de retropropagação, ou 'backprop'.

grafo computacional

TODO: citação da imagem

Vamos abordar a retropropagação com muito mais detalhes em nosso exemplo no notebook.

Conclusão

Nesta lição, construímos nossa própria biblioteca de redes neurais e a usamos para uma tarefa simples de classificação bidimensional.

🚀 Desafio

No notebook que acompanha, você implementará seu próprio framework para construir e treinar perceptrons multicamadas. Você poderá ver em detalhes como as redes neurais modernas operam.

Acesse o notebook OwnFramework e trabalhe nele.

Quiz pós-aula

Revisão e Autoestudo

Retropropagação é um algoritmo comum usado em IA e ML, vale a pena estudar em mais detalhes

Tarefa

Neste laboratório, você será solicitado a usar o framework que construiu nesta lição para resolver a classificação de dígitos manuscritos do MNIST.