两条路线 — 查表的知识库 vs 读文章的机器
这一章讲三件事: 问答这门手艺的年龄;给问答系统分类的四把尺子;以及机器答问的两条根本路线——查表与读文——各自的构造和死穴。 读完你会明白:这本书为什么选「读文章」这条线,而不是「查表」。
1. 问答这件事的年龄
先纠正一个直觉: 让机器答问,不是深度学习(让机器从海量例子里自己学规律的那套方法)之后才有的新想法。
机器问答(QA,question answering)可以追溯到 1960 年代。最早那批系统用规则方法——人工写死「遇到这类问句就套这类模板」——外加当时能找到的数据集小得可怜,两头都不行,一直没法实用1。
复活发生在 2015 年前后。原书把这次复活归功于两个驱动因素,缺一不可2:
| 因素 | 干了什么 |
|---|---|
| 深度学习方法 | 不再靠人工规则,从数据里自己学「问句和答案的关系」,效果压过规则模型 |
| 大规模数据集 | SQuAD(10 万+问答对)、MS MARCO、CNN(美国有线电视新闻网)的新闻稿数据集 CNN & Daily Mail 等——既是训练料,又是统一的考卷 |
这个组合值得记住,因为它是整个领域的工作方式:先有一个公开数据集当考卷,大家对着考卷刷分数,方法进步由考卷裁决。 第 05 章讲这本书领域的四张考卷。
而 ConvQA(对话式问答)是 2015 年这波复兴之后更进一步的方向:把「一问一答」接成「多轮对话」,而且是一种「系统问、用户答」的设定——系统为了搞清你到底想要什么,可以反过来向你提问3。
2. 四把 尺子:给问答系统分类
这一节是领域地图。四把尺子各量一个侧面,后面章节会反复用到其中两把。
尺子一:数据域。 问题范围不设限的叫开放域(open domain)——天文地理什么都问;限定在某个应用场景的叫封闭域(closed domain)——旅行、餐厅、医院。封闭域的问题库小,模型也更容易做精,但换个领域就得重练,所以封闭域模型的迁移性天生比开放域差4。
尺子二:问题类型。 原书按「答案长什么样」把问题分成七种5:
| 类型 | 要什么答案 | 例子 |
|---|---|---|
| 事实型(factoid) | 一个短事实,常以 wh-词开头 | 「《老友记》里 Chandler 是谁演的?」 |
| 确认型 | 是/否 | 「悉尼是澳大利亚的首都吗?」 |
| 简单型 | 一小段文字 | 「巴基斯坦地震震级多少?」 |
| 复杂型 | 多步推理 | 「中国有多少城市人口比新德里多?」 |
| 因果型 | 解释为什么/怎么办 | 「为什么会发生地震?」 |
| 列举型 | 一串实体清单 | 「列出美国所有前总统」 |
| 不可答型 | 老实说「资料里没有」 | 资料里根本没写的事 |
最后一种最容易被忽略,却最要紧:系统必须学会说「答不了」。SQuAD 数据集后来专门扩充了 5 万多个不可答问题,就是逼模型学会这件事6。
尺子三:数据源。 答案从哪里来——这是两条路线的分水岭,下一节展开。
尺子四:系统类型。 对着结构化数据源查的,长成「顺序式知识库问答」;对着文章读的,长成「对话式机器阅读理解」(第 01 章层级图里那对兄弟)。
3. 路线一:对着知识库查表
这一节讲查表路线的机器怎么转、为什么非要做成多轮。
知识库(KB,knowledge base)是一种把知识整理成实体和关系的仓库。最流行的形态是知识图谱(KG,knowledge graph):一张由「三元组」结成的网。三元组就是一条「主语—关系—宾语」记录,比如「(周杰伦,出生于,台北)」——实体 s,经过关系 r,连到实体 t7。Freebase、DBpedia、Wikidata 都是千万级三元组的大型知识图谱。
对着知识库答问(KB-QA)有实打实的好处:用户不用再写 SQL(数据库专用的查询语言)那种复杂查询,用自然语言直接问就行8。但单轮版有个尴尬的死穴:用户问的问题往往复杂,机器要拆解、要多跳——而要可靠地拆复杂问题,机器得先知道这张图内部是怎么组织的;指望用户按知识库的结构习惯来提问,不现实9。原书的裁决很直接:既然如此,做成多轮的顺序式 KB-QA 是更优的选择——让系统用追问一点点问清用户的条件10。
原书举的场景:想找一部电影看。传统 KB-QA 第一轮就会甩出一堆结果结束对话;顺序式系统则先追问「什么类型?」「哪个年代?」「要不要避开恐怖片?」,几轮之后才给出一个最合适的答案11。
顺序式 KB-QA 的机器由三个部件组成12:
用户问题 ──→ ①语义解析器 ──→ ②对话管理器 ──→ ③响应生成器 ──→ 回复
把问句连 记着之前的问答对
同上文翻译 和数据库状态,
成逻辑形式 决定下一步是答题
(能查表的表达) 还是继续追问
图说:①是翻译官——把「有没有 20 分钟做完的素食菜」变成查询语句;
②是记事本+决策者;③把决定变回人话。
①语义——指问句的意思——解析器(semantic parser):把问句连同上文翻译成逻辑形式(logical form,一种机器可执行的规范化表达),拿去查表;「对话管理器」(dialog manager)负责记住历史问答对和数据库当前状态,并按一套策略决定「下一步是作答还是追问」——这套策略可以训出来,也可以人工写死;「响应生成器」最后把系统动作转成自然语言13。
死穴在部件①:语义解析器需要大量昂贵的人工标注(雇人标答案)才能训好,所以新一批研究干脆想把它整个砍掉14。这是查表路线的结构性麻烦——知识越结构化,人和它的语言鸿沟越大,翻译层就越重。
4. 路线二:对着文章读
这一节讲本书所在的路线:答案不在表里,在文章里。
机器阅读理解(MRC,machine reading comprehension)就是「给一篇文章+一个问题,机器从文章里找答案」。把它接上对话(第 01 章的 CMRC),得到的是完全不同的一种问答机。
原书用找餐厅的例子把两条路线的差别一刀切开:你想找某片区一家合口味的餐厅——
- 搜索引擎(传统路线):还给你摊开多页的结果列表,自己慢慢挑;
- CMRC 问答机:先追问几个问题摸清你的偏好,然后把结果收窄到「一个最合适的答案」15。
读文章这条路不要求世界先被整理成表。文章是人类知识的天然形态——维基百科、新闻、说明书,拿来就能用;代价是机器得自己「读懂」文章,于是所有难度都压到了一个问题上:机器到底怎么把文字变成能计算的东西? 这就是下一章的全部内容。
5. 走查:同一段对话,只答单问的机器死在第 2 问
主走查。 拿原书引的 CoQA 数据集里的一段真实对话,逐轮走一遍,看只答单问的机器(每问独立作答、不看历史)和对话机各自的表现。文章节选自维基百科「斯塔滕岛(Staten Island)」条目,开头是「斯塔滕岛是纽约市的五个区之一……2016 年人口约 476,015,是人口最少的区,但面积排第三……它有时被居民称为『被遗忘的区』」16。
| 问序 | 问题 | 标准答案 | 只答单问的机器怎么样 |
|---|---|---|---|
| Q1 | 有几个区? | Five | 能答——文章第一句就有 |
| Q2 | 在哪个城市? | New York City | 死。问题里没有「什么」的指代对象;答案其实在 Q1 的问题里(「区」属于城市),必须把 Q1 连起来读 |
| Q3 | 那州呢? | New York | 死得更透——连名词都省了,只有一个「州」字 |
| Q4 | 斯塔滕岛是其中之一吗? | Yes | 能答——这问居然是完整的;但「是/否」题需要拿文章判断,不是抽原文 |
| Q5 | 它在哪里? | 在城市西南 | 死——「它」指斯塔滕岛,答案藏在对文章地理位置的描述里 |
| Q6 | 它有时被叫做什么? | The forgotten borough | 能答——前提是知道「它」还是斯塔滕岛 |
Q1 完整问 ──→ 单轮机活着
Q2「In what city?」──→ 没有历史就没有问句语义 ──→ 单轮机死
Q3「And state?」──→ 问题缩成两个词 ──→ 连话题都靠上文补
Q5「Where is it?」──→ 共指消解上场:「它」=斯塔滕岛
Q6──→ 答案在文章里,但找准它仍依赖 Q5 确认的指代
图说:六问里三问对单轮机是「病句」。这些对话不是故意刁难——
人跟人说话就是这么说的。
这段走查把第 01 章的抽象名词全部落了地:追问不完整(Q2/Q3)、共指消解(Q5/Q6)、答案不直接是原文片段(Q4)。对话机要活下来,第一件事就是让机器把「历史」和「当前问题」一起读进去——而「一起读进去」说来简单,机器读的其实是数。下一章从「词怎么变数」讲起。
6. 可带走的
- 问答是 1960 年代就有的老想法,2015 年靠「深度学习+大数据集」复活,考卷驱动是这行的基本工作方式;
- 四把分类尺子:数据域、问题类型、数据源、系统类型——听到任何「XX 问答系统」,先问这四样;
- 七种问题类型里最要紧的是「不可答」:学会说「答不了」和学会答题一样重要(SQuAD 专门为此扩了 5 万题);
- 知识图谱 = 三元组结成的网;查表路线的三部件是语义解析器+对话管理器+响应生成器;
- 查表路线的结构性死穴在翻译层:知识越结构化,自然语言到查询语句的鸿沟越大,语义解析器越贵;
- 读文章路线不需要世界预先整理成表,代价是机器必须自己解决「读懂」——难度全压在表示这一层;
- 只答单问的机器在真实对话里活不过第二问:人说话天然省略,「In what city?」这类问题离开上文就是病句。
7. 原文地图
| 主题 | 原书章 | 原文位置 |
|---|---|---|
| QA 起源与 2015 复兴 | 2.2 | text/10-ch02-02-2-2-foundations-of-qa-and-introduction-to-convqa.txt:26(搜「1960s」) · text/10-ch02-02-2-2-foundations-of-qa-and-introduction-to-convqa.txt:30(搜「rise in 2015」) · text/10-ch02-02-2-2-foundations-of-qa-and-introduction-to-convqa.txt:36(搜「SQuAD」) |
| system ask, user respond | 2.2 | text/10-ch02-02-2-2-foundations-of-qa-and-introduction-to-convqa.txt:46(搜「user respond」) |
| 四把尺子与七种问题 | 2.2 | text/10-ch02-02-2-2-foundations-of-qa-and-introduction-to-convqa.txt:82(搜「domain-free」) · text/10-ch02-02-2-2-foundations-of-qa-and-introduction-to-convqa.txt:97(搜「Factoid Questions」) · text/10-ch02-02-2-2-foundations-of-qa-and-introduction-to-convqa.txt:125(搜「how many cities in China」) · text/10-ch02-02-2-2-foundations-of-qa-and-introduction-to-convqa.txt:150(搜「Unanswerable Questions」) · text/10-ch02-02-2-2-foundations-of-qa-and-introduction-to-convqa.txt:155(搜「50,000 unanswerable」) |
| 三种数据源 | 2.2 | text/10-ch02-02-2-2-foundations-of-qa-and-introduction-to-convqa.txt:161(搜「Structured Data Source」) · text/10-ch02-02-2-2-foundations-of-qa-and-introduction-to-convqa.txt:177(搜「Unstructured Data Source」) |
| 知识图谱三元组、顺序式 KB-QA 的动机 | 2.3 | text/11-ch02-03-2-3-sequential-kb-qa-systems.txt:6(搜「triples」) · text/11-ch02-03-2-3-sequential-kb-qa-systems.txt:23(搜「more optimal option」) |
| 找电影场景、三部件架构 | 2.3 | text/11-ch02-03-2-3-sequential-kb-qa-systems.txt:31(搜「find a movie」) · text/11-ch02-03-2-3-sequential-kb-qa-systems.txt:38(搜「Dialog Manager」) · text/11-ch02-03-2-3-sequential-kb-qa-systems.txt:43(搜「Response Generator」) |
| 砍语义解析器的动向 | 2.3 | text/12-ch02-04-2-4-conversational-machine-reading-comprehension.txt:8(搜「semantic parser module」) |
| 找餐厅例子 | 2.2 | text/10-ch02-02-2-2-foundations-of-qa-and-introduction-to-convqa.txt:206(搜「popular restaurant」) |
| 斯塔滕岛对话(走查) | 2.2 | text/10-ch02-02-2-2-foundations-of-qa-and-introduction-to-convqa.txt:253(搜「Staten Island」) · text/10-ch02-02-2-2-foundations-of-qa-and-introduction-to-convqa.txt:261(搜「least populated」) · text/10-ch02-02-2-2-foundations-of-qa-and-introduction-to-convqa.txt:272(搜「In what city」) · text/10-ch02-02-2-2-foundations-of-qa-and-introduction-to-convqa.txt:278(搜「Where is it」) |