大模型基础知识 - 语言模型及其演进 公开版

本文为作者内部分享文档,由于不涉敏可以公开,分享本身是课程形式,有什么疑问欢迎在评论区留言。

开场白

人工智能发展到现在,在2个重要领域取得了重大突破,有望达到人类水平:

  • 计算机视觉 (Computer Vision, CV)-> 希望机器帮助人类处理图像数据
  • 自然语言处理(Natural Language Processing, NLP)-> 希望机器帮助人类处理文本数据

AIGC

  • 计算机视觉 (Computer Vision, CV)-> AI作画
  • 自然语言处理(Natural Language Processing, NLP)-> 文本生成

自然语言处理在大语言模型(Large Language Model, LLM)被提出之后,再次取得重大突破:

  1. 以ChatGPT为代表的对话大模型有望重新定义人类使用计算机的方式
    • 直接以自然语言让计算机执行任务替代编程语言已具备可能性
  2. 使用大模型的能力设计开发互联网产品,有望颠覆部分领域产品设计开发模式
    • 举个🌰:百度翻译、谷歌翻译

注:

  1. 关于使用计算机的方式 -> 我们这里讲的是底层的使用方式,应用层来看的话都是通过软件来使用,但软件也是经由编写程序编译之后的产物,归根结底还是通过代码。
  2. 关于颠覆部分领域 -> 负责任地讲,目前还是有一些领域传统方法效率和结果更好,未来不确定。

接下来我们来从0到1了解一下大语言模型背后的基础知识。

导语

通过本节课程,希望大家能够了解:

  1. 语言模型的数学基础:概率语言模型 (25分钟)
  2. 神经网络语言模型的发展历史:即大语言模型是如何发展而来的 (10分钟)
  3. GPT训练流程:大语言模型是如何训练的 (10分钟)

语言模型 Language Model

根据语言客观事实而进行的语言抽象数学建模,是一种对应关系。
语言模型与语言客观事实之间的关系,如同数学上的抽象直线与具体直线之间的关系。

基于概率/统计的语言模型
神经网络语言模型
预训练语言模型
大语言模型
语言模型发展简史

概率语言模型 Probabilistic Language Model

一说统计语言模型 Statistic Language Model
概率语言模型是一个基于概率的判别式模型,它的输入是一句话即多个单词组成的顺序序列,输出是这句话的概率,即这些单词的联合概率(joint probability)。

compute the probability of a sentence or sequence of words

概率语言模型是一个针对语言进行数学建模的概率模型它衡量了一句话,也即是多个单词的组成的顺序序列,在语料库(corpus)中实际存在的概率如果语料库无限大,那么这个概率扩展到这句话实际在自然语言中存在的概率

注:也可以理解为是也可以理解为它是真实正确的一句话的概率。

I like eating apples. ✅
I prefer coke to soda. ✅
Enjoy basketball playing I. ❌

以上面3个句子为例,前2句是真实句子,在日常生活中可能会被用到,第3句则不是。

N-Gram语言模型

假定一个自然语言句子 W W W l l l个单词组成,记为 w 1 , w 2 , . . . , w l w_1,w_2,...,w_l w1,w2,...,wl,那么:
P ( W ) = P ( w 1 , w 2 , . . . w l ) = p ( w 1 ) p ( w 2 ∣ w 1 ) p ( w 3 ∣ ( w 1 , w 2 ) ) . . . p ( w l ∣ w 1 , w 2 , . . . , w l − 1 ) P(W) = P(w_1,w_2,...w_l)=p(w_1)p(w_2|w_1)p(w_3|(w_1,w_2))...p(w_l|w_1,w_2,...,w_{l-1}) P(W)=P(w1,w2,...wl)=p(w1)p(w2w1)p(w3(w1,w2))...p(wlw1,w2,...,wl1)

