RNN的原理是什么,存在什么问题?
RNN公式:
RNN求解梯度时出现了参数矩阵的累乘,远距离位置的梯度值变得越来越微弱,无法对序列中长距离的依赖性进行建模。粗略的说,很多个小于1的项连乘就很快的逼近零。
LSTM的原理是什么?
LSTM公式:
遗忘门:
输入门:
输出门:
当前输入的细胞状态:
当前时刻的细胞状态:
当前时刻最终的输出:
相比RNN只有一个传递状态(隐状态) ,LSTM有两个传输状态(隐状态、细胞状态)。首先使用LSTM的当前时刻输入和上一时刻隐状态训练得到四个状态:即输入门、遗忘门、输出门、当前输入的细胞状态。
遗忘门决定了上一时刻的细胞状态有多少保留到当前时刻细胞状态。
输入门决定了当前输入的细胞状态有多少保留到当前时刻细胞状态。
输出门来控制当前时刻细胞状态有多少输出到当前时刻隐状态。
LSTM的参数是共享的吗?
一个Cell在不同时刻的参数是共享的,Gate之间的参数是独立的。
LSTM的参数怎么计算?
((embedding_size + hidden_size) * hidden_size + hidden_size) * 4
其中4表示有4个非线性映射层,embedding_size + hidden_size 为的维度,后面的hidden_size表示 bias 的数量。所以,LSTM 层的参数数量只与输入维度 embedding_size 和输出维度 hidden_size 相关,和普通全连接层相同。
LSTM中各个门使用的是什么激活函数?
输入门、遗忘门、输出门均使用的是Sigmoid函数。
LSTM中的门为什么用Sigmoid函数?
需要产生0~1之间的值。
LSTM是如何缓解梯度消失的?
梯度爆炸:可以用梯度裁剪方法解决。通过设定阈值,当梯度超过此阈值,就进行截取。
梯度消失:引入了gate机制,细胞状态的更新变成了哈达马积,而不再是矩阵乘法,这样使得细胞记忆可以纵穿时间。
LSTM中padding的作用是什么?
进行矩阵运算,需要句长是等长的才可以,所以需要padding操作。
为何GRU的可以像LSTM一样存储记忆
LSTM、GRU之所以能存储记忆是基于RNN对时间序列的依赖,即模型当前时刻隐藏层的值不仅仅取决于当前时刻的输入值,还取决于上一时刻的隐藏层的值。
LSTM与GRU异同是什么?
不同:
(1)对隐状态(记忆)的控制
LSTM:用输出门控制,传输给下一个单元。
GRU:直接传递给下一个单元,不做任何控制。
(2)输入门和重置门作用位置不同
LSTM: 计算新隐状态(记忆)时不对上一时刻的信息做任何控制,而是用遗忘门独立的实现这一点。
GRU: 计算新隐状态(记忆)时利用重置门对上一时刻的信息进行控制。
相似:
最大的相似之处就是, 在从t到t-1的更新时都引入了加法。这个加法的好处在于能防止梯度消失,因此LSTM和GRU都比一般的RNN效果更好。