反向传播算法的工作原理 ---1

1-1 使用矩阵快速计算输出

       讨论反向传播前,首先介绍一下如何通过基于矩阵的算法来计算神经网络的输出。以便于在熟悉的场景中理解反向传播中使用矩阵表示。

        首先给出神经网络中权重的清晰定义。eq?w_%7Bjk%7D%5E%7Bl%7D 表示在第 (eq?l-1) 层的第 eq?k 个神经元到第 eq?l层第eq?j 个神经元的连接的权重。图 1-1 给出了神经网络中第 2 层的第 4 个神经元到第 3 层的第 2 个神经元的连接的权重。

17df3c00f8364802882c19f03f500ec3.png

图·1-1

        这样的表示粗看上去比较奇怪,需要花一点时间消化。稍后你会发现这种表示方便且自然。下标 eq?j 和 eq?k 的顺序可能会引起困惑,有人觉得反过来更合理。下面介绍这样做的原因。

        神经网络的偏置和激活值也使用类似的表示,用 eq?b_%7Bj%7D%5E%7Bl%7D 表示第 eq?l 层第 eq?j 个神经元的偏置,用 eq?a_%7Bj%7D%5E%7Bl%7D 表示第 eq?l 层第 eq?j 个神经元的激活值。图1-2清晰地表示了这种表示的含义。

3bd57b2392784b6493eff03c9766b984.png

图·1-2

        有了这些表示,第 eq?l 层第 eq?j 个神经元的激活值 eq?a_%7Bj%7D%5E%7Bl%7D 就和第 eq?%28l-1%29 层的激活值通过方程关联起来了。

                                                eq?a_%7Bj%7D%5E%7Bl%7D%20%3D%20%5Csigma%28%5Csum_%7Bk%7D%20w_%7Bjk%7D%5E%7Bl%7D%20a_%7Bk%7D%5E%7Bl-1%7D%20+%20b_%7Bj%7D%5E%7Bl%7D%29 (23)

其中求和是对第 eq?%28l-1%29 层的所有 eq?k 个神经元进行的。为了以矩阵的形式重写该表达式,我们对层 eq?l 定义一个权重矩阵 eq?w%5E%7Bl%7D ,eq?w%5E%7Bl%7D 的元素是正连接到第 eq?l 层神经元的权重,更确切地说,第 eq?j 行第 eq?k 列的元素是 eq?w_%7Bjk%7D%5E%7Bl%7D 。类似地,对层 eq?l 定义一个偏置向量 eq?%5Cmathbf%7B%7Db%5E%7Bl%7D 。由此可推导出偏置向量的分量其实就是前面给出的 eq?b_%7Bj%7D%5E%7Bl%7D,每个元素对应第 eq?l 层的每个神经元。然后定义激活向量 eq?a%5E%7Bl%7D,其分量是激活值 eq?a_%7Bj%7D%5E%7Bl%7D 。

        最后需要引入向量化函数(比如 eq?%5Csigma)来按照矩阵形式重写方程(23)。向量化其含义就是对向量 eq?v 中的每个元素应用函数(比如 eq?%5Csigma)。我们使用 eq?%5Csigma%20%28v%29 来表示按元素应用函数。所以, eq?%5Csigma%20%28v%29 的每个元素满足 eq?%5Csigma%20%28v%29_%7Bj%7D%20%3D%20%5Csigma%20%28v_%7Bj%7D%29 。如果函数是 eq?f%28x%29%20%3Dx%20%5E%7B2%7D,那么向量化的 eq?f 作用如下:

                                                eq?f%28%5Cbegin%7Bbmatrix%7D%202%20%5C%5C3%20%5Cend%7Bbmatrix%7D%29%20%3D%20%5Cbegin%7Bbmatrix%7D%20f%282%29%5C%5Cf%283%29%20%5Cend%7Bbmatrix%7D%20%3D%20%5Cbegin%7Bbmatrix%7D%204%5C%5C%209%20%5Cend%7Bbmatrix%7D   (24)

也就是说,向量化 eq?f 仅对向量的每个元素进行平方运算。

        有了上述表示,方程(23)就可以写成简洁的向量形式,如下表示:

                                                 eq?a%5E%7Bl%7D%20%3D%20%5Csigma%20%28w%5E%7Bl%7D%20a%5E%7Bl-1%7D%20+%20b%5E%7Bl%7D%29  (25)

        该表达式让我们能够以全局视角考虑每层的激活值和前一层激活值的关联方式:我们仅仅把权重矩阵应用于激活值,然后加上一个偏置向量,最后应用 sigmoid函数。这种全局视角比神经元层面的视角更简洁。这样做既保证了清晰表达,又避免了使用下标,在实践中,表达式同样有用,因为大多数矩阵库提供了实现矩阵乘法、向量加法和向量化的快捷方法。

        在使用方程(25)计算 eq?a%5E%7Bl%7D 的过程中,我们计算了中间量 eq?z%5E%7Bl%7D%20%3D%20w%5E%7Bl%7D%20a%5E%7Bl-1%7D%20+b%5E%7Bl%7D 。这个中间量其实非常有用:我们将 eq?z%5E%7Bl%7D 称作第 eq?l 层神经元的带权输入,在下一篇博客我们会深入研究。方程(25)有时会写成带权输入的形式:eq?a%5E%7Bl%7D%20%3D%20%5Csigma%20%28z%5E%7Bl%7D%29 。此外,eq?z%5E%7Bl%7D 的分量为 eq?z_%7Bj%7D%5E%7Bl%7D%20%3D%20%5Csum_%7Bk%7D%20w_%7Bjk%7D%5E%7Bl%7D%20a_%7Bk%7D%5E%7Bl-1%7D%20+%20b_%7Bj%7D%5E%7Bl%7D ,其实eq?z_%7Bj%7D%5E%7Bl%7D 就是第 eq?l 层第 eq?j 个神经元的激活函数的带权输入。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT熙.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值