一、序列模型-sequence model2

本文涉及的产品
模型训练 PAI-DLC,5000CU*H 3个月
交互式建模 PAI-DSW,每月250计算时 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
简介: 一、序列模型-sequence model

6、深度RNN-Deep RNN



在学习非常复杂的函数时,将多层RNN堆在一起形成更深层次的RNN会更有帮助。DRNN的架构示意图如下图所示:

45a9348da49349b6a1f861a2faf6559e.png

如上图所示,若要计算 a[2]<3>,即第2层,在第3个时间步下的值,需要如下计算:


通常情况下,RNN的深度不会超过3层,因为RNN有横向的时间维度;但是在超过3层之后,可以继续添加没有横向时间维度连接的更深层次的神经元,经历更深层次的神经网络之后在输出预测值

y<t>。



7、词汇嵌入-Word Embedding



在建立语料库vocabulary之后,最简单的方法是使用one-hot方式来表示某个词汇,但是one-hot表示方式不能只能表示出其在语料库中的位置,不能体现出词汇之间的相互关系,所示使用更多的特征来表示某个词汇,如下图所示:

415904cde27746f698b6dd1366694a68.png

cbcde75d60ee486e882d4a92796e9a0f.png





7.1 使用词汇嵌入做词汇类比推理


若已经知道man对应的单词是woman,需要预测king对应的单词是什么,任务可以用公式表示为:


Findawordw:argwmaxsim(ew,ekingeman+ewoman)



793eafc559504cd3bf0f2db12d7ceab2.png



最常用的相似度函数为余弦相似度函数,

image.png

其中 u , v u,v u,v表示通过word embedding 得出的向量。




7.2 嵌入矩阵


使用词汇嵌入之后的嵌入矩阵如下所示:

6b4949c62bb644f791d5c3cdd823552a.png


上图展示了特征为300个,vocabulary库中词汇量为10000的词汇嵌入矩阵。

7.3 Word 2 Vec


用来训练word embedding的skip-gram模型的构建过程如下所示:

3395920c542c4aec828a8ce54050ccdd.png



 


这是一种监督训练的方式,已知训练集中的输入输出,首先取出输入序列中的某个单次,获取其在word Embedding中的值  ec,之后通过softmax层得到这个输入的预测值 y

,需要训练的参数包括word embedding中的参数和softmax计算式中的参数 θ t \theta_t θt。训练模型使用的损失函数为交叉熵误差:L(y

,y)=−∑i=110000(yilog(y

i))



7.4 负采样法-negative sampling


使用上述Word 2 Vec模型最大的缺陷在于softmax函数的计算速度上,因为softmax函数的分母时所有语义库中单词参数计算的累和。所以考虑使用改进的学习方法。 首先构建训练数据,构建方法如下所示:


1586710895a2458893435689ab0ad8d1.png



从输入序列中随机选取一个单词,orange,之后选取orange的临近单词(左右10个单词之间),选定juice,将这条记录的target值置为1;之后后续的训练数据的context的单词均为orange,word为从vocabulary库中随机选取的单词,之后这些记录的target值置为0。


4fc72d2e4a524ee3853650ac781be14a.png


7.5 Global Vector for word Representation-GloVe


首先定义 x i j x_{ij} xij表示 i i i在 j j j的上下文中出现的次数,即表示 i , j i,j i,j同时出现的概率。GloVe模型如下所示:

ca43433c126c4ee3a0db118e5ccb5c33.png


7.6 使用word embedding做情感分类


情感分类问题通常缺少大量的训练数据,而word embedding可以有效地克服这个缺陷。使用RNN和word embedding做情感分类的模型如下所示:


cad280f2b3824290b93f1ee9444cd411.png




7.7 word embedding 除偏


word可以用来去除性别,种族,性取向的偏差。

1414baa60c774fb99a048961a7e78638.png



8、序列到序列模型-SeqtoSeq


8.1 基本模型

语言翻译中的序列到序列模型如下图所示:


456038181d374523b3799eba3f961467.png


