为什么我并不常用大语言模型

ChatGPT 问世带给人们惊艳的文本生成能力表现之后,各家大模型如雨后春笋般逐渐冒出。开发者们也基于大语言模型的能力,开发出来很多让大模型来赋能生活和工作的功能。然而,大语言模型究其本质,也只是一个文本概率预测模型,而非真正的通用人工智能。尽管它在很多方便表现出很强的智能能力,在一些任务上极大提升了人们的效率。但一味地信任它给出的结果也可能会工作和生活带来副作用。目前也有很多对大语言模型回答幻觉和事实性的研究。本文不从研究的角度出发,仅以个人日常生活中对大模型使用的取舍出发,给出一点使用当前水平大语言模型的一些思考。

什么时候我会用大语言模型

首先说一下目前使用大语言模型最多的场景以及对应的工具(按照频率从上至下): 1. 中英文互翻翻译(Pot) 2. 代码快速补全、注释和测试用例生成(VSCode) 3. 论文摘要简记(Zotero) 4. 写无聊的材料(ChatBox)

什么时候我不用大语言模型

接着来谈一下在什么时候我选择不使用大预言模型。这里的不用大语言模型可以从两种角度来理解:

  1. 我工作生活中除了使用大模型之外进行处理的事情之外的其他事情
  2. 别人使用大模型来做但我选择在这件事上不用大模型的事情

这可以规范化描述为:

设我日常工作生活中的所有事情构成的集合为 \(U_{me}\),其中我使用大模型来处理的事情构成的集合标记为 \(U_{me,LLM}\),其他人日常工作生活中的所有事情构成的集合为 \(U_{other}\),其中他们使用大模型来处理的事情构成的子集为 \(U_{other,LLM}\)。则上述两种定义可以以差集的形式表示为:

  1. \(U_{me}-U_{me,LLM}\)
  2. \(U_{other,LLM}-U_{me,LLM}\)

这里主要讨论第二种理解角度,即别人会使用但我并不会使用大模型来进行处理的事情。就我在实验室的观察来看,这些事情主要包含:

  1. 提问大模型某个包中函数的作用(如 pytorchsqueeze 的作用)
  2. 让大模型来完成某个任务代码的编写(如写完成一段机器人控制指令的代码)
  3. 让大模型解释某一段代码的作用
  4. 让大模型来回答某些具体的科学问题(比如如何提升强化学习模型的泛化性)

选择使用大模型的边界是什么?

对上面两节中我选择使用大模型和不使用大模型的任务进行比较可以发现,选择使用大模型的任务通常具备以下属性:

  • 易确认:在大模型输出结果之后,我可以以较低的成本来确认结果的正确性。如在翻译软件 Pot 中使用多个翻译 api (剑桥词典,必应词典,谷歌翻译,OpenAI,智谱AI)进行交叉验证
  • 良好定义:不论是翻译任务,还是代码补全,翻译等任务,任务的输出和任务的输入是高度相关且不需要太多创造性的。
  • 不重要:这一点是专门对材料生成这个任务的,dddd

当用大语言模型来解决具备以上这些属性的任务时,我可以不用花费更多的精力来确认生成结果的正确性或事实性。从而其可以几乎没有任何耗费地提高我的生产效率。在目前这个无法保证回答正确性的大模型阶段,我认为可以寻找工作流程中具备上述属性的工作内容,让大模型来为自己提升效率。

再来说说我不使用大模型的任务所具备的一些特性:

  • 事实性:需要回答的问题是某种事实。如提问函数的作用,某些具体的有答案的问题
  • 歧义性:给大模型的问题本身存在多种可能的理解,从而导致回答的不准确性。如提问某些函数的作用
  • 创造性:给大模型的问题解空间太大,可能的输出过多,从而导致想要得到一个好的回答需要反复提问。如让大模型写完成某个任务的代码

现阶段的大语言模型本质上只是一个文本概率预测器,因而,对其进行事实性问题的提问得到的回答依赖于其在训练过程中是否有见过相关的语料。此外,模型经过一些数据集的微调之后可能会产生更严重的幻觉问题 (Gekhman et al. 2024) 。因此,从使用角度来说,关于事实性的问题我并不建议通过提问大模型来进行解决。

其次,具备上述这些特性的任务还具备一个特性就是难以确认结果的正确性。或者说确认其正确性的成本不亚于不使用大模型。例如,若要确认大模型给出的某个函数作用是否正确,那么可能需要找到相关的文档进行确认,或者写一个简单的测试代码来查看输出结果。而这个确认过程本身就足以完成这些任务。此外,若不对大模型生成的结果进行确认,其出错时候造成的后果往往很严重。例如,若不确认大模型回答的关于强化学习泛化问题的回答,就按照其所述的思路进行后续的工作。那么如果大模型给出的回答中存在谬误,可能会致使大量的无效工作产生。

最后,从个人学习和成长来讲,我也十分不建议在诸如此类任务上使用大模型,其带来的危害如下:

  1. 缺乏成长性:在不用大模型的情况下,通过尝试解决这些任务可以有效提升个人能力。如查找阅读文档的能力,阅读代码的能力,查找阅读文献的能力等。从而带来个人工作效率的加速度(完成这些任务的速度会越来越快)。而一直使用大模型来完成诸如此类的任务是不能个人能力的提升从而转换为加速度的。
  2. 盲目相信:尽管大模型会给出一些事实性错误,但他的语言组织能力太好了。好到会让人对对他所说的一些“谎言”信以为真。若是在自己熟悉的专业领域,那对大语言模型给出的谬误可以一眼甄别。可倘若在并非自己熟悉的领域一直使用大模型来回答问题,这样的便捷性和消息来源的单一性会逐渐导致人失去从搜索引擎得到的众多搜索结果中辨认正确结果的能力,最终只能盲目相信大语言模型回答的结果。

结语

综上所述,我认为首先要摆正对大模型的认识。现阶段的大语言模型只是一种文本生成的工具,并非能够回答所有问题的“智者”。要以使用工具的态度来对待大模型,摒弃掉对大模型的神化和盲目相信。让大模型为自己所用,而不是成为大模型的奴隶。

PS: 最近看到一篇文章,也是分享作者如何使用ChatGPT的,提供了一个和本文不一样的视角,可以参考阅读。那么,我是如何使用ChatGPT的