梯度下降法更新权值理论

使用3层的神经网络(包含输入层和输出层)来演示是如何工作的。

网络:input 3个节点;hidden 3个节点;output 3个节点

参数:input:矩阵I是3*1的矩阵;W_{input\, hidden}为3*3的矩阵;W_{hidden\, output}为3*3的矩阵;output:矩阵为3*1的矩阵

计算hidden层节点的矩阵:X_{hidden} = W_{input\: hidden}\cdot I                         O_{hidden} = sigmoid(X_{hidden})

计算output层节点的输出:X_{}{output} = W_{hidden\:output}\cdot O_{hidden}                  O_{output} = sigmoid(X_{output})

 

如何根据梯度下降法来调节权重:

                                                           New\, w_{j\cdot k} = Old\, w_{j\cdot k} - \alpha \cdot \frac{\varphi E}{\varphi w_{j\cdot k}}     

其中: New\, W_{j\cdot k}是更新后的权重; Old\, W_{j\cdot k}是更新前的权重;\alpha是学习率;\frac{\varphi E}{\varphi w_{j\cdot k}}是斜率代表误差值和权重的比值

                                                         \alpha \cdot \frac{\varphi E}{\varphi w_{j\cdot k}} = \alpha \cdot E_{k}\cdot O_{k}(1 - O_{k})\cdot O_{j }^{\tau} 

其中:E_{k}是output层第k个节点的误差值,E_{k} = t_{k} - o_{k},t_{k}是目标值,O_{k}是实际值

          O_{k}是output层输出的实际值

          O_{j }^{\tau}是前一层的输出的转置

误差与权重的比值(也叫梯度)推导

  • 误差值 = 目标值 - 实际值,有下面三种选择
  • 误差值 = 目标值 - 实际值
  • 误差值 = |目标值 - 实际值|
  • 误差值 = (目标值 - 实际值)的平方,一般我们选择这个,因为使用平方误差,我们可以很容易的使用代数计算出梯度下降的斜率;误差函数平滑连续,这使得梯度下降法很好的发挥了作用-没有间断,也没有突然地跳跃;越接近最小值,梯度越小这意味着,如果我们使用了这个函数调节步长,超调的风险就会变得较小。

                            \frac{\varphi E}{\varphi w_{j\cdot k}} = \frac{\varphi \sum _{n}(t_{n} - o_{n})^{2}}{\varphi w_{j\cdot k}}      E_{k}是output层第k个节点的误差值,E_{k} = t_{k} - o_{k},t_{k}是目标值,O_{k}是实际值

由于节点的输出只取决于所连接的链接,就是取决于链接权重,这意味着误差函数根本就不需要对所有输出节点求和,便得到下式:                                  \frac{\varphi E}{\varphi w_{j\cdot k}} = \frac{\varphi \left ( t_{k} - o_{k} \right )^{2}}{\varphi w_{j\cdot k}} = -2\left ( t_{k} - o_{k} \right ) \cdot \frac{\varphi o_{k}}{\varphi w_{j\cdot k}}             t_{k}是一个常数

其中:o_{k} = \frac{1}{1 + e^{-\sum_{3}^{j=1}\left ( w_{j\cdot k} \cdot \frac{1}{1+e^{-\sum_{3}^{i=1}\left ( w_{i\cdot j} \cdot x_{i} \right )}}\right )}} = sigmoid\left ( \Sigma_{j} \cdot o_{j} \cdot w_{j\cdot k} \right )       也就是3层神经网络的输出值

                                        \frac{\varphi sigmoid\left ( x \right )}{\varphi x} = sigmoid\left ( x \right )\left ( 1-sigmoid\left ( x \right ) \right )

\frac{\varphi E}{\varphi w_{j\cdot k}} = \frac{\varphi \left ( t_{k} - o_{k} \right )^{2}}{\varphi w_{j\cdot k}} = -2\left ( t_{k} - o_{k} \right ) \cdot \frac{\varphi o_{k}}{\varphi w_{j\cdot k}} = -2\left ( t_{k} - o_{k} \right ) \cdot \frac{\varphi sigmoid\left ( \Sigma_{j} \cdot w_{j\cdot k} \cdot o_{j}\right )}{\varphi w_{j\cdot k}} = -2\left ( t_{k} - o_{k} \right ) \cdot sigmoid\left ( \Sigma_{j} \cdot w_{j\cdot k} \cdot o_{j} \right )\left ( 1- sigmoid(\Sigma_{j} \cdot w_{j\cdot k} \cdot o_{j} \right)) \cdot \frac{\varphi \left ( \Sigma_{j} \cdot w_{j\cdot k} \cdot o_{j} \right )}{\varphi w_{j\cdot k}}

 

所以:

\fn_phv \frac{\varphi E}{\varphi w_{j\cdot k}} = = -2\left ( t_{k} - o_{k} \right ) \cdot sigmoid\left ( \Sigma_{j} \cdot w_{j\cdot k} \cdot o_{j} \right )\left ( 1- sigmoid\left ( \Sigma_{j} \cdot w_{j\cdot k} \cdot o_{j} \right) \right ) \cdot o_{j} = E_{k} \cdot o_{k}\left ( 1 - o_{k} \right ) \cdot o_{j }^{\tau}

 

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值