【AI大模型技术】4.预训练语言模型(PLMs,Pre-trained Langue Models);5.Transformers Tutorial


更多内容: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的核心特点包括:

  1. 双向编码:BERT使用双向Transformer编码器,即模型会同时考虑输入序列中,每个词的左侧和右侧上下文。这与传统的单向模型不同,后者只能从左到右或从右到左处理文本。

  2. 预训练:BERT通过在大量文本数据上进行预训练来学习语言表示。

  • 预训练任务包括:Masked Language Model(MLM)和 Next Sentence Prediction(NSP)

    • MLM:随机遮蔽输入序列中的一些词,然后让模型预测这些被遮蔽的词。

    • NSP:预测两个句子是否是连续的文本。

  1. 微调:在预训练完成后,BERT可以在特定任务上进行微调。这意味着模型可以调整其权重以适应特定的NLP任务,如文本分类、命名实体识别、问答系统等。

  2. 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)更多参考:** 使用管道进行推理: . #### 5.2 `AutoModel`和`AutoTokenizer` Transformers 还提供了`AutoModel`和`AutoTokenizer`类,可以自动加载预训练模型和对应的分词器。例如: ```Python from transformers import AutoTokenizer, AutoModelForSequenceClassification tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased") model = AutoModelForSequenceClassification.from_pretrained("bert-base-uncased") ``` [AutoModelForSequenceClassification.from_pretrained()](https://hugging-face.cn/docs/transformers/v4.44.0/en/model_doc/auto#transformers.AutoModel.from_pretrained) ```Python # Tokenize the texts inputs = tokenizer("Hello World!", return_tensors='pt') # Run the model outputs = model(**inputs) # Save the fine-tuned model in one line model.save_pretrained("path_to_save_model") ``` 这样,你就可以使用模型进行更复杂的操作,比如自定义的训练和fine-tuning(微调)。 **简单训练:Train the model with Trainer** ```Python trainer = Trainer( model, args, train_dataset=encoded_dataset["train"], eval_dataset=encoded_dataset["validation"], tokenizer=tokenizer, compute_metrics=compute_metrics ) trainer.train() # Start training! trainer.evaluate() ``` `Trainer` 类是 Hugging Face Transformers 库中的一个工具,它简化了模型的训练过程。你需要提供以下参数: * `model`:要训练的模型。 * `args`:训练参数,通常是一个 `TrainingArguments` 类的实例。 * `train_dataset`:用于训练的数据集。 * `eval_dataset`:用于评估模型性能的验证数据集。 * `tokenizer`:用于数据预处理的分词器。 * `compute_metrics`:一个函数,用于计算和返回评估指标。 `trainer.train()` 方法启动训练过程,而 `trainer.evaluate()` 方法则在训练完成后评估模型的性能。 . #### 5.3 Transformers fine-tune Demo 参考视频: 参考文档: **大致流程:** 准备:datasets、transformers库 fine-tune方式一:pipline使用fine-tune好的模型,完成下游任务。 fine-tune方式二:在下游任务上进行fine-tune。 * load datasets * load metric(加载评估指标) * metric_compute计算模型表现。 * 进行tokenization * 通过preprocess_function,将tokenization的数据传给hugging facec处理。 * 构建模型,进行fine-tune * 使用Traniner类:传参数 * 使用Traniner类:train开始训练 . *** ** * ** *** > 声明:资源可能存在第三方来源,若有侵权请联系删除!

相关推荐
搬砖者(视觉算法工程师)2 小时前
自动驾驶技术前沿:传感器技术
人工智能·自动驾驶
Jonathan Star2 小时前
LangChain 是一个 **大语言模型(LLM)应用开发框架**
语言模型·oracle·langchain
算法与编程之美2 小时前
探究pytorch中多个卷积层和全连接层的输出方法
人工智能·pytorch·深度学习·神经网络·cnn
Master_oid2 小时前
机器学习21:可解释机器学习(Explainable Machine Learning)(上)
人工智能·机器学习
MobotStone3 小时前
边际成本趋近于零:如何让AI智能体"说得清、讲得明"
人工智能·架构
AI大模型学徒3 小时前
NLP基础(一)_简介
自然语言处理·nlp
新智元3 小时前
李飞飞「世界模型」正式开放,人人可用! Pro 版首月仅 7 元
人工智能·openai
新智元3 小时前
GPT-5.1 凌晨突袭,奥特曼听劝!全网呼唤的人味回来了
人工智能
钅日 勿 XiName3 小时前
一小时速通Pytorch之自动梯度(Autograd)和计算图(Computational Graph)(二)
人工智能·pytorch·python