版权声明:本文为博主原创文章,转载请注明出处,商业转载请联系作者(huxingfei097@163.com),谢谢合作!
-
前向传播算法
在神经网络中,信息从上一个神经元直接流转到下一个神经元,直到输出,依据每一个神经元的输入并根据相应规则可以计算出输出,最终得到在当前参数下的损失函数的过程,称为前向传播。
隐藏层的输出如下:
a11 = x1 • W1,1(1) + x2 • W2,1(1)
a12 = x1 • W1,2(1) + x2 • W2,2(1)
a13 = x1 • W1,3(1) + x2 • W2,3(1)
最终输出层的输出如下:
y^ = a11 • W1,1(2) + a12 • W1,2(2)+ a13 • W1,3(2)
最终的损失函数计算如下(以均方误差损失函数为例):
JMSE = ½ |y - y^|2 -
反向传播算法
反向传播算法是在前向传播算法的基础上,从神经网络的输出层向输入层依次计算损失函数对于各个参数的梯度,并在给定学习率下更新相关参数。
在上面的神经网络中,依据链式求导法则,可以依次求出损失函数对每个参数的导数:
................
其中,...,是损失函数对对应参数求导后得到的梯度(斜率),依据该值即可修正神经网络中的参数:
其中是学习率,即沿着梯度(斜率)的方向更新参数。
利用前向传播算法和反向传播算法不断更新损失函数的值和参数,直到损失函数下降到指定的阈值(或者最小值),即完成神经网络的训练。 -
算法实例:
假设如下图的一个神经网络(比上面的要复杂一些)
w1 = 0.1,w2 = 0.2,w3 = 0.3,w4 = 0.4
w5 = 0.5,w6 = 0.4,w7 = 0.3,w8 = 0.2
i1 = 0.05,i2 = 0.1
o1 = 0.01,o2 = 0.99
b1 = 0.25,b2 = 0.45
输入输出固定,需要优化的参数是权重w1~w8以及偏置b1,b2
前向传播过程:
隐藏层计算:
输出层计算:
损失函数计算:
后向传播过程:
权重参数导数计算:
权重计算:
以上计算出了在初始权重和偏置的情况下的损失函数,以及损失函数对每个要学习的参数(权重参数和偏置参数)的导数,之后即可按照选定的学习率更新参数,然后不断循环计算损失函数、更新参数直到达到迭代次数或者损失函数达到指定与之或者最小值。更新公式:
参考资料
《深度学习》
本系列相关文章
深度学习(五):机器学习基础
深度学习(四):数值计算基础
深度学习(三):概率与信息论基础
深度学习(二):主成分分析算法
深度学习(一):线性代数基础
深度学习新手,文章若有疏漏,欢迎及时指正!