我试图了解错误的向后传播是如何工作的,因此我尝试使用上面显示的非常简单的神经网络来做到这一点。
到目前为止,我已完成以下操作:
import numpy as np
def forward_propagation(X, theta_1, theta_2):
z2 = np.dot(X, theta_1)
a2 = sigmoid(z2)
z3 = np.dot(a2, theta_2)
y = sigmoid(z3)
return y
def sigmoid(z):
return 1 / (1 + np.exp(-z))
if __name__ == '__main__':
input_layer = 1
hidden_layer = 1
output_layer = 1
# theta_1 = np.random.randn(input_layer, hidden_layer)
# theta_2 = np.random.randn(hidden_layer, output_layer)
theta_1 = np.array(([0.2]))
theta_2 = np.array(([0.1]))
X = np.array(([-5]), dtype=float)
predicted_y = forward_propagation(X, theta_1, theta_2)
print predicted_y
Y = np.array(([1]), dtype=float)
带输出:
[ 0.50672313]
所以现在我激活了Y,但我根本不了解如何向后传播并更新参数theta_1
和theta_2
。我一直试图跟随,但我根本不理解它。我发现的其他视频似乎也以不同方式向后传播错误,因此它只会让我更加困惑。
答案 0 :(得分:0)
我首先尝试理解细节中的梯度下降,并且可能通过笔和纸来计算更简单的任务,例如逻辑回归或任何其他基于梯度的最小二乘任务。利用神经网络,理解分化的链规则也非常重要。
如果你得到了这个,你可以开始将它应用到神经网络。它会清理很多东西。