跳到主要内容

补线索,别改写 — CONVSR(攻关一)

这一章讲三件事: 「问题改写」这条路怎么走、死于什么;CONVSR 的替代方案——结构化表示;一次完整推理的走查。 这是全书三大挑战里的第一条(问题不完整)的正面解法,也是后两章的地基:实体这个概念会一直用到第 08 章。

1. 先看现象:四个字的问题怎么答

下面是原书 Chapter 3 开场的对话1,话题是美剧《老友记》:

#问题答案
Q1谁演了 Monica Geller?Courteney Cox
Q2她当时痴迷什么?Cleaning(洁癖)
Q3那个吵闹的邻居是谁?Larry Hankin
Q4第一季的上映日期?1994 年 9 月 22 日

四问里两问有坑。Q2「她」是谁?——不回头读 Q1,这个问题单看字面是通顺的,意思却是悬空的。Q4「第一季」是哪部剧的第一季?——世界上的剧集何止千部,每部都有第一季;必须把剧名补回去才能检索2

原书给这两类坑起了正式名字:指代(anaphora,用代词回指前文)与省略(ellipsis,该说的成分没说)3。第 01 章讲过共指消解这个机制词;这一章要回答的是工程问题:发现了坑,拿什么填?

2. 流行解法:把问题改写成完整句

这一节讲当时信息检索社区的标准答案,以及它的两个结构性毛病。

标准答案叫问题改写(QR,question rewriting):把「她当时痴迷什么?」重写成「Courteney Cox 在《老友记》里饰演的 Monica Geller 痴迷什么?」——补全指代、补全省略,产出一个自包含问题(stand-alone question,离开对话也能独立理解的问题)4。改写后的对话任务就退化成了普通单轮问答,拿现成模型来答即可。

改写模型怎么练?靠 CANARD 数据集——它把 QuAC 的每个依赖上下文的问题,人工配了一个自包含改写,约 4 万对5。流水线做法通常用 GPT-2 这类生成模型:把对话历史+当前问题喂进去,吐出改写句;再用一个传统问答模型去答。整个预测过程可以写成一个连乘——改写模型生成 q′ 的概率,乘上问答模型在 q′ 上抽中答案的概率6

这个方案在原书看来有两个结构性毛病:

毛病一:改写让问题离开对话,而且变笨重。 原书的重话是:把问题转成自包含形式「抵消了 ConvQA 设定的全部意义」7。后果还有实测数据:改写后的问题平均 9 个词,而保持原样+补线索只需 5.5 个;改写塞进更多专有名词(平均 2.5 个 vs 1 个),在文章里做实体匹配的负担反而更重;F1 还更低(66.1 vs 67.9)8

毛病二:误差沿流水线传播。 问答模型永远见不到用户的原始问题(只见过改写),失去了对话语境;而且它的输入完全依赖改写模型的输出——改写错一步,后面全错9。这个「级联放大」效应会一路跟着我们到第 08 章。

3. 换个思路:不改问题,给线索

这一章的核心提案来了:问题保持原样,给模型补两样「线索」。

CONVSR(CONVQA using Structured Representations)的替代方案:不去重写问题,而是从相关历史轮里抽出一对结构化表示——

  • 上下文实体(CE,context entity):对话正在谈论的那个大对象,如「FRIENDS」;
  • 问题实体(QE,question entity):之前问题里出现的实体,如「Monica Geller」10

两样线索的用法不一样,原书拿 Table 3.1 直接演示11:答 Q2「她当时痴迷什么?」,模型需要 CE+QE 两样——「FRIENDS」圈定范围,「Monica Geller」消解「她」;答 Q4「第一季的上映日期?」,只要 CE 一个——「FRIENDS」补上就行,不涉及代词。

为什么这个思路值得停一下: 它把「补全」从改写句子的粗活,拆成了「识别缺什么,补最小必要信息」的细活。问题的原样保留意味着对话性保留(用户听到的问题不必被复述一遍),信息量却一点不少。原书自白:结构化表示的念头来自符号派 AI,问答与改写则来自信息检索社区——这是两个社区思路的一次合流12

整个模型是一条四段流水线13:

①问题理解(评估当前问题缺不缺上下文)

②动态历史选择(硬选择:按语义相似度给历史轮打分,丢掉低分轮)

