前向网络和反向传播(feedforward and back-propagation)

激活函数 activation function

网络中每一层除了$weight \times x$的形式,还需要将乘积结果投入一个激活函数中,普适性近似定理universal approximation theorem指出,一个只有两层计算单元的网络,第一层是非线性的,第二层是线性的,可以近似任意程度的连续函数。因此激活函数需要是一个非线性的函数。

前向网络中比较流行的的激活函数:

sigmoid:

$$
\sigma(x)=1 /\left(1+e^{-x}\right)
$$

ReLU: rectified linear unit

$$
\operatorname{ReLU}(x)=\max (0, x)
$$

softplus:丝滑版本的ReLU

$$
\operatorname{softplus}(x)=\log \left(1+e^{x}\right)
$$

Tanh

$$
\tanh (x)=\frac{e^{2 x}-1}{e^{2 x}+1}
$$

Note that the range of tanh is $(-1,+1)$. Tanh is a scaled and shifted version of the sigmoid, as $\tanh (x)=2 \sigma(2 x)-1$.

image-20220318172931257

多层网络的非线性

多层网络可以理解为很多个二层网络结合成的节点所组成的多层网络,每一个二层网络构成的节点都是一个线性函数投入到一个非线性函数中去,因此多层网络也是具有非线性的。

利用多层网络的非线性可以模拟任意形状的函数,对输入的数据浅在的特征分布进行模拟,为什么可以使用多层网络这种形式来挖掘输入数据的pattern目前还未研究清楚,但是目前使用有监督的训练确实可以使得网络结构去不断地逼近输入数据中所蕴含的模型。

书中用图中例子来说明如何利用结果误差来调整权值参数进而使得预测值更加逼近真实值。

将一个输出展开可以得到表达式:

$$
\begin{aligned}
\hat{y} &=g_{5}\left(i n_{5}\right)=g_{5}\left(w_{0,5}+w_{3,5} a_{3}+w_{4,5} a_{4}\right) \\
&=g_{5}\left(w_{0,5}+w_{3,5} g_{3}\left(i n_{3}\right)+w_{4,5} g_{4}\left(i n_{4}\right)\right) \\
&=g_{5}\left(w_{0,5}+w_{3,5} g_{3}\left(w_{0,3}+w_{1,3} x_{1}+w_{2,3} x_{2}\right)\right.\\
&\left.+w_{4,5} g_{4}\left(w_{0,4}+w_{1,4} x_{1}+w_{2,4} x_{2}\right)\right)
\end{aligned}
$$

对应的可以画出computation graph,也称之为dataflow graph

image-20220318173316670

那么对于网络的输出层,依然可以使用平方差的损失函数loss function(平方差被高斯证明是最能计量损失的函数形式,类似于对能量损失的函数计量,在矩阵中就是矩阵的二次型表示),即:

$$
\operatorname{Loss}\left(h_{\mathbf{w}}\right)=L_{2}\left(y, h_{\mathbf{w}}(\mathbf{x})\right)=\left|y-h_{\mathbf{w}}(\mathbf{x})\right|^{2}=(y-\hat{y})^{2}
$$

如果对权值$w_{3,5}$ 取偏微分,根据chain rule我们可以发现如下的推导:

$$
\begin{aligned}
\frac{\partial}{\partial w_{1,3}} \operatorname{Loss}\left(h_{\mathbf{w}}\right) &=-2(y-\hat{y}) g_{5}^{\prime}\left(i n_{5}\right) \frac{\partial}{\partial w_{1,3}}\left(w_{0,5}+w_{3,5} a_{3}+w_{4,5} a_{4}\right) \\
&=-2(y-\hat{y}) g_{5}^{\prime}\left(i n_{5}\right) w_{3,5} \frac{\partial}{\partial w_{1,3}} a_{3} \\
&=-2(y-\hat{y}) g_{5}^{\prime}\left(i n_{5}\right) w_{3,5} \frac{\partial}{\partial w_{1,3}} g_{3}\left(i n_{3}\right) \\
&=-2(y-\hat{y}) g_{5}^{\prime}\left(i n_{5}\right) w_{3,5} g_{3}^{\prime}\left(i n_{3}\right) \frac{\partial}{\partial w_{1,3}} i n_{3} \\
&=-2(y-\hat{y}) g_{5}^{\prime}\left(i n_{5}\right) w_{3,5} g_{3}^{\prime}\left(i n_{3}\right) \frac{\partial}{\partial w_{1,3}}\left(w_{0,3}+w_{1,3} x_{1}+w_{2,3} x_{2}\right) \\
&=-2(y-\hat{y}) g_{5}^{\prime}\left(i n_{5}\right) w_{3,5} g_{3}^{\prime}\left(i n_{3}\right) x_{1} .
\end{aligned}
$$

即推导最后使用了 $w_{3,5}$ 和$w_{1,3}$表示了输出结果和真实值之间的差值的梯度,即$y-\hat{y}$的梯度,从这个结果可以做如下分析:

  • 将最后结果$2(y-\hat{y})g^{\prime}_{5}(in_5)$记作$\Delta_5$ (即对输出差值的微分不展开${\hat{y}}$的部分,注意最前面的负号放在了括号里面)
  • 将剩余部分记作$a_3$(即经过$g_3$激发函数产生的结果)
  • 则最后公式变为$\Delta_5 a_3$
  • 如果$\Delta_5$ 是正值,则意味着$\hat{y}$太大,$\hat{y}>\text{真实值}y$ ,导致差值为正,如果$a_3$ 也为正,则此时增大$w_{1,3}$会使得$a_3$变大,然后最后的结果更大,即真实值和预测值之间的差值的梯度变大,意味着预测偏离。
  • 反之,如果$\Delta_5$ 是正值,但$a_3$ 为负值,最后结果为负,意味着预测值虽然大于真实值,但差值沿权值的方向是递减的,则随着时间会逐渐拟合,此时增加$w_{1,3}$会增加递减速率,使得最终差值为0.
  • 如果定义$\Delta_{3}=\Delta_{5} w_{3,5} g_{3}^{\prime}\left(i n_{3}\right)$ ,即最后结果在$w_{1,3}$的方向上直接变成$\Delta_3 x$ ,这就意味着最后真实值和预测值的误差,在节点3处的误差体现可以表示为,在节点5处接收到的误差乘以从节点3到5路径的信息,反向回传回去的,即$\Delta_{5} w_{3,5} g_{3}^{\prime}\left(i n_{3}\right)$ ,这既是所谓的反向传播back-propagation
  • 另外从表达式中可以看出$a_3$作为中间层,其大小也是有作用的,如果$a_3$的模比较小,则意味着在最后结果误差沿着$w_{1,3}$方向传递的误差受$a_3$在该方向上的影响很小,即受$w_{3,5}$的影响很小。
  • 反向传播体现的是误差的梯度在网络中是以反方向从结果到初始输入的过程,体现的是由权值和激发函数构成的网络骨架的作用过程,所以调整网络中权值的大小,会对最后误差的变化速率(梯度)产生影响,这个例子中选取的仅仅是对一条支路的具体分析,如果使用权值矩阵,则最后可以体现为网络结构(权值矩阵)对误差梯度的影响。

梯度消失 gradient vanishing

梯度消失的基本上是由激活函数不断的累计求导导致的,虽然我们使用的激活函数都是

递增的,但是在多层网络中,不断地对激活函数求导,可能会使得$g^{\prime}_j(in_j)$无限接近于0,即多层网络结果误差的梯度回传到靠近前面输入层时直接变成0了,导致如何调整权值也不起作用,这个就叫做梯度消失。