手算梯度下降法,详解神经网络迭代训练过程

⼿算梯度下降法,详解神经⽹络迭代训练过程
神经⽹络本质上是⼀个计算流程,在前端接收输⼊信号后,经过⼀层层复杂的运算,在最末端输出结果。然后将计算结果和正确结果相⽐较,得到误差,再根据误差通过相应计算⽅法改进⽹络内部的相关参数,使得⽹络下次再接收到同样的数据时,最终计算输出得到的结果与正确结果之间的误差能越来越⼩。
这⾥需要搞清楚⼀个重要概念,就是如何计算误差,我们列⼀个表,展⽰⼀个在最外层有三个节点的⽹络对误差的三种计算情况:
上表列出三种误差处理情况,第⼀种计算误差的⽅式是将简单的将⽹络计算结果与正确结果相减,但采⽤这种做法,如果我们把所有误差相加在⼀起,结果居然为零,因为第⼀个节点的结果与正确结果的差值和第⼆个节点结果与正确结果的差值刚好相反,于是误差就相互抵消掉,由此直接将两者相减不是⼀种理想的误差计算⽅式。
第⼆种是相减后求绝对值。这样⼀来每个节点间的误差在加总时就不会相互抵消,但绝对值的存在使得函数图像会变成⼀个”V”字型,在最低点处是⼀个箭头,于是这个函数在最低点处不连续,梯度下降法不能运⽤于不连续的函数。
第三者是两者相减后求平⽅,这种做法使得误差函数变成⼀条光滑的曲线,这是梯度下降法运⽤的最佳场景。在上⼀节中我们讲过,我们要根据数据点所在的切线斜率来“适当”的调整变量的值,后⾯我们会看到,这⾥的“适当”就得依赖切线的斜率⼤⼩,⼀条光滑曲线,也就是⼀条“连续”曲线,它在最低点附件切线的斜率会越来越⼩,这样的话变量改变的幅度也会越来越⼩,进⽽使得我们能够准确的定位到最低点。这⾥的”连续“指的就是⾼等数学或微积分上的”连续“。
⼀个神经⽹络本质上是⼀个含有多个变量的函数,其中每条链路上的权重对应着⼀个变量,任何⼀条链路权重的改变会对⽹络末端的多个节点输出产⽣影响,可谓是牵⼀发⽽动全⾝。如果我们把第三中误差计算⽅法,也就是error_sum = (节点输出的结果-正确结果)^2加总,作为最终误差,那么我们的
⽬的就是不断的修改⽹络中每条链路权重值,使得erro_sum的值最⼩,这与我们上⼀节所讲的求⼀个复杂函数最⼩值的⽬的是⼀致的。
前⾯我们说过,如果⼀个函数拥有两个变量,那么函数的值就会在三维空间形成⼀个曲⾯。如果⼀个函数拥有多个变量,那么它的结果就会形成⼀个多维度的超平⾯,这已经超出我们⼈脑的想象范围,我们最多可以想象⼀个三维的物体。如果我们沿着某个变量的⽅向对这个超平⾯切⼀⼑,在切⾯的边缘就会形成⼀条曲线,例如你拿⼑把⼀个苹果切开,在切开的平⾯边缘对应着⼀条曲线,如下图:
社会主义初级阶段的主要矛盾莱维特
⼤家注意看,切⾯曲线的最低点处,对应着整个苹果的最低点处。同理我们对⼀个包含多个变量构成的函数所形成的超平⾯,我们沿着某个变量的⽅向对平⾯切⼀⼑,在切⾯的边缘也会有⼀条曲线:
我们前⾯所的error_sum,它是由(节点计算那结果-正确结果)^2加总构成的,⽽“节点计算结果”却是受到⽹络中每⼀条链路权重的影响,因此我们可以认为error_sum是⼀个含有多个变量的函数,每个变量对应着⽹络中每条链路的权重。如果我们以某条链路的权重为准,往这个超平⾯切⼀⼑,那么切⾯的边缘就是⼀条⼀维曲线,这个曲线的最低点就对应着整个超平⾯的最低点,假设这条曲线如上图,那么我们通过上⼀节讲解的梯度下降法调整这条链路的权重值,就会使得error_sum的值向最低点⾛去。
假设⼀个神经⽹络只含有两条路径,也就是说error_sum对应着两个变量,这意味着erro_sum是的结果是三维空间上的⼀个曲⾯,那么我们对每⼀个变量做曲⾯的切⾯,根据切⾯的边缘曲线做切线,进⽽得到每个变量该如何变化才能⾛到曲⾯的最低点,这两个变量各⾃的变化合在⼀起形成了曲⾯上⼀个点⾛到最低点的路径,如下图:
接下来的问题是,如何沿着某个变量的⽅向对曲⾯切⼀⼑后,到改点在切⾯边缘曲线上的斜率,在数学上对应着对根据某个变量对函数求偏导数,公式如下:
偏导数的结果就是链路权重在error_sum函数这个超平⾯上做切⾯后,切⾯边缘处的切线,根据切线斜率,我们就可以调整链路W(j,k)的值,从⽽使得error_sumn变⼩。接下来我们通过⼀个具体实例,看看如何通过偏导数求得error_sum的最⼩值,假设我们有如下⽹络:
系统脱敏疗法案例
244uu
⽹络的输出层有两个节点,k1和k2,他们输出的值由O1和O2表⽰,相应的误差由e1和e2表⽰。根据前⾯描述,error_sum等于
e1^2+e2^2,也就是(t1-o1)^2+(t2-o2)^2。由于O1与O2是由中间层与最外层节点间的链路权重决定的,于是调整这两层节点间链路权重就能影响最外层的输出结果,上图已经把影响最终输出的四条链路标注出来。于是我们分别根据这四个权重变量求偏导数,这样我们才能确定这些变量如何变化才会影响最终输出结果:
我们⼀定要注意,最外层节点O(k),只与内层连接到它的链路权重w(jk)相关,其他未跟它连接的链路权重⽆论如何变化,都不会影响最外层节点O(k)的输出结果。同时求偏导数时,除了参与求导的变量会留下来,其他⽆关变量会在求导的过程中被消除掉,上⾯公式中,参与求导的是变量w(jk),与该变量对应的就是O(k),所以上⾯的公式可以简化如下:
接下来我们根据微积分原理,对上⾯的求导运算进⾏展开,由于t(k)对应的是正确数值,因此它是个常量,于是变量w(jk)与它没有关联,⽽节点输出O(k)与权重w(jk)是紧密相关的,因为信号从中间层节点j输出后,经过链路w(jk)后进⼊节点k才产⽣了输出O(k)。也就是说O(k)是将w(jk)经由某种函数运算后所得的结果,于是根据求导的链式法则,我们有:
结合上下两个公式,我们可以把对变量O(k)的求导做进⼀步展开后如下:
一体化接下来我们得看上边公式右边,对W(jk)的求导如何展开,前⾯我们早已了解,O(k)的值是由进⼊它的链路权重乘以经过链路的信号量,加总后再经过激活函数运算后所得的结果,于是上边公式右边对变量w(jk)求导的部分就可以展开如下:
帝国主义在中国
上⾯的变量O(j)就是中间层节点j输出到链路jk上的信号量。现在的问题是,如何对激活函数求导,我
们完全可以根据求导数的⽅法,⼀步⼀步的算出来,这⾥我们忽略这些繁琐机械的流程,直接给出激活函数求导后的结果:
于是我们把这⼏步连续求导的结果结合起来,得到如下公式:

本文发布于:2024-09-22 16:40:31,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/433367.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:结果   变量   链路   函数   节点
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议