序列模型

一、序列模型-循环神经网络

1、序列模型的应用

语音信号:将输入的语音信号直接输出相应的语音文本信息。无论是语音信号还是文本信息均是序列数据。

2、循环神经网络:

RNN:Waa是连接激励函数与隐藏层的参数,Wax是连接输入和隐藏层的参数,Wya是连接隐藏层和输出层的参数 ;

随即梯度计算法方法更新损失函数,进而求出最有参数解,损失函数 log loss:
L(y-,y) = -ylog(-y-) - (1-y) log(1-y-)

双向RNN,y(t)的获得使用前面的输入信息和后面的输入信息

3、由输入和输出的不同对RNN的分类

many-many : 如上例子

x(t) -> y(t)

many-one:情感分析

一个句子的输入序列,输出是一个分类或者星级

one-many:音乐的生成

输入是一个词或者空,输出是一段音符

many-many(Tx =! Ty):机器翻译

输入和输出的文本长度不同

4、语言模型和序列生成

语言模型:nlp的基础,如何让我们的语音识别系统能够输出我们想要的输出,对于语言模型来说,从输入的句子中,评估各个句子中各个单词出现的可能性,进而给出整个句子出现的可能性

使用rnn构建语言模型:

训练集:一个很大的语言文本库,tokenize:将句子使用词典库标记化,库中没有的词用“UNK”代替,

第一步:使用零向量对输出进行预测,即预测第一个单词是某个单词的可能性;第二部,通过前面的输入,逐步预测后面一个单词出现的可能性,

训练网络:使用softmax损失函数计算损失,对网络进行参数更新,提升语言模型的准确率

新序列生成:

5、RNN梯度消失

目前的基本的rnn模型,不擅长捕获这种长期依赖的关系

解决方法:梯度修剪,也就是观察梯度向量,如果大于某个阀值,则对其进行缩放,保证它不会变大

6、GRU单元

门控循环单元:改变了rnn的隐藏层,使其能够更好地捕获深层次连接,并改善了梯度消失的问题

门控值:处于0-1之间,决定是否对当前时间步的记忆细胞用候选值替换

c(t) = a(t)

c_(t) = tanh(Wc[c<t-1>,x(t)] + bc) ,在每一个时间步上,给定一个候选值c_(t),用以替代原本的记忆细胞c(t);;;候选值

7、LSTM:

GRU能够让我们在序列中学习到更深的联系,长短期记忆,对捕获序列中更深层次的联系要比GRU更加有效;

LSTM中,使用单独的更新们和遗忘们,以及一个输出们

候选值:c_(t)

8、双向rnn:不仅有从左向右的前向连接层,还有从右向左的反向连接层

在nlp问题中,常用的就是使用双向rnn的LSTM

9、深层RNNs

与深层的基本神经网络结构相似,深层RNNs模型具有多层的循环结构,三层的网络机构就已经很多了,因为RNN存在时间的纬度,所以其结构已经足够的庞大

原文地址:https://www.cnblogs.com/lxw003/p/8600375.html