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
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