Match-LSTM & BiDAF

简介

抽取式QA是要在文档中定位问题的答案。模型输入是【Passage,Question】,模型输出是【start_idx,end_idx】∈ [ 0, len(passage) ]。
QA模型主要包括 Embeeding层、Encoder编码层层、Interaction交互层、Answer作答层。

SQuAD-V1.1

QA模型的通用架构

Match-LSTM

  • 预处理

文档和问题在输入模型前,需要进行 token 和 padding 操作。

  • 模型结构

Match-LSTM Boundray Model

1. Embedding层

对 Passage 和 Question 分别进行Word Embedding

2. LSTM层

将 Passage 和 Question 分别带入一个BiLSTM,获取所有Hidden states,这样可以使得 Passage 和 Question 都带有上下文信息

3. Match-LSTM层【Attention + LSTM】

这一层的主要作用是获取 Question 和 Passage 交互信息。
获取 Passage 中每一个单词对于 Question 中的注意力权重α,然后将 α 与 Question Embedding相乘求和,获得 Passage 每个单词基于 Question 的新的表示方式。
这个时候再将 Passage 带入LSTM中,每个位置上就都具有 Question信息 、上下文信息(比上一层更丰富的上下文信息)。


下面来看看Match-LSTM中权重的计算方式,如下图所示。这里的Hq是Question带入LSTM输出的hidden states,hp_i是PassageLSTM输出的hidden states的第i个值,L 是上一层LSTM的隐藏层数目。

Match-LSTM中获得权重的方式

这种 attention 被称为 BahdanauAttention。 Passage 中第 t 个上下文向量会根据 所有 Question 的隐向量 & Passage 中 t-1 时刻的上下文向量 来确定对Question 每个 token 的权重。可以把下图的 Y 理解为 passage,把 X 理解为question。

BahdanauAttention结构


获得了权重以后就要对上一层LSTM输出的 Passage 的上下文动手了,给每个位置上添加各自对应的 Question 信息:Hq*α。也就是将attention向量与原问题编码向量点乘,得到passage中第i个token的question关联信息。接着再与passage中第i个token的编码向量做concat,粘贴为一个向量。

concat


将上述concat后的结构再次带入一个LSTM,以便获得加入了 Question 后更丰富的上下文信息。


将上面 attention + LSTM 的操作再反向来一遍,最终将两个方向的结果拼接起来。

双向

4. Pointer层

这里将 Match-LSTM的输出Hr作为这一层的输入,输出为answer。
首先要说明的是,实际上Match-LSTM在预测最终的答案有两种模式,一种是预测出句子里的所有单词【构建语言模型求概率】,一种是只预测句子的起点和终点。论文证明,后一种方式快好省。
预测机制源于Pointer Network,这实际上还是一个BahdanauAttention机制。我们再看看刚刚那个图,这里要将 X 理解为Passage,将 Y理解Answer就可以了。预测值基于上一刻的值和passage全文来决定。

BahdanauAttention结构

也可以说这里将attention向量作为匹配概率输出,这个attention的大小等同于passage的长度。
the attention mechanism is used again

  • 损失函数

交叉熵,Pn是Passage,Qn是Question,a_n是预测序列中的单词。

loss function

BiDAF

  • 创新点

同时引入了Char 和 Word Embdeeing.
在interaction交互层引入了双向注意力机制。Match-LSTM只有Passage对Question的注意力,Passage中每个单词关注Question中的哪些单词。这里引入了Question看Passage的注意力在哪,这样可以计算得到Question眼中的Passage哪些单词重要哪些不重要。

BiDAF

  • 模型结构

BiDAF结构

1. Character Embedding Layer

Character embedding组成一个word的话是一个matrix,对这个matrix进行卷积+池化操作就可以得到对应word的embedding了。


对每个word使用CNN获取character-level embedding

2. Word Embedding Layer

正常Word Embedding操作。论文中使用了Glove预训练向量。

完成以上两个embedding之后,将两者拼接。 然后输入一个两层的 Highway Network,这个最终得到的结果就是Passage和Question文本表示。

对于Highway Network可以这么理解:
原本是y=f(x)
现在是y=αf(x)+(1-α)x
类似于一个Residual,据说ResNet有抄袭Highway Network之嫌。

Residual

Highway Network使得所有原始信息部分激活进入下一层、部分不激活直接进入下一层,保留了更多原始信息。同时反向传播的时候,可以避免梯度消失。
Highway Network的结构一般用在将char embedding卷积成word embedding时候,可以获得更好地词向量。

3. Contextual Embedding Layer

与Match-LSTM类似,这是一个BiLSTM,输入上述embedding,输出hidden states,使得每个位置上获得上下文信息。

步骤1、2、3使得Passage和Question同时具备了Word、Char、Sentence三层信息。

4. Attention Flow Layer

交互层,用于融合Paasge和Question的信息。包括从文本看问题视角的Context2Query和从问题视角看文本的Query2Context,前者用于获取文本单词关注哪些单词,后者用于获取针对这个答案文本中哪些单词更重要。


Context2Query & Query2Context

首先计算H(Passgae)和Question(U)的相似度矩阵S


相似度矩阵

Context2Query对每列计算Softmax然后与U点乘。参照完整结构图绿色线。:


Context2Query

Query2Context对每列取最大值(每个h最大相似度能有多大),再对取出的所有h计算softmax。最后将获得的h_hat重复T遍得到H_hat。参照完整结构图橙色线。:


Query2Context

最后将上述两者联合从3. Contextual Embedding Layer获得的H拼接起来得到G,作为下一层的输入。


G

5. Modeling Layer.

M = BiLSTM(G)

6. Output Layer

Strat_index:

start

End_index:

首先先将M过一层双向LSTM:M2 = BiLSTM(M)

end

  • 损失函数

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

推荐阅读更多精彩内容

  • 前面的文章主要从理论的角度介绍了自然语言人机对话系统所可能涉及到的多个领域的经典模型和基础知识。这篇文章,甚至之后...
    我偏笑_NSNirvana阅读 13,846评论 2 64
  • 这一年我的行程将近六千公里,去过偏僻的工厂、去过繁华的大都市、去过人山人海的地方、也去过不为人知的荒凉。 ...
    周如金诗和远方阅读 742评论 0 1