更多内容:XiaoJ的知识星球
目录
-
- 4.预训练语言模型(PLMs,Pre-trained Langue Models)
-
- 4.1 两种范式:
- 4.2 GPT(Generative Pre-trained Transformer)
- 4.3 BERT(Bidirectional Encoder Representations from Transformers)
-
- 4.3.1 BERT介绍
- 4.3.2 Masked Language Model(MLM)
- 4.3.3 Next Sentence Prediction(NSP)
- 4.3.4 BERT输入
- 5.Transformers Tutorial
-
- 5.1 Pipeline API
- 5.2 `AutoModel`和`AutoTokenizer`
- 5.3 Transformers fine-tune Demo
.
4.预训练语言模型(PLMs,Pre-trained Langue Models)

几个PLMs:word2vec(第一个PLM),GPT,BERT,...
PLMs具有强大可移植性。
如今基于Transformer的PLM非常流行,如BERT。
.
4.1 两种范式:
-
Feature-based approaches(基于特征的方法)
-
最具代表性的是 word2vec。
-
使用PLM的输出作为下游模型的输入。
-
-
Fine-tuning approaches(微调的方法)
-
最具代表性的是 BERT。
-
语言模型也将是下游模型,它们的参数将被更新。
-
.
4.2 GPT(Generative Pre-trained Transformer)
GPT(Generative Pre-trained Transformer,生成式预训练变换器):
- 是由OpenAI开发的一种大型语言模型,它通过在大量文本数据上进行预训练,学习语言的模式和结构,从而具备强大的文本生成和理解能力。

GPT具有Zero-Shot Learning能力。
Zero-Shot Learning(ZSL,零样本学习):
- 一种让模型能够在没有直接训练数据的情况下,对新的类别进行识别或分类的技术。
GPT总结:
-
一个非常强大的生成模型
-
在下游任务上也取得了非常好的迁移学习结果
- 显著超越了ELMo
-
成功的关键
-
大数据(大型无监督语料库)
-
深度神经模型(Transformer)
-
.
4.3 BERT(Bidirectional Encoder Representations from Transformers)
以前方法的问题
-
问题:语言模型 只使用左侧上下文或右侧上下文,但语言理解是双向的。
-
为什么LM(语言模型)是单向的?
-
原因1:需要单向性,来拆解长文本。
-
原因2:双向编码会发生信息泄露。
-

4.3.1 BERT介绍
BERT(Bidirectional Encoder Representations from Transformers,Transformer的双向编码器表示)是一种基于Transformer架构的深度学习模型。
BERT的核心特点包括:
-
双向编码:BERT使用双向Transformer编码器,即模型会同时考虑输入序列中,每个词的左侧和右侧上下文。这与传统的单向模型不同,后者只能从左到右或从右到左处理文本。
-
预训练:BERT通过在大量文本数据上进行预训练来学习语言表示。
-
预训练任务包括:Masked Language Model(MLM)和 Next Sentence Prediction(NSP)
-
MLM:随机遮蔽输入序列中的一些词,然后让模型预测这些被遮蔽的词。
-
NSP:预测两个句子是否是连续的文本。
-
-
微调:在预训练完成后,BERT可以在特定任务上进行微调。这意味着模型可以调整其权重以适应特定的NLP任务,如文本分类、命名实体识别、问答系统等。
-
Transformer架构:BERT基于Transformer模型,这是一种依赖于自注意力机制的架构,能够处理长距离依赖关系。
4.3.2 Masked Language Model(MLM)
Masked Language Model(MLM,掩蔽语言模型):
-
让模型学会预测文本中被随机掩蔽的词。有助于模型学习到词与词之间的上下文关系,从而更好地理解语言的复杂性。一般掩蔽15%的词。
-
MLM解决信息泄露的问题。
问题1:
- 在双向模型中所有单词可见,对于多次出现的词,模型可能会直接使用已经的含义,不利于语言模型的学习。
解决方案:
- BERT采用了MLM技术来掩盖一些词语,让它更好的学习。
问题2:
-
Mask\] token不会出现在下游任务。
解决方案:
-
在Mask掉的15%的单词中,组成如下:
-
80%使用Mask的词;
-
10%替换成随机词;
-
10%保持原本的词。
-
4.3.3 Next Sentence Prediction(NSP)
Next Sentence Prediction(NSP,下一句预测):
-
让模型学会预测两个句子是否是连续的文本。
-
为了生成训练数据,BERT从大规模的文本数据中随机挑选一对句子,并在输入中加入特殊的标记来指示两个句子的边界。
4.3.4 BERT输入

BERT模型处理输入数据:
-
BERT使用一个包含30,000个词的WordPiece词汇表来处理输入。
-
每个token的表示是三个嵌入的总和:
-
Token Embeddings(词嵌入);
-
Segment Embeddings(段落嵌入);
-
Position Embeddings(位置嵌入)。
段落嵌入用于区分两个句子,而位置嵌入则提供单词在句子中的位置信息。
-
CLS\]和\[SEP\]是特殊标记,分别用于表示句子的开始和结束。
.
*** ** * ** ***
.
### 5.Transformers Tutorial
Transformer Tutorial -- hugging-face:
* 中文:[https://hugging-face.cn](https://hugging-face.cn/docs/transformers/index)
* 英文:[https://huggingface.co](https://huggingface.co/)
Transformers 是一个由 Hugging Face 开发的开源库,它提供了大量预训练的模型,支持多种不同的任务,包括文本、图像和音频的处理。这个库使得开发者可以轻松地加载预训练模型,并在特定任务上进行微调。
* **模型架构**:支持多种模型架构,如BERT、GPT、T5等。
主要特点
* **多模态支持**:不仅支持文本,还支持图像和音频任务。
* **简化的API** :提供了`pipeline` API,可以快速使用模型进行推理。
* **社区支持**:Hugging Face Hub上有一个活跃的社区,提供了许多共享的模型和项目
.
#### 5.1 Pipeline API
**1)简单示例:**
使用 Transformers 的`pipeline` API 进行情感分析的简单示例:
```Python
from transformers import pipeline
# 创建一个用于情感分析的pipeline
classifier = pipeline('sentiment-analysis')
# 使用pipeline进行预测
result = classifier("We are very happy to introduce pipeline to the transformers repository.")
print(result)
```
这将输出情感分析的结果,例如:
```JSON
[{'label': 'POSITIVE', 'score': 0.9996980428695679}]
```
**2)更多参考:**
使用管道进行推理: