BP神经网络—反向传播算法

为什么要学习反向传播算法?
对于前馈神经网络的参数学习,如果采用交叉熵损失函数,对于样本(x,y),其损失函数为
BP神经网络—反向传播算法

给定训练集D={(xn,yn)}, N >= n >=0,将每个样本xn输入给前馈神经网络,得到网络输出为yn,其在数据集D上的结构化风险函数为
BP神经网络—反向传播算法

其中W和b分别表示网络中所有的权重矩阵和偏置向量, (||W|| F)^2是正则化项,用来防止过拟合,lambda是为正数的超参数,lambda越大,W越接近于0。
有了学习准则和训练样本,网络参数可以通过梯度下降法来进行学习。在梯度下降方法的每次迭代过程中,第l层的参数 W^l 和 b^l 参数更新方式为
BP神经网络—反向传播算法

梯度下降法需要计算损失函数对参数的偏导数,如果通过链式法则逐一对每个参数进行求偏导效率比较低。在神经网络的训练中经常使用反向传播算法来高效的计算梯度。我们可以把逻辑回归(Logistic Regression)看做没有隐层的网络;但对于多隐层的神经网络,输出层可以直接求出误差来更新参数,但其中隐层的误差是不存在的,因此不能对它直接应用梯度下降,而是先将误差反向传播至隐层,然后再应用梯度下降。反向传播避免了重复子表达式的指数爆炸。
反向传播算法
(后面的公式会乱,直接截图吧)
BP神经网络—反向传播算法

BP神经网络—反向传播算法
BP神经网络—反向传播算法
BP神经网络—反向传播算法
BP神经网络—反向传播算法
BP神经网络—反向传播算法
BP神经网络—反向传播算法
BP神经网络—反向传播算法