【问题标题】:Backpropagation example反向传播示例
【发布时间】: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


    【解决方案1】:

    假设最后一个隐藏层有N个节点,weight_hidden是一个N×10维的矩阵,上面的delta_output是10x1,der_hidden_​​activation(output_hidden)的结果是N x 1。

    当从一层 N 个神经元(隐藏层)到一层 M 个神经元(输出层),在matrix multiplication 下,权重矩阵维度应该是 M x N。所以对于反向传播阶段,去从 M 个神经元层(输出)到 N 个神经元层(隐藏层),使用权重矩阵的transpose,这将为您提供一个维度为 (N x M) 的矩阵。

    现在,我的第一个问题是,delta_output 和 der_hidden_​​activation(output_hidden) 的乘法是否应该使用外积返回一个 10 x N 矩阵? 我认为我需要用未触及的权重对这个结果矩阵进行 Hadamard 乘积,以使 delta_hidden 仍然为 N x 10。

    是的,您需要使用hadamard product,但是您不能将 delta_output 和 der_hidden_​​activation(output_hidden) 相乘,因为它们是不同维度的矩阵(分别为 10 x 1 和 N x 1)。相反,您将 hidden_​​weight 矩阵 (N x 10) 的转置乘以 delta_output (10 x 1) 以获得 N x 1 的矩阵,然后使用 der_hidden_​​activation(output_hidden) 执行 hadamard 乘积。

    如果我翻译正确...

    hidden_​​weight 矩阵 =

    delta_output =

    delta_hidden =

    der_hidden_​​activation(output_hidden) =

    将其插入 BP 公式...

    如您所见,您需要先将 weight_hidden (N x 10) 的转置与 delta_output (10 x 1) 相乘以生成矩阵 (N x 1),然后将 hadamard 乘积与 der_hidden_​​activation(output_hidden )。

    最后,我将这个 delta_hidden 乘以我的学习率,然后从最后一个隐藏层的原始权重中减去它,得到我的新权重。

    您不会将 delta_hidden 乘以学习率。您需要在偏差和增量权重矩阵上使用学习率...

    增量权重矩阵是与您的(隐藏)权重矩阵具有相同维度的矩阵,使用公式计算...

    然后您可以轻松应用学习率...

    Incidentally, I just answered a similar question on AISE which might help shed some light and goes into more detail about the matricies to use during backpropagation.

    【讨论】:

      猜你喜欢
      • 2018-01-06
      • 2019-03-18
      • 1970-01-01
      • 2020-11-23
      • 2018-05-05
      • 2011-08-25
      • 2017-05-24
      • 2020-09-02
      • 2010-12-25
      相关资源
      最近更新 更多