DL_10——间章(多层感知机、前馈神经网络、全连接网络和反向传播)

1 多层感知机&前馈神经网络&全连接网络

1.1 概述

1)前馈神经网络 (feedforward neural network),又称作深度前馈网络(deep feedforward network)、多层感知机(multilayer perceptron,MLP)
顾名思义,该网络中没有反向传播反馈,因此无法自动修改网络参数。

2)全连接网络 (Full connection)
在该网络中,除输入层外,每个节点都和上一层的所有节点两两相连。

2 前向传播

2.1 神经元模型

神经元模型示意图如下:
神经元模型
其中, x i x_i xi表示输入, w i w_i wi表示权重, z z z表示输入和, f f f表示激活函数, a a a表示神经元输出。

由上图可以得出神经元模型的完整表达式:
z = ∑ i = 1 n w i x i a = f ( w T x + b ) z=\sum_{i=1}^{n}w_{i}x_{i}\\ a=f(\mathbf{w}^{T}\mathbf{x} + b) z=i=1nwixia=f(wTx+b)
其中 f ( ) f() f()表示激活函数, w \mathbf{w} w表示权重是一个列向量, x \mathbf{x} x表示输入是一个列向量, b b b表示偏置。

2.2 多层感知机(MLP)

如图所示,将多个神经元并列即可形成一层神经神经网络,将多层神经元按顺序排好,就可以组成一个具有多层的神经网络。

其中从左到右,依次为输入层(input layer)、隐藏层(hidden layer)、输出层(output layer)。其中隐藏层可以有多层,而输入层和输出层只能有一层。

在整个神经网络中,信号从左向右按层传输。每一层中的神经元没有信号传输,相邻层之间的神经元两两连接。
多层感知机

2.3 前向传播(Forward Propagation)

从MLP模型取其中的两个隐藏层:
在这里插入图片描述
其中, l l l层的输出为 a l a^{l} al l + 1 l+1 l+1层的输出为 a l + 1 a^{l+1} al+1,两层之间神经元两两相连,且权重为 w l w^{l} wl

对于 l + 1 l+1 l+1层中的一个神经元,其连接情况如图所示:
在这里插入图片描述
从图中可知, l l l层的神经元需要把信号传输给 l + 1 l+1 l+1层的神经元。

从中可以得出前向传播表达式:
z i l + 1 = ∑ j = 1 n w i j l a j l a i l + 1 = f ( z i l + 1 ) z_i^{l+1}=\sum_{j=1}^{n}w_{ij}^{l}a_{j}^{l}\\ a_{i}^{l+1}=f(z^{l+1}_i) zil+1=j=1nwijlajlail+1=f(zil+1)
其中, w i j l w_{ij}^{l} wijl 表示第 l l l 层中第 j j j 个神经元与第 l + 1 l+1 l+1 层中第 i i i 个神经元之间连接的权重 w w w

3 反向传播算法(Backpropagation)

3.1 全连接网络中的反向传播

反向传播中传播的是就是梯度。

在神经网络中,将输出层的结果与label作对比,可以求出loss,然后用loss对权重 w w w 和偏置 b b b 可以求出权重 w w w 和偏置 b b b 的梯度,然后根据梯度下降算法就可以改变 w w w b b b 的值。

然后根据链式法则,将梯度依次传回上一层,从而修改上一层的权重 w w w 和偏置 b b b ,如此反复直到输入层,至此即可完成一轮的参数更新。

设:

  • 损失函数 L ( w , b ) L(w, b) L(w,b)
  • 神经元节点值 z i l + 1 = ∑ j = 1 n w i j l a j l z_i^{l+1}=\sum_{j=1}^{n}w_{ij}^{l}a_{j}^{l} zil+1=j=1nwijlajl
  • 残差 δ i l = ∂ L ( w , b ) ∂ z i l \delta_i^l=\frac{\partial{L(w,b)}}{\partial{z_i^l}} δil=zilL(w,b)

所以损失函数对权重的偏导数与残差的关系如下:
∂ L ( w , b ) ∂ w i j l = ∂ L ( w , b ) ∂ z i l + 1 ∂ z i l + 1 ∂ w i j l = δ i l + 1 a j l \frac{\partial{L(w, b)}}{\partial{w_{ij}^l}}=\frac{\partial{L(w, b)}}{\partial{z_i^{l+1}}}\frac{\partial{z_i^{l+1}}}{\partial{w_{ij}^l}}=\delta_i^{l+1}a_j^{l} wijlL(w,b)=zil+1L(w,b)wijlzil+1=δil+1ajl
同理可得损失函数对偏置的偏导数与残差的关系如下:
∂ L ( w , b ) ∂ b i l = ∂ L ( w , b ) ∂ z i l + 1 ∂ z i l + 1 ∂ b i l = δ i l + 1 \frac{\partial{L(w, b)}}{\partial{b_{i}^l}}=\frac{\partial{L(w, b)}}{\partial{z_i^{l+1}}}\frac{\partial{z_i^{l+1}}}{\partial{b_{i}^l}}=\delta_i^{l+1} bilL(w,b)=zil+1L(w,b)bilzil+1=δil+1
然后再根据前向传播的方式可以推导出残差之间的关系如下:
δ i l = ∂ J ∂ z i l = ∑ j = 1 n l + 1 ∂ J ∂ z j l + 1 ⋅ ∂ z j l + 1 ∂ z i l = ∑ j = 1 n l + 1 δ j l + 1 ⋅ ∂ z j l + 1 ∂ z i l = ∑ j = 1 n l + 1 δ j l + 1 ⋅ w i j l f ˙ ( z i l ) = f ˙ ( z i l ) ⋅ ( ∑ j = 1 n l + 1 δ j l + 1 ⋅ w j i l ) \delta_{i}^{l}=\frac{\partial J}{\partial z_{i}^{l}}\\=\sum_{j=1}^{n_{l+1}} \frac{\partial J}{\partial z_{j}^{l+1}} \cdot \frac{\partial z_{j}^{l+1}}{\partial z_{i}^{l}}\\=\sum_{j=1}^{n_{l+1}} \delta_{j}^{l+1} \cdot \frac{\partial z_{j}^{l+1}}{\partial z_{i}^{l}}\\=\sum_{j=1}^{n_{l+1}} \delta_{j}^{l+1} \cdot w_{ij}^{l} \dot{f}\left(z_{i}^{l}\right)\\=\dot{f}\left(z_{i}^{l}\right) \cdot\left(\sum_{j=1}^{n_{l+1}} \delta_{j}^{l+1} \cdot w_{j i}^{l}\right) δil=zilJ=j=1nl+1zjl+1Jzilzjl+1=j=1nl+1δjl+1zilzjl+1=j=1nl+1δjl+1wijlf˙(zil)=f˙(zil)(j=1nl+1δjl+1wjil)
有了残差的传递关系之后,我们就可以求出每层 w w w b b b 的梯度,从而更新每一层的 w w w b b b
w i j l = w i j l − η a i l δ j l + 1 w_{ij}^{l} = w_{ij}^{l} - \eta a_i^l \delta_j^{l+1} wijl=wijlηailδjl+1
b i l = b i l − η δ j l + 1 b_{i}^l=b_i^l-\eta \delta_j^{l+1} bil=bilηδjl+1

未完待续。。。

2.2 卷积网络中的BP

2.2.1 卷积层BP

2.2.2 池化层BP

2.3 循环神经网络BP

猜你喜欢

转载自blog.csdn.net/CesareBorgia/article/details/120318544
今日推荐