微信扫码
添加专属顾问
我要投稿
快速入门生成式AI,了解AI核心概念与应用。 核心内容: 1. 人工智能与“智能”概念解析 2. 机器学习与深度学习的基本原理 3. 生成式AI的独特价值与挑战
生成式 AI 是怎么回事
人工智能(Artificial Intelligence)
“智能”是一个广泛而复杂的概念,其定义和应用范围随着技术、科学和社会的发展不断演变。在当前的语境下,“智能”通常与人工智能(AI)相关联,指的是通过机器模拟人类智能行为的能力,包括感知、学习、推理、决策等能力。
上面这段话有很多模糊的词语:广泛而复杂、不断演变、通常、等……为什么会出现这个现象呢?因为“智能”不是一个定义、也不是一个技术,只是一个目标。所以在相关的论文中从来不会出现“人工智能”这个词,因为论文要的是严谨,而智能的标准每个人的认知是不同的。
机器学习
机器学习 ≈ 机器自动从数据中找到一个函数。
本科的时候,一个周末我坐了一个多小时的公交车,跑去余家头校区约一个老师询问“模型”是怎么回事,然后老师在黑板上给我写下了一个函数:y = f(x) = ax + b,其中 a、b 为参数。他说这就是最简单的模型,当给出样本如 x=4,y=5 和 x=2,y=-1 即可得到一组 a、b,那么就得到了这个函数,再输入新的 x 时,即可输出 y,完成预测。
所有的模型,都是 f(x) = ax + b 这个函数的演变,比如参数增加,x 变成非线性……到了机器学习,还是一个函数,只不过,这个函数的参数变多了,变成了上万个。
这个函数,就是我老师说的“模型”,而机器学习就是通过训练(training)、学习(learning) 把这上万个参数找出来的过程。用来找出上万个参数的输入输出的数据,就是训练数据。参数找出来之后,你代入新的输入来查看输出,就是测试(testing)或推论(inference)。
深度学习
深度学习(Deep Learning,简称DL)是机器学习领域的一个重要分支,其核心思想是通过模仿人脑神经网络的结构和功能,利用多层非线性处理单元(即深度神经网络)来自动提取数据中的特征,并解决复杂的模式识别问题。
简单点理解,就是上面那上万个参数不是简单地线性叠加,而是通过多层交互得到。
生成式人工智能(Generative AI)
生成式人工智能(Generative AI),题眼在生成,也就是产生新的。
除了生成式,人工智能解决的更多是分类(Classification)问题,也就是从有限的选项中做选择。比如垃圾邮件检测、图像识别、商品排序等,类似于我们考试中的客观题。
但生成式,就必须创造性回答,并不是在已有答案中选择最好的,而是要不断“生成”,还要确定是否答完了,拥有无限可能,类似于我们考试中的主观题。
既然对于考试而言,主观题比客观题更难、分值更高,那么在人工智能领域,生成式也自然更难。李宏毅老师说,生成式人工智能是机器产生复杂而有结构的物件,比如文章、影像、语音等。而什么是“复杂”呢?所谓复杂,就是几乎无法穷举。
什么叫几乎不可穷举呢?我们回过头来看垃圾邮件检测,结果就是 True/False;图像识别,结果就是各种物品、动植物、人等;商品排序,也就是在几万几十万的候选里面去做排序。这些都是在确定的候选集里面去做选择,也就是可穷举。而假设我们现在要写 100 字的作文,标题叫《我爱我的祖国》,会有多少种可能性呢?常用汉字有 3500 个,我们假设最最最常用的有 1000 个,那么 100 字的作文就是 1000 × 1000 × 1000 × … × 1000 = 1000^100 = 10^300 种可能,与之相对应的是宇宙中的粒子有 10^80 个。生成式就是从这近乎无穷的组合中找到一组比较好的组合。
ChatGPT & 语言模型
ChatGPT 的突然大火,让大语言模型被高度关注,之后的大语言模型如雨后春笋一样涌现出来。
ChatGPT 这种大语言模型本质上也是一个函数,只不过这个函数有上亿个甚至数十亿个参数。大语言模型又是怎么解决前面无法穷举的问题的呢?
和 ChatGPT 一样的大语言模型并不是根据问题直接在无数种可能中预测出正确结果,而是只预测后面一个字,完成文字接龙,这就把一个乘法运算变成了加法运算,计算量就瞬间可控了。也就是巧妙地用分类策略解决了生成式问题。
模型的演进是一个过程,目前大模型主要使用的基本都是 Transformer。
Transformer 是一种深度学习模型,最初由 Google 在 2017 年提出,其核心思想是通过自注意力机制(Self-Attention Mechanism)来捕捉序列中各元素之间的关系,从而实现对输入数据的高效处理。
大致的过程比较清晰,是一个从局部到整体的过程,和我们平时工作流程差不多,先把细节的、模块的处理好,再整体通盘考虑进行整合,最终得到一个高质量的产出结果。在 Transformer 中,这个过程分为 5 步,分别是将输入的文字转换为 Token、理解每个 Token、理解上下文、整合思考、输出结果。
token 是大语言模型处理的最小单位,一些大模型产品所说的可以支持多少 token 输入、多少输出,用的就是这个概念。但是一个 token 并不一定是一个词或者一个字,而可能是一个单词、词组或者是词根,汉语的话可能是一个词、一个字,也有可能一个字拆成两个 token。这个 token list 是提前人工设置好的,每个语言模型的 token list 并不相同。
在机器学习中,一般会把要处理的数据转换为向量(Vector),也就是把高维数据映射到低维空间,这个转换过程叫做 Embedding。
把数据转换为向量之后,就可以通过向量的计算来获得数据的相似性。也就是说接近的 Embedding 其 token 的意思也是相近的。
要注意,这个 Embedding 是通过训练获得的参数,存储在数据库中,在使用的时候直接查表得到。在大模型的训练过程中需要耗费大量资源,动辄训练几个月,其中一部分工作就是训练这个 Embedding,开源模型开源的参数也有一部分是这个。
除了需要理解每个 token 的语意信息,还需要理解 token 的位置信息,因为一个字在不同位置含义差别很大。
相同的字词,放在不同的语境中含义差别很大,比如“苹果”,既可以指水果,也可以指一个电子产品的品牌。那么就需要结合上下文信息,来确定输入想要表达的真实含义是哪一个。
计算每个 token(其实是经过 embedding 后的向量)与其他 token 之间的相关性,用一个得分表示,也就是相关性权重,叫做 Attention Weight。
把所有的 token 两两之间计算 Attention Weight,就可以得到一个矩阵 Attention Matrix。
在得到所有的 Attention Weight 后,需要把相关的信息进行集合。而在实际的计算中,往往只需要考虑左边的 token,也就是 Causal Attention。
在计算相关性的时候,其实是计算了某一个维度的相关性,也就是一个多维向量在某个低维平面的投影。类似于我们看到的北斗七星、猎户座,其实是从地球视角出发的一个二维平面上的投影,如果在宇宙中的另外一个角度去观察,就会变成另外的形状。所以说,如果进行一次相关性的计算,就会导致原始信息的丢失,如果想要更多地保留原始信息,就要找多个角度来计算相关性,也就是 Multi-head Attention。
Feed Forward 是一个前馈网络组件,提供一个非线性变换能力,从而整合更多维度的信息,提取更复杂的特征和关系,提高模型的拟合能力。在前面 Multi-head Attention 中,我们计算了非常多的相关性,在这一步就会综合考虑,得到一个最终的相关性结果。
Attention 和 Feed Forward 这两个过程,统一叫做 Transformer Block,而在实际的工作中,为了拟合效果更好,往往要进行多层的 Transformer Block。
在前面的工作中,得到了一个非常高维度空间的数据,但是最终我们要使用的还是一个线性结果,也就是一个按照概率分布的词汇表。所以需要通过线性变化(Linear Transform)把一个高维数据映射到目标词汇表的大小。然后再经过 Softmax 函数,将结果词汇表转换为概率分布,将每个元素归一化为介于 0 到 1 之间的值,并确保所有输出值的和为 1。
最终,我们得到的是一个归一化的概率分布词汇(token)表,这也就解释了为什么每一次大模型输出的结果都不相同,这是因为在文字接龙的时候,每次接龙的候选项都不是一个确定的值,而是一个候选项集合,里面每个元素的概率不同,然后类似于我们掷骰子,每次掷一下从词汇表得到一个结果,概率分布相同,但是结果不同。
上面就是生成式 AI 相关的一些概念。我们整理一下它们的关系。
其中,人工智能和生成式人工智能都是我们的目标,而机器学习和深度学习是技术手段。但是在当今,生成式人工智能都是通过深度学习这个技术手段来完成的,所以,可以适当调整上面的关系图。
熟练使用生成式 AI
工具 --> 工具人
生成式人工智能起步其实非常早了,但是被大家热议,是从以 ChatGPT-3.5 为代表的大语言模型走入人们视野开始的。之前的生成式人工智能,是以专业工具的形态出现的,如 google 翻译;而现在的生成式人工智能是以具备通才能力的工具人形态出现的。它不再是解决某一个领域的问题,而是像人一样,具备非常多的知识,可以解决各个方面的问题。
基于这个认知,我们如何使用大模型,如何跟大模型沟通就比较清晰了:把大模型当做一个新人助理。再解释一下,就是它不了解专属于你的知识、它拥有一般人的基本知识和理解能力。
充分沟通,让你的模型更强大
大模型刚出来的时候,出现了一个很奇葩的现象,就是做大模型的没有赚到钱,但是教怎么使用大模型的人赚得盆满钵满。这些人在教什么呢?教提示词、神奇咒语。有用吗?貌似挺有用,但是除了上课跟着老师跑了几个例子快乐一下外,并没有其他的用处。就像你能够写代码打印出一行“Hello World!”和真正的程序员通过代码解决实际问题的差距一样大。
有人专门去研究了比较流行的神奇咒语:
让模型思考(Chain of Thought,CoT)
Let's think step by step.(GPT-2有用,3.5 以上影响不大)
让模型解释自己的答案(GPT-3 有用,后面影响不大)
对模型进行情感绑架(部分有用)
This is very important to me.
对模型有礼貌(没有用)
为什么很多后来都没有用了呢?我个人的理解(不是李宏毅老师说的),是因为算力增强了、模型进化了。在过去,比如 GPT-2 的时候,算力还不够,所以很多时候只能简单回答,如果回答非常详细会很慢甚至无法输出结果,但是我们知道摩尔定律依旧在发挥威力,现在的算力已经非常强,好多大模型都给出了“深度思考”模式,人家自己都在深度思考了,你去提示人家要“step by step”,是模型傻还是你傻?还有就是模型的进化,越来越成熟、思考能力越来越强,一次答对的情况会大幅提高,不至于先随便答一下,然后让它解释一下后再发现很多错误进行纠正。它是一个助理,具备一定的理解能力和基本知识,不需要像对待小孩子那样去跟它说话。
我之前看过一个沟通模型,是说你心里想的信息,从说出来、被听到、被听懂逐渐衰减,最后被对方记住的只有 20%。如果再叠加一些个人情绪,这个比例就会更低。
所以,沟通本来就是人类的一大难题,而前面提到,把大模型当做新人助理,那么所谓的 Prompt 工程,就是解决如何跟人高效沟通的问题。所以,对大模型真正有效的是:
补充前提:有一些专有知识,是属于我们个人或者是我们所在的环境的。比如提起故宫,在北京和在台北所指的就不是一个学校,所以要告诉大模型,你是哪里人或者你问的是哪里的故宫。
提供大模型原本不知道的信息:这是因为大模型在训练完之后,知识储备就已经确定了,不会继续更新。所以在大模型训练完之后产生的信息,它是不知道的,你需要额外告诉它,比如给他一份新闻或者报告。
提供范例(In-context learning):这个主要是依赖大模型的理解能力,你可以要求它按照某种格式输出,或者按照某种新设定的规范产生判断(即使不符合常识)。注意,这里并没有额外训练模型,只是依赖理解能力完成当前交流。
前面反复提到,生成式 AI 是个新人助理,所以你交给大模型做的任务需要进行拆解,变成细粒度的、模块化的任务,就像职场中的师兄带新人一样。如果你直接丢给它一个复杂的任务,它肯定是一脸懵,不知道从哪里开始。
在之前比较老的模型上面,Chain of Thought 之所以有效,就是因为模型会把过程一步一步列出来,相当于对任务进行了拆解。但是在模型迭代发展之后,对于一些简单任务模型本身就可以拆解得很好了(可以观察一下 DeepSeek 输出的思考过程)。但是对于比较复杂的任务,还是需要进行人工拆解的,就像是给你师弟布置任务一样。
我想到另外一个问题,就是生成式 AI,要不断接龙,那么越往后积累的偏差也就越大,所以我们要尽量控制每项任务的粒度,让模型不断校准回归主线,才能保证交付质量。
无论是对于人还是对于生成式 AI,都有一个现象是产生答案很难,但是检查答案是否正确却很容易。因为检查并不需要走生成相同的路径。比如你解一道方程,要非常麻烦,但是只需要代入几个数字就可以检验正确性。所以,利用模型的自我反省能力,可以提升输出质量。
这让我想起我上学的时候解数学题,通常是使用多种方法得到相同结果后,才放心我的答案是对的。原来这里还有个专有名词 Self-Consistency,也就是自一致性。主要通过生成多个不同的推理路径,并从中选择最一致的答案来完成任务。
成年人的选择——全都要
上面提到了一些有效的方法,那么在我们实际的使用中,要采用哪些方法呢?当然是不做选择,全都要(当然,也要看任务难度,比较简单的也没必要浪费这么多算力,选择合适的方案就行)。比如,一个叫 Tree of Thoughts(ToT)的方案。
当然,还有很多其他的方案,比如 Algorithm of Thoughts、Graph of Thoughts(GoT)等,但是基本上都是以上各个方法的不同组合方式。
大模型一个比较的问题就是知识停止在训练结束的那一刻,另一个是很容易产生幻觉,即使对于不确信的内容也可以陈述地头头是道。为了解决这个问题,就可以提供真实的信息源,叠加大模型的理解、总结能力,得到更优质的答案,这个技术叫做搜索增强生成(Retrieval Augmented Generation)。比如在一年前我就用秘塔搜索取代了 Google 和百度,成为了我浏览器的默认搜索引擎。
除了借助搜索引擎等其他工具取长补短外,还可以借助其他的语言模型,让不同的语言模型发挥自己的特长,一起完成任务。
路由模式由一个路由模型和其他几个能力不同、版本不同或者是成本不同的专有模型组成,一个任务来了之后,先交给路由模型来确定该由哪个模型来执行任务,然后将任务交由相应的专有模型完成最终任务。
有句俗语,叫做“三个臭皮匠顶个诸葛亮”,三个臭皮匠是不是能顶个诸葛亮咱不知道,但是三个臭皮匠肯定顶过一个臭皮匠,三个诸葛亮也肯定顶过一个诸葛亮。经过实验,也得出了明确的结论,就是多个模型讨论的效果要好过一个模型自我反省。
其中,参与的模型越多、讨论的次数越多,准确率越高。
而讨论的方式,也存在很多种,不同的任务最适合的讨论方式也不一样,目前并没有一个明确优势的方式胜出。
在多模型讨论过程中,需要引入一个裁判来确定讨论结束。但是并不需要担心讨论停不下来,因为大模型都太谦虚了,基本上很快就会达成一致。所以,为了避免马上结束,需要给大模型一些指令:
你并不需要完全同意对方的想法,可以提出自己的意见
另一个模型的答案作为参考就好
这个比较容易理解,因为不同的模型本来擅长的工作不一样,另外,给每个模型指定一个特定的角色代入,可以更好地完成相关任务。如果能把这个模式玩转了,那么就人人都是 CEO 了。
大语言模型的训练阶段
大语言模型是一个文字接龙游戏,输入一些字,经过模型后返回接下来的字。
用前面的函数表示:
大模型的训练,就是用机器学习的技术方法,使用大量的训练数据,把这数十亿的参数找出来。
大模型训练失败比较常见的存在两个点:
训练失败,也就是算不出这数十亿个参数。这一般是由于在训练开始前人工设置的超参(hyperparameter)不好导致的,所以需要重新换个超参再来一遍。我们平时开玩笑说算法工程师就是调参工程师,调整的就是这个超参。
训练成功,但是测试失败。这往往是发生了过拟合。解决这个问题主要是靠增加训练数据的多样性,或者初始参数使用一组更好的参数而非随机(比如用开源模型公开的参数)。
特别注意一点,大语言模型的所有阶段都是在学习文字接龙,不同训练阶段只是训练数据不同。
1.Pre Train:自我学习,积累实力(自监督学习,Self-supervised Learning)
经常听到大语言模型厂商披露说自己使用了多少 G、多少 T 的数据量,为什么这么大呢?其实,对于大模型要学习的知识主要分成两种,语言知识和世界知识。
对于训练一个模型而言,需要的这两种训练数据量差异是非常大的:
语言知识:1 亿个词汇即可
世界知识:300 亿个词汇还不够
这也许就是为什么检查语法错误、翻译相对比较容易,而具备思考能力的大语言模型在最近几年才火起来的原因吧。
目前主要是通过网络获取数据。所以,数据的质量参差不齐,需要进行一系列处理。
过滤有害内容
去除 HTML tag 等符号(但会保留表情符号,因为 emoji 已经成为了文字的一部分)
去除低品质数据,可以使用品质分类器(比较高品质的数据来源有维基百科、教科书等)
去重,包含重复内容去除和文档去重
测试集过滤
先天条件:参数量
后天努力:学习数据量
模型 | 参数量 | 资料量 |
GPT-1 | 117M(1 亿) | 7000 本书 |
GPT-2 | 1542M(15 亿) | 40G |
GPT-3 | 175B(GPT-2 的 100 倍) | 580G(300B tokens,30 万遍哈利波特全集) |
2.Instruction Fine-tuning:名师指点,发挥潜力(监督学习,Supervised Learning)
大量的训练都是在第一阶段机器通过自监督学习完成的。为何不使用监督学习呢?因为太贵了,需要大量的人力进行数据标注。但是在第二阶段,就还是需要人为干预,进行指令微调,我们经常听到的“对齐”就是在这个阶段。
一般为了保证效果,要求第二阶段期指令微调后的参数与第一阶段偏差不大。为了满足这个要求,部分模型引入了一个 Adapter 的技术,也就是在原有参数上叠加少量参数,而不是直接对原有现场值进行修改。
Pre-train 已经学习到了非常复杂的规则,所以在做最佳化后,可以有很强的举一反三的能力。比如只需要告诉大模型中国最长的河流是长江,那么它就可以知道世界上最长的河流是尼罗河。
如果大模型已经在多种语言上做过预训练,那么在第二阶段(指令微调)只需要学习一种语言的任务(比如阅读理解),那么就可以自动学会其他语言的同样任务。
这个和我们人类类似,因为底层思维、世界知识是一样的,语言只是一种表达。当我们通过母语学会了物理、数学知识后,我们并不需要用英语再学习一遍,只需要学习英文单词、语法就可以通过英语解题了。
之前,人们期待打造一个个专才,使用的技术是 Bert。但是后来发现需要的专才太多了,成本太高,完全训练不过来。于是换个思路,直接训练一个通才。
现在流行的大模型都是通才的思路。训练过程就是“不断学习,定期复习”。
Instruction Fine-tuning 并不需要大量的资料,有两句业内比较流行的话:
Quality Is All You Need.
Less Is More for Aligment.
“兵在精而不在多”“少即是多”,看来这两句颇具哲学意味的话在很多场合都适用。
3.Reinforcement Learning from Human Feedback (RLHF):参与实战,打磨技巧(强化学习,Reinforcement Learning)
工作过的人都知道,很多知识都是在工作中为了解决问题实际使用后才真正理解的,能力也是这个时候才提升的,所谓“纸上得来终觉浅,绝知此事要躬行。”大模型也是经过前两个阶段的训练、对齐,最后经过实战不断打磨,获得终极能力。“实践是检验真理的唯一标准”,在最后这步强化学习,最主要的就是按照最终目标,确定输出结果的好坏。
训练阶段 | 学习方式 | 获得能力 |
第一阶段 Pre-train | Self-supervised Learning 自监督学习 | 输入:人工智 输出:能 |
第二阶段 Instruction Fine-tuning | Supervised Learning 监督学习 | 输入:“USER:你是谁?AI:” 输出:“我” |
第三阶段 RLHF | Reinforcement Learning 强化学习 | 输入:“USER:中国最长的河流是哪条?AI:” 输出:“长江” > “我不知道” |
其中 RLHF 和 Instruction Fine-tuning 在训练数据和目标上的差异:
Instruction Fine-tuning | RLHF | |
训练数据生产 | 人工生产标注数据(很辛苦) | 人工比较结果好坏(很容易) |
模型学习 | 只看过程,不看结果(接龙) | 只看结果,不看过程(通盘考虑) |
大语言模型和下围棋非常相似:
每一步都是一个分类问题
整体是一个生成式问题
两者的学习过程:
第一阶段&第二阶段 | 第三阶段(RL) | |
围棋 | 跟棋谱学习: 老师下哪里就下哪里 | 提高能够最终获胜的棋步概率 (标准明确、结果单一:输赢) |
语言模型 | Pre-train,Instruction Fine-tuning 老师说什么就跟着说什么 | 提升好答案的概率 (标准不一,多个答案比较,而不是单一答案的评价) |
在第三步的实战中,需要有一个反馈来迭代模型。比如我们常见的商品推荐系统,可以采集用户的点击、收藏、下单等埋点数据用来反馈。而 ChatGPT 因为是一个在线服务,所以用户也可以在获取答案后来点击好或者不好,甚至是重新生成答案,以此来获取反馈。但是这个数据量还是太少了,所以可以考虑使用反馈模型来担任评分员。
甚至是可以使用同一个语言模型来完成相关工作,把 RLHF 变为 RLAIF。
不只问答——打造 Agent,独立完成任务
我们对生成式 AI 的期待,肯定不只是问答、生图这么单一的诉求,我们期待大模型像一个专业人士一样,可以解决一系列的问题,进而完成一个目标。这就是 AI Agent,也就是可以根据目标制定计划、执行涉及某个专业的多个任务、并在进行中修改计划的 AI 系统。
拥有记忆
打造 Agent,最关键的一个问题,就是把执行这个任务过程中短期获得的经验记录下来,并且应用于接下来的动作(因为大模型在训练完之后不再有迭代能力,新的知识无法输入到模型;大模型的输入输出容量有限,即使当下可以不断追加输入输出信息,但是也不可能一个对话 session 无限期使用下去)。所以,我们需要额外帮助模型处理记忆问题。
这是斯坦福大学和谷歌合作的一个项目,使用 AI 村民运行了一个虚拟村庄,来研究 AI Agent,以此作为这篇文章的结尾吧。
服务优化新策略:AI大模型助力客户对话分析
在数字化时代,企业面临着海量客户对话数据的处理挑战,迫切需要从这些数据中提取有价值的洞察以提升服务质量和客户体验。本方案旨在介绍如何部署AI大模型实现对客户对话的自动化分析,精准识别客户意图、评估服务互动质量,实现数据驱动决策。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-08-13
2024-06-13
2024-08-21
2024-09-23
2024-07-31
2024-05-28
2024-08-04
2024-04-26
2024-07-09
2024-09-17
2025-05-08
2025-05-07
2025-04-30
2025-04-29
2025-04-29
2025-04-29
2025-04-28
2025-04-28