③实体生成(BART 从选中的轮里生成 CE/QE)

④答案预测(文章+当前问题+线索 → 抽 span)

第②段的打分用的是 soft cosine 相似度:普通 cosine(拿两串数算夹角,夹角越小越相似)只看两串词有没有字面重叠,零重叠就打零分;soft cosine 把「词与词的相似度」也考虑进去,「电影」和「剧集」不算零相关14。分数区间 0 到 1;作者试出阈值(及格门槛)0.75——相似度达标(≥0.75)的轮保留,不达标的丢掉15

4. 走查:一句含糊追问怎么被 CONVSR 接住

主走查。 完整走一遍 Q2「她当时痴迷什么?」:

输入:文章(《老友记》条目)+ 历史 Q1A1 + 当前问题 Q2

② 历史选择(硬)
计算 soft cosine(Q2, Q1A1):
「她」与「Monica」「Geller」的词相似度拉高总分 → 得分 ≈ 0.82
0.82 ≥ 0.75 → Q1A1 保留
(假想此时还有历史轮 Q0「这部剧哪年开播?」,得分 ≈ 0.31 → 丢弃;
0.31 与 0.82 都是为演示编的,真实分数由嵌入向量的内积算出)

③ 实体生成
把 Q2 与选中的历史拼进 BART:
输入:「她当时痴迷什么? [SEP] 谁演了 Monica Geller? Courteney Cox.」
输出:CE = FRIENDS QE = Monica Geller
(BART 这类序列到序列模型,最擅长「从输入里复制信息、
重新组织后输出」——抽实体正是这种活)

④ 答案预测
输入 = 文章 + Q2 + CE/QE 线索标记
「她」的向量在编码时吸收了 QE 的信息(第 03 章的注意力走查)
→ 在文中定位「Obsessed with cleaning」
→ 抽出答案:「Cleaning」

图说:每一步的具体产物——保留哪轮、吐出哪两个实体、抽中哪个词——
就是「结构化表示」这个抽象名词的全部实体。

对照第 2 节的改写法:改写法在这一步会产出「Courteney Cox 饰演的 Monica Geller 痴迷什么?」——多出 6 个词,而且问答模型从此见不到「她」;CONVSR 的问题原封不动,线索单独挂在旁边。

5. 训练数据的鸡生蛋问题

这一节回答一个必须回答的问题:谁来教 BART「该吐出哪两个实体」?

市面上没有「对话实体线索」标注数据集——这是新任务。CONVSR 的解法是远距监督(distant supervision):不要人标,让规则自动生成训练信号。规则就一条:如果某个实体加上之后,模型真能从文中抽到答案 span,那它就是「缺失的那块」——于是把完整问题里挖出的实体当伪标签,喂给 BART 学16

这个思路换个说法:把「答案能不能被抽到」当成免费的标注员。代价是伪标签会带噪(凑巧抽到也算对),但省下整套人工标注——这是 NLP 里以噪换量的经典交易。训练细节:问答模型用 Adam(一种自动调参的算法——自动决定每一步往哪调、调多少)来微调17

学习率(每一步调多大)设成 3e-5。

基座模型——拿来改造的现成模型——是 BERT、BERT-HAE(第 04 章的花招二)与 RoBERTa 三个,另设四组「前拼历史」的朴素基线(只拼第一轮/只拼上一轮/两者都拼/全拼)做对照18

6. 证据与边界

先看证据。 同一模型、同一数据,流水线改写法 vs CONVSR 的 F1 对照19:

基座改写流水线CONVSR提升
BERT61.462.7+1.3
BERT-HAE61.563.6+2.1
RoBERTa66.167.9+1.8

三个基座全部提升;在朴素「前拼」基线上补线索同样全线见效,其中「只拼上一轮」最高(64.4)——印证了第 3 节的直觉:追问缺的信息,多半就在紧邻的上一轮20;「只拼第一轮」最差,因为对话流一直在变,开场的实体帮不上后文的忙21

再看边界,四条都要记:

  1. 阈值 0.75 是试出来的,不是推导的——换数据集可能要重调;
  2. 硬选择是单点故障:剪错了轮,后面的实体生成就没有原料——原书结尾亲口承认流水线噪声问题,并把它留给了下一章22;
  3. 远距监督的伪标签带噪,实体边界不完美;
  4. 实验范围是 QuAC/CANARD 两套考卷、抽取式 span 答案,自由生成场景未验证。

