AI 大模型系统实战¶
2023-08-31
Tyler,某大厂 AIGC 算法技术负责人。在多模态大模型、推荐系统和分布式机器学习系统等方面深耕十余年,实战经验和理论经验都非常丰富。
曾在某大厂担任算法主管,从零组建算法团队构建内容推荐系统,产品覆盖全球过亿受众。更早之前,作为亚马逊的应用科学家,从事人工智能相关研究并建立 AI 系统。毕业于知名高校计算机专业,研究方向为多模态大模型,曾在国际顶会和期刊发表多篇论文,拥有国家发明专利近 20 项。
热身篇和架构基础篇。带你搭建知识体系,夯实基础,为后续学习做好准备。重点学习 AI 系统的技术发展历程,如何快速利用开源工具实现自用级大模型底座的搭建,AI 系统有哪些成熟范式,它们又和现在的 AI 大模型系统有何联系?
技术原理篇。为你梳理 AI 大模型技术的发展脉络,深入解读大模型关键技术背后的技术原理,包括预训练模型的前世今生、GPT 1-3 核心技术,大语言模型的未来展望。学完这个部分,你就能跟上 AI 大模型技术的最新进展。
架构实战篇。重点讲解工业级 AI 大模型系统的关键技术,深入学习 AI 大模型系统最前沿设计理念和工程方法。聚焦如何解决 AI 大模型系统的新问题?如何构建工业级的 AI 大模型系统?AI 大模型系统领域还有哪些难题尚待解决?
前沿拓展篇。开阔视野,带你了解大模型产业的最新情况。洞察机遇,分享大厂的 AI 人才考察重点,为你的职业发展提供更多可能。
热身篇 (4讲)¶
01|认知升级:你心中的AI大模型长啥样¶
基础模型(foundation model 或 base model)
2021 年 8 月,李飞飞和其他一百多位学者,联合发布了一份超过 200 页的研究报告 On the Opportunities and Risks of Foundation Models
基础模型是一种大型机器学习模型,通常在大量数据上进行大规模训练(通过自监督学习或半监督学习),以使它可以适应各类下游任务。因此,它需要兼顾以下几点才能够叫做基础模型:
1. 参数量大(大型模型) 2. 训练数据量大(大量数据大规模训练) 3. 迁移学习能力强(适应多种下游任务)
“涌现”,指的是在大模型领域,当模型突破某个规模时,性能显著提升,表现出让人惊艳、意想不到的能力。
思维链(Chain-of-thought,CoT)指的是通过一系列有逻辑关系的思考步骤,形成一个完整的思考,进而得出答案的过程。
02|具身智能:OpenAI真正的野心是什么¶
GPT 的诞生要归功于 NLP 的快速发展。从 2018 年到 2021 年,是第一代大语言模型(LLM)的“技术爆炸”期。人们逐渐学会了,如何使用海量的无标签数据,来训练这些“涌现”智能的大模型。随后,OpenAI 采用强化学习技术,点亮了 LLM 的智能,ChatGPT 由此横空出世。
首先,我们使用大量 API 调用代码和文档作为语料,训练一个可以理解 API 的大语言模型。
然后,AI 系统还将对这些 API 进行向量化操作,将它们存储在向量数据库中作为外部记忆。
随后,当用户发起请求时候,AI 系统会从外部记忆中,获取跟请求相关的 API 交给 LLM。
最后,LLM 组合串联这些 API 形成代码,并执行代码,完成 API 的调用,生成执行结果。
03|原型系统:开源工具自建AI大模型底座¶
实现领域增强大模型的两个方法:
1. 领域微调: 使用领域知识对模型进行训练微调。
2. 增加外部记忆: 在提示词中引入一些领域知识,帮助模型提升回答质量。
增加外部记忆方法的步骤:
1. 对团队的技术文档进行切片,生成语义向量(Embedding),存入向量数据库作为外部记忆。
2. 根据同事所提问题中的内容,检索向量数据库,获取技术文档的内容片段。
3. 把文档片段和同事的问题一并交给大语言模型(LLM),让它理解文档内容,并针对问题形成恰当回答,返回给同事。
领域知识库(Embedding & 向量检索引擎)
04|游目骋怀:工业级的大模型系统强在哪¶
开源工具只是体验版,并非真正的大模型系统。
AI 大模型系统还在快速商业化进程中,真正的核心技术还在小圈子内传播。
架构基础篇 (6讲)¶
05|策略建模:为什么AI系统能够猜你所想¶
AIRC 系统¶
分为三大部分工作:
1. 策略建模
2. 数据工程
3. 模型工程
备注
策略建模起到了提纲挈领的作用,对业务目标进行数学建模,后面讲到的内容也几乎都是为它而服务的。
从业务目标到最终的 AIRC 系统,要经过两次转化:
1. 产品经理和算法专家将业务目标形式化
这一步会将业务上的玄学问题转变为明确的数学问题。
2. 算法专家和架构师会把数学问题解构成工程问题
工程转化过程中,最主要的工作是召回、排序、控制博弈和风控几个部分。
指标建模¶
先要确定“北极星指标”,它是业务追求的终极目标,虽然它可能根据实际情况的变化而变化。但相对而言,在一段时间内,它是最稳定、明确的指标,是我们后续行动的基础。
如:电商系统通常把 GMV 指标作为北极星指标。=》从海量商品中选出此人最可能成交的商品。就变成一个排序算法。
召回模块¶
召回模块的核心目的,就是用时间复杂度较低的算法排除大量的“错误答案”,减少排序算法的压力。
包括:
关键词召回
年龄、性别这类用户画像召回
排序模块¶
排序模块负责对召回结果进行精确的打分排序。这里将会使用用户、场景和商品的全景特征进行模型建模,尽可能地去提高打分的准确度。
控制 & 博弈¶
广告系统当中为了让预算不在一早就全部花光,能在 24 小时中均匀的消耗,要求系统有能力,控制内容的曝光分布。面对快速、大量的流量请求,我们如何准确地控制分布呢?这类问题是控制论算法的范畴,最好的方法就是用以 PID 和强化学习为代表的控制算法。控制类算法是 AIRC 系统当中的重要部分,它在 AIGC 系统当中也起到了重要作用
博弈场景:广告业务上会分成,流量卖方 SSP 系统和流量买方系统 DSP 两大部分,卖方的目标是帮媒体最大化流量变现收益。而买方系统,则是要帮广告主低价买到适合自己的流量。
风控模块¶
工业级的系统最大的特点是要考虑线上风险。你需要和陌生对手,甚至自己的恶意用户,去进行竞争博弈。这也就催生出了风控模块。
风控模块一般包含内容安全系统和反作弊系统。
内容安全系统会对各种模态(视频,图像,语音,文字)物料做安全审核,确保平台投放的内容是符合你们平台形象和法律法规要求。该系统由机审和人审配合完成。由于不合规内容占比相对较低,所以机审会采用高召回的策略,也就是“宁可错杀也不漏过”。在机筛之后,会把相对少量的内容交给运营人员做二次确认。
反作弊系统,在技术上可分成实时和离线反作弊这两个部分。实时反作弊一般会通过流量的行为模式还有动作频次来识别攻击者,这部分工作可以防御 80% 以上的攻击者。剩下20%的攻击可能会造成了客户更大的损失,通常这些攻击者的技术能力比较强,要靠离线反作弊来发现,因为离线系统能用到的数据和技术手段更多,可以发现长周期的异常流量、挖掘作案团伙。
小结¶
先要给系统设定北极星指标,并通过业务特点进行漏斗建模,之后将系统抽象成召回,排序两个模块,来提高排序效率,完成海量内容的在线实时排序。
除此之外,你还学习了如何使用控制、博弈和风控模块,让系统拥有控制能力,保证业务处于安全的状态。
06|特征工程:数据点石成金,给你的系统赋予灵魂¶
特征工程是数据工程的灵魂,而且它与模型工程也密切相关
特征工程和模型工程没有特别明显的边界,特征工程主要是为了帮助模型减轻压力。
备注
一句话概括一下特征工程的核心工作:特征处理的过程是对数据进行微观和宏观投影的过程,所以虽然叫特征处理,但特征本身其实没有变化,变的只是你观察的维度。
从特征到特征¶
通常情况下,合理的数据变换能帮助现有模型更好地理解样本中的信息。一个常见的例子是年龄特征,因为往往各年龄段用户的数据量往往参差不齐,所以如果你给模型的特征是年龄,它学起来可能会很吃力。这时候做一些离散化处理,比如将年龄转化为老、中、青,这样可以帮助模型快速学到一些宏观的特点。
将数值型特征直接给到线性模型,可能会导致模型很难发现特征中的一些非线性特点,这时你可以让它做幂函数、指数函数、三角函数等等这些变化之后再给到线性模型,就可以更好地处理非线性特征了。
除此之外我们还有很多的处理手段,比如对数值特征做归一化,让所有的特征都“一样高”,以免模型觉得取值范围大的特征就更重要。
从低维到高维¶
以性别特征为例,业务平台通常情况下会用枚举值 0、1 和 2 来表示男性、女性和未知。但如果你直接将这些数值传递给模型,会出现什么问题呢?模型可能会错误地认为女性 + 女性 = 未知,男性 + 女性 < 未知,未知 > 女性 > 男性。
最简单的方法就是保证它们之间在数值上是正交的,确保每个值只占据空间中的一个维度,简而言之就是用各个维度的单位向量表示一个分类,这种编码方式叫独热编码(one-hot encoding)。
备注
独热编码最大的特点就是能够将数据投射到高维空间,并同时保证它们之间的正交关系。
从空间到世界¶
AI 大模型的关键技术——预训练模型,你可以用它来刻画真实世界中各个实体之间的关系,让模型知道“羽毛球”与“高尔夫”和“插花”之间哪一个“距离”更近。
首先,你需要将上述语料中所有的单词做独热编码,映射到高维空间中,得到单词的高维向量表达。
衡量语料中词与词的关系有两种方法,第一种是跳字模型 Skip-gram,第二种是连续词袋模型 CBOW(Continuous Bag of Words)。
Word2Vec 的思想,也是 NLP 预训练模型(PTM)的重要工作。现在的 GPT 系列最早也是从 Word2Vec 一步步发展出来的,所以它的重要性不言而喻。
备注
特征工程的本质是空间投影的过程
小结¶
首先,你学习了怎样对特征进行微观投影,得到特征的特征。我们用非线性处理、特征组合处理和归一化处理等特征处理方法,让你的特征更好地服务于模型。
接下来,你还学习了怎样把低维特征投射到高维空间。我们使用独热编码,将特征投射到高维空间,并保证它们在高维空间的独立性,避免对模型造成干扰。
最后,你学习了怎样在高维空间,刻画特征之间的语义关系,我们用对比学习的方法,刻画了高维空间中的特征距离,也就是单词之间的语义关系,进而让模型“抄近道”理解特征在现实世界中的关系。
07|模型工程:算法三大门派,取众家之长为我所用¶
三大学派:
1. 符号主义学派
知识图谱
控制论学派
2. 连接主义学派
监控学习
对比学习
深度学习
3. 行为主义学派
PID 控制器
强化学习
Wide & Deep模型¶
Wide & Deep模型是一种非常有效的推荐系统模型,可以在处理大量稀疏特征和少量密集特征之间取得平衡,同时具备强大的记忆能力和泛化能力。
Wide & Deep模型是一种混合模型,旨在使训练得到的模型能够同时获得记忆和泛化能力。在Wide & Deep模型中,Wide部分主要作用是让模型具有较强的记忆能力,而Deep部分的主要作用是让模型具有较强的泛化能力。这样的结构特点使得模型同时具有了逻辑回归和深度神经网络(DNN)的优点,能够快速处理并记忆大量历史行为特征,并具有强大的表达能力。
Wide部分通常由线性模型组成,可以处理大量的稀疏特征,并捕获这些特征之间的相关性。这些相关性可以帮助模型更好地理解用户的行为模式,从而更精准地进行预测。
Deep部分通常由多层神经网络组成,可以处理少量的密集特征,并对这些特征进行复杂的非线性变换。这种处理方式可以使模型更好地泛化到新的特征组合,而不仅仅是在训练数据中出现的特征组合。
对比学习(Contrastive Learning)¶
区别于监督学习,对比学习只需要得到样本之间的“相似度”就能完成训练,Word2Vec 就是对比学习的一个典型例子。
推荐系统的本质是寻找用户和物品之间的关系。所以如果你能得到用户和物品之间的“相关性”,就可以直接用它们之间的“距离”
具体的过程是这样,你可以用图结构来表示用户和物品的关系,构建它们之间的关系图,用户和物品是图的节点,它们之间的交互行为是图的边,边的权重则是它们交互行为的频率。
只不过你需要一个办法把节点之间的图结构转化成 Word2Vec 中的序列结构。
备注
对比学习是大语言模型技术的核心方法。
DeepWalk 算法¶
DeepWalk算法的核心思想是利用节点的邻居信息来定义节点的上下文,然后通过学习这些上下文来得到节点的嵌入表示。它基于随机游走,通过在图中进行随机游走来捕捉节点之间的相似性关系。总的来说,DeepWalk算法的目的是将图网络嵌入到一个低维的特征空间中,以便在该空间中可以有效地表示和保留节点之间的相似性关系。
建模过程¶
推荐系统具体的建模过程:首先随机选择一个初始节点,根据与它相连边的权重分配概率,进行节点之间的随机跳转,也就是所谓的随机游走。随机游走的过程中会生成许多路径,这个路径则是你想要的序列。得到序列后,自然可以使用 Word2Vec 建模,唯一不同的是对象由单词变成了用户和商品。
通过这样的处理,你就能得到用户和物品的空间投影(Embedding)并计算它们的空间距离。
注意¶
通过将复杂问题分解为多个简单问题,快速得到了解决方案。这种方法在各类算法中经常会用到,比如计算机视觉中的目标检测就用了类似的方法。
一般而言,这往往只是一种权宜之计,最终还是会发展成端到端的模型,因为分阶段的方法通常会导致信息的丢失。
强化学习(Reinforcement learning)¶
行为主义派¶
- 早期常见的思路是运用控制论中的经典算法,比如 PID 控制器,该控制器由比例、积分和微分这三个部分构成。
比例部分反映了偏差与目标之间的比例关系,能在偏差产生时立即提供反馈,实现有效的控制。
积分部分表示偏差随时间的累积情况,主要用于消除静态误差,例如在误差积累较长时间时,逐渐增加修正幅度。
微分部分则捕捉偏差信号的变化趋势,特别用于快速扩大偏差时,可以及时抑制其进一步放大的趋势。
这个算法很擅长解决控制动作存在延迟响应场景的问题。最初是用在通过调节空调风量来控制室温,通过控制方向盘来保持车道这样的场景。
后来该算法广泛应用在 AI 系统中的控流场景
缺点:PID 算法也存在一些局限性,比如调整加权参数通常需要高昂的实验成本
强化学习¶
强化学习不依赖于预先标记的数据,而是通过与环境的交互来进行自主学习,根据奖励信号的反馈进行实时的策略更新,同样是行为主义派的经典方法。
小结¶
监督学习是在正确答案的指导下进行学习。这和你在考试前通过习题和答案来对照学习是一样的。
对比学习的目标是通过样本之间的相似度,来学习它们之间的距离,进而表示它们的关系。
强化学习的核心思想,是利用感知和行动的闭环进行学习。
08 | 数据算法:因材施教, 为你的系统选好老师¶
人群扩展算法(Look-alike)¶
有三大作用。
挖掘潜在高净值用户。比如识别出与“保时捷”车主相似的用户,扩大推广活动的覆盖范围。
提高风控能力。比如通过用户相似行为和特征,发现黑灰产作案团伙,识别出潜在欺诈活动。
提高冷启动推荐效果。比如利用相似人的特征代表未知新用户,做出更准确的推荐决策。
实现 Lookalike,完全可以用上节课你所学到的 DeepWalk 算法。但是这节课我们来学习一个新的算法 GraphSAGE,和两阶段的 DeepWalk 算法相比,GraphSAGE 是一个端到端的方案,能更好地保留图结构中的信息。
GraphSAGE¶
建图:将用户作为节点,如果用户之间若存在相同属性,则增加一条边。
采集:随机选一个幸运节点,向它的各个方向走两步,路径会形成一棵树,如左图。你需要重复此过程,采出若干棵树,留作备用。
聚合:随机取一棵树,将第三层节点和向第二层聚合(如中图),生成第二层节点表征。之后再对第二层和树根做同样的操作,每棵树都如法炮制。
训练:将树根原来的表征与上一步的聚合表征拼接起来,以此来保留图中结构信息(如右图),然后与一个参数相乘,就得到了树根的融合表征。
知识图谱(KG)¶
知识图谱起源于三大派别中的符号主义派,是一种用于表示和组织知识的图形结构,由多个“实体 - 关系 - 实体”的三元组所组成。
重点关注构建知识图谱的三个主要步骤:知识抽取、知识融合和知识加工。
场景特征¶
场景特征来自于每一次流量请求中客户端提供的信息,被用于刻画用户触达应用时的全景信息,包括后面这些信息:
应用程序所处的界面(应用、页面、媒体位等)
用户的设备信息(信号强度、手机型号、电池电量等)
所在地点信息(城市、气温、邮编等)
实时特征¶
场景特征的最大价值,在于它在时间维度上的区分性和敏感性。例如“用户最近 30 分钟的商品点击数量”或“用户最近 1 小时浏览商品数量”这些实时特征都是非常重要的,它们会对推荐结果产生很大影响。
用户画像和物料特征数据相对稳定,更新频率不高,如果不增加场景特征,模型的输入值很可能在一段时间内没有任何变化。因此,场景特征的输入可以让模型变得更加敏感。
小结¶
如何根据具体的业务场景选择适合 AI 系统的数据。具体内容包括这三个方面:
1. 用户画像的构成,以及相似人群扩展的技术。 2. 物品特征的构成,知识图谱技术的关键步骤。 3. 场景特征的定位,以及实时特征的独特价值。
09|系统构建1: AI系统的弹药库——离线系统¶
增量模型训练¶
第一级火箭使用全量(例如过去一年)的样本,进行完整模型的训练流程。由于这个过程需要大量数据,训练的算力开销特别大,因此我们应该尽量减少全量模型的训练频率,例如一周训练一次就可以了,这也是许多大公司的惯例。
第二级火箭是模型的短期增量训练,使用第一级训练出的模型和最近一天的样本数据,训练一个最新的二级模型。二级模型通常每天训练一次,来更新前一天的二级模型
第三级火箭指的是,把在二级模型部署到线上后,24 小时内产生的增量数据,实时地喂给在线模型进行训练和更新,来确保在线模型的实效性。不过,因为在线增量训练中缺少离线反作弊的参与,所以不能用增量训练替代全量训练,需要另外两级火箭做安全性和实时性的平衡。第三级火箭需要与在线模型指标监控系统配合。一旦关键指标出现大幅波动,就需要回滚模型,并降级到非增量训练模式,在排除问题的根因并确认无误后再重新开启三级火箭。
小结¶
存储索引(Memory&Index)和模型工程,这是 AI 大模型中的关键的前置知识,对于提示语工程和大模型训练非常重要。
10|系统构建2: AI系统的冲锋队——在线系统¶
看上面2图,AIGC 大模型系统架构图和之前经典人工智能系统图没太大区别
上一代的人工智能系统主要服务于内容分发领域(搜索、广告推荐等)。而现在的 AIGC 系统则是在生成式人工智能大模型的支持下,将“内容分发”升级为“内容生成”。
技术原理篇 (5讲)¶
11|地球往事:为什么CV领域首先引领预训练潮流¶
CNN:初出茅庐¶
1981 年,哈佛大学的休伯尔和维泽尔发现了视觉中的简单细胞和复杂细胞这两种类型的细胞。
1998 年
LeNet-5
就成功使用下图中的 CNN 网络解决了手写数字识别的任务,并定义了 CNN 的基本结构。2009 年,李飞飞等研究员在 CVPR 2009 上发表了
ImageNet
: A Large-Scale Hierarchical Image Database,这篇论文正式拉开 ImageNet 挑战赛的历史序幕,推动了整个计算机视觉领域的发展。这个时期的 GPU 性能不断提高,人们的视野被拉回到那些性能开销大但值得一试的方法,革命性的方法呼之欲出。
2012 年,Hinton 教授的团队终于通过利用一些沿用至今的训练技巧(包括 ReLU 激活函数、Dropout 正则化和数据增强)以及两块 GTX 580 GPU,让下图中 CNN 架构的
AlexNet
取得了突破性的成果,在 ImageNet 竞赛中一举夺冠。在这个时期,一家伟大的公司也在冉冉升起,那就是 NVIDIA。
ResNet:冲破瓶颈¶
在模型的网络层数不断增加后,出现了梯度消失和梯度爆炸的情况。这让研究人员在工作中变得畏首畏尾,不敢大规模地增加模型的层数,深度学习有些“深”不下去了。
深度残差网络(ResNet)应运而生。ResNet 是 CNN 图像史上的一件里程碑事件,它可以让模型在大幅增加层数的同时,突破梯度爆炸的瓶颈,达到更高的准确性,这个能力让它在 ImageNet 和 COCO 等比赛中拿到了五项第一的好成绩。
ResNet 这篇论文成为了 CV 领域乃至整个 AI 领域引用最多的文章之一,它的价值可想而知。
ResNet 的成功为深度学习领域带来了革命性的变化,随后基于 ResNet 诞生的 DenseNet、Inception 等网络结构的层数越来越深,参数量过亿已司空见惯。
所谓的大模型技术在这时已初显雏形,这些工作都为后续大模型发展奠定了坚实的模型工程基础,积累了宝贵的实践经验。
小结¶
在商业上,人脸识别等人工智能应用的发展,吸引了许多投资者对相关产业进行投资建设,提供了持续的需求,也促进了成本更低和更准确可靠模型的不断推出。
在技术上,ResNet 和 ImageNet 等视觉领域的的创新发展,使视觉大模型的训练成为可能,为视觉大模型的出现提供了必要条件。
12|博观约取:重走 NLP 领域预训练模型的长征路¶
RNN:生而 NLP 的神经网络¶
循环神经网络(Recurrent Neural Network,RNN)
LSTM:解决主要矛盾,扫清前进障碍¶
LSTM(Long short-term memory)
遗忘门使用 Sigmoid 激活函数计算遗忘值,输出一个介于 0 和 1 之间的值,表示要保留多少之前的记忆。
输入门使用 Tanh 激活函数计算一个新的记忆值。而且同样使用 Sigmoid 激活函数来算出一个介于 0 和 1 之间的值,表示保留的新记忆值量的多少。
输出门使用 Sigmoid 激活函数保留输入信息,并使用 Tanh 激活函数取得记忆细胞内容,配合控制输出值。
Seq2Seq:一统架构,众人拾柴火焰高¶
处理“输入为序列,输出也为序列”的任务
“Seq2Seq”(Sequence-to-Sequence)
编码器 - 解码器的架构
13|厚积薄发:如何让模型更好地理解人类语言¶
11 节课时提过的一个问题:既然在计算机视觉领域,预训练模型的表现如此出色,NLP 领域是否从他们的成功经验中学到了一些什么呢?答案是 NLP 确实汲取了灵感,但在实践中难以完全复制。
Word2Vec:对比学习加持特征表征¶
Word2Vec 算法由 Google 的研究人员于 2013 年提出。这个算法的最大贡献,是找到了一种无监督学习的方法,对大规模的语料库进行预训练,学习其中的语义,这绕开了对大规模有标签数据集的依赖,打破了 NLP 预训练数据上的困境。
ELMo:语言模型消除歧义¶
Word2Vec 也有明显的短板,比如无法处理词在不同语境中的多义性。举例来说,“苹果”可以指水果,也可以指手机。Word2Vec 无法理解这些差异,可能导致产生错误的结果。
ElMo(Embeddings from Language Models),它是 Google AI 在 2018 年提出的一项技术。
ElMo 是一种基于上下文生成词向量的方法,能够通过综合考虑“前到后”和“后到前”两个序列单词的含义,动态调整生成的词向量,让词语的表示变得更加准确。
ElMo 提出了一个两阶段的方法:首先,在第一阶段使用一个庞大的语言模型进行预训练;然后,在第二阶段,使用特定下游任务的数据集做模型微调。
GPT:预训练模型走上舞台¶
GPT-1(Generative Pre-Training)标志着一个重要的里程碑。
GPT 系列一直采用了 Decoder Only 的 Transformer 架构,在完形填空等问题上显然存在一定的天然劣势,这种“劣势”在 ChatGPT 这类对话生成型任务上,反而成为了一项优点。
BERT:预训练模型一鸣惊人¶
BERT 采用了类似 ELMo 的双向语言模型,同时利用上文和下文信息进行建模预测。
BERT 在模型和方法方面的创新主要体现在 Masked 语言模型和 Next Sentence Prediction。Masked 语言模型使用掩码标记替换部分单词,并要求模型预测这些被替换的单词。Next Sentence Prediction 则要求模型判断两个句子之间的关系。因为在预训练阶段中同时使用这些技巧和各类任务的数据,所以 BERT 具备了多任务学习的能力。
BERT 系列从一开始就采用了 Encoder Only 的 Transformer 架构,这一架构能够同时利用上文和下文信息,为 BERT 带来了显著的性能提升。所以它在各类 NLP 任务上表现出色,赢得了工业界的广泛认同,取得了巨大的成功,将 NLP 预训练模型技术推向了不可或缺的地位。
bert 训练也是无监督且双向训练出来的,且可以兼容多种下游 NLP 任务,所以它是LLM的一种
小结¶
相比计算机视觉(CV)领域的 PTM 技术,NLP 面临更多的困难和复杂性。为了让模型更好地理解人类语言,研究人员一直在探索和突破,这也推动了 NLP 技术的发展。
早期的尝试,如 Word2Vec,为 NLP 预训练模型的发展找到了正确的方向,为后来的研究提供了信心和希望。然而,这些方法也存在着一些明显的缺点,如无法处理词在不同语境中的不同含义。
随后,ELMo 和 GPT 等模型的出现为 NLP 预训练模型的发展带来了突破。ELMo 使用双向的语言模型,将上下文信息融入到 NLP 词向量,更准确地表示了词语的含义。而 GPT 则通过大规模预训练,在各类 NLP 下游任务中取得了显著的成果。
BERT 通过引入双向语言模型和更大规模的预训练数据,在各种 NLP 任务中展现了出色的能力,在工业界取得了巨大的成功,成为了各大公司不可或缺的核心技术之一。
14|变形金刚:Transformer是如何让模型变大的¶
Transformer的原理其实并不复杂。但想要理解它,请务必确保已经深入理解 Seq2Seq 架构以及编码器和解码器的作用。没有这些基础的话,你学习 Transformer 的过程就会有点像在听天书。
注意力机制¶
Transformer 模型的主要灵感正式来源于注意力机制。Google 的研究人员认为,既然注意力机制这么有效,不如把它发挥到极致,也正是这个想法直接造就了 Transformer。
Transformer 各个部分的作用¶
Encoder 的第一层嵌入层会将输入的词汇转换为向量表示,也就是把输入映射到一个向量空间中,以便模型更好地理解输入内容。如:用独热编码对输入进行编码,让 Transformer 自学调整参数,或者使用像是 Word2Vec 预训练好的投影模型进行编码
Encoder 的第二层,也就是位置编码层会为嵌入层输出的这些向量添加位置信息,把位置信息融合到嵌入向量中,这能帮助模型区分不同词汇在输入中所处的位置。相比RNN,Transformer 会并行地处理所有输入的内容,所以各个并行单元会无状态地处理每个输入。因此,我们需要在最开始就给每个输入的嵌入向量一个位置编号,这样模型才能通过输入判断它在整体中的位置。
自注意力机制:会针对每个带有位置编码的输入向量,去计算和其他位置的关联程度,从而捕捉输入内部的上下文关联信息,形成一个注意力权重的分布作为后续层的输入,指导模型的学习过程。
多头注意力(Multi-Head Attention):Transformer 模型会使用多组同构的自注意力(Self-Attention)模块,并行学习出多组不同的权重,每组权重表示了它根据输入信息所学习的不同自注意力权重。最终通过将多组自注意力计算的结果被拼接在一起,通过线性变换得到多头自注意力模块的联合输出。总之啊,多头注意力机制类似于赛马机制,它有助于减少模型初始化的随机性对模型效果的影响。所以即使只留下一个注意力头也能使用,但这会导致模型的稳定性和多样性无法得到保障,进而造成模型的性能下降。
残差归一化:残差连接和层归一化来稳定训练过程。如果你记不起这部分原理的话,可以回顾一下第 11 节课中的 ResNet。
前馈神经网络:
备注
注意力机制和自注意力机制的区别:注意力机制关注的是输入与输出之间的关联。比如模型对中译英训练数据 “我爱火锅” 译为 “I love hotpot” 的学习过程中,我们希望基于注意力机制的 LSTM 在翻译“我”的这个 Decoder 的位置上,注意力更多地集中在 “I” 上,而不是 “love” 上。而自注意力机制的主要目标,则是确定输入词与词之间的内部关联性。比方说,在 “道可道,非常道” 这句话中。我们希望 Transformer 可以通过自注意力机制,学到句中“非常道”指的是原句中的第一个“道”字而不是第三个。这种机制可以让 Transformer 学习理解这句话中更多隐含的信息和深意。
小结¶
用一个关于星际舰队寻找新家园的故事。
在这个故事中,我们首先见证了舰队的升空启航,进入宇宙空间。这就好像 Transformer 模型中把文本输入数据转化成了高维空间向量的过程。
随后,为了确保每艘舰船在航行中,能够准确地报告自己的位置,并且进行有效的通讯,我们为每位成员分配了独一无二的编号,这也是 Transformer 中位置编码的作用。
随着太空军司令的一声令下,舰船们各自启航,寻找目标。这实际上就是自注意力机制所承担的任务,它负责在茫茫的宇宙中寻找目标。
同时,为了提高寻找过程的效率,太空军司令还拥有了一种“超能力”,那就是窥探平行宇宙中,各种可能的寻找路径。这就是多头注意力机制的巧妙之处,它可以极大地加速了寻找的过程。
最后,司令汇总了所有舰船的探索结果,通过加权汇总的方式确定了目标星球的位置,就像 MLP 层在模型中的作用一样。
15 | GPT 1-3:技术爆炸,深入解析 LLM 的核心技术¶
GPT-1:学会微调(Finetune)¶
GPT-1 是基于海量的无标签数据,通过对比学习来进行训练的。这个思路来源于从 Word2Vec 到 ELMo 的发展过程中积累的经验。它们都通过在大规模文本数据上进行无监督预训练,学习到了丰富的语言知识。
GPT-1 的微调方法是,使用预训练好的模型来初始化权重,同时在 GPT-1 的预训练模型后面增加一个线性层,就像我们在第 13 节课的时候预训练 CV 领域 PTM 那样。最后只要根据下游具体 NLP 任务的训练数据来微调更新模型的参数就可以了
与 Transformer 不同的是,GPT-1 使用了一个只包含解码器部分的架构。它是一个单向的语言模型,通过自回归地生成文本,来模拟序列生成的过程。自回归指的是使用前面的观测值,来预测未来的值,GPT 模型一个词一个词往外“蹦”,就是源于它的特性。
GPT-1 在训练过程中则会根据海量数据,统筹考量不同上下文语境下生成的文本在语法和语义上的合理性,来动态调整不同词的生成概率,这个能力主要由它所使用的 12 个 Transformer 共同提供。这便是 GPT-1 所提供的一整套完备的预训练加微调的 NLP PTM 方法论,它也是第一个提出这种方法的。从这个角度说啊, GPT-1 的创新度是在 BERT 之上的。
在 GPT-1 论文的最后,GPT 的作者还提出了影响深远的“零样本学习”的构想,它直接造就了我们基于 Prompt 的模型使用方式。
GPT-2:放下微调(Zero-shot)¶
GPT-2 第一次推出了 WebText 这个百万级别的数据集。而且,GPT-2 还使用了比 BERT 更大的 15 亿参数的 Transformer。有了更大的数据集和参数,GPT-2 就能更好地捕捉复杂的语言特征和更长距离的上下文语义关系。
零样本学习,就是创造一个通用的、不需要任何额外样本,就能解决所有下游任务的预训练大模型。
OpenAI 提出了一种影响了后续所有语言模型工作的方法,那就是通过提示词(prompt)的方式,来告知模型它需要解决什么问题。
GPT-3:超越微调(in-Context Learning)¶
“少样本学习”(Few-Shot Learning):GPT-3 所提出的方式是,允许下游使用者通过提示词(prompt)直接把下游任务样本输入到模型中,让模型在提示语中学习新样本的模式和规律,这种方法的学名叫做 in-context learning。
示例:
def translate(text, model):
instruction = "Translate the following English text to French:\n"
example = "sea otter => loutre de mer\n"
task = text + " => "
# Construct the prompt
prompt = f"{instruction}{example}{task}"
translation = model.generate_text(prompt)
return translation
16|ChatGPT:是什么让LLM走向舞台中央¶
davinci¶
GPT-3(Davinci)之后,OpenAI 内部存在着众多不同的“内部版本”。你可能已经非常熟悉像 text-davinci-xxx 这样的 OpenAI API 选项。其实每一个代号的都代表着 OpenAI 的一次尝试,是大语言模型发展过程中积累的宝贵财富。
Codex models¶
在寻找的过程中,他们发现 GPT-3 在代码生成和代码的静态解释上表现突出。因此,OpenAI 便基于他们的“首代模型” (GPT-3),追加了数千万个开源代码库作为语料进行 finetune 训练,得到了 CodeX 的主要模型 Code-davinci-002。
经工业界广泛验证表明,人们也发现,经过了针对性的代码语料增强训练后,大模型在逻辑推理和思维连贯能力方面都表现得更出色。很可能是因为这一点,Code-davinci-002 成为了 OpenAI 未来所有主流模型的基石。Code-davinci-002 的成功也标志着 GPT 正式进入了 3.5 时代。
WebGPT¶
WebGPT: Browser-assisted question-answering with human feedback: https://arxiv.org/abs/2112.09332
这篇文章让我们发现了 OpenAI 很早就开始教导 LLM 使用工具,并使用强化学习来优化 LLM 的指令理解能力。
WebGPT 提供了一整套的方法,使 LLM 能够自主地搜索内容、浏览网页并获取知识,以使语言模型更准确地回答问题,并为回答的内容提供引用来源,从而提高回答的可信度。
在实现过程中,OpenAI 开发了一套工具,用于记录标注人员在的各种行为,其中包括使用搜索引擎辅助回答给定问题时,采取的动作(如搜索、点击链接、翻页等等)。这些数据能帮助 WebGPT 模拟人类在使用搜索引擎时的习惯行为,生成查询内容,使用查询结果。
在 WebGPT 项目中,我们第一次看到了 RLHF(Reinforcement Learning from Human Feedback)的身影,这也是 ChatGPT 的前身。
WebGPT 的训练依赖以下两类数据:
1. demonstrations: 标注者使用搜索引擎回答问题的数据。
2. comparisons: 收集对同一问题模型生成的多个回复,由标注者标注哪个更好。
GPT-3.5 models¶
Code-davinci-002 在商业化上的成功,为 OpenAI 鼓舞了士气,他们在 code-davinci-002 的基础上使用了更多的文本语料,经过监督微调(Supervised Fine-Tuning,SFT)训练得到了 text-davinci-002。这里要注意的是,OpenAI 在这里再次启用了监督微调,而不是之前“大力出奇迹”的自监督学习。
ChatGPT(RLHF)¶
强化学习(Reinforcement Learning,简称 RL),是控制论学派的经典方法,通过在一个由智能体(Agent)与环境(Environment)交互的情境中进行试错学习,来解决目标问题。
相比监督微调,这种方法的优势在于不需要标注者编写回答,只需要为模型生成的几个回答打分。通过这种方法,OpenAI 大幅提高了标注效率。模型负责生成具体回答,人类标注者负责排序。随着迭代和反馈,模型会明显提升生成对话的准确性、流畅性和逻辑性。
小结¶
从早期基于 GPT-3 的代码语料追加训练,得到了 code-davinci-002。再到后来使用人类对话语料进行监督微调,形成了 text-davinci-002。最后通过基于强化学习的 RLHF,创造出了石破天惊的 ChatGPT。其中的每一步都对应了一个“内部版本”,每个版本代表了 OpenAI 在语言模型发展过程中的不同探索和实验。