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

发布于:2024-07-31 ⋅ 阅读:(119) ⋅ 点赞:(0)


一、图灵测试到自然语言处理( 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 注意力机制的拆解

总结

输入输出


网站公告

今日签到

点亮在社区的每一天
去签到