序列模型
一、序列模型-循环神经网络
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存在时间的纬度,所以其结构已经足够的庞大