Recurrent Neural Network(RNN)
循环神经网络
- 下图为标准的RNN结构。RNN不断接收序列输入 X i X_i Xi,输出记忆向量 h i h_i hi
- 下图为标准的RNN Cell内部结构。RNN Cell之间前向传播公式为:
h t = t a n h ( X t + h t − 1 ) h_t = tanh(X_t + h_{t-1}) ht=tanh(Xt+ht−1)
- 缺点:
1. 梯度爆炸 & 梯度消失
2. 长期依赖问题(Long-Term Dependencies)
梯度计算
随时间反向传播
BackPropagation Through Time,BPTT
实时循环学习
Real-Time Recurrent Learning,RTRL
Long Short-Term Memory(LSTM)
Paper : LONG SHORT-TERM MEMORY
Paper : Understanding LSTM Networks
长短时记忆
- 下图为标准的LSTM Cell内部结构。
- 细胞状态(Cell State):贯穿整个Cell却只有很少分支,保证信息不变的流过整个RNNs
- 遗忘门(Forget Gate):决定细胞状态需要丢弃哪些信息。它通过 h t − 1 h_{t-1} ht−1和 X t X_t Xt之间Concat并经过Sigmoid激活函数来判断细胞状态 C t − 1 C_{t-1} Ct−1中的信息保留或丢弃多少。 f t f_t ft为0表示完全不保留,为1表示完全保留。
- 输入门(Input Gate):决定给细胞状态添加哪些新的信息。首先,通过 h t − 1 h_{t-1} ht−1和 X t X_t Xt的Concat通过Sigmoid生成一个[0, 1]范围的向量,用来控制新信息的获取多少。然后再将 h t − 1 h_{t-1} ht−1和 X t X_t Xt的Concat通过tanh生成新的候选细胞信息 C ~ t \tilde{C}_t C~t,这些信息将会被有选择地更新到细胞状态中。
- 更新细胞状态:更新旧的细胞状态 C t − 1 C_{t-1} Ct−1,变为新的细胞状态 C t C_t Ct。通过遗忘门选择忘记旧细胞状态 C t − 1 C_{t-1} Ct−1的一部分,通过输入门选择添加候选细胞信息 C ~ t \tilde{C}_t C~t的一部分,最终得到新的细胞状态 C t C_t Ct。
- 输出门(Output Gate):决定由细胞状态输出哪些信息。先根据 h t − 1 h_{t-1} ht−1和 X t X_t Xt的Concat通过Sigmoid输出一个范围为[0, 1]“选择向量”,然后将细胞状态通过tanh得到一个范围为[-1, 1]的输出向量,两者相点乘就得到了该LSTM Cell的输出 h t h_t ht。
-
整个LSTM最核心的思想就在于信息的选取。利用Sigmoid函数输出取值范围在[0, 1]之间的特性,将其作为一种“选择比例”来选择、遗忘和输出一些信息。
-
实际使用中,通常使用LSTM最后一层的最后一个LSTM Cell输出的 h t h_t ht值来进行相关操作。
Bidirectional Long Short-Term Memory(Bi-LSTM)
双向LSTM
Bidirectional Long Short-Term Memory With Attention(Bi-LSTM + Attention)
加入Attention机制的Bi-LSTM
Gated Recurrent Unit (GRU)
LSTM的一种变种
Sequence-to-Sequence(Seq2Seq)
Paper : Sequence to Sequence Learning with Neural Networks
-
Beam Search
束搜索
-
在每一步的生成(解码输出)中,生成K个最可能的前缀序列,其中K为束大小(Beam Size),是一个超参数。
-
例子:词表 V = { A , B , C } \mathcal{V}=\{A, B, C\} V={A,B,C},束大小为2,下图为束搜索过程示例
-
在第一步时,生成 K K K个最可能的词
-
在之后的每一步,从 K ∣ V ∣ K|\mathcal{V}| K∣V∣个候选输出中选择 K K K个最可能的序列(在 K K K个分支的每个分支中只选择一个候选,而不是 K K K个,只有第一步选择 K K K个,因为要保证最后只有 K K K个候选序列)
-
-