【生成式预训练语言模型】

生成式预训练语言模型


一、图灵测试到自然语言处理( Natural Language Processing, NLP)发展简史

1.1 语言模型的引入

语言是信息的载体
通信模型
NLP

语言模型的定义
计算和预测自然语言序列概率分布的模型
分析语言数据来推断和预测语言现象
可以判断一个语言序列是否是正常句子
可以根据给定的上下文,预测接下来会出现的单词

1.2语言模型的进化

起源图灵测试
——
基于规则(太过复杂,容错率低)
——
基于统计(判断哪个更像句子——判断哪个句子的概率大。是“写了”“本书”的概率高,哈斯hi“写了”“学生”的概率高)
——
深度学习大数据驱动
贾利尼克的假设:一个句子是否合理,取决于出现在自然语言种的可能性的大小

1.2.1 基于统计的语言模型

句子出现的可能性——每个词按照特定顺序出现的可能性
条件概率

1.2.2 基于深度学习的语言模型

2003年,Bengio团队发表论文“A Neural Probabilistic language Model”首次提出了将神经网络应用于语言模型的概念

1.2.3 语言模型发展的里程碑

1948 N-gram model:基于钱n-1个词来预测序列的下一个词
1954 Bag-of-words 词袋模型,统计词频,转换为概率问题
2003 Probabilistic language Model
2013 word2vec简单高效的分布式单词表示方法
2018 pre-trained language model 预训练模型

1.3 预训练模型

1.3.1预训练的类型

目前所用的

编码器家族
——都是基于BERT的模型
BERT:Bi-direction Encoder Representation Transformer——双向编码表示transformer
其他都是BERT的改装

解码器家族
——GPT
generative pretrain transformer——生成(单向)预训练transformer

对比
(1) BERT:填空,一段话中一部分打码,所以可以从前后文两方面来推断。masked
(2)GPT:接龙,只根据前文猜后文

1.3.2从GPT到ChatGPT

GPT-1:基于transformer架构,无监督

GPT3模型参数已经到达一千倍
InstructGPT——衍生chatgpt
gpt4:按人类的指令语气

1.3.3 大模型的使用模式:

a) pretrain+fine-tuning
在现有的模型上进行预训练+微调
网站:Hagging Face (教怎么微调)

b) Prompt/instruct
知识和问题已经拥有,如何优化好的问题得到好的答案

二、语言模型的早期形式 N-gram

2.1 语言模型

估计文本概率分布
关注上下文单词的相关性

2.2 N_gram

N-gram:基于统计,基于前N-1个词
gram可以是“词”也可以是“字”

需要运用语料库分词器:
分词器
没见过or拼写错误的英文词——拆分成子词

2.3 创建一个bigram字符预测模型

1) 构建语料库
2)定义一个分词函数
3)计算bigram词频
前缀prefix 有N-1,bigram中N=2
目标token
4)根据词频计算bigram概率
5)定义生成下一个词的函数
6)生成连续文本

优点:计算简单
缺点:无法捕捉长距离的词汇关系

三、词的向量如何习得:Word2Vec

必须先把词转换为向量输入机器学习

3.1 计算机如何表示词

给词贴上标签,在计算机里唯一

方法
独热编码
分布式表示:表示成较短的向量。Word2vec

3.2 One-Hot编码

缺点:高维、稀疏、缺乏语义信息、无法处理未知词汇

3.3 分布式表示

表示学习:表示成浓稠、低维的实值。——就是捕捉不同特征(维度),每个维度就都是低维的了。该特征相同表示为该维度上为一个点

3.4 词向量的定义

文档相似度
词向量≈词嵌入

优点:降维、泛化性

3.5 Word2vec的思想

文本——one-hot——词向量
word2vec是一种算法(神经网络):一个词的含义可以从周围词(上下文)推出来

3.5.1 word2vec的两种主要实现方式

CBOW:通过上下文词,预测中心词(高频词)
skip-gram:通过中心词,预测上下文(罕见词)

3.5.2 word2vec的模型结构

浅层神经网络
通过两个线性层学习
输入词——one-hot编码——线性层(这个W最重要)——词向量(产品)——输出层(线性,解码)——激活函数

3.6 Skip-Gram词向量模型

1)语料库
2)skip-gram数据 相近的词联系再一起,中心词和上下文词
3)独热编码
4)定义skip-gram模型
5)训练模型
显示习得的词向量

3.7 word2vec总结

先学习分布式词表示
局限性:静态的,学好了之后是固定的

四、神经概率语言模型NPLM

4.1神经概率语言模型:NPLM

输入层:单词映射到连续的词向量空间
隐藏层:通过非线性激活函数学习单词间的复杂关系(词向量的维度)
输出层:通过softmax层产生下一个单词的概率分布(词典的维度)

为什么输出层没有softmax?
因为在损失函数中用交叉熵损失,包含了softmax

4.2 NPLM模型实践

1)语料库
2)生成数据:需要词嵌入维度(和前面几个上文词)
3)构建NPLM网络:线性层 激活层 线性层
4)实例化NPLM网络
5)训练NPLM网络
6)用NPLM网络预测下一个此:可以直接max,选取概率最高的索引

4.3 NPLM模型的增强与改进

深度神经网络DNN
循环神经网络:RNN LSTM GRU

神经网络在长序列问题上面临挑战:长距离的依赖关系

局限:NPLM本身是一种浅层神经网络,机试引入RNN、LSTM,这种简单的结构仍然无法捕捉复杂的依赖关系和语义结构

4.3.1 RNN

1)按序列循环进行
2)增加隐藏状态(有记忆)

五、Transformer的基于架构-序列到系列Seq2Seq

编码器——解码器

5.1 Seq2Seq架构

