本文将大语言模型训练分为三步:预训练(从互联网学习知识并建立预测模型)、监督微调(通过问答数据学习回答问题的方式)、强化学习(自我探索最优解)。文章类比人类学习过程,解释了AI的预测本质,探讨了逻辑与预测的关系,帮助读者理解大模型的基本工作原理。
【前言】
生活中 AI 用得已经越来越多,一直想要了解其大概原理,这样才能知道 AI 能做什么,不能做什么。恰逢最近看了OpenAI 联合创始人安德烈·卡帕西一个长达 3 小时的视频,用非常通俗易懂的方式讲解了像 chatGPT 这样的大语言模型,是怎么一步步训练出来的,像我这样一个基本没有技术背景的人,也能看懂,是非常优秀的科普视频。
大家可以前往 B 站搜索“安德烈·卡帕西:深入探索像ChatGPT这样的大语言模型”,即可观看,全文都有字幕,不用担心听不懂。
本文也从 3 小时的视频中提炼出最核心的内容,希望能帮助你“不求甚解”地大概了解AI 大语言模型的基本训练原理。
总览:对大语言模型的训练,跟我们人类学习知识的逻辑,是一脉相承的
视频中最让我印象深刻的一点,是安德烈·卡帕西把大语言模型的训练逻辑,类比成我们上学读书学习知识的过程,竟然是出奇的一致。
回想我们小时候的课本,每个知识点的章节讲解,都包含三个步骤:
第一步、学习知识点:单纯地通过阅读了解相关知识。完成这一步,我们只掌握了知识的表层,却不知道如何使用。
第二步、查看经典题目与解法:通过查看经典题目,了解知识点如何运用来解决实际问题。完成这一步,我们能模仿这些经典解法去解决类似的问题。
第三步、课后习题:这个环节里面,课本只会提供问题与答案,需要我们自己研究如何解题。每个人的脑回路都不一样,适合的解法也都不一样,我们需要自己摸索各种可能的解法,并找到最适合自己的解法。这个过程中,甚至会激发出比经典解法更高效的方法。完成这一步,我们就真正做到了对知识点的融会贯通。
大语言模型训练的三个步骤,也正正对应着这三步,即:
接下来逐一介绍每个步骤。
第一步、预训练
【核心流程】
1、学习信息搜集
要学习知识,自然要先获取信息,而最丰富而免费的信息,自然是来自互联网。因此,最初的模型训练内容,主要来自对互联网信息的爬取。
当然,这里要做的不是简单的爬取,而是包含了过滤劣质网站、文本提取、信息去重等一系列数据加工的过程。
2、信息的编码与压缩,生成“token”
爬取到的信息都是文字,人类能通过文字理解其所表达的内容,但计算机是不能的。
那计算机能理解什么呢?是数字与计算。因此,要让计算机能学习这些信息,首先要把文字转化为数字。这里也可以分为两小步:
第一步,对文字的基本单元做编码:例如英文而言,自然是每个字母对应一个数字 ID;中文则是每个汉字对应一个数字 ID
第二步,进一步压缩信息:把信息中高频出现的“单元序列组合”,编码出一个新的 数字ID,这样,就可以用更短的 ID 序列更高效地表达一句话,计算机需要理解的成本就会更低。
例如,在下图这个案例中,既有“你”、“的”这样的独立汉字用一个数字ID来表示,也有“你好”、“今天”这样的日常短语用一个数字 ID 来表示。
而这里代表一个文字或短语的数字 ID,就是所谓的大语言模型的“token”,是计算机理解与输出信息的最小“信息单元”。
3、信息学习:神经网络“预测”模型的训练
完成前面两步后,我们已经有了用于学习的原材料数据,接下来便可用于模型学习。
那么什么是所谓的学习?
回到我们期望模型的效果,是可以像人类一样,根据上文内容输出适合的下文内容。也就是说,根据上文“预测”下文的内容。
因此,这一步,我们使用统计学中最前沿的“预测”模型:神经网络模型,再基于我们搜集到的原材料数据,训练出一个基于上文输出下文的预测模型。
浅显地介绍下这个神经网络模型的训练方法:
所谓的神经网络模型,其实就是一个巨大的包含大量参数计算的数学方程式,但其核心目标跟我们小学学的一元一次方程是类似的,也是根据输入的“x”(上文)跟模型的参数“w”(一系列计算),输出一个结果“y”(下文)。
但也有两个区别,一个是,我们之前定义的 token 并不是一个具有数值计算意义的数字,而只是一个代表对应文字的“标识符”(ID);一个是这里输出的结果,代表的是,下文出现各个 token 的分别的概率值。
参数训练:一开始,参数都是随机的数据,输出的结果也是随机的。我们把从互联网上搜集到的学习材料,都喂给模型进行训练。模型以提升,学习材料中“正确”的下文 token 的概率,为计算目标,不断地调整参数。
【得到的成果】
当我们把全部互联网搜集到的知识,都喂给这个拥有数十亿级参数的超大模型,完成参数的训练后。我们就得到了一个可以根据“上文”预测下文的预测模型。
而在预测时:
1、每一次预测,都根据上文输入的全部内容,只输出一个下文“token”
2、根据上文输入的全部内容,本质输出的结果是,各个 token 出现的“概率”,然后基于这个概率进行一次抽样,输出一个下文“token”。
正因为存在这个抽样,而不是直接就只取概率最大的 token,因此,即使一样的上文,每一次得到的下文都是不完全一样的。
我们得到的,只是一个根据上文不断预测下文 token的预测器, 且是随机的,每次的预测结果都不一样;还并不是一个能回答问题的助理(assistant)。
我们把这一步得到的模型叫做 base model。
案例:下图这个例子很有意思。模型之所以能回答这个问题,并不是因为它理解了这个问题以及会进行计算,而是大概率 2+2 这样的问题在喂给模型的训练数据中出现过,模型能够回忆出来。而如果放任模型不断地输出下文,它就开始走向了跟问题完全没关系的哲学领域的内容当中…此时的模型,还不知道应该如何正确地回答问题。
【这个预测模型的本质】
base model 的本质,是互联网内容的模拟器。相当于把整个互联网的内容,都压缩成一堆参数。而且这些内容是模糊的/有损的、概率性的/统计性的。
特性:
- 它是一个token级别的互联网内容模拟器
- 具有随机性/概率性——每次运行都会得到不同的结果
- 它能凭借记忆逐字复述一些训练文档:模型的参数有点像互联网的一个有损压缩文件,大量有用的世界知识存储在模型的参数中
- 通过巧妙设计提示词,你可以激活其记忆,输出与提示词相关的内容
但我们还能让模型变得更好,于是咱们来到了模型训练的第二步。
第二步、后训练之“监督微调”
【背景】
完成预训练后,我们已经得到了一个可以根据“上文”预测“下文”的预测模型了,唯一的问题是,它还不大会处理“问答”这种场景中的下文预测。
要解决这个问题,很容易想到,那就是增加“问答类内容”的样本量,再训练一下模型对这方面“上文”的处理能力。这就是”监督微调“的核心原理。
这个阶段的模型训练方法,与预训练阶段是相同的,唯一改变的是数据集的类型,变成了一系列“对话问答”类的内容。
【核心流程】
1、构建对话问答类 token 序列
我们构建了<|im_start|>、<|im_sep|>、<|im_end|>等在预训练时没有的,全新人为定义的特殊token,用于把对话内容结构化,变成一种对话内容特有的 token 序列。
这些特殊 token 就像对话的‘分隔符’,明确告诉模型‘<<|im_start|>user’后面是用户的问题,‘<<|im_start|>assistant’后面是正确回答,帮助模型学会‘问答对应’”。
2、构造海量的对话问答类内容用于模型训练
接下来,我们构建海量的,涉及各个领域的对话问答内容,供给模型进行训练。这一步,需要耗费非常非常大的人力投入。所谓没有“人工”,何来“智能”。
而随着现在大语言模型的不断进步,也会通过大语言模型来生成这些数据,用于新的模型训练。
【得到的成果】
完成训练后,我们就得到了一个能够回答问题的模型,我们称之为SFT(supervise fine tuning 监督微调) model。
这个模型的本质,是结合了预训练知识, 以及从后训练数据集中习得的模仿人类回答问题方式,的一个预测模型。
听起来,是不是很像我们在学习完课本的经典题目的解法后,依样画葫芦地解决类似的问题?
案例:完成这一步,模型已经能很标准地回答一些常见问题了。
【关于幻觉产生的原因,以及其缓解方法】
幻觉产生的原因
如上文描述,模型的本质是一个概率预测模型,回答会基于统计学从概率中抽样给出一个答案,即使答案的概率本身在模型计算结果中非常低,也有出现的可能。
案例:下图这个例子中,后训练数据集曾经出现过”who is“这样的问题案例。在模型完成训练后回答类似问题时,即使向模型提问一个完全不存在的人orson kovacs,模型也会模仿后训练中这类问题的回答方式,基于预训练的知识模拟出一个答案,即使这个答案在模型计算结果中概率是非常低的,模型也会选择进行输出,因此就会出现胡编乱造的回答。
缓解方法
1、让模型学会说不知道:丰富后训练数据集,添加会回答”不知道“的案例
2、让模型学会借助工具:对于模型不懂的内容,让模型使用包括联网搜索、计算工具等能力,让搜索结果、计算结果成为模型的信息源,也就是成为输入进模型的“上文”的一部分,再输出答案
要缓解幻觉问题,可以引入以下几类训练数据:
第三步、后训练之“强化学习”
【背景】
在监督微调的过程中,后训练数据集的提供者,教会了模型按他们的方式去回答问题,模型是他们的模仿者。
但对于一个问题,是有多种解法的。而我们作为人类其实并不了解模型,我们并不知道哪个解法是更能帮助模型获得正确答案的。就像小时候做数学题,每道题都有几种解法,而我们每个人的脑回路是不一样的,并不是书本给的经典解法就最适合自己,最终需要我们自己摸索出最适合自己的,最舒适的解法,可以帮助我们自己获得最高的准确率,这个摸索过程中,甚至能迸发出比经典解法更优的全新解法。
而这就是我们这一步需要做的事情。我们只给到题目与答案,然后让模型自己摸索出最适合自己的解法。
【核心流程】
1、我们提供问题,然后让模型自己去生成一系列的解法
2、这些解法中,只有一部分是正确的
3、我们再从这些解法中找到最优秀的解法(既准确,又精简高效的)
4、把这个优秀解法作为训练数据集,去用于模型训练
5、如此往复,重复很多很多次…
【得到的成果】
通过强化学习,我们得到了两个喜人的效果:
1、模型产生了思维链(chains of thought)。
这就是我们使用 DeepSeek 等最前沿的大模型的时候,看到的思考过程。因此,我们把他们称之为推理模型(reasoning model)。
思维链的一个很重要的特点,在于让模型有了思考的过程,而不是一上来就回答问题。而这个思考的过程,都会成为“上文”的一部分,还记得大模型的预测原理,是基于全部的上文推测出下一个 token,因此上文的内容越长,越完整,预测出来的“下文”质量自然也会越高。
2、模型能产生超越人类已有知识的全新解法。
强化学习第一次出圈,就是击败人类最强围棋手的 alpha go。它正是通过强化学习,人类只告诉了它围棋的规则跟目标,然后它通过自己不断的训练,最终训练出了人类围棋历史上从来未有过的落子方法,最终超越了人类。如果它只是限制在模仿学习人类围棋手的历史案例,那它是不可能超越人类的。
当然,大语言模型的训练,要比 alpha go难得多。 因为围棋只是一个闭合领域问题(规则有限),而大语言模型要面对的是一个开放领域问题(要解决各种各样的问题)。因此,需要找多足够多的练习题给到模型进行训练。
总结
最后,再回顾一下模型训练的三个环节:
1、预训练:获取基本知识
2、监督微调:查看大量实例,模仿专家回答问题的方式
3、强化学习:提供习题,让模型自己不断训练、试验、纠错,直到找到正确的解法
在上述训练方法的基础上,模型不断进化,并发展到现在支持多模态、多流程任务的模型。
反思:预测,就等于逻辑吗?
了解完大语言模型的训练原理后,最让我惊讶的是,我们现在使用的,可以解决这么多复杂问题,甚至连高深数学题目都能解答的AI,本质上只是一个统计学的“预测模型”吗?我们人类独有的所谓“逻辑”能力,就这么简单被一个“预测”模型所战胜了?
但转念一想,会不会是,我把“逻辑”想的太高深了。会不会是,我们所拥有的“逻辑”,本质上也是一种我们基于过去经验而对当前事情的一种“预测”?当我们面对一个问题时,所想到的解题路径,也是我们基于自己过往经历类似事情时的成功或失败的反馈,而得到的属于自己的一个解法。
恰逢最近听了孟岩《无尽的探索》那期播客,里面提到了美国计算机科学家、神经科学家杰夫·霍金斯的一本书《千脑智能》,里面对大脑机制的阐述正是类似的:
或许,我们人类自诩独有的“逻辑”与“智慧”,就真的只是一种“预测模型”而已……
学习大模型 AI 如何助力提升市场竞争优势?
随着新技术的不断涌现,特别是在人工智能领域,大模型的应用正逐渐成为提高社会生产效率的关键因素。这些先进的技术工具不仅优化了工作流程,还极大地提升了工作效率。然而,对于个人而言,掌握这些新技术的时间差异将直接影响到他们的竞争优势。正如在计算机、互联网和移动互联网的早期阶段所展现的那样,那些最先掌握新技术的人往往能够在职场中占据先机。
掌握 AI 大模型技能,不仅能够提高个人工作效率,还能增强在求职市场上的竞争力。在当今快速发展的技术时代,大模型 AI 已成为推动市场竞争力的重要力量。个人和企业必须迅速适应这一变化,以便在市场中保持领先地位。
如何学习大模型 AI ?
在我超过十年的互联网企业工作经验中,我有幸指导了许多同行和后辈,并帮助他们实现个人成长和学习进步。我深刻认识到,分享经验和知识对于推动整个行业的发展至关重要。因此,尽管工作繁忙,我仍然致力于整理和分享各种有价值的AI大模型资料,包括AI大模型入门学习思维导图、精选学习书籍手册、视频教程以及实战学习等内容。通过这些免费的资源,我希望能够帮助更多的互联网行业朋友获取正确的学习资料,进而提升大家的技能和竞争力。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
一、初阶应用:建立AI基础认知
在第一阶段(10天),重点是对大模型 AI 的基本概念和功能进行深入了解。这将帮助您在相关讨论中发表高级、独特的见解,而不仅仅是跟随他人。您将学习如何调教 AI,以及如何将大模型与业务相结合。
主要学习内容:
- 大模型AI的功能与应用场景:探索AI在各个领域的实际应用
- AI智能的起源与进化:深入了解AI如何获得并提升其智能水平
- AI的核心原理与心法:掌握AI技术的核心概念和关键原理
- 大模型应用的业务与技术架构:学习如何将大模型AI应用于业务场景和技术架构中
- 代码实践:向GPT-3.5注入新知识的示例代码
- 提示工程的重要性与核心思想:理解提示工程在AI应用中的关键作用
- Prompt的构建与指令调优方法:学习如何构建有效的Prompt和进行指令调优
- 思维链与思维树的应用:掌握思维链和思维树在AI推理和决策中的作用
- Prompt攻击与防范策略:了解Prompt攻击的类型和如何进行有效的防范
、、、
二、中阶应用:深入AI实战开发
在第二阶段(30天),您将进入大模型 AI 的进阶实战学习。这将帮助您构建私有知识库,扩展 AI 的能力,并快速开发基于 agent 的对话机器人。适合 Python 和 JavaScript 程序员。
主要学习内容:
- RAG的重要性:理解RAG在AI应用中的关键作用
- 构建基础ChatPDF:动手搭建一个简单的ChatPDF应用
- 检索基础:掌握信息检索的基本概念和原理
- 理解向量表示:深入探讨Embeddings的原理和应用
- 向量数据库与检索技术:学习如何使用向量数据库进行高效检索
- 基于 vector 的 RAG 实现:掌握基于向量的RAG构建方法
- RAG系统的高级扩展:探索RAG系统的进阶知识和技巧
- 混合检索与RAG-Fusion:了解混合检索和RAG-Fusion的概念和应用
- 向量模型的本地部署策略:学习如何在本地环境中部署向量模型
三、高阶应用:模型训练
在这个阶段,你将掌握模型训练的核心技术,能够独立训练和优化大模型AI。你将了解模型训练的基本概念、技术和方法,并能够进行实际操作。
- 模型训练的意义:理解为什么需要进行模型训练。
- 模型训练的基本概念:学习模型训练的基本术语和概念。
- 求解器与损失函数:了解求解器和损失函数在模型训练中的作用。
- 神经网络训练实践:通过实验学习如何手写一个简单的神经网络并进行训练。
- 训练与微调:掌握训练、预训练、微调和轻量化微调的概念和应用。
- Transformer结构:了解Transformer的结构和原理。
- 轻量化微调:学习如何进行轻量化微调以优化模型性能。
- 实验数据集构建:掌握如何构建和准备实验数据集。
四、专家应用:AI商业应用与创业
在这个阶段,你将了解全球大模型的性能、吞吐量和成本等方面的知识,能够在云端和本地等多种环境下部署大模型。你将找到适合自己的项目或创业方向,成为一名被AI武装的产品经理。
- 硬件选型:学习如何选择合适的硬件来部署和运行大模型AI。
- 全球大模型概览:了解全球大模型的发展趋势和主要玩家。
- 国产大模型服务:探索国产大模型服务的优势和特点。
- OpenAI代理搭建:学习如何搭建OpenAI代理以扩展AI的功能和应用范围。
- 热身练习:在阿里云 PAI 上部署 Stable Diffusion
- 本地化部署:在个人计算机上运行大型模型
- 私有化部署策略:大型模型的内部部署方法
- 利用 vLLM 进行模型部署:高效部署大型模型的技术
- 案例分析:如何在阿里云上优雅地私有部署开源大型模型
- 开源 LLM 项目的全面部署:从零开始部署开源大型语言模型
- 内容安全与合规:确保AI应用的内容安全和合规性
- 算法备案流程:互联网信息服务算法的备案指南
通过这些学习内容,您不仅能够掌握大模型 AI 的基本技能,还能够深入理解其高级应用,从而在市场竞争中占据优势。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你无疑是AI领域的佼佼者。然而,即使你只能完成60-70%的内容,你也已经展现出了成为一名大模型AI大师的潜力。
最后,本文提供的完整版大模型 AI 学习资料已上传至 CSDN,您可以通过微信扫描下方的 CSDN 官方认证二维码免费领取【保证100%免费】。