1 序列模型
序列模型广泛应用于语音识别,音乐生成,情感分析,DNA序列分析,机器翻译,视频行为识别,命名实体识别等众多领域。序列模型的输入与输出的对应关系有非常多的组合,比如一对一,多对多,一对多,多对一,多对多(个数不同)等情况来针对不同的应用
2 数学符号
- x(i)<t>前面的i表示第i个训练样本,t表示某个序列样本中索引位置,如下面的一句话是一个样本,“and”的索引是3,序列的长度用Tx表示,下面句子中Tx=9
-
单词是无法直接输入到网络中,所以必须转成数子,用数字来表示单词。方法是将数据集中出现次数最多的10000个单词,用one-hot来表示每一个单词
3 循环神经网络模型
- 首先,将第一个单词x<1>x<1>输入神经网络,并预测 y<1>y<1>; 然后,将第二个单词x<2>x<2>输入神经网络,同时将第一步计算的激活值a<1>a<1>也输入到神经网络,共同作用并预测y<2>y<2>; 重复第二步,直至把所有单词都训练完毕。
循环神经网络中的参数是共享的,从输入到隐藏层的参数表示为wax,水平方向激活值向下一层输入的参数表示为waa,从隐藏层到输出的残水表示为wya 。其前向传播可以如下表示:
对应的反向传播:
4不同类型的循环神经网络
循环神经可以对应不同的输出类型。第一种是传统标准的网络层,第二是一对多(音乐生成),第三是多对一(情感分析),第四是多对多(输出与输入个数相等,语音识别),第五是多对多(输出与输入个数不一定相等,机器翻译)。
5语言模型和序列生成
语言模型要解决的就是那个句子出现的概率更大,则输出哪个。语言模型如下图所示,首先第一个输出是在无任何提示下输出各个词的概率,第二个输出是在给定第一个输出标签时各个词(10002)输出的概率,以此类推,每一个输出都是在给定条件下一个输出各个单词的概率。
6 对新序列采样
在应用上面训练好的网络时,只需要用numpy取出来第一个输出中单词概率最大的单词,这样就实现了对序列的采样,然后将获得的词作为已知条件,取获取下一个单词。如下图所示:
7 GRU单元
GRU 是一种常见得循环序列模型。GRU即门控循环单元,可以解决循环神经网络的梯度消失问题,进而可以解决上面的远距离也能影响后面的输出。GRU改变了RNN隐藏层单元使其更好的捕捉深层连接,并改善了梯度消失问题。 相比于普通的RNN隐藏层单元,GRU增加了一个C(memory cell)记忆细胞,以增加记忆功能。
8 LSTM 长短时记忆单元
LSTM包括遗忘门、更新门和输出门。LSTM比之GRU更加有效。
双向循环神经网络