下一章(第 07 章)正面接下第 2 条:把「一锤子删轮」升级成「删轮+排座次+划重点」的三层过滤。

7. 可带走的

  1. 追问的坑分两类:指代("她")与省略("第一季"),解法应该分开对症;
  2. 问题改写的三宗罪:丢对话性、变冗长(9 词 vs 5.5 词)、误差沿流水线传播;
  3. CONVSR 的最小补全思路:问题原样保留,线索(CE+QE)单独补——有的问题两样都要,有的一样就够;
  4. soft cosine 相似度比普通 cosine 多看一层「词与词的相似」(cosine 就是拿两串数算夹角那套),适合字面不重叠的对话历史;
  5. 远距监督:用「加上它能抽到答案吗」自动造训练标签,以噪换量;
  6. 「只拼上一轮」是朴素但强的基线——追问的信息大多在紧邻轮;
  7. 阈值是试出来的、硬选择是单点故障——工程结论常常带着「待办事项」的尾巴,这正是下一章的起点。

8. 原文地图

主题原书章原文位置
FRIENDS 对话、CE/QE 分工Ch3text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:47(搜「Monica Geller」) · text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:83(搜「decipher」)
指代与省略、QR 的潜力与代价Ch3text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:11(搜「anaphora」) · text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:14(搜「verbose questions」)
QR 定义、自包含、丢线索、数据小Ch3text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:58(搜「task of reformulating」) · text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:61(搜「losing valuable cues」) · text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:63(搜「quite small」)
「抵消 ConvQA 意义」、问题解决式替代Ch3text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:144(搜「negates the whole」) · text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:145(搜「Question resolution is another」)
CONVSR 提案与「看最后几问」直觉Ch3text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:65(搜「Structured」) · text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:72(搜「only needs to refer to the last」)
四段流水线Ch3text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:86(搜「Question understanding」) · text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:89(搜「Entity generation」)
GPT-2 流水线、CANARD 4 万对、连乘公式Ch3text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:190(搜「around 40K question」) · text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:192(搜「GPT-2」) · text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:208(搜「likelihood functions」)
毛病二:不见真问题、误差传播Ch3text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:217(搜「never gets to be trained」) · text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:228(搜「error propagation」)
BART、soft cosine、阈值 0.75Ch3text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:281(搜「duplicated from the input」) · text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:286(搜「regular cosine similarity」) · text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:302(搜「0.75」)
远距监督与「抽到才算」Ch3text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:345(搜「distantly supervised labeling」) · text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:356(搜「answer span is retrieved」)
三基座与四组前拼基线Ch3text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:379(搜「history answer embeddings」) · text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:399(搜「prepend init」)
主结果表、前拼对照、改写冗长表Ch3text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:419(搜「61.4」) · text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:492(搜「prepend prev provides」) · text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:11(搜「rewriting」)
符号 AI 血统、留给下一章的尾巴Ch3text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:530(搜「symbolic AI」) · text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:536(搜「dynamic history selection mechanism」)

