Desafio: 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, an. Abaixo estão as fórmulas para a função de perda e sua derivada:
Ldan=−(ylog(y^)+(1−y)log(1−y^))=y^(1−y^)y^−yonde an=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=−N1i=1∑N(yilog(y^i)+(1−yi)log(1−y^i))Por fim, as fórmulas para o cálculo dos gradientes são as seguintes:
dzldWldbldal−1=dal⊙f′l(zl)=dzl⋅(al−1)T=dzl=(Wl)T⋅dzlOs 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()
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:
- Implemente o método
backward()na classeLayer:
- 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 dedze o vetor de entrada transposto;d_biases: gradiente da perda em relação aos vieses, igual adz;da_prev: gradiente da perda em relação às ativações da camada anterior, obtido multiplicando a matriz de pesos transposta pordz.- Atualize os pesos e vieses utilizando a taxa de aprendizado.
- Complete o método
fit()na classePerceptron:
- 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 dan — 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.
- 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
Obrigado pelo seu feedback!
single
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
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?
Awesome!
Completion rate improved to 4
Desafio: 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, an. Abaixo estão as fórmulas para a função de perda e sua derivada:
Ldan=−(ylog(y^)+(1−y)log(1−y^))=y^(1−y^)y^−yonde an=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=−N1i=1∑N(yilog(y^i)+(1−yi)log(1−y^i))Por fim, as fórmulas para o cálculo dos gradientes são as seguintes:
dzldWldbldal−1=dal⊙f′l(zl)=dzl⋅(al−1)T=dzl=(Wl)T⋅dzlOs 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()
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:
- Implemente o método
backward()na classeLayer:
- 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 dedze o vetor de entrada transposto;d_biases: gradiente da perda em relação aos vieses, igual adz;da_prev: gradiente da perda em relação às ativações da camada anterior, obtido multiplicando a matriz de pesos transposta pordz.- Atualize os pesos e vieses utilizando a taxa de aprendizado.
- Complete o método
fit()na classePerceptron:
- 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 dan — 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.
- 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
Obrigado pelo seu feedback!
single