本文基于前两篇,多层感知机及其BP算法(Multi-Layer Perceptron) 与 递归神经网络(Recurrent Neural Networks,RNN)
RNN 有一个致命的缺陷,传统的 MLP 也有这个缺陷,看这个缺陷之前,先祭出 RNN 的 反向传导公式与 MLP 的反向传导公式:
\[RNN : \ \delta_h^t = f‘(a_h^t) \left (\sum_k\delta_k^tw_{hk} + \sum_{h‘} \delta^{t+1}_{h‘}w_{hh‘} \right )\]
\[MLP : \ \delta_h = f‘(a_h) \sum_{h‘=1}^{h_{l+1}} w_{hh‘}\delta_{h‘}\]
注意,残差在时间维度上反向传递时,每经过一个时刻,就会导致信号的大幅度衰减,为啥呢,就是因为这个非线性激活函数 $f$ ,一般这个函数的形状如下图:
如上图所示,激活函数 $f$ 在在红线以外的斜度变化很小,所以函数 $f$ 的导数 $f‘$ 取值很小,而经过以上列出的残差反向传递公式可以得出,每经过一个时刻,衰减 $f‘$ 的数量级,所以经过多个时刻会导致时间维度上梯度呈指数级的衰减,即此刻的反馈信号不能影响太遥远的过去 。因此,虽然 RNN 理论上可以处理任意长度的序列,但实习应用中,RNN 甚至很难处理长度超过 10 的序列。下图形象的描绘了这种梯度消失的现象
可见,对于 $t=1$ ,其受到的来自于 $t >1$ 时刻的反馈越来越小,由图中的颜色的深浅代表反馈信号的大小。为了解决这种梯度消失的现象,学者们研究了众多方法,其中 Long Short-Term Memory 表现最为出色。
时间: 2024-11-06 09:38:55