[1] Sequence to sequence learning with neural networks. NIPS,3104-3112.llya sutskever, Oriol Vinyals, and Quoc V.Le.2014. https://papers.nips.cc/paper/2014/file/a14ac55a4f27472c5d894ec1c3c743d2-Paper.pdf

RNN网络,

优势
端到端学习
处理可变长度序列
信息的压缩和抽象表示:编码器输入序列编码成上下文向量,解码器则从这个上下文向量生成输出序列
可扩展性:可以很容易与其他神经网络组件(如卷积神经网络、循环神经网络等)结合

解码器输入(?):之前时间步的输出是当前的输入
SOS start of seq
EOS end of seq
Seq2Seq架构拆解
注意,为什么解码器也要输入:能够在编码器输入预测错误的情况下,解码器输入正确的信息

适合处理:一段问题
不适合处理:分类,标注

5.2 Seq2Seq模型实现机器翻译任务

1)语料库:包含三部分(元语言、sos+目标语言+目标语言+eos)
2)生成训练数据
3)定义编码器解码器
4)定义Seq2Seq模型
5)训练Seq2Seq模型
6)用NPLM网络预测下一个此:可以直接max,选取概率最高的索引

5.3 Seq2Seq局限

长序列
顺序处理
梯度消失和梯度爆炸

六、Transformer的核心机制——注意力attention

6.1 Seq2Seq局限即attention如和解决局限

长距离依赖——动态选择输入关键部分
顺序处理
对齐问题:源序列和目标序列可能不对成

6.2 注意力机制的拆解

6.2.1 点积注意力

两个序列的不同特征的相关程度,X1X2^H.
得到注意力分数(原始权重),归一化, 与X2相乘计算加权和
得到有对X2注意的X1

6.2.2 缩放点积注意力

特征维度大,要压缩,
对原始权重继续宁缩放,缩放因子是特征维度值得平方根,然后再进行归一化

6.2.3 编码器-解码器注意力

X1是解码器
X2是编码器

因为是在解码的时候注意编码输入的上下文信息

1)创建Attention类,计算注意力权重
2)在decoder中增加attetion层(初始化和前向传播)
3)更新seq2seq类的前向传播,将编码器输出传递给解码器

Q:Query查询
K:Key 键
V:Value值

Q就是正在处理的X1,希望输出的
K和V是上下文的X2,希望X1中包含这部分信息,因此给出了K、V等于是查询的内容。(那为什么要给两个参数呢?)

6.2.4 自注意力和多头注意力

自注意力,QKV都是X1的线性变化

多头注意力:对QKV进行多次线性变换,从而获得不同的头head,而进行计算

其实是把信息的特征分割了,比如总共有四个特征,现在用两个头并行计算,则一个头只要计算2个特征

6.3 注意力中的掩码

padding 填充符 使得所有序列达到相同的长度,以便能够批量处理,在处理时,,不希望将其作为有效输入,因此需要指示模型忽略这个符号,这就是掩码
如何执行——是的该位置的权重为无穷大inf

七、transformer

[2] Vaswani, A., et al.(2017).Attention Is All You Need.In Proceedings of the 31st
Conference on Neural Information Processing Systems (NIPS 2017) (pp.6000-6010).

7.1 transformer的引入

引入注意力机制之后的Seq2Aeq

解决了:
a)长距离序列的依赖问题
b)信息压缩过程中的损失问题(多头)

仍然存在问题:
a)忽略了原序列和目标序列本身内部的注意力
b)复杂度和计算成本:每个时间处理整个序列(仍然是RNN结构,无法并行)

7.2 transformer架构

7.2.1 架构概述

编码器-解码器架构
自注意力机制
多头注意力
位置编码(因为不再是rnn顺序处理了,所以要加上定位)
Transformer架构

7.2.2 缩放点积注意力与多头注意力

掩码给-1e9无穷小的值

多头注意力:并行

引入了残差机制

输出:上下文、注意力权重(?)

过程:
QKV
掩码
点积
缩放
归一化
加权
输出

7.2.3 逐位置前向传播与正弦位置编码

1、逐位置前向传播网络
先升维,再降维(通过升维丰富特征)
2、正弦位置编码表
为什么要用正弦来表示——周期性(可以更好地捕捉循环和重复出现的自然语言,比如语法结构)
不同的维度特征,有不同的周期,因此显示了不同频率的正弦函数
(?)

7.2.4 填充位置掩码

1、填充padding
2、词向量=0
3、布尔运算(0->1,其他->1)
4、1->-1e9

7.2.5 编码器与解码器

后续位置掩码:后续位置信息应该是未知的,但是由于transformer不是像rnn这样的顺序运行,所以要手动欠佳后续掩码,以防止解码器在当前未知时过度依赖未来的信息

解码器:
输出:解码器输出,解码器自注意力(解码器中的QKV)和解码器-编码器注意力权重(解码器中的Q,和编码器中的KV)

7.3 基于Transformer的机器翻译(?)

8、GPT

8.1 为什么GPT只要decoder

BERT:编码
GPT:解码

8.2 GPT模型架构

实际上比transformer简单,因为拿掉了编码器

核心:自注意力+位置编码+并行

缩放点积注意力
多头注意力
逐位置前向传播网络 1*1卷积 保证每一个位置独立
正弦位置编码表
填充位置掩码
后续位置掩码

8.3 wiki-GPT实例(?)

贪心解码:每一个下一个词都是局部最优
集束解码:所有后面的词的联合概率是最优

问题

九、chatgpt

9.2 chatgpt训练方法

http://github.com/Hannibal046/Awesome-LLM
很多大模型

预训练
指令调优
对齐

RLHF训练:RL强化学习,HF人工反馈

总结

输入输出

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值