博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
论文阅读:BERT for Conversational Machine Comprehension
阅读量:5883 次
发布时间:2019-06-19

本文共 3257 字,大约阅读时间需要 10 分钟。

论文:

传统的机器阅读理解的模型都是给定 context 和 question, 找出最有可能回答该 question 的 answer,用概率表示为 p(a|q,c)。 首先引入概念:

  • 单轮机器阅读理解(MC): 研究方法是question answering method,代表的论文有:BIDAF,陈丹奇的《Reading wikipedia to answer opendomain questions》,QAnet的论文《Fast and accurate reading comprehension by combining self-attention and convolution》,以及生成式阅读理解的代表作《Generative Question Answering: Learning to Answer the Whole Question》
  • Conversational machine comprehension(CMC):multi-turn dialogue,代表数据集QuAC和CoQA。提出这个概念的文章是:《FlowQA: Grasping Flow in History for Conversational Machine Comprehension》

BERT在SQUAD上表现很好,BERT在预训练期间有训练句子级别的mask,因此可以捕捉两个句子之间的关系。 对应的 BERT for MC,我们使用一个问题和一个段落作为输入并微调预训练的BERT模型从段落中提取答案。 然而, BERT只能接受512个令牌的两个序列,因此不能处理CMC。 微软论文的《Sdnet: Contextualized attention-based deep network for conversational question answering》提出了一种简单的把CMC转换为MC的方法即:concatenation of the question and answer sequences in a multi-turn context with a special token。这样做的问题是没有办法利用BERT的mask特性去多捕捉一些交互特征。

这篇论文提出了一种简单高效的基于BERT的CMC模型,分为两个步骤:

  • 第一步是上下文编码,使用BERT获得当前问题以及先前的每个问题和先前的每个答案为条件的段落表示。
  • 第二步是答案跨度提取,当前答案的位置开始和结束的地方根据之前段落表示的串联

CMC任务

关于BERT应用于阅读理解的解释

在SQuAD,给出了问题和包含答案的段落,任务是预测答案文本的起始和结束位置(答案的跨度,span)。 BERT首先在问题前面添加special classification token[CLS]标记,然后问题和段落连在一起,中间使用special tokens[SEP]分开。序列通过segment embeddings and positional embeddings输入到BERT。最后,通过全连接层和softmax函数将BERT的最终隐藏状态转换为答案跨度的概率。 由于微调的BERT可以捕获一个问题和一个段落之间的关系,所以在SQuAD上表现很好。但是,BERT本身不能用于需要多个问题或多个段落的任务,因为BERT只能接受两个段一个输入序列。这正是CMC任务的问题所在,因为CMC存在多轮 关于同一段落的问题。

BERT的Token Embeddings

也就是word Embeddings

BERT的Segment Embeddings

Segment Embeddings用来区分两段话

BERT的Position Embeddings

对每个输入的位置进行编码,添加位置信息

  • Token Embeddings with shape (1, n, 768) which are just vector representations of words
  • Segment Embeddings with shape (1, n, 768) which are vector representations to help BERT distinguish between paired input sequences.
  • Position Embeddings with shape (1, n, 768) to let BERT know that the inputs its being fed with have a temporal property.

下面给出一个BERT的输入示例:

tokens: [CLS] 被 告 人 郭 某 林 担 任 郭 家 窑 村 什 么 职 务 ? [SEP] 经 审 理 查 明 : 被 告 人 郭 某 林 从 1 9 8 7 年 5 月 至 今 担 任 郭 家 窑 村 党 支 部 书 记 , 2 0 0 9 年 1 1 月 兼 某 主 任 ; 被 告 人 郭 某 青 从 2 0 0 9 年 1 2 月 至 今 担 任 郭 家 窑 村 党 支 部 副 书 记 兼 某 委 副 主 任 ; 被 告 人 郭 某 花 从 1 9 9 0 年 2 月 至 今 担 任 郭 家 窑 村 妇 联 主 任 ; 被 告 郭 某 兴 从 2 0 1 3 年 5 月 2 9 日 担 任 郭 家 窑 村 报 帐 员 ; 被 告 人 郭 某 威 从 2 0 1 1 年 1 1 月 担 任 郭 家 窑 村 支 部 委 员 ; 被 告 人 席 某 某 从 2 0 0 9 年 1 1 月 担 任 郭 家 窑 村 村 委 委 员 ; 被 告 人 何 某 某 从 1 9 9 0 年 1 1 月 担 任 郭 家 窑 村 支 部 委 员 。 贪 污 部 分 2 0 0 7 年 , 山 阴 县 农 业 委 员 会 进 行 西 山 万 亩 生 态 建 设 工 程 , 共 占 岱 岳 镇 郭 家 窑 村 土 地 7 4 3 . 5 亩 , 县 里 按 照 国 家 退 耕 还 林 政 策 给 予 被 占 地 村 民 补 贴 。 在 登 记 占 地 村 民 花 名 时 , 被 告 人 郭 某 林 召 集 村 干 部 开 会 ( 郭 某 花 未 参 加 ) , 决 定 将 属 于 村 集 体 的 6 0 亩 地 , 分 别 登 记 在 被 告 人 郭 某 林 、 郭 某 青 、 郭 某 花 、 席 某 某 、 何 某 某 及 原 会 计 郭 1 某 六 个 人 名 下 每 人 1 0 亩 , 作 为 村 干 部 的 补 贴 。 截 止 案 发 , 被 告 人 郭 某 林 、 郭 某 青 、 郭 某 花 、 席 某 某 、 何 某 某 每 人 领 取 了 五 年 的 退 耕 还 林 补 助 款 , 其 中 2 0 0 7 - 2 0 0 8 年 每 亩 1 7 0 元 ; 2 0 0 9 - 2 0 1 1 年 每 亩 1 6 0 元 , 每 人 分 别 领 取 8 2 0 0 元 , 五 个 人 共 计 4 1 0 0 0 元 。 [SEP]复制代码

