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