论文:
传统的机器阅读理解的模型都是给定 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]复制代码
本文的方法
- 当前问题:
- 历史问题:
- 历史答案:
Contextual Encoding
当前问题、历史问题、历史答案分别用BERT编码,然后concat成G,所以G的大小为。这里需要指出的是concat的维度是dim方向,其中T是指时间步长
Answer Span Prediction
然后通过BIGRU得到M,M的大小为。 然后就是开始和起始位置的计算,图上说的很明白了。
Answer Type Prediction
计算问题类型,这里问题类型指的是yes/no/no_answer/long_answer的区分