Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Camadas de Perceptron | Rede Neural do Zero
Introdução às Redes Neurais com Python

Camadas de Perceptron

Deslize para mostrar o menu

Perceptron é a rede neural mais simples—apenas um neurônio. Para tarefas mais complexas, utiliza-se o perceptron multicamadas (MLP), que contém uma ou mais camadas ocultas que permitem à rede aprender padrões mais ricos.

Um MLP consiste em:

  1. Camada de entrada — recebe os dados;
  2. Camadas ocultas — extraem padrões;
  3. Camada de saída — produz previsões.

Cada camada possui múltiplos neurônios; a saída de uma camada torna-se a entrada da próxima.

Imagem simplificada de rede neural

Pesos e Bias das Camadas

Anteriormente, um neurônio armazenava seus pesos como um vetor e o bias como um escalar. Uma camada, porém, contém vários neurônios, então seus pesos tornam-se uma matriz, onde cada linha armazena os pesos de um neurônio. Os bias de todos os neurônios formam um vetor.

Para uma camada com 3 entradas e 2 neurônios:

W=[W11W12W13W21W22W23],b=[b1b2]W=\begin{bmatrix} W_{11} & W_{12} & W_{13} \\ W_{21} & W_{22} & W_{23} \end{bmatrix}, \qquad b=\begin{bmatrix} b_1 \\ b_2 \end{bmatrix}

Aqui, WijW_{ij} é o peso da jj-ésima entrada para o ii-ésimo neurônio; bib_i é o bias do neurônio ii.

Pesos da camada

Propagação Direta

A propagação direta ativa cada neurônio ao calcular uma soma ponderada, adicionar o viés e aplicar a função de ativação.

Anteriormente, um único neurônio utilizava:

[ z = W \cdot x + b ]

Agora, como cada linha de (W) é o vetor de pesos de um neurônio, realizar a multiplicação de matrizes entre a matriz de pesos e o vetor de entrada calcula automaticamente todas as somas ponderadas dos neurônios de uma vez.

Multiplicação matriz-vetor para a camada

Para adicionar os vieses às saídas dos respectivos neurônios, um vetor de vieses também deve ser somado:

Propagação direta para a camada

Por fim, a função de ativação é aplicada ao resultado — sigmoid ou ReLU, neste caso. A fórmula resultante para a propagação direta na camada é a seguinte:

a=activation(Wx+b)a = activation(Wx + b)

onde aa é o vetor de ativações dos neurônios (saídas).

Classe Layer

Como MLPs são construídas a partir de camadas, definimos uma classe dedicada Layer. Seus atributos:

  • inputs: vetor de entrada (elementos n_inputs);
  • outputs: saídas brutas dos neurônios (elementos n_neurons);
  • weights: matriz de pesos;
  • biases: vetor de bias;
  • activation_function: função de ativação utilizada na camada.

Pesos e bias são inicializados com valores aleatórios de uma distribuição uniforme em ([-1, 1]). inputs e outputs são inicializados como arrays NumPy preenchidos com zeros para garantir formatos consistentes para a retropropagação posterior.

class Layer:
    def __init__(self, n_inputs, n_neurons, activation_function):
        self.inputs = np.zeros((n_inputs, 1))
        self.outputs = np.zeros((n_neurons, 1))
        self.weights = ...
        self.biases = ...
        self.activation = activation_function
Note
Nota

Inicializar inputs e outputs com zeros previne erros de formato e garante que as camadas permaneçam consistentes durante as passagens direta e reversa.

Método Forward

A propagação direta para uma camada calcula as saídas brutas e aplica a ativação:

def forward(self, inputs):
    self.inputs = np.array(inputs).reshape(-1, 1)
    # Raw outputs: weighted sum + bias
    self.outputs = ...
    # Apply activation
    return ...

Redimensionar a entrada para um vetor coluna garante que ela seja multiplicada corretamente pela matriz de pesos e corresponda às dimensões esperadas em toda a rede.

Note
Nota

Se desejar, também posso resumir ainda mais, produzir um diagrama da estrutura da camada ou gerar o código completo e funcional para a classe Layer.

1. O que torna um perceptron multicamadas (MLP) mais poderoso do que um perceptron simples?

2. Por que é necessário aplicar este código antes de multiplicar inputs pela matriz de pesos?

question mark

O que torna um perceptron multicamadas (MLP) mais poderoso do que um perceptron simples?

Selecione a resposta correta

question mark

Por que é necessário aplicar este código antes de multiplicar inputs pela matriz de pesos?

Selecione a resposta correta

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 3

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Seção 2. Capítulo 3
some-alt