2010 年 8 月 15 日,上午 11 点半。
这件事是我后来在自己博客里翻出来的。那天我记了两句关于客服的吐槽:
11:31:33:MZ 的在线客服基本上三分钟回答一句话,而且看起来应该是拷贝的套话。
11:35:23:MZ 是不是已经先进到使用机器人做客服了?我说了 12 句话,“机器人”说了四句话,服了。
两句话隔了不到四分钟。第一句是嫌它慢,第二句是嫌它不肯好好说话。
(这条记录在我 2010 年 8 月 16 日早上发的那篇每日汇总里,覆盖的是 8 月 15 日那一天——和这个系列前面几期一样,我说的日期都是“我读到这些的那一天”。)
我那天给出的结论很干脆:这玩意儿是个机器人,别指望它懂你。
但这次我想问的是另一个问题:如果它确实什么都没听懂,那我为什么要跟它说满 12 句?
一、我先查自己的账本
在读任何论文之前,我先把自己的 22 年翻了一遍,因为这是我唯一算得上第一手的材料。
我账本里现在有 9193 条记录。排除掉我自己写的 6 篇(1 篇演示稿加 5 篇系列文),剩下 9187 篇旧文。在这些文章里找词:
| 词 | 篇数 |
|---|---|
| 客服 | 46 |
| 机器人 | 36 |
| 对话 | 41 |
| Siri | 9 |
| 聊天机器人 | 2 |
| 心理咨询 | 1 |
| ELIZA | 0 |
| 心理治疗 | 0 |
| 对话程序 | 0 |
“聊天机器人”那 2 篇还都在别人的链接标题里,跟第 05 期统计到的“图灵”3 篇一个下场。
我 22 年里在博客上记过 46 次客服、36 次机器人,却一次也没有想过要问那个真正该问的问题:它听懂了吗?
我关心的是它慢不慢、答不答得上来、能不能把订单查到。这些都是“它有没有用”的问题。
“它有没有懂”是个完全不同的问题,它一次都没进过我的脑子。
现在回头看,我觉得这不是我笨,是我的问题问错了方向。我一直在问“它能不能替我干活”,所以我把每一个对话窗口都当成一个工具的接口。工具不需要懂你,工具只要能用。
可 2010 年那个窗口里,我明明在跟一个不存在的对象说话,而且我还给它编了一个人称代词:“机器人”。
二、1966 年 1 月,MIT
线索是上一篇留下的:图灵 1950 年说,机器要骗过人,就该模拟一个小孩。六年后,真有人造了一个小孩出来跟人说话。
Joseph Weizenbaum,《ELIZA—A Computer Program For the Study of Natural Language Communication Between Man And Machine》,《Communications of the ACM》第 9 卷第 1 期,1966 年 1 月,第 36–45 页。
这篇论文我是在 ACM 的官方扫描件上读的(Wayback 快照,10 页)。有几处事实先摆出来,因为它们比想象中更小:
- •它跑在 MIT 的 MAC 分时系统上,用 MAD-SLIP 写成,跑在 IBM 7094 上。
- •论文里写得很清楚:The largest dictionary so far attempted contains about 50 keywords.(迄今尝试过的最大的词典,大约包含 50 个关键词。)
- •关键词表的入口是一个 128 个字长的向量 KEY,哈希成 7 位整数。
整个“语言能力”,就是五十个英文单词加上一堆固定句式。
我把这 50 个词和句子模板理解为:一个只认 50 个词的听障人士,耳朵还不太灵光,但嘴很会说话。
论文自己给了一个比喻,我觉得这是全文最重要的一段:
Suppose a foreigner with only a limited knowledge of English but with a very good ear heard that sentence spoken but understood only the first two words “I am”. Wishing to appear interested, perhaps even sympathetic, he may reply “How long have you been very unhappy these days?”
(设想一个只懂有限英语、但耳朵很好的外国人,听见你说话,却只听懂了前两个词“I am”。为了显得有兴趣,甚至显得同情,他可能会回答:“你这么不开心有多久了?”)
他必须做的是:套一个模板上去,把剩下的词原样搬过来,换个说法重新拼一遍。
论文接下来把这件事写成了两行记号。分解规则 (0 YOU 0 ME),重组规则 (WHAT MAKES YOU THINK I 3 YOU)——那个 3 就是“把第三块塞进这个位置”。
一台机器的“共情”,原来是这么个东西:一个模板,加上一段从你嘴里抄来的填空。
三、我把那段真实对话逐句拆了
论文正文开头就是一段完整的对话(机器的回话原文全大写)。它只有 14 句机器回话,长得刚好够看清机制。
我把每一句都按论文自己描述的三种机制做了标注,脚本在 实验/eliza_transcript.py:
- •模板:命中关键词后吐出的固定台词,句子里一个你的词都没有;
- •回声:把你的话原样还给你;
- •反问:用你的话拼出一个问题,前面挂一句现成的话。
结果:
| 类型 | 句数 | 占比 |
|---|---|---|
| 模板(一个你的词都没用) | 4 | 29% |
| 回声(把你的话原样还你) | 3 | 21% |
| 反问(用你的话拼一个问题) | 7 | 50% |
再看两个数:
14 句里有 10 句用到了 man 说过的词(71%)。
ELIZA 说过的所有实义词里,只有 3 个是 man 从没说过的新词:resemblance、see、will。这三个词全部来自它自带的固定句式,跟眼前这个人一点关系都没有。
也就是说:在这整段对话里,ELIZA 从来没有说过任何一件 man 没先说过的事。
你的父亲怕谁、你的男朋友为什么带你来、你母亲怎么照顾你——全是 man 自己说出来的。它只是把这些话拆开、换个顺序、末尾加个问号递回去。
Men are all alike.
IN WHAT WAY
They're always bugging us about something or other.
CAN YOU THINK OF A SPECIFIC EXAMPLE
Well, my boyfriend made me come here.
YOUR BOYFRIEND MADE YOU COME HERE
He says I'm depressed much of the time.
I AM SORRY TO HEAR YOU ARE DEPRESSED
四、论文里有几句话,比整段对话更让我坐直
第一句在第 43 页:
ELIZA shows, if nothing else, how easy it is to create and maintain the illusion of understanding, hence perhaps of judgment deserving of credibility. A certain danger lurks there.
(ELIZA 至少证明了一件事:创造并维持“被理解”的幻觉有多容易——甚至容易到让人以为那判断值得信任。危险就藏在这里。)
注意他的用词是 illusion,错觉。而且紧跟着就是 danger。
第二句在第 44 页:
The crucial test of understanding, as every teacher should know, is not the subject's ability to continue a conversation, but to draw valid conclusions from what he is being told. … ELIZA throws away each of its inputs, except for those few transformed by means of the MEMORY machinery.
(正如每个老师都知道的,理解的关键检验不是对方能接着聊下去,而是能从听到的东西里得出有效的结论。……而 ELIZA 听完就扔,每一句输入都扔掉,只有被 MEMORY 那套机器改写过的极少数几句留下。)
“理解的关键检验是能得出有效结论。”这句话放在今天,比 1966 年还刺耳。
同一页还有一句更狠的:
ELIZA in its use so far has had as one of its principal objectives the concealment of its lack of understanding.
(到目前为止,ELIZA 使用上的首要目标之一,就是隐瞒自己的无知。)
隐瞒。不是“碰巧没显示出来”,是目标之一。
他当然担心机器骗人——他甚至设想过实验,想办法让这种相信能被系统地降低(How can the performance of ELIZA be systematically degraded in order to achieve controlled and predictable thresholds of credibility in the subject?)。但他用得最多的一个词是 danger。而另一个警告更怪:
There is a danger, however, that the example will run away with what it is supposed to illustrate.(危险在于,这个例子会跑掉,跑到它本该说明的东西之外去。)
这警告的不是别人,是他自己这篇论文:他担心一个为了说明机器有多像人的例子,讲着讲着,让人相信机器真的像人。
五、我自己写了一个,然后跑在我自己的博客上
光看别人的例子,我总觉得隔了一层。所以我照论文描述的机制写了一个迷你版本(纯 Python,在 实验/eliza_demo.py):关键词表、模板库、人称代词替换、找不到关键词时把你的话原样弹回来再加个反问。
它当然不是原版 ELIZA,脚本也不会真去 MIT 上跑。我要测的是一件更小的事:这样一台只认几十个词的程序,套在我自己 22 年的真实句子上,会发生什么。
我从账本里按年份分层抽样,每年取几条:英文 78 条,中文 92 条(先用虚词筛掉 CDKEY、序列号那些不成句的碎片)。脚本在 实验/eliza_on_myblog.py。
| 英文句(它的地盘) | 中文句(它根本不懂) | |
|---|---|---|
| 命中模板(背台词) | 31% | 0% |
| 反问(把话头推回你) | 69% | 100% |
| 回答与我原话的平均词重叠 | 71% | 100% |
| 回答里出现关于我的新信息 | 28% | 0 条 |

