查看原文
其他

关于大模型的一些Basics

渣大米 石麻笔记 2023-10-09
去年开始写公众号,起初是为了记录自己的学习,写了十几篇,粉丝过千。选题和内容质量上都比最初要求高很多,公众号的选题也从我想写的内容变成了粉丝可能想看的内容,写公众号的心态也开始浮躁,于是公众号就断更了。

去年末,随着ChatGPT的发布,周围的创业者和投资人们每天都在讨论AI。当和别人讨论一些问题的时候,我常常会有一些概念不懂,非常有挫败感,于是开始系统学习,扎进这波AI的浪潮里,生怕自己成为被拍在沙滩上的那一个。

写这篇文章的目的,是希望能够以一种通俗易懂的方式,把大模型相关的一些buzzwords解释清楚,也作为未来探讨大模型的应用做一些基础知识的铺垫。


以下为本文目录
👇
1.什么是大模型
2. 大模型的训练
2.1 预训练(Pretrain)
2.2 Transformer
2.3 微调(Finetune)



1.什么是大模型

大模型全称是大型语言模型(LLM,Large Language Model),这个“大”主要指模型结构容量大,结构中的参数多,用于预训练大模型的数据量大。


一个大模型可以分三个层次:算法(模型结构),模型参数(数量和数值),训练数据,


算法:类比碳基物种,硅基物种的大脑就是模型。我们现在说的算法(比如Transformer)代表大脑(模型)的能力,Transformer的出现确实极大程度地推动了AI的发展。但现阶段,在处理多模态数据时还有很大挑战,在算法层面未来一定会有新的突破。


模型参数:一个刚出生的人类幼崽随着年龄的增长,大脑本身在增长,模型参数的数量增加可以类比人类大脑本身的成长和成熟;随着人类幼崽成长中接触的事物增加,大脑的认知在改变,参数的数值可以类比人类利用外界信息给自己构建的认知。


训练数据:人类成长过程中对认知的构建,70%是通过视觉,20%是通过听觉,其他包括味觉、触觉、嗅觉等等,通过这些感官接受这个世界的信息来构建对世界的了解。模型的训练数据某种程度类比于这些信息,你让模型看到了多少和什么质量的数据,决定了他未来的认知,即参数的数量和数值。

如果想进一步了解这些概念,我推荐大家在Youtube上学习MIT Introduction to Deep Learning | 6.S191(Youtube链接在文末)公开课,这门课程系统地介绍了深度学习。目前所有关于AI的新进展都是基于深度学习Deep Learning(或者叫神经网络Neural Network)的进展。

深度学习:这里插一些关于深度学习的背景,深度学习是AI的一个子领域,即利用神经网络结构,从数据中进行学习和模式识别。他的核心是可以通过多层神经网络,从大量的数据中进行学习,进行高级别模式识别和决策。别看今天深度学习的大放异彩,深度学习在AI领域曾经是一个很不受重视的分支,杨立坤在《科学之路》中关于深度学习的描述让人印象深刻

我与我的同事兼朋友Geoffrey Hinton和Yoshua Bengio达成共识,决定共同努力重新唤起科学界对神经网络的兴趣。我们相信它是行之有效的,能够大幅度提高图像和语音识别的效率。当然仍然很多研究者认为神经网络的研究是一场闹剧。因此,我们提出了一个新名称——深度学习。我把我们的三人小组称为“深度学习的阴谋”。

因为不受重视,我们发表文章之路很不顺利。2004-2006年,我们写的关于深度学习主题的文章几乎都被机器学习领域的重要会议否决了,这些会议包括NeurIPS,ICML等。当时研究机器学习的主要方法是核方法、提升方法和贝叶斯概率法,神经网络几乎已经从可选项中消失了。像CVPR和ICCV这样的应用领域大会也对神经网络的相关工作保持缄默。
即使我们信念坚定,也会有某个动摇的时刻。我记得在1987年12月6日,在多伦多,Geoffrey Hinton来到实验室的时候神情沮丧。他向大家坦诚了他的困扰:“今天是我40岁生日,我的职业生涯也到头了,什么也做不成了。”
深度学习三巨头在他们选择的科研方向上艰难前进了几十年,但依然坚持着,直到近些年,几乎所有AI领域的突破都是基于那个他们曾经为了避免被排斥而重新命名为深度学习的神经网络研究。
参数:在讨论大模型时大家常常听到某某大模型几十亿个参数,我起初非常不理解参数的概念。MIT公开课上有一张图可以很好的解释参数:下图展示了一个深度学习模型里最小单位,一个神经元(Perceptron)的结构,在下面这个算式y是输出,x是输入,根据输出和输入求解w的过程就是大模型预训练的过程,大家平时说的参数就是算式里的权重w(weights)。
Token:在讨论基础大模型时,我们常常会听到Token这个词,Token的概念相当于文字,一个中文文字对应一个token,比如冰激凌,对应三个token:冰+激+凌;一个英文的字符对应一个token,比如icecream,对应两个token:ice+cream。
2. 大模型的训练