图片描述中的序列到序列的模型如下图所示:


4001069a3a744459b3c7c97ac830652c.png

机器翻译可以看作是一个条件语言建模问题,条件是输入的句子经过编码之后的编码值;在选择输出的句子时,不是随机选择一个生成的句子输出而是选择输出句子中所有输出词汇的联合概率最大的句子进行输出:

eeaa8c54650c4c1d8cfac3071d4e53e8.png



8.2 束搜索-beam search


在进行机器翻译时,我们想要的不是一个随机的输出,而是一种最优输出,但是由于可能的输出空间很大,造成很难输出最优的翻译序列,所以使用束搜索的定向搜索方式来提高输出的质量,即优化上述8.1中的条件概率式。

16c9c3b17fd7447b9ec2bdebc94003b0.png



beam search的思想是,在每一个事件步,不是只保存最优的词汇选择,而是保持beam width e.g.(3个)个最优的词汇,最优的衡量标准是当前和之前选择词汇在输出序列编码条件下的联合概率。


第三步的束搜索的过程示意如下所示:


8128ba1de6cd40acad23635d28912167.png


若束搜索的宽度beam width被设置为1,则beam search即为贪婪搜索。




8.3 束搜索的改进措施


长度归一化,使用束搜索来优化下式的时候


image.png


因为每一个累乘的概率的取值范围都是[0,1],所以当累乘的项过多时,会出现值下溢出风险,所以借助对数函数对上述目标进行改进:


image.png


将累乘项变为累加项。这样处理之后还是会有问题,因为概率的取值在[0,1]之间,所以每个对数的取值均小于0,所以当目标为求最大化时,算法会倾向于选择较短的输出序列,为了克服这个缺陷,采用长度归一化的处理方式,如下所示:


image.png


其中, α取值为0时,表示不进行归一化;取值为1时表示进行完全长度归一化;在实践中,一般将  α的取值置为0.7。


使用束搜索的另一大比较棘手的问题是怎样选择合适beam width,当这个width选择过大时,可以得到更好的解,但是通常要耗费更长的时间;当width选择过小时,得到解的质量通常更差,但是通常求解效率更高。通常的做法是首先选取比较小的width,如width=3,之后慢慢增大到10,100,之后根据求解的时间和效果选定出合适的width。试验表明,当width非常大时,如扩大到1000,可以获得的收益增加量会逐渐减小,效益边缘递减效应。





8.4 beam search的误差分析


下图是进行误差分析的方法,基本思想是将一个正确的翻译放到输出结果序列中,之后计算某个词汇正确翻译的概率和使用机器翻译的词汇的概率,将二者进行对比,若正确翻译词汇选择的概率更大,说明RNN网络问题不大,应该适当增加beam width;反之若机器翻译词汇概率更大,则说明束搜索选择出了合适的词汇,但是这个词汇不是最合适的,说明RNN网络出现问题,应该采用其他方式改进RNN


a54fd8257edc42f5a3a63a8c88c7a041.png



9、注意力模型-Attention Model


注意力模型在基本RNN模型的基础之上添加了注意力机制,令  α<t,t′>表示某个时间步下的输出  y<t>应该对激活函数值  a<t′>付出的注意力;其中{a}^{<t'>}, \overleftarrow{a}^{<t'>}) a<t′>=(a

<t′>,a

<t′>)表示某个时间步 t ′ t' t′下双向RNN模型的激活函数值向量;某个输出 y<t>对所有激活函数值的注意力之和为 ∑t′α<t,t′>=1;定义中间语义 c<t>表示在注意力机制下,某个输出 y<t>对应的所有激活函数值的注意力权重累加值。BRNN框架下使用注意力机制的示意图如下所示:


0f32a6cc0266495bbca9d6bb55bebb7d.png


注意力数值的计算方式如下式所示:

image.png


其中,  e<t,t′>通过一个简单的单层神经网络来试验求解,网络输入为 s<t−1>和 a<t′>。整个过程如下图所示:


83a1b1eadf604aae87d1d92e9290096d.png