条件概率公式:
P ( B ∣ A ) = P ( A B ) / P ( A ) P(B|A) = P(AB)/P(A) P(BA)=P(AB)/P(A)
P ( A B ) = P ( A ) ∗ P ( B ∣ A ) P(AB) = P(A)*P(B|A) P(AB)=P(A)P(BA)
P ( A B C ) = P ( A ) ∗ P ( B ∣ A ) ∗ ∣ P ( C ∣ A B ) P(ABC) = P(A)*P(B|A)*|P(C|AB) P(ABC)=P(A)P(BA)P(CAB)

这么计算概率有个问题: 0 < p ( w i ) < 1 0<p(w_i)<1 0<p(wi)<1 ,句子越长,参数空间越大,概率越接近0,数据稀疏严重。

引入马尔科夫假设(Markov Assumption),即下一个词的出现仅依赖于它前面的 n − 1 n-1 n1个词,我们得到:
p ( w i ∣ w 1 , w 2 , . . . w i − 1 ) = p ( w i ∣ w i − n , . . . w i − 1 ) p(w_i|w_1,w_2,...w_{i-1})=p(w_i|w_{i-n},...w_{i-1}) p(wiw1,w2,...wi1)=p(wiwin,...wi1)

马尔科夫性质:当一个随机过程在给定现在状态及所有过去状态情况下,其未来状态的条件概率分布仅依赖于当前状态;换句话说,在给定现在状态时,它与过去状态(即该过程的历史路径)是条件独立的,那么此随机过程即具有马尔可夫性质。
这里引入马尔科夫假设,认为按从左到右读到的一句话有时间先后的概念,后面的单词仅依赖于它前面的n-1个单词。

n = n= n=表示下一个词的出现不依赖它前面的0个单词,即每个单词条件独立,称为unigram model
P ( w 1 , w 2 , . . . , w l ) = ∏ i = 1 l P ( w i ) P(w_1,w_2,...,w_l)=\prod_{i=1}^{l}P(w_i) P(w1,w2,...,wl)=i=1lP(wi)

# English
Questions make difference.
Questions make reality.
Questions begin a quest.# 中文
我吃苹果。
我吃香蕉。
我喝可乐。提问:
给定单词“我”,下一个单词是吃的概率是多少?下一个单字是喝的概率是多少?“我吃苹果”整句话的概率是多少?

n = 2 n=2 n=2表示下一个词的出现只依赖它前面的1个词,称为bigram model
P ( w 1 , w 2 , . . . , w l ) = ∏ i = 1 l P ( w i ∣ w i − 1 ) P(w_1,w_2,...,w_l )=\prod_{i=1}^{l}P(w_i|w_{i-1}) P(w1,w2,...,wl)=i=1lP(wiwi1)

n = 3 n=3 n=3表示下一个词的出现只依赖它前面的2个词,称为trigram model(常用)
P ( w 1 , w 2 , . . . , w l ) = ∏ i = 1 l P ( w i ∣ w i − 2 w i − 1 ) P(w_1,w_2,...,w_l )=\prod_{i=1}^{l}P(w_i|w_{i-2}w_{i-1}) P(w1,w2,...,wl)=i=1lP(wiwi2wi1)

以此类推,我们的得到了给定 n n n词,输出下一个词概率的语言模型:
P ( W ) = ∏ i = 1 l p ( w i ∣ w i − n + 1 i − 1 ) P(W)=\prod_{i=1}^{l}p(w_i|w_{i-n+1}^{i-1}) P(W)=i=1lp(wiwin+1i1),其中 w i j w_i^j wij表示单词序列 w i , w 2 , . . . , w j w_i,w_2,...,w_j wi,w2,...,wj

构建语言模型可以使用最大似然估计(Maximum Likelihood Estimate)生成每一个条件概率,以unigram为例即:
p ( w i ∣ w i − 1 ) = c o u n t ( w i − 1 , w i ) / c o u n t ( w i − 1 ) p(w_i|w_{i-1})=count(w_{i-1},w_i)/count(w_{i-1}) p(wiwi1)=count(wi1,wi)/count(wi1)