在上文,我们提到大模型的训练分两个阶段:预训练(Pretrained)和微调(Fine tuning)。预训练(Pretrained)的概念之所以有“预”这个字,是将大模型分成两部分,对基础大模型进行预训练,训练数据量巨大(预训练的数据都是无标注的数据),模型参数巨多,耗费算力巨大;这样预训练的模型不能直接拿来用,在完成特定任务时的表现不好。这个时候就需要对模型进行微调(Fine tuning),微调一般是给模型特定领域的标注数据集,对预训练的模型参数进行微小的调整,让模型更好的完成任务。我们让ChatGPT来帮我们解释一下预训练和微调这两个概念。
ChatGPT是不是很棒!这个给80岁老太太的解释,太通俗易懂了。
2.1 预训练
之所以会存在预训练,是因为很少有人能够有那么大的数据集和算力来预训练出基础模型,大家更多的是在个别预训练好的基础模型之上做微调来满足应用的需求。预训练和微调在大模型出现之前就已经被广泛应用,比如在CNN领域,很多图像的应用都是用基于Imagenet的CNN预训练模型,比如VGG,Resnet,Inception。在LLM领域,我们现在常常听到OpenAI的GPT,Google的BERT和T5,Meta的Llama,国内清华大学的GLM等都是预训练模型;其他公司可以接入这些模型的API或基于开源模型进行Finetuning。
亚马逊的研究人员在Harnessing the Power of LLMs in Practice: A Survey on ChatGPT and Beyond 文章中有一个LLM Evolutionary Tree很好地总结了大模型的演进过程。文章将LLM分为三类,Encoder Only,Encoder-Decoder和Decoder only。在LLM发展的早期阶段,Decoder only模型并不像Encoder Only模型和Encoder-Decoder模型那样受欢迎。直到2021年以来,随着GPT3的推出,Decoder only模型逐渐成为主流。

2.2 Transformer
那么Encode和Decode到底是个啥?大致的模型结构如下图所示:
模型左侧虚框是Encoder部分,右侧虚框是Decoder部分,我尝试尽量把每一部分给解释一下。
Embeddings:Embeddings的概念是将人类的语言文字,图片,语音,视频,符号等资料变成计算机可以读懂的数字向量。例如下图这个例子,将一段文字信息作为Inputs(图片信息也可以,对应的模型就是ViT,Vision Transformer)通过Embedding模型转换成计算机可以理解的数字向量,e.g. man对应[1,0,0,0,0,0,0,0,0,0]这样一个向量。

