1.手推RNN和LSTM结构
lstm遗忘门控制前一步记忆状态多大程度被遗忘
输入门控制当前状态多大程度被更新到记忆状态中
记忆状态间的状态转移由输入门与遗忘门共同决定
输出门控制当前输出多大程度取决于当前的记忆状态。
Lstm是通过输入门与遗忘门实现长短记忆的。
为什么选用sigmoid与tanh作为激活函数?
Sigmoid用作控制门的激活函数,它具有饱和性,就是输入超过一定范围时,输出几乎不再发生明显的变化,值域为(0,1)符合门控的含义。Sigmoid是现代门控中重要选择。
Tanh作为计算状态时的激活函数,值域为-1,1,这与多数场景下特征分布以0为中心符合,还可以避免前向传播时发生数值问题。而且在0附近有更大的梯度,通常会使模型收敛更快。
2.LSTM中每个gate的作用是什么,为什么跟RNN比起来,LSTM可以防止梯度消失
RNN在梯度下降进行训练时,是把循环展开计算梯度的,是由过去到现在一步一步串起来,如果遇到梯度等于0的情况,前一步的梯度往往也很小,容易发生梯度消失。RNN考虑的是最近时刻的状态。
而LSTM通过输入输出门,遗忘门,可以记忆一些长期的信息,相比于rnn保留了更多的长期信息,因此梯度消失问题得到了一定缓解。
LSTM变体——GRU:将输入门和遗忘门合成了单一的更新门,参数量减小。
3.CNN和RNN的梯度消失是一样的吗?
CNN不会出现这种现象,因为每一层w不相同,初始化时是独立同分布的,因此可以在一定程度相互抵消。即使多层后一般不会出现数值问题。
4.LSTM的结构与前向传播
5.RNN相对于前向网络/CNN有什么特点?
一般的前馈网络,接收一个定长向量作为输入,输出定长向量,需要一次性接收所有输入,因而忽略了序列中的顺序信息;
CNN在处理变长序列时候,采取滑动窗口与池化的方式将输入转化为一个定长的向量表示,可以捕捉到序列中一些局部特征,但是无法解决长距离依赖。(相比于前馈网络,训练速度更快)
RNN很适合处理时序关系数据,比如文本数据;把每一个时间步中信息编码到状态变量中,使网络具有一定的记忆能力,从而更好理解序列信息。
(最大步长为T的RNN展开后相当于一个共享参数的T层前馈网络)
对于一些时间先后相关的,例如视频下一时刻的预测,文档前后文的内容预测等
6.relu避免梯度消失,爆炸问题
即使使用relu也不能避免,还是存在w连乘问题,推荐的做法是w初始化为单位矩阵