查看: 2628|回复: 0
打印 上一主题 下一主题

[机器学习] 反向传导算法

[复制链接]

146

主题

3

听众

1503

积分

助理设计师

Rank: 4

纳金币
1794
精华
4
跳转到指定楼层
楼主
发表于 2018-6-7 10:35:50 |只看该作者 |倒序浏览
假设我们有一个固定样本集 b449e6d375809abbc4097d2c55e9f8c0.png ,它包含 25e97e8a905fc2cb05d76cd4872a8567.png 个样例。我们可以用批量梯度下降法来求解神经网络。具体来讲,对于单个样例 0dc6f65ba6022a9a2f5ce13473eb35e8.png ,其代价函数为:

029cdd402b83ee43c7e9a900dccd675a.png

这是一个(二分之一的)方差代价函数。给定一个包含 个样例的数据集,我们可以定义整体代价函数为:

4539f5f00edca977011089b902670513.png

以上关于 8e94ae776ae14b36b3af183726ababb9.png 定义中的第一项是一个均方差项。第二项是一个规则化项(也叫权重衰减项),其目的是减小权重的幅度,防止过度拟合。

[注:通常权重衰减的计算并不使用偏置项 4c786c16575b63bbb554254725b6b648.png ,比如我们在 的定义中就没有使用。一般来说,将偏置项包含在权重衰减项中只会对最终的神经网络产生很小的影响。如果你在斯坦福选修过CS229(机器学习)课程,或者在YouTube上看过课程视频,你会发现这个权重衰减实际上是课上提到的贝叶斯规则化方法的变种。在贝叶斯规则化方法中,我们将高斯先验概率引入到参数中计算MAP(极大后验)估计(而不是极大似然估计)。]

权重衰减参数 ddf8905bd6bfeba5cfd2936466d4139e.png 用于控制公式中两项的相对重要性。在此重申一下这两个复杂函数的含义: 67b844ee86f32de53bab325b8a76a94f.png 是针对单个样例计算得到的方差代价函数; 是整体样本代价函数,它包含权重衰减项。

以上的代价函数经常被用于分类和回归问题。在分类问题中,我们用 b52c56aff08fc87a9ce5b9439200906c.png 6e924e04b5c9d4c5be131609a038b821.png ,来代表两种类型的标签(回想一下,这是因为 sigmoid激活函数的值域为 84235d31ac83fe764546463aba7acc0e.png ;如果我们使用双曲正切型激活函数,那么应该选用 0fa78f9ce83744e1651c9d729c2d19b6.png dcb8dd3d14a2c0aa9b06ec6ce4ec0d59.png 作为标签)。对于回归问题,我们首先要变换输出值域(译者注:也就是 c81e76c28ed991b22b8c1bb8fa392701.png ),以保证其范围为 (同样地,如果我们使用双曲正切型激活函数,要使输出值域为 85a1c5a07f21a9eebbfb1dca380f8d38.png )。

我们的目标是针对参数 8c9cb254a5e388f2bcaf294e52d745a6.png 5254b90d248051980262672a1bbc2433.png 来求其函数 的最小值。为了求解神经网络,我们需要将每一个参数 dfe43c64e3c42ea4ff1774fc82b87805.png 和 初始化为一个很小的、接近零的随机值(比如说,使用正态分布 b19e677536c9c7b9da542e4d36c07001.png 生成的随机值,其中 a8eae7b5e90c024c40de690158e0e6b1.png 设置为 60ec211aca4ac585f1c0ef4de8e08f39.png ),之后对目标函数使用诸如批量梯度下降法的最优化算法。因为 是一个非凸函数,梯度下降法很可能会收敛到局部最优解;但是在实际应用中,梯度下降法通常能得到令人满意的结果。最后,需要再次强调的是,要将参数进行随机初始化,而不是全部置为 96f7362eaaa825744141afe4d5c2d340.png 。如果所有参数都用相同的值作为初始值,那么所有隐藏层单元最终会得到与输入值有关的、相同的函数(也就是说,对于所有 0b36ee693126b34b58f77dba7ed23987.png 82d79561e2994ccba3e4fe2cc4d527e5.png 都会取相同的值,那么对于任何输入 f6c0f8758a1eb9c99c0bbe309ff2c5a5.png 都会有: 3aa55fedae234afd387a314144cd6b32.png )。随机初始化的目的是使对称失效

梯度下降法中每一次迭代都按照如下公式对参数 和 进行更新:

6fe7c74511cd6d49a4c9cb6de2afdc33.png

其中 7eaa466003e48c1c96824a2edf3de038.png 是学习速率。其中关键步骤是计算偏导数。我们现在来讲一下反向传播算法,它是计算偏导数的一种有效方法。