计算概率语言模型公式的每一个组成元素,再将所有组成元素连乘,即得整个句子的概率。

提问(非常重要)
给定 n n n个词,为语料库里面的所有单词依次计算概率,选概率最大的那个单词,作为n+1个单词输出,想想我们在做什么?

给定n+1个单词,求第n+2个单词,…,我们在做文本生成这就是语言模型最朴素的原理

这种用法下,我们将n-gram模型作为生成式模型使用。

N-gram语言模型实际效果并不好,能解决的实际问题非常有限,因而自然语言处理在概率语言模型阶段没有产生太大影响力。

神经网络语言模型 (NNLM)

随着深度学习的出现和崛起,我们有了一个强有力的工具:人工神经网络
神经网络语言模型即使用神经网络来进行语言建模我们将给定的n个单词作为输入,预测第n+1个单词作为输出,那么可以使用监督学习的方式通过标记数据集让神经网络学习到输入输出之间的映射关系。

NNLM

NNLM, Neural Network Language Model
A Neural Probabilistic Language Model (2000, 2003)

在这里插入图片描述

使用一个简单的神经网络来替代概率模型,模型的训练目标定义为给定 n n n个单词作为上下文,预测下一个单词是上下文中的第 i i i个单词,输入层 C C C表示一个共享的矩阵参数,随机初始化, C i C_i Ci表示语料库中第 i i i个单词的特征向量。

提问(非常重要)
输入层的矩阵 C C C是什么?

答案:词向量

Word2Vec

Efficient Estimation of Word Representations in Vector Space(2013)
训练神经网络语言模型过程中,将神经网络的权重值作为词向量来使用

现在我们讲的词向量,其实是训练语言模型过程中的副产品
在这里插入图片描述

项目Value
CBOW (Continuous Bag-of-Words Model)Skip-gram
CBOW 的基本思想为以上下文作为输入,预测中间词。具体而言,设定一个上下文范围 N,输入为中间词的前 N 个单词和后 N 个单词,输出为中间词的概率分布,训练目标是真实中间词的概率最大(即argmax),也即1次分类过程。Skip-gram基本思想为以中间单词作为输入,预测上下文。具体而言,设定一个上下文范围 N,输入为中间词,输出为前 N 个单词和后 N 个单词的概率分布,训练目标是2N次概率输出,每次使得真实上下文词的概率最大(即2N次argmax),也即2N次分类过程。训练过程的参数规模非常巨大,有Hierarchical Softmax、Negative Sampling等方式降低计算复杂度,这里不再展开。

神经网络语言模型架构演进

上个小节介绍的NNLM和Word2Vec是一个DNN架构的神经网络语言模型,随着神经网络架构的演进,神经网络语言模型的架构也在不断演进:

DNN
CNN
RNN:LSTM/GRU
Transformer
NNLM/Word2Vec
text_classification
Elmo
BERT/GPT1.0/2.0

