循环序列模型
为什么选择序列模型
在语音识别、音乐生成、情感分类、DNA序列分析、机器翻译、视频识别、命名实体识别等任务中,共同特点是输入X和/或输出Y都是序列。
数学符号
例如,对于命名实体识别的问题:
- 对于输入序列,用 x<1>,x<2>,...,x<t>,...,x<9> x < 1 > , x < 2 > , . . . , x < t > , . . . , x < 9 > 来表示,其中 x<t> x < t > 表示 t t 位置的单词。
- 对于输出序列用来表示。
- Tx T x 表示输入序列长度, Ty T y 表示输出序列长度,在本例中 Tx=Ty=9 T x = T y = 9 。
- x(i)<t> x ( i ) < t > 表示第 i i 个样本输入的第个位置的值, T(i)x T x ( i ) 表示第 i i 个训练样本的输入序列长度。
- 表示第 i i 个样本的输出第个位置的值, T(i)y T y ( i ) 表示第 i i 个训练样本的输出序列长度。
怎样表现句子里的某一个单词:
one-hot编码:在词典中,该词的编码为1,其余位置编码为0,形成该词的向量。
循环神经网络模型
无法选择标准的神经网络的原因:
- 在不同的样本中,输入输出长度都是可变的。
- 不共享跨文本不同位置学习的功能。
循环神经网络RNN
在每一个时间步中,循环神经网络传递一个激活值到下一个时间步中,用于计算。对于零时刻,则输入一个零向量(或者随机初始化的)作为伪激活值。
循环神经网络是从左往右扫描数据,同时每个时间步的参数也是共享的。
限制:在某一时刻的预测仅仅使用了序列中之前的输入信息,而没有使用该时刻之后的输入信息。(解决方法:双向循环神经网络BRNN)
RNN前向传播过程如下:
其中,表示与
X
X
相乘的用来计算的权重,同理,
wya
w
y
a
表示与
a
a
相乘的用来计算的权重。
穿越时间的反向传播
不同类型的循环神经网络
结构:
多对一:如文本输入
一对多:如音乐生成、序列生成等(输入一个数字等或空,输出一段·音乐)
多对多:如机器翻译,输入和输出的长度不同,因此网络分为编码器和解码器两个部分。
语言模型和序列生成
训练语料:大的英文文本 。
预处理:
- 将句子标记化(tokenize)
- 将每个单词转化成one-hot编码,在句子结尾加上
<EOS>
<
E
O
S
>
<script type="math/tex" id="MathJax-Element-45">
</script>标记。
- 对于训练集中不在字典中的词,用
<UNK>
<
U
N
K
>
<script type="math/tex" id="MathJax-Element-46">
</script>代替。
RNN model
对新序列采样
即对词的概率分布进行采样,来生成一个新的单词序列。
带有神经网络的梯度消失
存在的问题:
RNN从左到右前向传播,由于梯度消失的原因,后面层的输出误差很难影响到前面层的计算。
梯度爆炸:采用梯度修剪的方法。
梯度消失则比较棘手(下一节GRU单元)
GRU单元
GRU(Gated Recurrent Unit)门控循环单元,通过改变RNN的隐藏层,使其能捕捉深层连接,并改善梯度消失的问题。
用 c~<t> c ~ < t > 计算记忆细胞 c c 的更新值,用来判断是否需要更新。
由公式可以看出,如果 Γu Γ u 值为1,则说明需要更新,为0则保持原值。
公式中的 c<t> c < t > 、 c~<t> c ~ < t > 、 Γu Γ u 可以是维数相同的向量,*代表元素对应相乘(element-wise)的乘法。
长短期记忆LSTM
LSTM(Long Short Time Memory)和GRU的对比图:
GRU中,有两个门:
c~<t>
c
~
<
t
>
——代替记忆细胞的候选值,还有
Γu
Γ
u
——更新门来决定是否要更新。
双向神经网络 Bidirectional RNN
缺点:需要完整的数据序列,才能够预测任意位置。