Footnotes

  1. 出处:「CHAPTER 3: Resolving Conversational Dependencies in Conversational Question Answering」第 44–53 段(text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:44,搜「Information-Seeking Dialog」)。Table 3.1,话题 F.R.I.E.N.D.S;Q2 与 Q4 在第 49、53 段。

  2. 出处:「CHAPTER 3: Resolving Conversational Dependencies in Conversational Question Answering」第 37 段(text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:37,搜「many first seasons」)。原文:答 Q3(原书编号)难在「有很多剧集的第一季」,须把剧名补进问题。

  3. 出处:「CHAPTER 3: Resolving Conversational Dependencies in Conversational Question Answering」第 11 段(text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:11,搜「anaphora」)。

  4. 出处:「CHAPTER 3: Resolving Conversational Dependencies in Conversational Question Answering」第 58 段(text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:58,搜「task of reformulating」)与第 60 段(搜「stand-alone question」)。

  5. 出处:「CHAPTER 3: Resolving Conversational Dependencies in Conversational Question Answering」第 188–190 段(text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:188,搜「CANARD」)。约 4 万对人工改写。

  6. 出处:「CHAPTER 3: Resolving Conversational Dependencies in Conversational Question Answering」第 205–212 段(text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:208,搜「likelihood functions」)。公式 3.1:答案概率 ≈ 改写概率 × 答案概率。

  7. 出处:「CHAPTER 3: Resolving Conversational Dependencies in Conversational Question Answering」第 144 段(text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:144,搜「negates the whole」)。

  8. 出处:「CHAPTER 3: Resolving Conversational Dependencies in Conversational Question Answering」Table 3.5(text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:500,搜「Proper Noun」)。原问题+线索:均长 5.5 词、专名 1 个、F1 67.9;改写:9 词、2.5 个、66.1。冗长导致掉分的分析在第 513 段(搜「lengthy questions」)。

  9. 出处:「CHAPTER 3: Resolving Conversational Dependencies in Conversational Question Answering」第 217 段(text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:217,搜「never gets to be trained」)与第 227 段(搜「error propagation」)。

  10. 出处:「CHAPTER 3: Resolving Conversational Dependencies in Conversational Question Answering」第 168 段(text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:168,搜「context entity (CE)」)。CE=先前对话语境中的实体,QE=先前问题中的实体。

  11. 出处:「CHAPTER 3: Resolving Conversational Dependencies in Conversational Question Answering」第 80–84 段(text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:83,搜「decipher」)。Q2 需 CE+QE,Q4 只需 CE。

  12. 出处:「CHAPTER 3: Resolving Conversational Dependencies in Conversational Question Answering」第 530 段(text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:530,搜「symbolic AI」)。原文:生成意图显式 SR 的想法取自符号 AI,QR 与 QA 根植于 IR 社区。

  13. 出处:「CHAPTER 3: Resolving Conversational Dependencies in Conversational Question Answering」第 86–91 段(text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:86,搜「Question understanding」)。

  14. 出处:「CHAPTER 3: Resolving Conversational Dependencies in Conversational Question Answering」第 286 段(text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:286,搜「regular cosine similarity」)。原文:普通余弦对无重叠词的向量得零;soft cosine 把词相似度也计入。

  15. 出处:「CHAPTER 3: Resolving Conversational Dependencies in Conversational Question Answering」第 302 段(text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:302,搜「0.75」)。原文:经实验,超过 0.75 阈值的轮对预测当前答案贡献更大,不达标的过滤掉。

  16. 出处:「CHAPTER 3: Resolving Conversational Dependencies in Conversational Question Answering」第 345 段(text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:345,搜「distantly supervised labeling」)与第 354 段(搜「answer span is retrieved」)。

  17. 出处:「CHAPTER 3: Resolving Conversational Dependencies in Conversational Question Answering」第 361 段(text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:361,搜「3e-5」)。

  18. 出处:「CHAPTER 3: Resolving Conversational Dependencies in Conversational Question Answering」第 370–406 段(text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:370,搜「pre-trained contextualized」)。三个对比模型与四组 prepend 变体(第 399 段,搜「prepend init」)。

  19. 出处:「CHAPTER 3: Resolving Conversational Dependencies in Conversational Question Answering」Table 3.2(text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:419,搜「61.4」)。BERT/BERT-HAE/RoBERTa 三行数字如正文表;原文注明最优分加粗。

  20. 出处:「CHAPTER 3: Resolving Conversational Dependencies in Conversational Question Answering」第 492 段(text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:492,搜「prepend prev provides」)。Table 3.3 中 PREPEND PREV + SR 的 F1 为 64.4(第 455 段,搜「64.4」)。

  21. 出处:「CHAPTER 3: Resolving Conversational Dependencies in Conversational Question Answering」第 495 段(text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:495,搜「Prepend init results in」)。原文:第一问不一定携带与当前问题相关的实体,因为对话流持续变化。

  22. 出处:「CHAPTER 3: Resolving Conversational Dependencies in Conversational Question Answering」第 534–536 段(text/16-ch03-chapter-3-resolving-conversational-dependencies-.txt:533,搜「added noise due to the irrelevant context」)。原文:流水线法因极朴素的历史选择把无关上下文带进输入而受损,因此「必须提出一个动态历史选择机制」——即下一章的 DHS-ConvQA。