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

news2024/12/26 10:42:03

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

开场白

人工智能发展到现在,在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.coloradmin.cn/o/751149.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【电路原理学习笔记】第2章:电压、电流和电阻:本章习题

第2章&#xff1a;电压、电流和电阻 以后还是分开做&#xff0c;每一节习题都按节做&#xff0c;不集中在一起做了&#xff0c;太累了&#xff0c;而且要忙其他事&#xff0c;好不容易凑了几天时间做这个题 本章习题 同步练习 &#xff08;2-1&#xff09;3C电荷对应于多少…

【数据网格架构】数据网格架构详解

“我想指出&#xff0c;所提供的链接都不是附属的&#xff0c;我从本文中提到的公司中没有任何收获。我做这一切是因为直到最近我才听说过数据网格&#xff0c;我很期待这次活动&#xff0c;并希望在此之前深入了解一下。我还认为这可能会让其他人感兴趣&#xff0c;并付出了额…

pytorch2.0版本简介

PyTorch 2.0 中发布了大量足以改变 PyTorch 使用方式的新功能&#xff0c;它提供了相同的 eager mode 和用户体验&#xff0c;同时通过 torch.compile 增加了一个编译模式&#xff0c;在训练和推理过程中可以对模型进行加速&#xff0c;从而提供更佳的性能和对 Dynamic Shapes …

JVM解析:class结构和常量及方法初始化

文件结构 推荐官方文档&#xff1a;https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-3.html ClassFile {u4 magic;u2 minor_version;u2 major_version;u2 constant_pool_count;cp_info constant_pool[cons…

通过python的signal库模拟电源设备的csine波形

import numpy as np import matplotlib.pyplot as plt import random from scipy import signal def csin(length, amp,lenf,n):"""生成模拟CSIN波形的函数:param length: 波形长度:param amp: 波形振幅:return: CSIN波形数据"""amp 100 if (am…

函数和控制流

专栏简介&#xff1a;本专栏作为Rust语言的入门级的文章&#xff0c;目的是为了分享关于Rust语言的编程技巧和知识。对于Rust语言&#xff0c;虽然历史没有C、和python历史悠远&#xff0c;但是它的优点可以说是非常的多&#xff0c;既继承了C运行速度&#xff0c;还拥有了Java…

基于Springboot的宠物店管理系统(源代码+数据库)087

基于Springboot的宠物店管理系统(源代码数据库)087 一、系统介绍 本系统分为管理员、店员两种角色 店员角色包含以下功能&#xff1a; 登录、宠物主人管理、宠物管理、宠物医疗管理、宠物销售管理、宠物寄养管理、宠物用品管理、宠物日常服务管理、宠物常见问题、个人中心、…

基于JavaSwing+MySQL的仓库商品管理系统

点击以下链接获取源码&#xff1a; https://download.csdn.net/download/qq_64505944/88046204?spm1001.2014.3001.5503 JDK1.8 MySQL5.7 功能&#xff1a;管理员与员工两个角色登录&#xff0c;增删改查用户信息&#xff0c;修改密码&#xff0c;增删改查商品信息&#xff0c…

Java文件与IO

文章目录 前言认识文件绝对路径与相对路径普通文件与二进制文件 Java中的操作文件File 类文件的读写 前言认识文件 狭义上的文件(file)。针对硬盘这种持久化存储的I/O设备&#xff0c;当我们想要进行数据保存时&#xff0c;往往不是保存成一个整体&#xff0c;而是独立成一个个…

RocketMQ基础概念

目录 1.简介 2.架构 3.核心概念 1.简介 RocketMQ 是一款开源的分布式消息中间件&#xff0c;最初由阿里巴巴集团开发并开源。它旨在为分布式系统提供可靠、高性能、可扩展的消息通信能力。RocketMQ和RabbitMQ、KAFKA一起并列为现在主流的三大消息中间件。 一般MQ可以从三个…

Python(八)字符编码

❤️ 专栏简介&#xff1a;本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中&#xff0c;我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 &#xff1a;本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

06_HDMI 显示器驱动设计与验证

06_HDMI 显示器驱动设计与验证 1. HDMI 接口及引脚定义1.1 HDMI A Type 接口引脚图1.2 HDMI A Type 接口引脚定义 2. HDMI 原理2.1 HDMI 显示原理2.2 TMDS 传输原理 3. 实验目标4. 程序框图4.1 顶层模块4.2 时钟生成模块4.3 HDMI 驱动控制模块4.3.1 第一个步骤4.3.2 编码模块参…

反垄断在中国

中国通过反垄断法 中国通过了具有里程碑意义的反托拉斯立法,外国企业表示谨慎性的欢迎,希望该法案能带来更大的开放性,但需要观察它是如何实施的。(华尔街日报 2007年8月32日报道) 反垄断法禁止垄断协议和诸如卡特尔及价格操纵,但允许能促进创新和技术进步的垄断之存在。…

微软亚洲研究院推出AI编译器界“工业重金属四部曲”

编者按&#xff1a;编译器在传统计算科学中一直是一个重要的研究课题。在人工智能技术快速发展和广泛应用的今天&#xff0c;人工智能模型需要部署在多样化的计算机硬件架构上。同时&#xff0c;训练和部署大型人工智能模型时又对硬件性能有着更高的要求&#xff0c;有时还需根…

c#示例-json序列化和json树

序列化 由于指针和引用类型的存在&#xff0c;在运行中的程序中&#xff0c;数据不一定是整块的。 可能东一块西一块散落在内存的各个地方。 序列&#xff0c;是指连续且有序的一个整体。序列化就是把数据变为连续有序整体的过程。 经过这样处理后的数据就可以方便的进行传输…

1130 - Host XXX‘ is not allowed to connect to this MySQL server

mysql 连接报错 这个问题是因为在数据库服务器中的mysql数据库中的user的表中没有没有用户 解决的方法&#xff1a; 登入mysql后&#xff0c;更改 “mysql” 数据库里的 “user” 表里的 “host” 项&#xff0c;从”localhost”改称’%’。 1、连接服务器: mysql -u root -p…

万字解读 | 数据可视化平台--FineBI

什么是BI 学习目标 知道什么是BI 知道FineBI的优势 1. 商业智能: BI&#xff08;Business Intelligence&#xff09;是指通过收集、分析和解释企业内外部数据&#xff0c;为企业决策提供支持和指导的一种技术和工具。商业智能的目标是帮助企业管理者和决策者更好地理解企业…

vivado 添加 pynq-z2板

以vivado2019.02版本为例 1下载地址 https://www.tulembedded.com/FPGA/ProductsPYNQ-Z2.html 2.点击下载 3.解压添加 注&#xff1a;如果没有board_files 可以自己创建一个 4.重新打开vivado

跨境电商企业实施WMS仓储管理系统有什么要注意的

在跨境电商行业中&#xff0c;仓储管理是关键的环节之一。为了提高仓储效率和准确性&#xff0c;许多跨境电商企业选择实施WMS仓储管理系统解决方案。然而&#xff0c;实施电商企业WMS系统并不是一项简单的任务&#xff0c;需要注意一些关键要点。本文将介绍跨境电商企业实施WM…

Ubuntu 18.04 Docker 安装配置 Apollo 6.0

百度 Apollo 安装测试&#xff08;1&#xff09; Apollo 6.0 安装完全指南 在这一步出错&#xff1a; 进入到 Apollo 源码根目录&#xff0c;打开终端&#xff0c;执行下述命令以启动 Apollo Docker 开发容器 ./docker/scripts/dev_start.sh并没有成功启动 Apollo docker 开发…