面试的时候,很多时候考官会问你一个问题,产生梯度消失或者梯度爆炸的原因是什么,而且这个问题一般伴随RNN相关内容.
RNN这种网络结构,在语音识别,文本预测方面应用广泛,因为它能够处理这种长序列的信息.但是它的毛病在于它很健忘.举个例子,RNN 的输入序列是:蛋糕是我最爱,巴拉巴拉.......,我们希望RNN的输出是蛋糕.但是输出的信息出错了,输出咖啡了.
分析原因, 从神经网络的结构出发.我们知道,神经网络学习的是参数W, b .在反向传递传播,对网络中的参数进行更新.对于长序列而言,蛋糕这个信息记忆经过长时间才到达最后一个时刻,在反向传播得到误差的时候,误差在每个时刻都会乘自己的参数W. 问题在参数W的值大小.假如这个W是小于1 的数,比如0.4,这个0.4不断乘以误差,误差从结果传到初始时刻就会变成一个接近0 的数,对于初始时刻,误差就消失了.所以,长序列的信息记不住.相反,W是大于1的数,比如1.2, 1.2不断乘以误差,这个误差越乘越大,到初始时刻的时候,这个误差大到网络放不下的时候,就梯度爆炸了.