1 基本概念
前向传播
多层感知机中,输入信号通过各个网络层的隐节点产生输出的过程称为前向传播。
图形化表示
下图展示了一个典型的多层感知机
- 定义第 ( l ) (l) (l) 层的输入为 x ( l ) x^{(l)} x(l)
- 在每一层中
- 首先利用输入 x ( l ) x^{(l)} x(l) 计算仿射变换 z ( l ) = W ( l ) x ( l ) + b ( l ) z^{(l)}=W^{(l)} x^{(l)} + b^{(l)} z(l)=W(l)x(l)+b(l)
- 然后激活函数 f f f 作用于 z ( l ) z^{(l)} z(l),得到 a ( l ) = f ( z ( l ) ) a^{(l)}=f(z^{(l)}) a(l)=f(z(l))
- a ( l ) a^{(l)} a(l) 直接作为下一层的输入,即 x ( l + 1 ) x^{(l+1)} x(l+1)
设 x ( l ) x^{(l)} x(l) 为 m m m 维向量, z ( l ) z^{(l)} z(l) 和 a ( l ) a^{(l)} a(l) 为 n n n 维向量,则 W ( l ) W^{(l)} W(l) 为 m × n m\times n m×n 维的矩阵,这里分别用 z i ( l ) z^{(l)}_i zi(l) 、 a i ( l ) a^{(l)}_i ai(l) 和 W i j ( l ) W^{(l)}_{ij} Wij(l) 表示其中的一个元素。
反向传播算法
在网络训练中,前向传播最终产生一个标量损失函数。
反向传播算法( Back Propagation ) 则将损失函数的信息沿网络层向后传播用以计算梯度,达到优化网络参数的目的。反向传播算法是多层神经网络有监督训练中最简单也最一般的方法之一。
2 多层感知机的损失函数
给定包含 m m m 个样本的集合 { ( x ( 1 ) , y ( 1 ) ) , ⋯ , ( x ( m ) , y ( m ) } \{(x^{(1)},y^{(1)}),\cdots,(x^{(m)},y^{(m)}\} { (x(1),y(1)),⋯,(x(m),y(m)},假设多层感知机的层数(layer)为 N N N,在第 l l l 层的神经节点数目为 s l s_l sl
2.1 平方误差损失函数
J ( W , b ) = [ 1 m ∑ i = 1 m J ( W , b ; x ( i ) , y ( i ) ) ] + λ 2 ∑ l = 1 N − 1 ∑ i = 1 s l ∑ j = 1 s l + 1 ( W i j ( l ) ) 2 = [ 1 m ∑ i = 1 m 1 2 ∥ y ( i ) − f w , b ( x ( i ) ) ∥ 2 ] + λ 2 ∑ l = 1 N − 1 ∑ i = 1 s l ∑ j = 1 s ( l + 1 ) ( W i j ( l ) ) 2 \begin{aligned} J(W,b) &= [\frac{1}{m} \sum_{i=1}^m J(W,b;x^{(i)},y^{(i)})] + \frac{\lambda}{2} \sum_{l=1}^{N-1} \sum_{i=1}^{s_l} \sum_{j=1}^{s_l+1} (W_{ij}^{(l)})^2 \\ &= [\frac{1}{m} \sum_{i=1}^m \frac{1}{2} \| y^{(i)}-f_{w,b}(x^{(i)}) \|^2] + \frac{\lambda}{2} \sum_{l=1}^{N-1} \sum_{i=1}^{s_l} \sum_{j=1}^{s_{(l+1)}} (W_{ij}^{(l)})^2 \end{aligned} J(W,b)=[m1i=1∑mJ(W,b;x(i),y(i))]+2λl=1∑N−1i=1∑slj=1∑sl+1(Wij(l))2=[m1i=1∑m21∥y(i)−fw,b(x(i))∥2]+2λl=1∑N−1i=1∑slj=1∑s(l+1)(Wij(l))2
- 第一项为平方误差项;
- 第二项为 L2 正则化项,在功能上可以称作权重衰减项,目的是减少权重的幅度,防止过拟合,其中 W i j ( l ) W_{ij}^{(l)} Wij(l) 指的是第 l l l 层神经网络上的第 i i i 节点到第 l + 1 l+1 l+1 层神经网络上的第 j j j 个节点的权重;
- 第二项前面的系数 λ \lambda λ 为权重衰减参数,用于控制损失函数中两项的相对权重。
2.2 交叉熵损失函数
以二分类场景为例,交叉熵损失函数定义为:
J ( W , b ) = − [ 1 m ∑ i = 1 m J ( W , b ; x ( i ) , y ( i ) ) ] + λ 2 ∑ l = 1 N − 1 ∑ i = 1 s l ∑ j = 1 s l + 1 ( W i j ( l ) ) 2 = − [ 1 m ∑ i = 1 m { y ( i ) ln o ( i ) + ( 1 − y ( i ) ) ln ( 1 − o ( i ) ) } ] + λ 2 ∑ l = 1 N − 1 ∑ i = 1 s l ∑ j