《红楼梦》阅读理解:用威诺格拉德模式测试ChatGPT
2023-02-28 13:27:42
标签: 科学
威诺格拉德模式挑战(Winograd Schema
Challenge)用来测试机器是否能够识别一句话中的前指关系(anaphora),即找出其中某一代词的先行词。一个典型的例子为:
“市议会拒绝给示威者颁发许可,因为他们[担心/宣扬]暴力。”
当句中使用“担心”一词时,“他们”指的是市议会。而当使用“宣扬”一词时,“他们”指的是示威者。人通过常识可以很简单地看出两种情况下“他们”指的分别是什么,但对于机器来说十分困难。
ChatGPT的语料库里面,一定包括《红楼梦》以及各种红学研究著作。下面用Winograd Schema
Challenge考查一下ChatGPT的阅读理解能力。
这里选取的是一段人物关系最复杂的对话。央视版电视剧《红楼梦》里的对白,和原著几乎一字不差。严格说,这还不是威诺格拉德模式,但是也够难的了。体验一下,如果是你能理解多少:红楼梦 第12集
埋香冢飞燕泣残红(14'00"-16'30")。
以下是和ChatGPT的对话:
基本上全都说错了,有些属于胡说八道。“我们奶奶”指的是王熙凤。”这里奶奶“指的是旺儿要去的那家子的奶奶。《红楼梦》里贾母从来没有被称为“奶奶”,“奶奶”也不是大家闺秀的尊称。清朝传统的满族家庭里面,称男主人的夫人为奶奶,即现在所说的太太;而“太太”比“奶奶”要高一辈,指的是男主人的母亲,现在一般不这么叫了。末代皇帝溥仪的自传《我的前半生》里提到:
这里的“太太奶奶”指的就是醇亲王载沣的母亲和福晋,即溥仪的祖母刘佳氏(老醇亲王奕譞的侧福晋。正福晋是慈禧的胞妹叶赫那拉氏,光绪的生母)和母亲瓜尔佳氏(荣禄之女)。所以刘姥姥进荣国府时称凤姐为姑奶奶,王夫人为姑太太。而贾母是比太太还要高一辈的老太太。李纨不是贾母的侄媳妇,而是孙媳妇。但是把李氏解释成李纨是正确的,特别是这段话里并没有提到“李纨”这两个字。“四五门子”指的是四五门子亲戚,小红这一段话提到了四五位奶奶,分别属于不同的亲戚。这个问题太难,给ChatGPT一点提示,问平姐姐是谁,看看它怎么回答。
像知道李氏就是李纨一样,ChatGPT知道平姐姐就是平儿,这一点就不简单。但是ChatGPT把平儿的主子搞错了,应该是王熙凤,不是贾母。这个低级错误不应该出现,很难相信语料库里会有这样的内容。不过“我们奶奶”被ChatGPT解释成“平儿所侍奉的贾母”,对应关系是正确的。和上次一样,第二个奶奶被解释成李氏。虽然不正确,但如果一个人看书不细心的话,也容易看错。这次说李氏是贾母的儿媳妇,还是不对,应该是孙媳妇。“奶奶是指年长的女性,爷爷是指年长的男性”这句话完全是画蛇添足,答非所问,显然是根据李纨后来说的“什么‘奶奶’‘爷爷’的一大堆”生成的。注意“奶奶”一词有二义性,在不同语境下,可以指老爷的夫人,即太太,也可以指老爷的母亲,即祖母。奶奶是太太,太太又是奶奶,说起来有点乱,歧义消解向来是NLP的难题之一。但是在《红楼梦》里,宝玉和迎春、探春都是称贾母为老祖宗,而不是奶奶。这是因为贵族家庭里面礼数多,称呼也比较正式。就像影视剧里,皇子都是称父母为父皇、母后,而不是叫爸爸妈妈。清朝要随便一点,但皇阿玛前面那个皇字,是万不可省的。“四五门子”则是胡乱解释,而且和上次的回答不一样。继续问平儿的主子是谁。
这下露底了。平儿的主子又变成了贾迎春!ChatGPT根本没有建立并记忆红楼梦人物的关系。每次都是随机回答。贾迎春绝对不是贾母最喜爱的孙女(要说贾母都喜爱,那我没话说)。事实上,贾迎春是最被漠视的孙女。她性格懦弱,连老妈子都敢欺负她。贾母只有三位孙女:元春,迎春,和探春。惜春是宁国府贾敬的女儿,贾珍的胞妹,论起来是贾母的侄孙女。因为母亲早亡,父亲出家,兄嫂又不管她,所以被贾母接到荣国府居住。再加上黛玉这个外孙女,算在一起是五个人。没有听说过“五位孙女”这种提法,不知道是不是从语料库中来的。如果“五”是ChatGPT自己算出来的,那我不得不服,即便是硬凑的。但是贾迎春和平儿的关系不太可能有人会搞错,不像是语料库的问题。退一万步来讲,即便语料库中有部分错误的内容,也应该属于极少数。而关于平儿的主子是谁的语料比比皆是。换句话说,关于平儿的主子是谁的答案,ChatGPT不是从语料中找到的,而是自己合成的。这种“胡说八道”已经有很多人报告过,应该是语言生成模型本身的问题,不是根据已知的事实来生成答案,而是自由发挥,随机生成。或者说ChatGPT根本没有“事实”这个概念,不知道什么是事实。从这一点来看,ChatGPT和人类的思维机制相差甚远,本质上还是数据拟合。那种认为当神经网络规模大到一定程度,各种组织结构和概念就会自发涌现的观点,目前还没有实际的证据。也许现在的神经网络还不够大,但是光靠“大”恐怕还是不够的。类似地,有一位师兄认为用CNN方法来解决自动驾驶问题是一条死路,对此我深表赞同。
继续问这段话的下文。
这个回答中规中矩,几近完美。特别是“再要人”理解完全正确。至于愿不愿意,小红的言下之意显然是愿意的,但是ChatGPT理解不了这么深。不过如果是一个不通世故的人,听不出来也很正常。
最后,如果要问小红说的一共有几位奶奶,都是谁,这个问题就更复杂了,别说ChatGPT,就是红学家也未必能答得出。知乎里有一个回答可以参考:《红楼梦》里的一段话,不理解红玉传平儿口中的奶奶分别是谁? - 知乎
(zhihu.com)。此文写于2022年7月-11月,ChatGPT的训练数据应该还不包含这个语料。但如前所述,即便包含了,它也未必能够正确运用。实际上,ChatGPT并不具备真正的理解能力。
总的来说,ChatGPT对于浅层知识的理解还是相当不错的。这已经威力很强大了!我在Yahoo做社交媒体和社交网络的时候,有一段时间研究过NLP技术。那时的NLP把一句话解析成一棵主谓宾结构的完整语法树都没那么容易,特别是语法和拼写都不太规范的social
content。后来有了shallow
parsing,即把句子分块,只做浅层解析,同时结合统计方法分析。ChatGPT能够识别和学习的,也只是浅层的知识表现。虽然作为一般的模型ChatGPT还不够完美,但如果是开发具体的应用,完全可以在它的预训练模型上用各种方法继续训练,直到效果满意为止。比如在回答“平儿的主子是谁”这个问题时,先用搜索引擎找到相关内容,提升其可信度权值,再用ChatGPT生成答案,“胡说八道”的情况就会好很多。这里只是按常理推测,微软的方法肯定不止这些,更不必说外人无法知道的优化。ChatGPT和Bing集成的效果如何,现在已经在公测中。以下是基于Chat
GPT的新版Bing搜索的结果:
二〇二三年二月
《红楼梦》阅读理解:用威诺格拉德模式测试ChatGPT
威诺格拉德模式挑战(Winograd Schema Challenge)用来测试机器是否能够识别一句话中的前指关系(anaphora),即找出其中某一代词的先行词。一个典型的例子为:
“市议会拒绝给示威者颁发许可,因为他们[担心/宣扬]暴力。”
当句中使用“担心”一词时,“他们”指的是市议会。而当使用“宣扬”一词时,“他们”指的是示威者。人通过常识可以很简单地看出两种情况下“他们”指的分别是什么,但对于机器来说十分困难。
ChatGPT的语料库里面,一定包括《红楼梦》以及各种红学研究著作。下面用Winograd Schema Challenge考查一下ChatGPT的阅读理解能力。
这里选取的是一段人物关系最复杂的对话。央视版电视剧《红楼梦》里的对白,和原著几乎一字不差。严格说,这还不是威诺格拉德模式,但是也够难的了。体验一下,如果是你能理解多少:红楼梦 第12集 埋香冢飞燕泣残红(14'00"-16'30")。
以下是和ChatGPT的对话:
基本上全都说错了,有些属于胡说八道。“我们奶奶”指的是王熙凤。”这里奶奶“指的是旺儿要去的那家子的奶奶。《红楼梦》里贾母从来没有被称为“奶奶”,“奶奶”也不是大家闺秀的尊称。清朝传统的满族家庭里面,称男主人的夫人为奶奶,即现在所说的太太;而“太太”比“奶奶”要高一辈,指的是男主人的母亲,现在一般不这么叫了。末代皇帝溥仪的自传《我的前半生》里提到:
这里的“太太奶奶”指的就是醇亲王载沣的母亲和福晋,即溥仪的祖母刘佳氏(老醇亲王奕譞的侧福晋。正福晋是慈禧的胞妹叶赫那拉氏,光绪的生母)和母亲瓜尔佳氏(荣禄之女)。所以刘姥姥进荣国府时称凤姐为姑奶奶,王夫人为姑太太。而贾母是比太太还要高一辈的老太太。李纨不是贾母的侄媳妇,而是孙媳妇。但是把李氏解释成李纨是正确的,特别是这段话里并没有提到“李纨”这两个字。“四五门子”指的是四五门子亲戚,小红这一段话提到了四五位奶奶,分别属于不同的亲戚。这个问题太难,给ChatGPT一点提示,问平姐姐是谁,看看它怎么回答。
像知道李氏就是李纨一样,ChatGPT知道平姐姐就是平儿,这一点就不简单。但是ChatGPT把平儿的主子搞错了,应该是王熙凤,不是贾母。这个低级错误不应该出现,很难相信语料库里会有这样的内容。不过“我们奶奶”被ChatGPT解释成“平儿所侍奉的贾母”,对应关系是正确的。和上次一样,第二个奶奶被解释成李氏。虽然不正确,但如果一个人看书不细心的话,也容易看错。这次说李氏是贾母的儿媳妇,还是不对,应该是孙媳妇。“奶奶是指年长的女性,爷爷是指年长的男性”这句话完全是画蛇添足,答非所问,显然是根据李纨后来说的“什么‘奶奶’‘爷爷’的一大堆”生成的。注意“奶奶”一词有二义性,在不同语境下,可以指老爷的夫人,即太太,也可以指老爷的母亲,即祖母。奶奶是太太,太太又是奶奶,说起来有点乱,歧义消解向来是NLP的难题之一。但是在《红楼梦》里,宝玉和迎春、探春都是称贾母为老祖宗,而不是奶奶。这是因为贵族家庭里面礼数多,称呼也比较正式。就像影视剧里,皇子都是称父母为父皇、母后,而不是叫爸爸妈妈。清朝要随便一点,但皇阿玛前面那个皇字,是万不可省的。“四五门子”则是胡乱解释,而且和上次的回答不一样。继续问平儿的主子是谁。
这下露底了。平儿的主子又变成了贾迎春!ChatGPT根本没有建立并记忆红楼梦人物的关系。每次都是随机回答。贾迎春绝对不是贾母最喜爱的孙女(要说贾母都喜爱,那我没话说)。事实上,贾迎春是最被漠视的孙女。她性格懦弱,连老妈子都敢欺负她。贾母只有三位孙女:元春,迎春,和探春。惜春是宁国府贾敬的女儿,贾珍的胞妹,论起来是贾母的侄孙女。因为母亲早亡,父亲出家,兄嫂又不管她,所以被贾母接到荣国府居住。再加上黛玉这个外孙女,算在一起是五个人。没有听说过“五位孙女”这种提法,不知道是不是从语料库中来的。如果“五”是ChatGPT自己算出来的,那我不得不服,即便是硬凑的。但是贾迎春和平儿的关系不太可能有人会搞错,不像是语料库的问题。退一万步来讲,即便语料库中有部分错误的内容,也应该属于极少数。而关于平儿的主子是谁的语料比比皆是。换句话说,关于平儿的主子是谁的答案,ChatGPT不是从语料中找到的,而是自己合成的。这种“胡说八道”已经有很多人报告过,应该是语言生成模型本身的问题,不是根据已知的事实来生成答案,而是自由发挥,随机生成。或者说ChatGPT根本没有“事实”这个概念,不知道什么是事实。从这一点来看,ChatGPT和人类的思维机制相差甚远,本质上还是数据拟合。那种认为当神经网络规模大到一定程度,各种组织结构和概念就会自发涌现的观点,目前还没有实际的证据。也许现在的神经网络还不够大,但是光靠“大”恐怕还是不够的。类似地,有一位师兄认为用CNN方法来解决自动驾驶问题是一条死路,对此我深表赞同。
继续问这段话的下文。
这个回答中规中矩,几近完美。特别是“再要人”理解完全正确。至于愿不愿意,小红的言下之意显然是愿意的,但是ChatGPT理解不了这么深。不过如果是一个不通世故的人,听不出来也很正常。
最后,如果要问小红说的一共有几位奶奶,都是谁,这个问题就更复杂了,别说ChatGPT,就是红学家也未必能答得出。知乎里有一个回答可以参考:《红楼梦》里的一段话,不理解红玉传平儿口中的奶奶分别是谁? - 知乎 (zhihu.com)。此文写于2022年7月-11月,ChatGPT的训练数据应该还不包含这个语料。但如前所述,即便包含了,它也未必能够正确运用。实际上,ChatGPT并不具备真正的理解能力。
总的来说,ChatGPT对于浅层知识的理解还是相当不错的。这已经威力很强大了!我在Yahoo做社交媒体和社交网络的时候,有一段时间研究过NLP技术。那时的NLP把一句话解析成一棵主谓宾结构的完整语法树都没那么容易,特别是语法和拼写都不太规范的social content。后来有了shallow parsing,即把句子分块,只做浅层解析,同时结合统计方法分析。ChatGPT能够识别和学习的,也只是浅层的知识表现。虽然作为一般的模型ChatGPT还不够完美,但如果是开发具体的应用,完全可以在它的预训练模型上用各种方法继续训练,直到效果满意为止。比如在回答“平儿的主子是谁”这个问题时,先用搜索引擎找到相关内容,提升其可信度权值,再用ChatGPT生成答案,“胡说八道”的情况就会好很多。这里只是按常理推测,微软的方法肯定不止这些,更不必说外人无法知道的优化。ChatGPT和Bing集成的效果如何,现在已经在公测中。以下是基于Chat GPT的新版Bing搜索的结果:
二〇二三年二月