神经网络
神经网络
参数定义
:从层l-1的第i个神经元指向层l的第j个神经元的权重。注意i和j的顺序。
参数定义
输入层关系式
定义为层l的第j个神经元的输出值。输入层(即l=1)表示为
隐藏层关系式
输出层关系式
用矩阵形式表示参数
参数的矩阵表示
正解的表示
真实标签
代价函数
均方误差
交叉熵
误差反向传播
计算第k个样本的均方误差对某个参数的导数,利用偏导数的链式法则
链式法则
用具体的式子求梯度分量十分困难,链式法则中导数复杂繁多。误差反向传播法解决了此问题。
引入神经单元误差
表示神经单元的加权输入对平方误差的变化率,如果神经网络符合数据则变化率应该是0,可以认为
表示神经网络与真实数据的偏差。
则上述表达式可以变形
由于 ,可以得到
对
的偏导数是
,因此
建立起与平方误差C关于权重和偏置的偏导数关系,得到一般公式
,计算输出层的
考虑上述示例中,层数为3的神经网络,以为激活函数,则输出层的神经单元误差
(j=1,2)
因为均方误差,因此有
激活函数是sigmoid函数,
激活函数的导数
最终输出层
中间层的通过简单的关系式,与下一层的神经单元误差
联系起来
根据偏导数链式法则,有
观察各项得到
中间层的误差
层l与下一层l+1的一般关系式,m为层l+1的神经单元个数,l为2以上的整数。
一般公式
只要求出输出层的神经单元误差,其他的神经单元误差就不需要进行偏导数计算。
算法步骤
1. 进行前向传播,得到从第2层到输出层的激活值
2. 对于输出层L,计算误差
3. 对于l=L-1,...2的各层,计算误差(矩阵运算)
维度是各层的节点数
4. 计算各层参数的偏导数
维度是各层参数的维度
将各层参数的偏导数传入梯度下降优化算法,进行参数更新。
注:激活函数relu,f(x)=max(0,x)
当x<0时f'(x)=0,当x>0时f'(x)=1
参考资料:
《深度学习的数学》[日]涌井良幸