开发者学堂课程【神经网络概览及算法详解:误差反向传播算法-3】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/40/detail/931
误差反向传播算法-3
内容介绍:
一、 损失函数优化:梯度下降法
二、 BP算法:梯度下降法
一、 损失函数优化:梯度下降法
确定了损失函数,就需要对损失函数进行优化,求最小值,以平方损失函数(QuadraticLF)为例:L(y,f(x))=(y -f(x))2
求L的梯度:
假设激活函数选用了sigmoid函数
求出此时L的梯度;
//如果激活函数选用了sigmoid函数,sigmoid函数本身有一个特点,sigmoid函数本身乘以1减sigmoid的函数,形式非常优美。
二、 BP算法:梯度下降法
输入向量:X=(x1,x2…xn)T
隐层输出:Y=(y1,y2…ym)T
输出向量:O=(o1,o2…ol)T
期望输出:D=(d1,d2…dl)T
权重矩阵:V=(v1,v2…vm)T
W=(W1,W2…wl)T
//输入层到隐藏层的权重矩阵是v,隐藏层y到最终输入层o的权重矩阵是w,
向前传导的过程:
//向前传播的过程,从输入层到隐藏层,净输出是求和,隐藏层的实际输出yj=f(netj ),j=1,2...,m作用到净输出上。
隐藏层到最终输出层,首先是净输出用w乘y,最终的输出oj=f(netk),k=1,2...,I函数作用一下。
误差反向传导过程:
//E等于2分之1,d减o的平方,d是期望输出,o是实际输出,把它带进去。d是已知的,o可以用
oj=f(netk),k=1,2...,I函数表示,netk等于w乘y带入,y可以用yj=f(netj ),j=1,2...,m表示,把y带进去,得到最终误差。
权重更新公式如下:
//对隐藏层到输出层的权重更新是,等于负η,η是学习率或者学习补偿或者更新补偿,E对w求偏导,E是误差,v等于E对v求偏导。
为了表示起来方便,记:
//netk是输出层的代数和就是w乘y,激活函数没作用的净输出。
有:
//E首先对netk 求偏导,netk 在对w求偏导,做一个符号的代换。
//E首先对netk 求偏导等于E对o求偏导,o在对netk 求偏导,带进去,E等于(d-o)2,对o求偏导,求偏导以后成(dk-ok)。
//同样再去求,同样的道理,也是先E对y求偏导,在y对netj 求偏导,y本身是netj的函数,所以转换成。在求前面部分,因为是对y求偏导,刚才应该是ok可以表示成y的函数就等于
平方2乘上来和2分之1消掉,就是(dk-ok),在用这项对y乘偏导,在做一次连续求导,首先这个函数本身求导数,在对应里面求和的一项再对y求导就等于wk就可以了,,带进去就是
//更新权重的时候,直接算出Δwkj和Δvji。Δwkj中η是已知常量,dk是已知期望数据,ok是算出来的,yi是已知的。Δvji也一样,多了个xi,xi也是已知的。O,y都是数据传播中算出来的,才得到误差,才可以算Δw。Δv也一样,像权重w,y等等在数据正向传播中都可以算出来的值,在反向传播中求Δv。用Δw和Δv更新权重。