Seq2Seq模型概述

seq2seq序列到序列模型

本文从RNN角度出发,主要是讲述seq2seq模型的原理。

Seq2Seq模型简介

      Seq2Seq模型是输出的长度不确定时采用的模型,这种情况一般是在机器翻译的任务中出现,将一句中文翻译成英文,那么这句英文的长度有可能会比中文短,也有可能会比中文长,所以输出的长度就不确定了。如下图所,输入的中文长度为4,输出的英文长度为2。


seq2seq模型

       在网络结构中,输入一个中文序列,然后输出它对应的中文翻译,输出的部分的结果预测后面,根据上面的例子,也就是先输出“machine”,将"machine"作为下一次的输入,接着输出"learning",这样就能输出任意长的序列。
       机器翻译、人机对话、聊天机器人等等对话生成场景人物,这些都是应用在当今社会都或多或少的运用到了我们这里所说的Seq2Seq。
       举个简单的例子,当我们使用机器翻译时:输入(Hello) --->输出(你好)。再比如在人机对话中,我们问机器:“你是谁?”,机器会返回答案“我是某某某”。如下图所示为一个简单的邮件对话的场景,发送方问:“你明天是否有空”;接收方回答:“有空,怎么了?”。

邮箱对话:输入:你明天有空?回复:有,怎么啦?

Seq2Seq结构

       seq2seq属于encoder-decoder结构的一种,这里看看常见的encoder-decoder结构,基本思想就是利用两个RNN,一个RNN作为encoder,另一个RNN作为decoder。encoder负责将输入序列压缩成指定长度的向量,这个向量就可以看成是这个序列的语义,这个过程称为编码,如下图,获取语义向量最简单的方式就是直接将最后一个输入的隐状态作为语义向量C。也可以对最后一个隐含状态做一个变换得到语义向量,还可以将输入序列的所有隐含状态做一个变换得到语义变量。

RNN网络

       而decoder则负责根据语义向量生成指定的序列,这个过程也称为解码,如下图,最简单的方式是将encoder得到的语义变量作为初始状态输入到decoder的RNN中,得到输出序列。可以看到上一时刻的输出会作为当前时刻的输入,而且其中语义向量C只作为初始状态参与运算,后面的运算都与语义向量C无关。
语义无关seq2seq:语义向量只作初始化参数参与运算

       decoder处理方式还有另外一种,就是语义向量C参与了序列所有时刻的运算,如下图,上一时刻的输出仍然作为当前时刻的输入,但语义向量C会参与所有时刻的运算。


语义相关seq2seq:语义向量参与解码的每一个过程

如何训练Seq2Seq模型

       RNN是可以学习概率分布,然后进行预测,比如我们输入t时刻的数据后,预测t+1时刻的数据,比较常见的是字符预测例子或者时间序列预测。为了得到概率分布,一般会在RNN的输出层使用softmax激活函数,就可以得到每个分类的概率。(在对话生成任务中,即得到词典中每个单词出现的概率)
       Softmax 在机器学习和深度学习中有着非常广泛的应用。尤其在处理多分类(C分类数 > 2)问题,分类器最后的输出单元需要Softmax 函数进行数值处理。关于Softmax 函数的定义如下所示:

S_i=\frac {e^{vi}}{\Sigma^C_i e^{vi}}

       其中,V_i是分类器前级输出单元的输出。i 表示类别索引,总的类别个数为C,表示的是当前元素的指数与所有元素指数和的比值。Softmax 将多分类的输出数值转化为相对概率,更容易理解和比较。我们来看下面这个例子。
       一个多分类问题,C = 4。线性分类器模型最后输出层包含了四个输出值,分别是:
V= \left [ \begin{matrix} -3 \\ 2 \\ -1 \\ 0 \end {matrix} \right ]
       经过Softmax处理后,数值转化为相对概率:(和为1,即被称为归一化的过程)
V= \left [ \begin {matrix} 0.0057 \\ 0.8390 \\ 0.0418 \\ 0.1135 \end {matrix} \right ]
       很明显,Softmax 的输出表征了不同类别之间的相对概率。我们可以清晰地看出,S1 = 0.8390,对应的概率最大,则更清晰地可以判断预测为第1类的可能性更大。Softmax 将连续数值转化成相对概率,更有利于我们理解。 (在对话生成任务中,则输出字典第1个序号代表的单词)

RNN模型

       对于RNN,对于某个序列,对于时刻t,它的词向量输出概率为P(x_t | x_1,x_2,...,x_{t-1}),则softmax层每个神经元的计算如下:
P(x_t ,t| x_1,...,x_{t-1}) = \frac {exp(w_th_t)}{\Sigma^K_{i=1}exp(w_ih_t)}
       其中h_t是当前第t个位置的隐含状态,它与上一时刻的状态及当前输入有关,即h_t=f(h_{t-1},x_t)t表示文本词典中的第t个词对应的下标。x_t表示词典中第t个词;w_t是词权重参数。
       那么整个序列的生成概率就为
p(x) = \Pi^T_{t=1} p(x_t|x_1,...,x_{t-1})
       其表示从第一个词到第T个词一次生成,产生这个词序列的概率。

Seq2Seq模型

       而对于encoder-decoder模型,设有输入序列x_1,x_2,...,x_T,输出序列y_1,y_2,...,y_T,输入序列和输出序列的长度可能不同。那么其实就需要根据输入序列去得到输出序列可能输出的词概率,于是有下面的条件概率,x_1,x_2,...,x_T发生的情况下,y_1,y_2,...,y_T发生的概率等于p(y_t|v,y_1,y_2,...,y_{t-1})连乘,如下公式所示。其中,v表示x_1,x_2,...,x_T对应的隐含状态向量(输入中每个词的词向量),它其实可以等同表示输入序列(模型依次生成y_1,y_2,...,y_T的概率)。
p(y_1,y_2,...,y_T|x_1,x_2,...,x_T) = \Pi^T_{t=1}p(y_t|x_1,...,x_{t-1},y_1,...,y_{t-1})
= \Pi^T_{t=1}p(y_t|v,y_1,...,y_t-1)
       此时,h_t = f(h_{t-1},y_{t-1},v),decode编码器中隐含状态与上一时刻状态、上一时刻输出和状态v都有关(这里不同于RNN,RNN是与当前时刻的输入相关,而decode编码器是将上一时刻的输出输入到RNN中。于是decoder的某一时刻的概率分布可用下式表示,
p(y_t|v,y_1,y_2,...,y_{t-1}) = g(h_t,y_{t-1},v)
       所以对于训练样本,我们要做的就是在整个训练样本下,所有样本的p(y_1,y_2,...,y_T|x_1,...,x_T)概率之和最大。对应的对数似然条件概率函数为\frac {1}{N} \Sigma^N_{n=1} log(y_n|x_n,θ),使之最大化,θ则是待确定的模型参数。

参考:
1、NLP之Seq2Seq:
原文:https://blog.csdn.net/qq_32241189/article/details/81591456
2、深度学习的seq2seq模型:
原文:https://blog.csdn.net/wangyangzhizhou/article/details/77883152
3、Seq2Seq模型简介
原文:https://www.jianshu.com/p/1c6b1b0cd202
4、三分钟带你对 Softmax 划重点
原文:https://blog.csdn.net/red_stone1/article/details/80687921

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343