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

bookDesafio: Treinamento do Perceptron

Antes de prosseguir com o treinamento do perceptron, lembre-se de que ele utiliza a função de perda de entropia cruzada binária discutida anteriormente. O último conceito fundamental antes de implementar o backpropagation é a fórmula para a derivada dessa função de perda em relação às ativações de saída, ana^n. Abaixo estão as fórmulas para a função de perda e sua derivada:

L=(ylog(y^)+(1y)log(1y^))dan=y^yy^(1y^)\begin{aligned} L &= -(y \log(\hat{y}) + (1-y) \log(1 - \hat{y}))\\ da^n &= \frac {\hat{y} - y} {\hat{y}(1 - \hat{y})} \end{aligned}

onde an=y^a^n = \hat{y}

Para verificar se o perceptron está sendo treinado corretamente, o método fit() também exibe a perda média em cada época. Isso é calculado pela média da perda em todos os exemplos de treinamento naquela época:

for epoch in range(epochs):
    loss = 0

    for i in range(training_data.shape[0]):
        loss += -(target * np.log(output) + (1 - target) * np.log(1 - output))

average_loss = loss[0, 0] / training_data.shape[0]
print(f'Loss at epoch {epoch + 1}: {average_loss:.3f}')
L=1Ni=1N(yilog(y^i)+(1yi)log(1y^i))L = -\frac1N \sum_{i=1}^N (y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i))

Por fim, as fórmulas para o cálculo dos gradientes são as seguintes:

dzl=dalfl(zl)dWl=dzl(al1)Tdbl=dzldal1=(Wl)Tdzl\begin{aligned} dz^l &= da^l \odot f'^l(z^l)\\ dW^l &= dz^l \cdot (a^{l-1})^T\\ db^l &= dz^l\\ da^{l-1} &= (W^l)^T \cdot dz^l \end{aligned}

Os dados de treinamento de exemplo (X_train) juntamente com os rótulos correspondentes (y_train) estão armazenados como arrays NumPy no arquivo utils.py. Além disso, as instâncias das funções de ativação também estão definidas lá:

relu = ReLU()
sigmoid = Sigmoid()
Tarefa

Swipe to start coding

Seu objetivo é completar o processo de treinamento de um perceptron multicamadas implementando o backpropagation e atualizando os parâmetros do modelo.

Siga estes passos cuidadosamente:

  1. Implemente o método backward() na classe Layer:
  • Calcule os seguintes gradientes:
    • dz: derivada da função de perda em relação aos valores pré-ativação, utilizando a derivada da função de ativação;
  • d_weights: gradiente da perda em relação aos pesos, calculado como o produto escalar de dz e o vetor de entrada transposto;
  • d_biases: gradiente da perda em relação aos vieses, igual a dz;
  • da_prev: gradiente da perda em relação às ativações da camada anterior, obtido multiplicando a matriz de pesos transposta por dz.
  • Atualize os pesos e vieses utilizando a taxa de aprendizado.
  1. Complete o método fit() na classe Perceptron:
  • Calcule a saída do modelo chamando o método forward();
  • Calcule a função de perda utilizando a fórmula da entropia cruzada;
  • Calcule danda^n — a derivada da perda em relação às ativações de saída;
  • Faça um loop reverso pelas camadas, realizando o backpropagation ao chamar o método backward() de cada camada.
  1. Verifique o comportamento do treinamento:
  • Se tudo estiver implementado corretamente, a perda deve diminuir de forma constante a cada época ao utilizar uma taxa de aprendizado de 0.01.

Solução

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 10
single

single

Pergunte à IA

expand

Pergunte à IA

ChatGPT

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

Suggested prompts:

Can you explain how the derivative of the binary cross-entropy loss is used in backpropagation?

What is the purpose of printing the average loss at each epoch?

Can you clarify how the gradients are computed using the provided formulas?

close

Awesome!

Completion rate improved to 4

bookDesafio: Treinamento do Perceptron

Deslize para mostrar o menu

Antes de prosseguir com o treinamento do perceptron, lembre-se de que ele utiliza a função de perda de entropia cruzada binária discutida anteriormente. O último conceito fundamental antes de implementar o backpropagation é a fórmula para a derivada dessa função de perda em relação às ativações de saída, ana^n. Abaixo estão as fórmulas para a função de perda e sua derivada:

L=(ylog(y^)+(1y)log(1y^))dan=y^yy^(1y^)\begin{aligned} L &= -(y \log(\hat{y}) + (1-y) \log(1 - \hat{y}))\\ da^n &= \frac {\hat{y} - y} {\hat{y}(1 - \hat{y})} \end{aligned}

onde an=y^a^n = \hat{y}

Para verificar se o perceptron está sendo treinado corretamente, o método fit() também exibe a perda média em cada época. Isso é calculado pela média da perda em todos os exemplos de treinamento naquela época:

for epoch in range(epochs):
    loss = 0

    for i in range(training_data.shape[0]):
        loss += -(target * np.log(output) + (1 - target) * np.log(1 - output))

average_loss = loss[0, 0] / training_data.shape[0]
print(f'Loss at epoch {epoch + 1}: {average_loss:.3f}')
L=1Ni=1N(yilog(y^i)+(1yi)log(1y^i))L = -\frac1N \sum_{i=1}^N (y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i))

Por fim, as fórmulas para o cálculo dos gradientes são as seguintes:

dzl=dalfl(zl)dWl=dzl(al1)Tdbl=dzldal1=(Wl)Tdzl\begin{aligned} dz^l &= da^l \odot f'^l(z^l)\\ dW^l &= dz^l \cdot (a^{l-1})^T\\ db^l &= dz^l\\ da^{l-1} &= (W^l)^T \cdot dz^l \end{aligned}

Os dados de treinamento de exemplo (X_train) juntamente com os rótulos correspondentes (y_train) estão armazenados como arrays NumPy no arquivo utils.py. Além disso, as instâncias das funções de ativação também estão definidas lá:

relu = ReLU()
sigmoid = Sigmoid()
Tarefa

Swipe to start coding

Seu objetivo é completar o processo de treinamento de um perceptron multicamadas implementando o backpropagation e atualizando os parâmetros do modelo.

Siga estes passos cuidadosamente:

  1. Implemente o método backward() na classe Layer:
  • Calcule os seguintes gradientes:
    • dz: derivada da função de perda em relação aos valores pré-ativação, utilizando a derivada da função de ativação;
  • d_weights: gradiente da perda em relação aos pesos, calculado como o produto escalar de dz e o vetor de entrada transposto;
  • d_biases: gradiente da perda em relação aos vieses, igual a dz;
  • da_prev: gradiente da perda em relação às ativações da camada anterior, obtido multiplicando a matriz de pesos transposta por dz.
  • Atualize os pesos e vieses utilizando a taxa de aprendizado.
  1. Complete o método fit() na classe Perceptron:
  • Calcule a saída do modelo chamando o método forward();
  • Calcule a função de perda utilizando a fórmula da entropia cruzada;
  • Calcule danda^n — a derivada da perda em relação às ativações de saída;
  • Faça um loop reverso pelas camadas, realizando o backpropagation ao chamar o método backward() de cada camada.
  1. Verifique o comportamento do treinamento:
  • Se tudo estiver implementado corretamente, a perda deve diminuir de forma constante a cada época ao utilizar uma taxa de aprendizado de 0.01.

Solução

Switch to desktopMude para o desktop para praticar no mundo realContinue de onde você está usando uma das opções abaixo
Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 10
single

single

some-alt