随着ChatGPT的发布,人们不禁震撼大语言模型的神奇能力,在很多方面,ChatGPT产生的文字信息已经让人没法区分是否是AI 产生的, 人们不禁会问: 大语言模型为什么有这么神奇的魔力?
一、什么是大语言模型?
大规模预训练语言模型,亦称作“基础模型”或“巨型模型”,其显著特点是参数数量庞大,形成了复杂的人工神经网络模型。
这一技术的问世与实践具有颠覆性的意义,它象征着人工智能研究迈入了通用人工智能时代。
大型模型具备规模性(参数众多)、涌现性(产生意想不到的新能力)以及通用性(不局限于特定问题或领域)等特质。
LLM,即大型语言模型,其实就是一个擅长处理语言任务的计算机程序。它运用数学公式和算法,从海量数据中挖掘出自然语言的规律和模式。
当我们给它一个提示,比如“天空是”,它就能根据所学到的知识,挑选出合适的词汇来续写,可能是“蓝色的”、“多云的”,或者是“满天繁星的”。
那么,LLM是如何知道哪个词汇最合适呢?它又是如何让生成的文本既有趣味性又充满创意,还能避免重复和错误呢?
这都要归功于它内部的那些神秘参数。正是这些参数,赋予了LLM智慧和创造力,让它能够轻松地应对各种语言挑战。
二、什么是大模型的参数
大模型参数就像是我们用来调整机器人行为的遥控器按钮,它们决定了LLM如何为我们创作新文本。这些参数会影响文本的质量、多样性和创造性。常见的参数有:温度(temperature)、token数量、top-p、存在惩罚(presence penalty)和频率惩罚(frequency penalty)。
接下来开始带你了解这些参数, 并介绍如何运用它们。还会展示不同参数设定下,LLM生成的文本效果。
温度(temperature)
先说说temperature这个参数,中文是“温度”。temperature这个参数,就像是水龙头开关,控制着文本创作时的随机性大小。temperature调高,文本就会变得更多样、更出人意料;温度调低,文本就会更连贯、更一致。
简单来说,温度高时,机器人可能会写出一些新奇、有趣的词汇组合;温度低时,它更倾向于选用常见的词汇,让文本看起来更流畅、自然。
为了说明这一点,想象一个 LLM 根据同一个提示生成一些文本:“学习编程的最佳方式是”。这里将使用不同的温度值,看看文本如何变化。
以下是一些示例:
温度 = 0.1:学习编程的最佳方法是大量练习并遵循一些在线教程。这是一个非常连贯和一致的文本,但也非常无聊和可预测。
温度 = 0.5:学习编程的最佳方法是尝试不同的语言和框架。这是一个更加多样化和有趣的文本,但仍然有些合理和合乎逻辑。
温度 = 1.0:学习编程的最佳方法是回到过去并与编程语言的发明者见面。这是一个非常多样化和不可预测的文本,但也非常富有想象力和冒险精神。
如上所示,温度参数会影响生成文本的质量、多样性和创造性。您可以根据您的目的和偏好使用不同的温度值。
生成文本时,调整温度值会影响输出的风格。较低的温度会产生更真实、更可靠的文本,而较高的温度会产生更具创意和幽默的输出。但是,务必避免极端温度,因为这会导致文本变得毫无意义。
token数量
首先需要明确, token 跟我们平常说的字符是不完全相同的。
字符(character):
书面语言的基本单位,代表单个字母、数字和符号
计算密集型,可能会忽略更高级的语言结构
缺乏语义粒度,无法理解细微的语言。
token(令牌):
包含整个单词、单词的一部分或标点符号。
捕获语义信息和语言上下文。
使法学硕士更容易理解语言的底层含义和结构
促进复杂的语言任务,例如自然语言理解、生成和翻译。
根据 ChatGPT 的 token计数器,定义标记的一些一般经验法则是,一个标记通常对应于常见英语文本的约 4 个字符,翻译为大约 ? 个单词(因此 100 个标记 ~= 75 个单词)。
token数是控制生成文本长度的参数。标记数越高,包含的信息和细节就越多,而标记数越低,则越简洁明了。
为了说明这一点,想象一下,一个 LLM 根据同一个提示生成一些文本:“什么是人工智能?”。这里将使用不同的“token数值”,看看文本如何变化。
以下是一些示例:
标记数 = 10:什么是人工智能?它是计算机科学的一个领域。这是一篇非常简洁明了的文本,但也非常模糊和不完整。
标记数 = 50:什么是人工智能?它是计算机科学的一个领域,研究如何创建能够执行通常需要人类智能的任务的机器和系统。这是一篇更详细、更有信息量的文本,但仍然有些笼统和宽泛。
标记数 = 100:什么是人工智能?它是计算机科学的一个领域,研究如何创建能够执行通常需要人类智能的任务的机器和系统,例如推理、学习、规划、决策、自然语言处理、计算机视觉、语音识别等。人工智能可以根据研究的目标、方法或应用分为子领域。这是一个非常详细和信息丰富的文本,但也非常具体和全面。
如上所示,“token数”参数会影响生成文本的长度、细节和信息。可以根据使用目的和偏好使用不同的“token数”值。
较低的“token数”值适合生成简短和简单的文本。或者,较高的“标记数”值将产生更长更详细的文本。但是,重要的是要确保“标记数”值不要设置得太低或太高,因为这可能会导致不相关或冗余的文本。
Top-P:
Top-p 是一个参数,用于控制在文本生成过程中有多少个单词被视为下一个单词的候选。较高的“Top-p”表示更多的多样性和创造性,而较低的“Top-p”表示更高的准确性和可靠性。
为了说明这一点,想象一个 LLM 根据同一个提示生成一些文本:“程序员最重要的技能是”。这里将使用不同的“Top-p”值,看看文本如何变化。
以下是一些示例:
Top-p = 0.1:程序员最重要的技能是解决问题。这是一个非常准确和可靠的文本,但也非常常见和预期。
Top-p = 0.5:程序员最重要的技能是沟通。这是一个更加多样化和有趣的文本,但仍然有些合理和合乎逻辑。
Top-p = 0.9:程序员最重要的技能是心灵感应。这是一个非常多样化和富有创意的文本,但也非常荒谬和不合逻辑。
如上所示,“Top-p”参数会影响生成文本的多样性、创造性和准确性。您可以根据您的目的和偏好使用不同的“Top-p”值。
如果想要创建一致的文本,建议使用较低的“Top-p”值。但是,如果是想要生成有创意和幽默的内容,更高的“Top-p”值可能更合适。找到平衡点并避免“Top-p”值的极端很重要,因为这会影响生成文本的质量和多样性。
存在惩罚(presence penalty)
存在惩罚(presence penalty)是一个参数,它控制生成的文本在多大程度上反映了迄今为止输出文本中某些单词或短语的存在。较高的“存在惩罚”鼓励模型探索新主题并减少重复,而较低的“存在惩罚”则意味着更多的重复和更少的探索。
为了说明这一点,让我们想象一个 LLM 根据同一个提示生成一些文本:“最好的运动是”。这里将使用不同的存在惩罚值,看看文本如何变化。以下是一些示例:
存在惩罚 = 0.0:最好的运动是足球、足球、足球。这是一个非常重复和强调的文本,但也非常无聊和单调。
存在惩罚 = 0.5:最好的运动是足球、篮球和网球。这是一个更加多样化和新颖的文本,但仍然有些连贯和一致。
存在惩罚 = 1.0:最好的运动是足球、橄榄球和国际象棋。这是一个非常多样化和新颖的文本,但也非常多样化和不可预测。
可以看到,“存在惩罚”参数在重复使用迄今为止在输出文本中出现过的标记时对模型进行惩罚,无论它们是否在提示中。您可以根据自己的目的和偏好使用不同的存在惩罚值。
如果希望创建重复和抽象的文本,请考虑使用较低的“存在惩罚”值。相反,如果希望生成的文本更加多样化和探索性,更高的存在“存在惩罚”可能更合适。但是,找到正确的平衡点并避免将惩罚设置得太高或太低很重要,因为这可能会导致不相关或模糊的文本输出。
频率惩罚(frequency penalty)
频率惩罚(frequency penalty)的工作方式与存在惩罚的工作方式相同,但在应用惩罚时,它包括提示中存在的标记。
它根据该标记迄今为止在文本中出现的次数(包括提示)进行缩放。因此,已经出现更多次的标记会获得更高的惩罚,然后该标记出现的概率会降低。
为了说明这一点,想象一个 LLM 根据相同的提示生成一些文本:“最好的运动是足球”。这里将使用不同的“频率惩罚”值,看看文本如何变化。
以下是一些示例:
频率惩罚 = 0.0:最好的运动是足球,足球很有趣,足球很刺激。这是一个非常重复和强调的文本,但也非常无聊和单调。
频率惩罚 = 0.5:最好的运动是足球,足球很有趣和刺激。这是一个更加多样化和新颖的文本,重复次数较少,但仍然有些连贯和一致。
频率惩罚 = 1.0:最好的运动是足球,足球既有趣又刺激。这是一个非常多样化和新颖的文本,但也非常多样化和不可预测,请注意它没有重复提示中出现的“足球”一词。
如上所示,“频率惩罚”参数会影响生成文本的变化、新颖性和重复性。可以根据使用目的和偏好使用不同的“频率惩罚”值。
如果希望创建有说服力和影响力的文本,请尝试较低的“频率惩罚”值。如果想要更独特和多样化的文本,请使用更高的“频率惩罚”值。但是,重要的是找到一个平衡点,避免将惩罚设置得太高或太低,因为这会导致文本缺乏连贯性或意义。