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 conceito-chave final 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

  1. Calcule os seguintes gradientes: dz, d_weights, d_biases e da_prev no método backward() da classe Layer.
  2. Calcule o output do modelo no método fit() da classe Perceptron.
  3. Calcule da (danda^n) antes do loop, que é o gradiente da função de perda em relação às ativações de saída.
  4. Calcule da e realize a retropropagação no loop, chamando o método apropriado para cada uma das camadas.

Se o treinamento for implementado corretamente, dado o learning rate de 0.01, a perda deve diminuir continuamente a cada época.

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

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 conceito-chave final 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

  1. Calcule os seguintes gradientes: dz, d_weights, d_biases e da_prev no método backward() da classe Layer.
  2. Calcule o output do modelo no método fit() da classe Perceptron.
  3. Calcule da (danda^n) antes do loop, que é o gradiente da função de perda em relação às ativações de saída.
  4. Calcule da e realize a retropropagação no loop, chamando o método apropriado para cada uma das camadas.

Se o treinamento for implementado corretamente, dado o learning rate de 0.01, a perda deve diminuir continuamente a cada época.

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