【发布时间】:2020-07-22 14:48:05
【问题描述】:
我正在尝试实现我自己的神经网络,但我对我的数学是否正确不是很有信心。
我正在做 MNIST 数字识别,所以我有一个 10 个概率的 softmaxed 输出。作为输出。然后我计算我的增量输出:
delta_output = vector of outputs - one-hot encoded actual label
delta_output 是一个维度为 10 x 1 的矩阵。
然后我计算最后一个隐藏层权重的增量:
delta_hidden = weight_hidden.transpose * delta_output * der_hidden_activation(output_hidden)
假设最后一个隐藏层有N个节点,weight_hidden是一个N×10维度的矩阵,上面的delta_output是10x1,der_hidden_activation(output_hidden)的结果是N x 1。
现在,我的第一个问题是,delta_output 和 der_hidden_activation(output_hidden) 的乘法是否应该使用外积返回一个 10 x N 矩阵?我认为我需要用未触及的权重对这个结果矩阵进行 Hadamard 乘积,以使 delta_hidden 仍然为 N x 10。
最后,我将这个 delta_hidden 乘以我的学习率,然后从最后一个隐藏层的原始权重中减去它,得到我的新权重。
我的第二个也是最后一个问题是,我错过了什么吗?
提前致谢。
【问题讨论】:
标签: machine-learning neural-network backpropagation mnist