ChatGPT原理篇 挖掘ChatGPT底层原理,理解实现方法 目录 Contents 1-深度学习基础 2-ChatGPT的本质 3-GPT-1介绍 4-GPT-2介绍 5-GPT-3介绍 6-ChatGPT原理详解 ChatGPT基础 探究语言模型分类 如何理解ChatGPT原理? CHATGPTINTRODUCE 多一句没有,少一句不行,用最短时间,教会更实用的技术! 01 深度学习基础 深度学习是什么?如何理解神经网络结构? •神经网络 •深度学习与神经网络 应用场景? 自然语音处理,图像识别,语音识别 深度学习? 深度学习是实现机器学习的一种技术 深度学习是用深度神经网络(DNN,DeepNeuralNetwork)来进行学习的技术 人工神经网络? 模仿动物神经网络行为特征,进行并行信息处理的算法数学模型。 生物神经网络? 生物神经网络主要是指人脑的神经网络 •神经网络介绍 生物神经网络结构如下 高级数字化人才培训专家 •神经网络介绍 人工神经网络(ArtificialNeuralNetwork,简写为ANN)也简称为神经网络(NN),是一种模仿生物神经网络结构和功能的计算模型. 当电信号通过树突进入到细胞核时,会逐渐聚集电荷。达到一定的电位后,细胞会被激活,通过轴突发出电信号。 高级数字化人才培训专家 •神经网络介绍 从大脑的神经元抽象得到的模型的数学表示: 模型不能训练,也就是没有学习的过程: •可以说不能称作是机器学习,上图中的w0,w1,w2都是预设好的定死的,不能够通过学习来调整。在机器学习中,不仅有模型,还有一个学习的概念: •如何让这个模型最后适应你的数据,最后学习到适合你当前数据的参数,比如w0,w1等。 •神经网络介绍 第一个感知机模型 •如何学习参数w •神经网络介绍 第一个感知机模型 minL(w,b)min[yi(wxi b)] w,b w,b xM L(w,b)yx,L(w,b) ii y wxMb i xM •通过误差反向传播更新参数 wwxiyi,bbyi •神经网络介绍 神经网络发展经历 •神经网络介绍 神经网络中信息只向一个方向移动,即从输入节点向前移动,通过隐藏节点,再向输出节点移动。其中的基本部分是: 1.输入层:即输入x的那一层 2.输出层:即输出y的那一层 3.输入层和输出层之间都是隐藏层 •神经网络介绍 1.确定神经网络层数 (1)输入层和输出层仅有一层,隐层有多层 2.确定每层单元的个数 (1)输入层单元个数根据输入数据个数定 (2)输出层单元个数根据目标分类个数确定 (3)隐层的单元个数如何确定? 具有2层隐层的神经网络结构 高级数字化人才培训专家 =>隐层个数设定没有明确规则,根据准确度来进行判断和改进。 总结 1.ChatGPT是基于什么技术的语言模型? ChatGPT是属于基于深度学习的一种语言模型 2.感知机模型如何进行参数更新的? 采用误差反向传播来更新参数, 3.如何设计神经网络结构? 1.确定神经网络层数 2.确定每层单元的个数 CHATGPTINTRODUCE 02 ChatGPT的本质 ChatGPT的本质是什么?ChatGPT的成长史? •ChatGPT本质 •ChatGPT是在GPT基础上进一步开发的NLP模型 GenerativePre-trainedTransformer(模型) ChatGPT是基于GPT-3的优化实现版本 •ChatGPT本质 ChatGPT本质 01 一种大型预训练语言模型 什么是语言模型、语言模型分类 02 神经网络语言模型介绍 基于神经网络的语言模型原理介绍 03 神经网络语言模型--ChatGPT的发展介绍 GPT-1、GPT-2、GPT-3、ChatGPT •ChatGPT本质 •2022年11月30日,OpenAI的CEO,Altman在推特上写道:“今天我们推出了ChatGPT,尝试在这里与它交谈”,然后是一个链接(https://chat.openai.com/auth/login),任何人都可以注册一个帐户,开始免费与OpenAI的新聊天机器人ChatGPT交谈. •ChatGPT本质 ChatGPT是由OpenAI开发的一种大型预训练语言模型,其和人类沟通的方式为人机对话形式 思考两个问题: 机器如何判断一条输入句子的合理性? 机器的回复是否是人类可以理解的或者是人类习惯在日常生活中习惯表达的? 解决方法: 人机对话 •什么是语言模型? 通俗理解:判断一个句子序列是否是正常语句,即是否是人话. 标准定义:对于某个句子序列,如[W1,W2,W3,…,Wn],语言模型就是计算该序列发生的概率,即P(W1,W2,…,Wn).如果给定的词序列符合语用习惯,则给出高概率,否则给出低概率. 我爱黑马程序员 黑马爱我程序员 不符合用语习惯,概率较低 举例 •什么是语言模型? 参数空间过大 数据稀疏严重 N-gram 神经网络 缺陷解决方法 如果能够得到一个句子出现的概率模型,这就是语言模型 •N-gram语言模型 为了解决上述问题,引入马尔科夫假设:随意一个词出现的概率只与它前面出现的有限的一个或者几个词有关. 如果一个词的出现与它周围的词是独立的,那么我们就称之为unigram(一元语言模型). 如果一个词的出现仅依赖于它前面出现的一个词,那么我们就称之为bigram(二元语言模型). 如果一个词的出现仅依赖于它前面出现的两个词,那么我们就称之为trigram(三元语言模型). 一般来说,N元模型就是假设当前词的出现概率只与它前面的N-1个词有关,而这些概率参数都是可以通过大规模语料库来计算的。 在实践中用的最多的就是bigram和trigram •bigram语言模型 举例说明: 首先我们准备一个语料库(简单理解让模型学习的数据集),为了计算对应的二元模型的参数,即P(Wi|Wi-1),我们要先计数即C(Wi-1,Wi),然后计数C(Wi-1),再用除法可得到概率. 为了方便理解,了解P(A|B)公式如下: A B P(A|B)=P(A,B)/P(B)=C(A,B)/C(B) 换个字母表示即可 P(Wi|Wi-1)=P(Wi,Wi-1)/P(Wi-1) =C(Wi,Wi-1)/C(Wi-1) •bigram语言模型 举例说明: 首先我们准备一个语料库(简单理解让模型学习的数据集),为了计算对应的二元模型的参数,即P(Wi|Wi-1),我们要先计数即C(Wi-1,Wi),然后计数C(Wi-1),再用除法可得到概率. C(Wi-1,Wi)计数结果如下: •bigram语言模型 C(Wi-1)的计数结果如下: 到底是我想去打篮球还是晚饭? 那么bigram语言模型针对上述语料的参数计算结果如何实现?假如,我想计算P(想|我)=0.38,计算过程如下显示:(其他参数计算过程类似) 如果针对这个语料库的二元模型(bigram)建立好之后,就可以实现我们的目标计算: •bigram语言模型 C(Wi-1)的计数结果如下: 到底是我想去打篮球还是晚饭? 那么bigram语言模型针对上述语料的参数计算结果如何实现?假如,我想计算P(想|我)=0.38,计算过程如下显示:(其他参数计算过程类似) 如果预测:我想去打乒乓球? 引入拉普拉斯变换 •神经网络语言模型 模型的输入:w(t-n+1),…,w(t-2),w(t-1)就是前n-1个词。现在需要根据这已知的n-1个词预测下一个词w(t)。C(w)表示w所对应的词向量. 第一层:将C[w(t-n+1)],…,C[w(t-2)],C[w(t-1)]n-1个向量首尾拼接起来形成一个(n-1)*m大小的向量,记作x. 第二层:一个全连接层,通过全连接层后再使用tanh激活函数进行处理。 第三层:一个全连接层,输出共有V个神经元(V代表语料的词汇)。每个神经元代表一个概率,最大概率值,就是我们需要预测的结果。 ChatGPT的本质 2022年11月 2020年5月 2019年2月 2018年6月 接下来我们从参数量看一下模型情况 •ChatGPT本质 将人类的反馈纳入训练过程,更好地使模型输出与用户意图保持一致 InstructGPT是一个经过微调的GPT-3,实现更好的输出 GPT-3(1750亿参数) 模型 发布时间 参数量 预训练数据量 GPT-1 2018年6月 1.17亿 约5GB GPT-2 2019年2月 15亿 40G GPT-3 2020年5月 1750亿 45TB GPT-3实现将网页转化为相应代码、模仿人类叙事、创作定制诗歌、生成游戏剧本。 GPT-2(15亿参数) 除了理解能力外,GPT-2在生成方面表现非常好:阅读,摘要,聊天,编故事 GPT-1(1.17亿参数) GPT-1有一定泛化能力,能够用于和监督任务无关的NLP任务中 GPT的三个模型几乎都是相同架构,只是有非常非常少量的改动。 总结 1.ChatGPT本质? ChatGPT本质是一种基于GPT-3的聊天机器人模型 2.ChatGPT发展过程? GPT-1,GPT-2,GPT-3,ChatGPT 3.GPT-1,GPT-2,GPT-3参数量分别是多少?上升背后的意思如何? 参数量上升背后是模型愈加复杂,模型表现变得更好 模型 发布时间 参数量 预训练数据量 GPT-1 2018年6月 1.17亿 约5GB GPT-2 2019年2月 15亿 40G GPT-3 2020年5月 1750亿 45TB GPT-1INTRODUCE 多一句没有,少一句不行,用最短时间,教会更实用的技术! 03 GPT-1介绍 GPT-1是什么?GPT-1模型的实现细节是什么? 本章节内容大纲: GPT-1介绍 01 模型架构 了解模型架构 02 模型训练过程 模型如何训练 03 模型特点 模型优缺点 •GPT-1介绍 •2018年6月,OpenAI公司发表了论文“ImprovingLanguageUnderstandingbyGenerativePre-training”《用生成式预训练提高模型的语言理解力》,推出了具有1.17亿个参数的GPT-1(GenerativePre-trainedTransformer)模型. 输出部分 output y 模型 model Transformer y=kx+b 输入input x •GPT-1介绍 •2018年6月,OpenAI公司发表了论文“ImprovingLanguageUnderstandingbyGenerativePre-training”《用生成式预训练提高模型的语言理解力》,推出了具有1.17亿个参数的GPT-1(GenerativePre-trainedTransformer)模型. encoder 编码器 输出部分 output Decoder 解码器 Transformer 输入input •GPT-1介绍 •2018年6月,OpenAI公司发表了论文“ImprovingLanguageUnderstandingbyGenerativePre-training”《用生成式预训练提高模型的语言理解力》,推出了具有1.17亿个参数的GPT-1(GenerativePre-trainedTransformer)模型. 高级数字化人才培训专家 encoder 编码器 Decoder 解码器 Transformer •GPT-1模型架构 •对比于经典的Transformer架构,解码器模块采用了6个DecoderBlock;GPT-1的架构中采用了12个DecoderBlock. encoder 编码器 Decoder 解码