昨天,我用GPT 3.5 Turbo和GPT 4进行了一次测试,并对该模型的性能产生了一些看法。一开始,我用ChatGPT评估翻译质量,并分析给出评估分数的理由(从0到10分)。如下图所示,我使用的是最基础的指令。这个指令并不复杂,但我想把它写成更有效的prompt。
经过几次比较简单的译文测试,得到了很合理的结果后,我输入了一个我最喜欢的德语成语,“Brat mir einer einen Storch”。一个非常晦涩的成语,字面意思是“有人给我烤/炸一只鹳鸟。”(在德语中,这句话实际上是一种表达惊讶或不信的俚语,相当于英语中的 “You’ve got to be kidding me” 或 “I can’t believe it”,中文里的意思接近于“你在开玩笑吧”或“我简直不敢相信”。用来它表达极度的惊讶。)
写第一个prompt时,我忘记在线ChatGPT接口不擅长处理插入提示返回,于是我原文原文做prompt。
这里,它给出的英文翻译让我感到惊讶:“谁给我带一只鹳来”。我不同意它给出5/10的评分,因为如果这是作为意译的话,它完全偏离原文的真正含义;而如果是直译,它把命令动词Brat (‘烤’或‘炸’)变成了‘带来’。无论哪种翻译,5/10都是不合理的。但它给出的理由完全是胡说八道,甚至最后一行是错误的。
于是我重新编辑了prompt,把那个愚蠢的直译译文也输入进去。结果如下:
事情从这里开始变得奇怪。首先,虽然它现在说Brat可以翻译成“炸”,但它不能处理英语中的助动词up,所以文本句段切分错了,并说这个翻译结果是错误的。虽然第二次的译文解释了这个习语里的单词,但它不是个好译文;可是它肯定比第一个译文好,因为第一个译文根本就是错误的,但GPT 3.5 Turbo却给第二个译文评分更低。
于是我开始试第三次,我在prompt里输入了与那条德语习语具有相同含义的英语习语“Well, I’ll be a monkey’s uncle”作为译文。和那个德语习语一样,字面上完全看不出来它是什么意思。
这个译文评价中几乎所有的东西都是错误的,但它出错的方式却很有启发性:
- 我们可以看到启动效应。输入译文“Well, I’ll be a monkey’s uncle”,就能将GPT 3.5 Turbo带入了正确的概念领域,现在它能给出习语的正确含义了。因此,prompt能触发模型中的一些参数,使最终的译文与德语文本保持一致。实际上,类似的事情也可能发生在人身上,一个人之前听过这个德语成语然后忘记了它的英文意思,但刚他看到英文含义后会记起德文成语。
- GPT 3.5 Turbo根本不理解习语——或者它自己在说什么。注意它解释英语习语含义与德语习语含义的方式几乎相同,但它还说“它根本没有理解源文本的意思或本质”,并且“与德语习语的原文不一致”。其他两点基本上重申了这一说法。这里的回应几乎是前后矛盾的,因为它自相矛盾。
- “文化背景”这一点完全是胡说八道,在这个和其他回答中通常是不相关的。在Common Crawl中的翻译评估示例(这是GPT 3.5 Turbo和GPT 4的主要训练来源)可能喜欢强调文化背景,这有一定道理的,但大型语言模型实际上并没有文化经验,所以它们做出的评估就显得很奇怪。
针对这些奇怪的翻译质量评估,我提了一些后续问题,得到了如下回答:
看到我质疑“文化背景”这一影响因素,GPT 3.5 Turbo的回答对这个因素避而不谈,但又重申了关于意义不符这一无稽之谈。当被问到具体二者如何不匹配时,它又开始回避。即便如此,它还是指出扣分是因为原文与译文并不“直接相同”。
我们能吸取教训吗?
我发现用ChatGPT的这种方法来评估翻译几乎是没有用的,至少对于有创造性的内容来说是这样。对于只注重字面含义的文本,它往往处理得更好,但它的评分基本上没有意义。也许,一个能概述评估理由的详细prompt会让它做得更好,但也不确定。这里有几个要点需要注意:
- 大型语言模型(LLMs)不理解文本。我知道很多研究人员会不同意,但是看看第二次互动中关于“me up a stork”的那一段就清楚了,无论LLM在做什么,它不是以英语母语者的方式来解析文本。在第三次互动中,奇怪地坚持英德两个习语的意义完全不同,尽管它将二者定义为意义相同的句子。这表明它在给出回复时,没有考虑任何被我们称之为“意义”的东西。这是不连贯的输出。
- 大型语言模型不会思考。当Galactica模型(已经不再使用)发布时,其创造者声称它能进行推理和思考。GPT 3.5 Turbo属于同一时期的产品,如果这就是所谓的思考和推理,那么它做得很差。解释毫无意义,模型对于它们所说的相关或不相关没有任何概念。例如,我无法想象一个半称职的人类评估者会对文化相关性作出如此断言,或者正确解释了两个非常相似的成语后,又争论两个成语完全无关。
- LLMs不可靠。如果我使用GPT 3.5 Turbo作为翻译评估的工具——至少有写过相关的prompt——我将放弃这个工具,因为它给出的评估分数和理由完全没有用。虽然我没有分享我的其他尝试,但我发现即使评估对象是文字文本和信息文本,这些评估分数变化也很大。这些文本的评估结果不像这个成语的结果那样糟糕,但也不足以用于决策。它们可以通过更好的prompt得到改进吗?也许吧,但我不认为它们是可靠的,因为它们依赖的模型不具备的理解能力。我可以尽快向土豚寻求可靠的翻译质量评估… …
但是GPT 4呢?
这里所有的试验都是使用GPT 3.5 Turbo进行的。我发现GPT 4在这些任务中确实表现得更好,但仍然存在问题。例如,它认为“有人给我煎了一只鹳”是7/10,这与我在GPT 3.5 Turbo中对“猴子的叔叔”成语的评分相同。我认为这显然是错误的:要么是0/10(因为它根本没有传达成语的意图),要么是10/10(因为它传达了字面意思)。但它不应介于两者之间。
它确实给“monkey’s uncle(大傻瓜)”的翻译打了9/10分,这很合理,但我仍然不相信它的可靠性。也许GPT式的基础模型最终会实现这一目标,但我们也已经看到了这种方法的局限性。
无论如何,我希望对这个晦涩难懂的德语习语的探索能让我们更了解LLMs及其优缺点,并带来更多思考。
(机器翻译,轻度译后编辑,仅供参考)编辑:王隽雅