前向后向传播算法
文章内容是我在《深度之眼》学习《DEEP LEARNING》过程中的作业笔记。
在推导过程中使用的简化版神经网络结构如图1所示。
假设X为N*M矩阵(即 输入包含N条样本,每条样本包含M维特征)
h1与z1的维数为m1为m*m1的矩阵,
(注:神经网络中处理bias单元通常有两种方式,第一种处理方式是bias本身值为1,但它连接各个神经元的权重不为1,即---整个神经网络只有1个bias,对应有多个不同的权重(权重个数等于hide层和out层神经元的个数。第二种处理方式是bias连接各个神经元的所有权重都为1,但bias本身不为1,即---有多个bias,但所有的bias对应的权重都为1(bias的个数等于hide层和out层神经元的个数)。本文中使用的是第二种处理方式,即
形式的网络参数。)
h2与z2的维数为m2为m1*m2的矩阵,
……
与
的维数为
为
的矩阵,
a.推导前向传播算法
为
后沿着行方向扩展N行,f()为非线性变换。
……
假设输出为n维,则out矩阵为N*n维,根据mse或者ce准则来计算J以及
b.推导损失函数对线性层的梯度
,
,
,
,
,
,
由以上推导不难发现
,也就是将
的每一行加起来。
在如图2所示的反向传播算法图中可以看出,反向传播计算参数梯度时 是必须要求解的,在求解
时,需要知道
。
c.推导损失函数对非线性层的梯度
非线性层使用的函数一般为三种:sigmoid函数、tanh函数或者ReLu函数。
-
为sigmoid函数时,
2.为tanh函数时
3.为relu函数时