本篇文章将讲解深度学习的人工神经网络和其优化的基础知识的第二部分,该系列目录如下:
人工神经网络简述
反向传播链式法则的简单理解
神经网络中的反向传播
各类优化算法简述
总结神经网络
神经网络中的反向传播
上面讲述的是在简化情况在的BP,下面讲述在神经网络中的反向传播,这里以简单的多层感知机为例:
如上图,我们先定义一个三层人工神经网络,layer1至layer3分别是输入层、隐藏层和输出层。首先定义说明一些变量:
然后,为了简单起见,我们定义代价函数为均方差损失函数(当然,现在很多不是用这个损失函数,至于为什么,会在下面一篇文章讲述):
然后,更为了简单来算,我们以一个输入样本为例进行说明,此时代价函数表示为:
计算最后一层神经网络产生的错误:
其中,表示Hadamard乘积,用于矩阵或向量之间点对点的乘法运算(注意这里的维数应该相同),推导如下:
由后往前,计算每一层神经网络产生的错误,注意这里是反向回传错误的体现(这一步的推导最为关键)
所以我们得到:
这一步极为关键,需要前后换序、转置等操作,进行维度的适应,当然,知乎也有对这种做法的讲解:维数相容原则在反向传播的应用,可以一看!
然后,我们应用错误计算权重的梯度
所以得到:
最后,我们计算偏置的梯度
最终得到:
整理一下整体过程如下:
对于训练集中的每个样本x,设置输入层(Input layer)对应的激活值
前向传播:
计算正向输出值
反向传播:
计算输出层产生的错误:反向传播错误:得到梯度,并用sgd等优化算法更新权重参数得到梯度,并用sgd等优化算法更新偏置参数
今天是除夕,AI遇见机器学习忠心的祝愿大家新年快乐,身体健康,万事如意!在AI的道路上越走越远,越走越好!
AI遇见机器学习
mltoai
领取专属 10元无门槛券
私享最新 技术干货