我们首先来讲一下如何使用反向传播算法来计算 5fb8e62e296ad365a076617b04d66d03.png ca49d387f9ead91008f9688b3880e91b.png ,这两项是单个样例 的代价函数 的偏导数。一旦我们求出该偏导数,就可以推导出整体代价函数 的偏导数:


93367cceb154c392aa7f3e0f5684a495.png

以上两行公式稍有不同,第一行比第二行多出一项,是因为权重衰减是作用于 而不是 。

反向传播算法的思路如下:给定一个样例 ,我们首先进行“前向传导”运算,计算出网络中所有的激活值,包括 58d3a4fe4ad68b333b180071dd46db82.png 的输出值。之后,针对第 ba0593b3db2fa8535b077516f4b0d70b.png 层的每一个节点 ,我们计算出其“残差” 585c0367cc7e9eb2cc244888c503e04e.png ,该残差表明了该节点对最终输出值的残差产生了多少影响。对于最终的输出节点,我们可以直接算出网络产生的激活值与实际值之间的差距,我们将这个差距定义为 ee873581c1e0d83e6e235f3240671f67.png   (第 5b7a0657fdea25f29866c8e1d6e884ac.png 层表示输出层)。对于隐藏单元我们如何处理呢?我们将基于节点(译者注:第 9068105ec8ebb97277c937bfa61b606d.png 层节点)残差的加权平均值计算 ,这些节点以 c9b144e0a6735fafb01b3615a2a0dc05.png 作为输入。下面将给出反向传导算法的细节:




最后,我们用矩阵-向量表示法重写以上算法。我们使用“ 9937b108a65d2d09961c23259e819e31.png ” 表示向量乘积运算符(在Matlab或Octave里用“.*”表示,也称作阿达马乘积)。若 b1362783e5c1d9d1e627ca2a91b04f28.png ,则 14b4e060883883de874d0ebf1ab758d3.png 。在上一个教程中我们扩展了 0303dd697c0e1b72185d7939f9870784.png 的定义,使其包含向量运算,这里我们也对偏导数 fedde117b610fc785ad71db67e618ab2.png 也做了同样的处理(于是又有 c7515c53b59e670ceee277e06c1229cb.png )。

那么,反向传播算法可表示为以下几个步骤:

  • 进行前馈传导计算,利用前向传导公式,得到 直到输出层 的激活值。
  • 对输出层(第 层),计算: 0ea6bda6255f544dca0bfa80d622f382.png
  • 对于 的各层,计算: 7d5660d4a911ecb84113c436f82b1109.png
  • 计算最终需要的偏导数值: 5391ac390a4e279ac8a543d4d5498ecc.png


实现中应注意:在以上的第2步和第3步中,我们需要为每一个 值计算其 f745dea1a82d8cd64aa6b92466e3bbc5.png 。假设 5d1c55e9d6b297473de425651557d4fc.png 是sigmoid函数,并且我们已经在前向传导运算中得到了 。那么,使用我们早先推导出的 a5f7d3f914f4e383ce51e4998592caee.png 表达式,就可以计算得到 d4d5e09ac8e035283671cc03d942f955.png

最后,我们将对梯度下降算法做个全面总结。在下面的伪代码中, 6c600894179e37800af01a5795be30b8.png 是一个与矩阵 f8f8834256f511d88fec05e3b27c67b1.png 维度相同的矩阵, e580f95036a0ccb35019a866cb10191f.png 是一个与 8c2936afffcaf9eeabf8837d501ddb9d.png 维度相同的向量。注意这里“”是一个矩阵,而不是“ 529ca30eb74564461bc8e0e7d7864e95.png 与 相乘”。下面,我们实现批量梯度下降法中的一次迭代:



现在,我们可以重复梯度下降法的迭代步骤来减小代价函数 的值,进而求解我们的神经网络。


中英文对照

反向传播算法        Backpropagation Algorithm(批量)梯度下降法        (batch) gradient descent(整体)代价函数        (overall) cost function方差        squared-error均方差        average sum-of-squares error规则化项        regularization term权重衰减        weight decay偏置项        bias terms贝叶斯规则化方法        Bayesian regularization method高斯先验概率        Gaussian prior极大后验估计        MAP极大似然估计        maximum likelihood estimation激活函数        activation function双曲正切函数        tanh function非凸函数        non-convex function隐藏层单元        hidden (layer) units对称失效         symmetry breaking学习速率        learning rate前向传导        forward pass假设值        hypothesis 残差        error term加权平均值        weighted average 前馈传导        feedforward pass阿达马乘积        Hadamard product前向传播        forward propagation



中文译者

王方(fangkey@gmail.com),林锋(xlfg@yeah.net),许利杰(csxulijie@gmail.com
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

关闭

站长推荐上一条 /1 下一条

手机版|纳金网 ( 闽ICP备08008928号

GMT+8, 2024-4-25 13:56 , Processed in 0.152940 second(s), 34 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部