大规模语言模型 Large Language Model (LLM

PaLM、LLaMA、GPT 3.5、GPT 4

大规模语言模型(Large Language Model, LLM),即参数规模非常大的神经网络语言模型,由神经网络语言模型随网络架构经长时间发展迭代而来,特点是参数规模达到一定量级(千万~亿)之后,出现了涌现能力,使得模型在各项NLP任务中取得重大突破,接近人类水平。

涌现能力一句话介绍就是模型参数达到一定量级(亿),能力突飞猛进,更多详情,可以参见:

LLM的涌现能力和Scaling
Emergent Abilities of Large Language Models
Scaling Laws for Neural Language Models

神经网络语言模型发展史

nlp中的预训练语言模型总结(单向模型、BERT系列模型、XLNet)

大模型时代之前 ->2019

预训练模型
NLP范式:Pre-training + fintuning 即预训练 + 下游任务精调

在这里插入图片描述

  1. Pre-training -> 训练通用语言模型 (相当于训练模型认识自然语言)
  2. Fine-tuning -> 训练下游NLP任务(相当于训练模型执行任务)

在这里插入图片描述
在这里插入图片描述

大模型时代 2019->

Pre-training + instruction fintuning + RLHF 即 预训练+指令精调+RLHF
下一节的GPT训练流程部分有详细描述

在这里插入图片描述
PaLM: https://arxiv.org/pdf/2204.02311
LLaMA: https://arxiv.org/pdf/2302.13971

清华提出了ChatGLM系列,并开源了其中的ChatGLM-6B和ChatGLM2-6B,在C-Eval上测试是目前最好的中文大模型:

https://cevalbenchmark.com/static/leaderboard.html

在这里插入图片描述

GPT发展史

如果我们单看GPT的话

在这里插入图片描述GPT-1: Improving Language Understanding by Generative Pre-Training
GPT-2: Language Models are Unsupervised Multitask Learners
GPT-3: Language Models are Few-Shot Learners

ChatGPT训练流程

图源:State of GPT - Microsoft Build

在这里插入图片描述
笔者翻译上图如下:
请添加图片描述

阶段子阶段目标备注
Pre-Training--------语言建模
Instruction Finetuning---------让模型能够理解自然语言指令
RLHFReward Modeling奖励建模,用来代替人工打分,降低标注成本奖励模型是用来建模强化学习的一个组件
RLHFReinforcement Learning强化学习建模,通过强化学习的方式训练模型输出奖励最大的文本,即更符合人类偏好的文本

强化学习建模过程如下:

  1. 将指令精调后的大语言模型作为Agent,agent的action即给定输入文本 i i i进入 S t a t e State State S i S_i Si后的文本 O u t p u t i Output_i Outputi
  • 所有可能输入的文本构成了agent的状态空间
  • 所有可能输出的文本构成了agent的动作空间
  1. 奖励模型作为Environment对模型输出进行打分,将分数作为奖励。

注:
3. 二元分类说法并不准确,原始目标是希望对两个生成的回复进行打分即两者之间按更符合人类预期进行比较,胜出的回复应该得到更多的分数,亦即获得更大的奖励。或者也可以认为是在两者之间做分类,将更符合人类预期的筛选出来,但前者是更加准确的描述。
在这里插入图片描述
图源:cs224n-2023-lecture11-prompting-rlhf.pdf

  1. 奖励模型是用来实现强化学习的一个辅助模型,可以理解为强化学习建模中的环境(Environment)**

Key Takeaway

基于概率/统计的语言模型
神经网络语言模型
预训练语言模型
大语言模型
  1. 概率语言模型设计用于计算一个句话在自然语言中出现的概率
    n-gram语言模型是概率语言模型基于条件独立假设的简化,给定n个单词,它可以用来预测第n+1单词
  2. 语言建模(即训练语言模型的过程):给定n个单词,预测第n+1个单词是什么。神经网络语言模型使用神经网络进行语言建模。
  3. 神经网络语言模型随着自然语言处理领域不断提出新的网络架构逐步演进,transformer是其中一个标志性里程碑。基于transformer,Google和Open AI分别提出了BERT和GPT 1.0/2.0,开启了自然语言处理pretraining + fintuning(预训练语言模型)的时代,模型参数到达亿级别,大语言模型的雏形出现。
  4. 随着神经网络语言模型的参数量继续增大到一个千亿级别,开始表现出强大的涌现能力,辅以instruction fituning和RLHF的(大语言模型)训练流程改进,突破性的大语言模型ChatGPT出现,大模型时代来临。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/27896.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用ChatGPT帮助快速读书:《Rise of the Robots: Technology and the Threat of a Jobless Future》

有了ChatGPT的帮助&#xff0c;读书也快了&#xff0c;英文版的书也可以快速了解其主要内容&#xff0c;不知道这样囫囵吞枣的阅读有没有其它副作用&#xff0c;先读了几本再说。 《Rise of the Robots: Technology and the Threat of a Jobless Future》这本书我没找到中文版翻…

揭秘ChatGPT爆火的背后真相:学编程已经成为必选项!

这一阵最热门的话题&#xff0c;莫过于人工智能新选手—— ChatGPT&#xff0c;在推出后只用了两个月就积累了1亿用户&#xff01;它的出现在科技圈掀起了一阵“惊涛骇浪”&#xff0c;有人称ChatGPT的意义&#xff0c;堪比当年蒸汽机的出现&#xff0c;它足以爆发新一轮的“工…

【ChatGPT】AI 2.0 时代:拥抱先进的生产力

AI 2.0 时代:拥抱先进的生产力 目录 AI 2.0 时代:拥抱先进的生产力 康波周期是什么? 人类工业革命以来的近现代史 先进生产力的变成了信息与数据 AI科技改变世界

GraphPad Prism 科研绘图(一)

打开GraphPad软件&#xff0c;可以在左侧选择要绘制的图表类型&#xff0c;也可以在左下方直接打开现有的文件 graphpad的工作流程是&#xff0c;首先你需要输入你的数据&#xff0c;也就是你的实验原始数据&#xff0c;叫做Data Table 然后你可以对你的原始数据进行分析&…

科研绘图软件大全

作为材料&#xff0c;化学&#xff0c;环境&#xff0c;物理领域的科研工作者&#xff0c;你是否常为如何表达自己的思想而苦恼? 作为学术论文创造者&#xff0c;你是否为论文中图文单一而叹气? 在这里&#xff0c;推荐给你几款常用科研绘图软件&#xff0c;让你论文从此成为…

【知识图谱】知识图谱的本质是什么?

持续总结更新中 一句话总结知识图谱人工智能从感知到认知什么是知识&#xff1f;什么是先验知识&#xff1f;什么是知识表示&#xff1f;知识图谱的基本组成要素&#xff1f;什么是概念&#xff1f;什么是实体&#xff1f;什么是本体&#xff1f;谈谈本体构建什么是知识图谱的s…

【毕业季】毕业设计避坑指南

文章目录 前言&#x1f34a;缘由毕业季&#xff0c;毕业设计分手季 &#x1f3af;主要目标实现4大重点 &#x1f348;猜你想问如何与狗哥联系进行探讨1.关注公众号【JavaDog程序狗】2.踩踩狗哥博客 &#x1f36f;猜你喜欢文章推荐 正文1.毕业设计如何选题2.毕业设计如何去写3.网…

文心一言“插刀”百度?

在ChatGPT出世半年&#xff0c;爆火将近2月后&#xff0c;中国版AI大模型终于崭露头角。 3月16日&#xff0c;百度于北京总部召开新闻发布会&#xff0c;主题围绕基于文心大模型技术生成式对话产品——文心一言&#xff0c;这也预示着中国首个类ChatGPT产品面世。在其正式推出前…

MSRA王晋东:大模型时代,普通人的科研何去何从

王晋东 投稿量子位 | 公众号 QbitAI 最近&#xff0c;电子工业出版社送了我一本《一本书读懂AIGC&#xff1a;ChatGPT、AI绘画、智能文明与生产力变革》&#xff0c;不禁感叹&#xff1a;现在连写书都这么卷了&#xff01; 要知道&#xff0c;ChatGPT 于去年11月30日刚刚发布、…

ZadigX 发布:价值驱动一切 链接最酷玩家

Zadig 徜徉开源大漠&#xff0c;用爱发电两年之际&#xff0c;低调发布企业版 ZadigX&#xff0c;广泛链接一切价值创造者。发布会将在 2023 年 4 月 27 日 以全线上形式举办&#xff0c;特邀一位神秘总裁&#xff0c;两大车企总监&#xff0c;十大云原生盟主联创/CEO&#xff…

我是普通人,我居然可以这样借力ChatGPT?(此文不卖课)

昨天写了一篇《程序员&#xff0c;如何借力ChatGPT&#xff1f;》&#xff0c;分享了借助AI&#xff1a; &#xff08;1&#xff09;撰写通用代码&#xff1b; &#xff08;2&#xff09;协助寻找BUG&#xff1b; &#xff08;3&#xff09;协助优化算法性能&#xff1b; &…

没有ChatGPT和new bing ?加入文心一言!

前言: 话虽说ChatGPT和newbing已经席卷网络AI语言&#xff0c;当了现在ai的头号老大&#xff0c;但是那两个都是需要梯子才能使用&#xff0c;ChatGPT还需要付费&#xff0c;所以还是有很多童鞋是没有加入使用ai大军的&#xff0c;那我们不妨看一下这个:文心一言。 步入正题…

android自定义涂鸦,Android Studio:小Demo-“涂鸦”

一、在手机模拟器上显示一个图片 1、MainActivity.java里的代码 public class MainActivity extends AppCompatActivity { SuppressLint("ClickableViewAccessibility") Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanc…

android:在照片上绘制涂鸦

这个应该是简易版的美图秀秀(小伙伴们吐槽&#xff1a;你这也叫简易版的&#xff1f;&#xff1f;我们看着怎么不像啊……)。好吧&#xff0c;只是在图片上绘制涂鸦&#xff0c;然后保存。 一、选择图片 这个道长有必要说一下&#xff0c;在绘制涂鸦时&#xff0c;笔画会根据…

通过触摸屏事件实现在图片上涂鸦——Android

目的&#xff1a;记录在屏幕上滑动的轨迹&#xff0c;实现在图片上涂鸦的功能 开发工具&#xff1a;Android Studio3.3.2 实现过程&#xff1a; 第一步&#xff1a;新建drawBoard.java用于自定义view 将图片放到drawable文件夹下&#xff0c;用BitmapFactory.decodeResource加…

涂鸦蓝牙协议移值(初级)

一、 移植前所需资料 ①获取涂鸦SDK包&#xff1b; ②基于我们芯片平台生成的库文件&#xff08;将下面的图片发给涂鸦技术支持&#xff0c;然后会提供tuya_ble_lib_51802.lib&#xff09;&#xff1b; 【库不正确报的错误】 ③《涂鸦_ble_sdk_sdk说明_v2》文档&#xff1b; ④…

iOS 图片编辑——涂鸦——随手指移动随意画线

iOS 涂鸦 我们已经讲过画直线 和画带箭头的线段 参考&#xff1a;http://blog.csdn.net/lwjok2007/article/details/50885376 这节 我们尝试做一下 随意画 手指移动到哪里就在哪里画线 如下图所示&#xff1a; 使用Xcode创建项目&#xff0c;起名&#xff1a;TestFingerLine …

html5制作涂鸦板,HTML5实现涂鸦板

最近闲的,看了看html5,强大的绘图功能让我惊奇,于是,写了个小玩意---涂鸦板,能实现功能有:画画,改色,调整画笔大小 html5的绘图可以分为点,线,面,圆,图片等,点和线,这可是所有平面效果的基点,有了这两个东西,没有画不出来的东西,只有想不到的算法。 先上代码了…

Android对长图进行滑动涂鸦

由于项目需要对页面进行像做笔记一样的涂绘&#xff0c;所以这个功能点就应运而生&#xff0c;思路是加载完了页面以后就将整个截屏保存&#xff0c;进入编辑页面就将保存图片的地址传入自定义的长图加载控件中&#xff0c;高度的变化与滑动借助于一个修改过得竖直的seekbar,空…

AndroidStudio实现在图片上涂鸦并记录涂鸦轨迹

AndroidStudio实现在图片上涂鸦&#xff0c;并保存涂鸦轨迹 开个坑&#xff0c;终于有时间整理一下这个项目里用到的比较重要的技术 虽然最后甲方没有采用&#xff08;笑&#xff09; 因为博主学艺不精&#xff0c;有很多小bug AndroidStudio版本&#xff1a;2020.3.1.25 实现效…