dbthinking / my

Across the Great Firewall, you can reach every corner in the world.
0 stars 0 forks source link

理解大型语言模型、LLM的优缺点是什么、对普通人来说有什么用 #33

Open dbthinking opened 5 months ago

dbthinking commented 5 months ago

理解大型语言模型、LLM的优缺点是什么、对普通人来说有什么用

理解大型语言模型

简单来说,大型语言模型(large language model,LLM)的本质,是通过字词之间的不同关联度,持续进行概率性的补全,最后输出自然化的结构性语言。对于普通人来说,最容易理解的场景是,在用各种输入法打字时,每完成一个字词的输入,其输入法会预测性地提供下一个字词的三至五个候选项。但如果你用输入法的联想预测功能来不断补全字词,最后基本上都是语法不通的胡言乱语。但是,LLM则能保证其输出的内容,在语法与逻辑上都有很高的准确性和可用性。

那么,我们再从概念上来理解,为什么LLM能实现上述功能。先解释模型是什么,模型就是数学模型,是使用数学来将一个系统简化后予以描述,研究不同组成部分的影响,以及对行为做出预测。模型重点是建构方式与各种复杂的数学算法。LLM的核心模型是GPT(Generative Pre-trained Transformer,基于转换器的生成式预训练模型)。GPT模型则是基于Transformer模型的人工神经网络,它在大型未标记文本数据集上进行预训练,并能够生成类似于人类自然语言的文本。Transformer模型是指采用注意力机制的深度学习模型,可以根据输入数据各部分重要性的不同而分配不同的权重。其中注意力机制,是用来调整不同特征或部分权重的数学模型;而深度学习模型,是使用大量的数据让模型自动去探索发现总结更多的特征与维度,从而得到更准确的(描述)预测结果。人工神经网络是模仿生物大脑神经网络的结构和功能的数学模型或计算模型,用于对函数进行估计或近似(相互连接、信息传递、概率评估)。

简短解释一下,模型先使用大量信息(文本、图片、音频或视频等)进行训练,训练时用类统计学的方式,计算字词或特征之间的关联度。模型训练完毕后,它在其产品交互界面,通过分析和理解用户输入内容,生成相应的连贯性输出。

LLM的优点与优势是什么

首先,计算机本身具有的优势。一方面是在演绎法的设计框架下,相比于人类的计算,其错误率极低、精确度极高且速度奇快,在长链条或大量计算时优势就更显著了。另一方面是输出与计算的可复用性和可重复性,计算过程被编程明确之后,能轻易调整输入值,快速获得新的输出值,灵活性非常高。但在LLM模型中却不完全是这样,后面会讨论其存在的风险。

其次,LLM的结构性与框架感。它的输出内容既有连贯的流畅性,又在整体与局部上保持合理的结构。一方面因为LLM有超强的计算能力,在大量数据(可理解为近乎全部的信息化数据)上进行预训练,学习广泛的语言模式和结构,并在特定任务或领域的数据做额外训练,使模型能生成更符合特殊要求的结构化语言。另一方面则是其注意力机制,能让它同时注意到诸多不同层面的结构。而人类的脑容量与注意力机制,导致其不得不分步处理。比如说要么注意细节A、要么留意结构B、要么思考全局,则容易顾此失彼,遗漏疏忽。

再次,LLM具备一定的逻辑性。逻辑本身来自于演绎法、归纳法与逻辑推理等。但是LLM的逻辑性的主要来源于,海量训练材料自身的逻辑性,再通过数学统计来计算token之间的距离与关联度。甚至都不是归纳法,而仅是关联度,虽然是近乎全量文本,但关联性的可靠程度却无法论证评估。

最后,LLM的探索创新能力。一方面因为其训练学习了近乎全量的信息,理论上能够触及且关联一切信息;另一方面因为其算法模型上是相对松散的组成路径,再加上用户可以命令模型输出多样性的结果。使得LLM的探索创新能力出众,非常适用于脑洞大开寻找创意。

LLM的缺点与风险是什么

首先,存在胡编乱造的可能性。一方面是因为用户的提问有歧义或不够细致精确,导致“全知识量”的模型无法猜中用户的想法,但这方面对于某些用户来说可能属于未知的未知,比如你问LLM“苹果贵吗”,有的回答是水果苹果方面,有的回答是Apple公司方面,也有把两种情况都考虑到的回答。另一方面则是因为LLM本身没有严格的逻辑推演,而是概率统计方面的关联度。越是不精确的提问、越是稀缺的知识,模型就更可能输出胡编乱造的组合内容。但目前也并不能保证(或者是我没了解到),其在纯粹数学这种逻辑演绎的知识领域,能够达成百分之百的正确性。

其次,缺乏或无法解释思考过程。如果能展示思考过程,用户就能识别出其不合理之处,做出针对性做调整与修改,也能一定程度上帮助辨别与优化输出。用户也只能倾向于接受与记忆答案,而否定、修改与完善答案都需要更专业的知识。

最后,合适的提问才可能有合适的答案。从技术来说,也就是输入的相关的token才能唤醒其输出相关联的token,这种token可能是一个关键词,也可以是一种结构,甚至是一种思考方式。“说了一点什么没有”后续会整理分析出prompt工程的理论解释与实用技巧。

对普通人来说意味着什么

首先,普通人应该把大语言模型用起来。即使只是把之前在百度搜索引擎、微信社交搜索或询问朋友的问题,顺便问下LLM做个参考,大多数情况下也会得到更好的答案或参考,甚至还可以多询问一两个LLM进行对比参考。认知与创作领域的工作者,就更应该使用其完善思路与激发灵感。

其次,大语言模型是用来节省思考时间的,不适合进行系统性学习。因为它本身不具备严谨性和系统性的特点(它甚至无法认识到自身的这个特点,做出针对性的理性分析后优化输出质量),学习过程中不可避免地可能会被其带进坑里。LLM也无法展示思考过程(或者说其展示了也不能保证正确),对培养、提升解决问题能力的帮助比较有限。借助LLM来辅助搭建系统性学习的框架是可行的,但LLM本身并不适合作为系统性的高精度学习。对于通过询问LLM给出答案的场景,需慎重考虑是为了学习理解知识还是快速完成任务。

再次,问题的类型与提问质量显著影响结果的可靠性。一般来说,越是常见的通用的问题,其整体输出质量就越好。越是小众的个体的问题,其一本正经地胡说八道的可能性就越大。如果让LLM帮你输出“你不愿意试图去理解清楚"的答案,那么小概率出现的错误答案是难以被觉察修复的。提问质量就涉及到prompt工程,其相当于搜索引擎时代的搜索技巧(不过前者的复杂度是后者的十倍百倍),研究prompt工程需要先理解LLM,故有此文。

最后,希望使用LLM来提升效率与效果的人,特别需要积累三个方面的知识。第一是通识教育,有尽可能完善的全面知识结构、思考问题的逻辑、解决问题的能力。第二是专业性知识,帮助你更好的评估判断输出质量与提出更合理的问题。第三是prompt工程,就是针对LLM的特点,如何进行更好的结构化、逻辑化的输入性提问。

本文使用 Wikipedia 与 ChatGPT 查询理解一些关键概念,并且使用 ChatGPT 等 LLM 帮助修改错别字与语法错误。

自己读了一遍后,修改了前文中的一些表达不完善的地方,即使之前已经让 ChatGPT 检查了三遍,这也说明了其局限性,还是不能太依赖相信 LLM。