10、Transformer 模型


10.1 self-attention机制


自注意力机制下,需要对输入序列的每一个单次都计算基于注意力的向量表示


image.png




在计算每一个单次的注意力向量之前,首先需要确定出每一个单次 i i i对应的query(q<i>),key(k<i>)和  value(v<i>)三个值,其计算方式如下所示:

image.png


其中, WQ,WK,WV是需要学习的参数。自注意力的计算方式示意图如下所示:

4edd46ae39014ec18b2457f1be103037.png



其中,向量表示形式中的  dk

表示点积缩放,用来防止数值爆炸问题。



10.2 multi head attention机制


多头注意力机制本质上就是将自注意力机制重复了多遍,之后将每一遍的结果进行串联,最后乘以一个群众系数  wo之后得到,多头注意力机制的计算过程如下图所示:


image.png



Transformer model


Transformer模型的架构如下所示:


fc73973313f043b19de707479c58c204.png
































相关文章
|
机器学习/深度学习 自然语言处理 语音技术
从 Seq2Seq 到 Attention:彻底改变序列建模
从 Seq2Seq 到 Attention:彻底改变序列建模
66 0
|
3月前
|
机器学习/深度学习 自然语言处理
序列到序列(Seq2Seq)模型
序列到序列(Seq2Seq)模型
152 8
|
6月前
|
机器学习/深度学习 算法 定位技术
神经网络epoch、batch、batch size、step与iteration的具体含义介绍
神经网络epoch、batch、batch size、step与iteration的具体含义介绍
367 1
|
机器学习/深度学习 存储 自然语言处理
深入解析序列模型:全面阐释 RNN、LSTM 与 Seq2Seq 的秘密
深入解析序列模型:全面阐释 RNN、LSTM 与 Seq2Seq 的秘密
153 0
|
机器学习/深度学习 自然语言处理 PyTorch
【文本摘要(3)】Pytorch之Seq2seq: attention
【文本摘要(3)】Pytorch之Seq2seq: attention
77 0
|
算法 数据挖掘
【多标签文本分类】BERT for Sequence-to-Sequence Multi-Label Text Classification
【多标签文本分类】BERT for Sequence-to-Sequence Multi-Label Text Classification
109 0
【多标签文本分类】BERT for Sequence-to-Sequence Multi-Label Text Classification
|
机器学习/深度学习 自然语言处理 PyTorch
【多标签文本分类】代码详解Seq2Seq模型
【多标签文本分类】代码详解Seq2Seq模型
287 0
【多标签文本分类】代码详解Seq2Seq模型
|
机器学习/深度学习 Web App开发 自然语言处理
一、序列模型-sequence model
一、序列模型-sequence model
一、序列模型-sequence model
|
机器学习/深度学习 自然语言处理 PyTorch
【35】Sequence序列网络介绍与使用(含RNN,RNNCell,LSTM,LSTMCell的调用)
【35】Sequence序列网络介绍与使用(含RNN,RNNCell,LSTM,LSTMCell的调用)
260 0
【35】Sequence序列网络介绍与使用(含RNN,RNNCell,LSTM,LSTMCell的调用)
|
机器学习/深度学习 数据采集 自然语言处理
End to End Sequence Labeling via Bidirectional LSTM-CNNs-CRF论文
传统改机的序列标注系统,需要大量的针对特定任务的手工特征和经过预处理的数据。在这篇文章中,作者引入了一种创新的神经网络结果,使用Bi-LSTM、CNN和CRF相结合的网络结果,使模型能够从词和字级别表示中学习和收益。作者指出他们的系统是真正意义上的端到端结果,不需要任何特征工程或者数据预处理工作,因此可以广泛应用于各种序列标注任务。该模型在PennTreebank WSJ词性标注任务和CoNLL 2003 词性标注数据集上取得优异的成绩,前者97.55%的准确率,后者取得91.21%的F1值。
134 0
End to End Sequence Labeling via Bidirectional LSTM-CNNs-CRF论文

热门文章

最新文章