两栏的差别只有一句话:那 50 个关键词全是英文的。
英文那一栏里,它偶尔还能接上话——碰到 “computer”“book”“children” 这类词,它会突然说起电脑、书、孩子,然后我发现它接错了话题,中文那一栏它连这个都做不到。
中文那一栏是 100% 的反问,100% 的词重叠,0 条关于我的新信息。它唯一会做的事,就是把你的话还给你。
举个真例子。抽到的一句是:
man:搞得我的 ADSL 现在弄的和 56k 拨号似的,期待更自由的天空。
eliza:Why do you say that 搞得我的 adsl 现在弄的和 56k 拨号似的,期待更自由的天空?
它不知道 ADSL 和 56k 拨号之间有什么不一样,它只是把这句话倒过来问了回去。
这三个实验加起来,我得到一个挺不好听的结论:
这台机器对你的了解,是零。但它对你的每一个回答都在索取,而索取本身就是“关心”的样子。
不过这个实验有三个毛病,我得写在这儿:
- 1.我写的是照机制复刻的迷你版,不是原版 ELIZA。原版论文附录里那份脚本有几百行,模板也比我的讲究。
- 2.我博客里的英文大多是技术口吻的短句,命中率被拉低了;中文那 92 条是真正的日常句子。
- 3.最要命的一条:原版 ELIZA 根本不会中文。它那 50 个关键词全是英文的,所以中文那一栏并不是“它退化成了只会回声”,而是“我强行让一台只认英文词表的机器去处理它完全不懂的语言”。
所以那个 100% 的数字,说的不是原版 ELIZA 在中文里的表现,说的是:一台离开自己那 50 个词就什么都不会的机器,剩下的全部本领就是把你的话还给你。
六、上一期的答案,和我至今没想明白的地方
上一期我在文末留了个 A/B 盲测:同一道题,一段是机器按我的语气写的,一段是我自己写的,混在一起让大家猜。
现在公布答案:
- •A 段(135 字)是机器写的;
- •B 段(121 字)是我手写的;
- •我猜的是 B,猜错了。
我当时的判断依据是两个字:太美了。我那段被判成机器,因为它太顺、太完整;机器那段被判成人,因为它绕、啰嗦、有点笨。
当时我把结论写成“机器味 = 太顺”。现在接上 ELIZA,这句话得改一半。
ELIZA 一点都不顺。它蠢得理直气壮:把 “My father.” 变成 “YOUR FATHER”,把 “I am unhappy” 变成 “DO YOU THINK COMING HERE WILL HELP YOU NOT TO BE UNHAPPY”。
可它就是能让人觉得被理解。
所以我现在的说法是:“像人”和“机器味”根本不是一条轴上的两端。
人写东西会绕、会笨、会不顺,这是真的。可“被理解”的感觉也不来自“像人”。它来自另外两件事:
- 1.它接得住。你说什么它都有话说,你永远不会被冷场。2010 年那个三分钟才回一句、还只是拷贝的套话的客服,我照样跟它说了 12 句——我这个行为本身就是证据。
- 2.它把话头推回给你。你一开口讲自己的事,它把球传回来。人最爱谈自己。你开始自己给自己解释、自己给自己找台阶——那个“它懂我”的感觉,是你自己生产出来的,机器只是提供了一个由头。
还有个跟图灵对照的点,我得写在这儿。
图灵 1950 年说,机器要装得像人,就得故意犯错——故意把算术题算错,因为真人在回答里是会犯错的,太完美的回答反而可疑。
而 ELIZA 恰恰相反:它永远不做断言,只提问。它从不宣称自己知道任何事,所以它永远不会说错话,不会自相矛盾,不会被打脸。它把“回答”这个动作取消了,只留下“追问”。
图灵要的是“看起来聪明”,ELIZA 做到了“看起来体贴”。这是两种完全不同的错觉,而后者更便宜,也更持久——因为它一个事实都不需要知道,只需要你愿意一直说下去。
回到 2010 年那个 MZ 的客服。它跟 ELIZA 是同一个东西:一个三分钟才回一句套话,一个把你的话原样还给你再加一句反问。技术换了 44 年,骗术一点没换。
那我到底为什么还要跟它说 12 句?
我到现在也没想明白。
按理说我知道它没在听——我当天就写下了“我说了 12 句话,它说了 4 句话,服了”,我一边数一边吐槽。可我还是数了 12 句。
一个明知不会回应的对象,为什么能让人一直说下去?这个问题我留在这里,没有答案。
唯一能确定的是另一件事:在那 12 句话里,说话的一直是我。它没有听懂我,它只是给了我一堆由头,让我有机会把话说完。人大概就是这么被自己的回声骗住的。
七、下一篇
Weizenbaum 说了 “danger”,也说了“隐瞒无知”。他一边设计实验去测人有多好骗,一边警告说这个例子本身可能会跑掉。
五十年后,一台机器在公共场合赢下了一盘人类以为自己赢不了的棋。我当时最想弄明白的不是谁赢了,而是——当对面坐着的那个人看着棋盘的时候,他心里那一秒钟发生了什么。
那一秒钟,可能跟“错觉”有关。
没有评论:
发表评论