本文的方法

  • 当前问题:Q_{i}
  • 历史问题:\left\{Q_{i-1}, \ldots, Q_{i-k}\right\}
  • 历史答案:\left\{A_{i-1}, \ldots, A_{i-k}\right\}

Contextual Encoding

当前问题、历史问题、历史答案分别用BERT编码,然后concat成G,所以G的大小为G \in \mathbb{R}^{(2 k+1) d \times T}。这里需要指出的是concat的维度是dim方向,其中T是指时间步长

Answer Span Prediction

然后通过BIGRU得到M,M的大小为\boldsymbol{M} \boldsymbol{I}^{(\mathbf{1})} \in \mathbb{R}^{2 d \times T}。 然后就是开始和起始位置的计算,图上说的很明白了。

p^{\mathrm{s}}=\operatorname{softmax}\left(\boldsymbol{w}_{1}^{\top}\left[\boldsymbol{G} ; \boldsymbol{M}^{(1)}\right]+\boldsymbol{b}_{1}\right)
p^{\mathrm{e}}=\operatorname{softmax}\left(\boldsymbol{w}_{2}^{\top}\left[\boldsymbol{G} ; \boldsymbol{M}^{(2)}\right]+\boldsymbol{b}_{2}\right)

Answer Type Prediction

计算问题类型,这里问题类型指的是yes/no/no_answer/long_answer的区分

p^{\mathrm{ans}}=\left[\operatorname{softmax}\left(\boldsymbol{w}_{3}^{\top}\left[\boldsymbol{G} ; \boldsymbol{M}^{(2)}\right]+\boldsymbol{b}_{3}\right)\right]_{e_{i}}

Loss

L=-\frac{1}{N} \sum_{l=1}^{N}\left[\log \left(p_{y_{l}^{1}}^{\mathrm{s}}\right)+\log \left(p_{y_{l}^{2}}^{\mathrm{e}}\right)\right]

扩展阅读

转载地址:http://nktix.baihongyu.com/

你可能感兴趣的文章
贪食蛇
查看>>
201521123009 《Java程序设计》第11周学习总结
查看>>
Python3之多线程学习
查看>>
MVC和MTV结构分析
查看>>
(转)微信网页扫码登录的实现
查看>>
mariadb启动报错:[ERROR] Can't start server : Bind on unix socket: Permission denied
查看>>
nginx的信号量
查看>>
云im php,网易云IM
查看>>
河南农业大学c语言平时作业答案,河南农业大学2004-2005学年第二学期《C语言程序设计》期末考试试卷(2份,有答案)...
查看>>
c语言打开alist文件,C语言 文件的打开与关闭详解及示例代码
查看>>
c语言 中的共用体和结构体如何联合定义,结构体(Struct)、联合体(Union)和位域
查看>>
SDL如何嵌入到QT中?!
查看>>
P1026 统计单词个数
查看>>
[js高手之路] html5 canvas系列教程 - 状态详解(save与restore)
查看>>
poi excel 常用api
查看>>
AD提高动态的方法(附SNR计算)
查看>>
[转]轻松实现可伸缩性,容错性,和负载平衡的大规模多人在线系统
查看>>
五 数组
查看>>
也谈跨域数据交互解决方案
查看>>
EntityFramework中使用Include可能带来的问题
查看>>