Positioning Encoding:把文字按照一定的顺序排列就变成句子,因此为了让机器理解句子,我们需要在数字向量上加上位置信息,比如“I am a Robot”这句话,I在第一位,Robot在第四位,为了将这些Token按照句子的意思排序,模型引入位置编码,如下图所示的Index of token就是位置信息,数字向量加上位置信息变成一个矩阵。这样一个矩阵就是计算机可以理解的语言,Transformer就是要对这个输入矩阵进行encode和decode,完成目标输出。
Transformer的结构:Transformer翻译成中文是变形金刚,寓意Transformer模型的计算过程就像拆解再安装变形金刚一样。每个Encoder和Decoder又是多个串联组合,常见的是6层结构,变形金刚的每次变形都需要重复2*6次操作。
Encoder:每个Encoder包含Self Attention和前馈网络(Feed Forward)两个核心模块。这两个又是啥? Self Attention可以理解为变形金刚的拆解对照表,算出各零部件的权重和位置关系,前馈网络就是根据这些权重和位置关系变一个步骤 。
Decoder:除了Self Attention和前馈网络,Decoder比Encoder多了一层Encoder-Decoder Attention,这个意思是在重新组装变形金刚的时候,不光要考虑组装本身还要考虑拆解的整体信息。在翻译领域,意思就是机器在解码每个词的时候,不仅要考虑翻译的内容,还要考虑上下文信息。
Self-Attention机制:Self-Attention是用数学的方法教会机器抓重点,具体的算法太复杂,我也确实没搞懂。
看到这里是不是特别晕,我用大白话解释一下Encode(编码)和Decode(解码),类比于人类对信息的处理,我们在看书的时候,小时候看书是一个字一个字的看,看完了一本书会在脑子里形成一些知识和感受,这个过程相当于encode,就是我们对于这本书里内容的获取是经过大脑对文字信息的加工抽象出来的一些理解;对一个常常读书的人来说,他看书的模式不是一个字一个字看,而是一目十行,这个就是注意力机制(Self-Attention),抓重点,在有限的时间内获取更多信息;decode的过程就是,我们看完这本书,老师让我们写一个读后感,或者复述一遍书里的内容,我们开始写了个100字的读后感,老师说,不行,细节太少,我们就使劲儿回忆(decode),围绕印象最深的一些线索,根据上下文内容逐渐丰富,直到可以把整本书的内容以老师满意的方式复现出来。
最强大脑这个综艺里,有一些记数字的天才,真的可以过目不忘,他们有一些特殊的特征提取和记忆的能力,把长窜的数字信息按照一定的方法,提取特征记忆在大脑里,这个是encode的过程,当他们在复述数字的时候,就是decode的过程。
2.3 微调(Finetune)
围绕大模型的应用,各种微调(Finetuning)训练对大多数应用层的企业是更重要的技术,目前比较常见的训练技术包括指令微调(Instruction Fine-Tuning,IFT)、有监督微调Supervised Fine-tuning,SFT)、人类反馈强化学习(Reinforcement Learning From Human Feedback,RLHF)和思维连(Chain-of-Thought,COT)。我们下面分别解释下这些微调都是啥。
Instruction Fine-Tuning(指令微调):基础模型的目标只是让模型有认知和语言能力,但他并不知道应该如何完成任务。就像一个小宝宝,他刚学会说话的时候,你问他问题,常常没法得到完整的答案。随着家长的引导和示范,小宝宝逐渐知道应该如何回答一个问题。指令微调是类似的,微调需要用到的是加上任务描述和提示的数据集,如下图所示。
有监督微调Supervised Fine-tuning,SFT):还是类比到小宝宝学说话,当她学会回答问题的时候,尤其是学会“不知道”三个字的时候,你在问她问题,她常常会不经过思考丢过来“不知道”三个字。也或者如果家里有人会说脏话,小朋友也就学会了。有监督微调就是为了避免这种无意义和不安全的响应。其实上面说的指令微调可以看作是有监督微调的一个子集,在最近的文献中,有监督微调经常被用于提高模型响应和安全性。模型开发人员可以使用高质量的人类标注数据和带有安全标注的对话数据集来进行微调。
人类反馈强化学习(Reinforcement Learning From Human Feedback,RLHF):这种微调方法在很多会话代理(ChatGPT就是一个会话代理)中都会被用到,该方法使用基于人类偏好的标注数据。还是类比到人类幼崽,比如在玩具店里,小宝宝想要一个玩具,他有很多种方式表达,可以一直缠着妈妈说个没完,可以一言不发抱着玩具不放,这个时候,妈妈会说如果你怎么说我就会给你买。RLHF是类似的,模型开发人员会给模型一些问题,让模型来给出不同的回答,开发人员对这些问题进行评分排序标注,这样模型就知道人类会倾向于哪个答案,之后就会投其所好。
思维链(Chain-of-Thought,COT):思维链将复杂的任务拆解成步骤,一步一步引导大模型来完成目标任务。可以使用带有逐步推理的人工标注的指令数据集,这也是Let's think step by step的由来。也可以把拆解步骤的范例告诉机器。在模型面对一个解数学应用题的时候,COT是很好的微调方式。这种也是我们每个人在念书的时候都会遇到的,老师常常说,应用题分步骤解。COT微调在涉及算数和符号推理的任务上表现更优秀。
再推荐一些不错的大模型学习资料
AI基础知识:台湾大学李宏毅AI系列课程,系统讲解了AI相关的几乎所有知识https://www.youtube.com/@HungyiLeeNTU/videos
Deep Learning:MIT DeepLearning公开课,关于深度学习有系统的讲解
https://www.youtube.com/watch?v=QDX-1M5Nj7s&list=PLtBw6njQRU-rwp5__7C0oIVt26ZgjG9NI
各种算法:B站梗直哥,对算法和模型用直观易懂且风趣的方式来讲解,B站上的这个素材真的是清晰易懂:【【卷积】直观形象的实例,10分钟彻底搞懂-哔哩哔哩】 https://b23.tv/eJaS9BL
深度学习历史:推荐一本杨立坤的《科学之路》,书的前半部分对深度学习的发展历史有很详细的介绍,看完真感慨科学探索之路充满质疑,唯有坚持就是胜利。
微调:Huggingface上有一篇关于各种微调的文章写得很清楚https://huggingface.co/blog/dialog-agents
References:
https://www.youtube.com/watch?v=QDX-1M5Nj7s&list=PLtBw6njQRU-rwp5__7C0oIVt26ZgjG9NI&index=1
https://arxiv.org/pdf/2304.13712.pdf
https://www.youtube.com/watch?v=4Bdc55j80l8&t=619s】

https://mp.weixin.qq.com/s/2cNstrbu8cdRH53IXK24Mw

【【Transformer模型】曼妙动画轻松学,形象比喻贼好记-哔哩哔哩】 https://b23.tv/SlRCWrG
ChatGPT

《科学之路》




原创不易

快来戳一下”关注“给些鼓励吧!

欢迎“点赞”“打赏”“在看”三连!


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存