BERT

简介: 【11月更文挑战第18天】

一、BERT和GPT系列的简介

1. BERT(Bidirectional Encoder Representations from Transformers)

  • 定义
    • BERT是一种基于Transformer架构的预训练语言模型,由谷歌开发。它的特点是采用双向的Transformer来对文本进行编码,能够很好地捕捉词语的上下文信息。
  • 应用场景
    • 在自然语言处理任务中广泛应用,如文本分类、问答系统、命名实体识别等。例如,在情感分析任务中,BERT可以通过学习大量文本中的情感表达模式,对新的文本进行准确的情感分类。

2. GPT系列(Generative Pretrained Transformer)

  • 定义
    • GPT系列是由OpenAI开发的一系列基于Transformer架构的语言模型。从最初的GPT到GPT - 2、GPT - 3以及最新的GPT - 4,模型的规模和性能不断提升。GPT系列主要侧重于通过生成式方法来处理自然语言任务。
  • 应用场景
    • 适用于文本生成、对话系统、翻译等任务。例如,在内容创作领域,GPT系列可以根据给定的提示生成连贯的文章、故事等内容。

二、如何使用BERT和GPT系列

1. 使用BERT

  • 安装相关库
    • 通常使用Hugging Face的Transformers库来使用BERT。首先需要安装该库:
      pip install transformers
      
  • 加载预训练模型和分词器

    • 在Python中,可以这样加载BERT模型和对应的分词器:
      ```python
      from transformers import BertTokenizer, BertModel

    加载分词器

    tokenizer = BertTokenizer.from_pretrained('bert - base - uncased')

    加载模型

    model = BertModel.from_pretrained('bert - base - uncased')
    ```

  • 文本处理
    • 例如对一个句子进行编码:
      text = "This is a sample sentence."
      # 对句子进行分词
      encoded_text = tokenizer(text, return_tensors='pt')
      # 将分词后的结果输入模型获取输出
      output = model(**encoded_text)
      

2. 使用GPT系列

  • 安装相关库(以GPT - 3为例)
    • 如果要使用OpenAI的GPT - 3 API,需要安装openai库并进行API密钥配置:
      pip install openai
      
    • 配置API密钥(在代码中或环境变量中设置):
      import openai
      openai.api_key = "YOUR_API_KEY"
      
  • 调用API进行文本生成
    • 例如生成一段文本:
      prompt = "Once upon a time"
      response = openai.Completion.create(
        engine="text - davinci - 003",
        prompt=prompt,
        max_tokens=50
      )
      generated_text = response.choices[0].text
      

三、代码示例

1. BERT示例 - 文本分类

import torch
from transformers import BertTokenizer, BertForSequenceClassification
from torch.utils.data import DataLoader, TensorDataset

# 1. 加载分词器和模型
tokenizer = BertTokenizer.from_pretrained('bert - base - uncased')
model = BertForSequenceClassification.from_pretrained('bert - base - uncased', num_labels=2)

# 2. 准备数据(这里简单假设已经有了文本和标签数据)
texts = ["I love this movie", "I hate this book"]
labels = [1, 0]
encoded_texts = tokenizer(texts, padding=True, truncation=True, return_tensors='pt')
input_ids = encoded_texts['input_ids']
attention_masks = encoded_texts['attention_mask']
labels = torch.tensor(labels)

# 3. 创建数据集和数据加载器
dataset = TensorDataset(input_ids, attention_masks, labels)
dataloader = DataLoader(dataset, batch_size=2)

# 4. 训练模型(这里简单演示一个训练步骤)
optimizer = torch.optim.AdamW(model.parameters(), lr=1e - 5)
for batch in dataloader:
    input_ids, attention_masks, labels = batch
    optimizer.zero_grad()
    outputs = model(input_ids, attention_masks=attention_masks, labels=labels)
    loss = outputs.loss
    loss.backward()
    optimizer.step()

2. GPT - 3示例 - 创意写作

import openai

# 设置API密钥
openai.api_key = "YOUR_API_KEY"

# 生成故事
prompt = "In a far - away land"
response = openai.Completion.create(
    engine="text - davinci - 003",
    prompt=prompt,
    max_tokens=100,
    temperature=0.7
)
print(response.choices[0].text)
目录
相关文章
|
6月前
|
数据采集 机器学习/深度学习 存储
使用LORA微调RoBERTa
模型微调是指在一个已经训练好的模型的基础上,针对特定任务或者特定数据集进行再次训练以提高性能的过程。微调可以在使其适应特定任务时产生显着的结果。
238 0
|
4月前
|
机器学习/深度学习 自然语言处理 语音技术
大语言模型系列-Transformer
大语言模型系列-Transformer
|
1月前
|
自然语言处理 索引
使用BERT进行情感分析
【10月更文挑战第2天】
|
3月前
|
机器学习/深度学习 自然语言处理 知识图谱
|
4月前
|
机器学习/深度学习 自然语言处理 PyTorch
大语言模型系列-Transformer(二)
大语言模型系列-Transformer(二)
|
6月前
|
人工智能 自然语言处理 测试技术
RoBERTa
“【5月更文挑战第30天】”
46 1
|
4月前
|
机器学习/深度学习 数据采集 自然语言处理
大语言模型系列:Transformer
大语言模型系列:Transformer
179 0
|
机器学习/深度学习 自然语言处理 Apache
Transformer 模型实用介绍:BERT
Transformer 模型实用介绍:BERT
222 0
|
机器学习/深度学习 人工智能 编解码
Transformers回顾 :从BERT到GPT4
人工智能已成为近年来最受关注的话题之一,由于神经网络的发展,曾经被认为纯粹是科幻小说中的服务现在正在成为现实。从对话代理到媒体内容生成,人工智能正在改变我们与技术互动的方式。特别是机器学习 (ML) 模型在自然语言处理 (NLP) 领域取得了重大进展。一个关键的突破是引入了“自注意力”和用于序列处理的Transformers架构,这使得之前主导该领域的几个关键问题得以解决。
5057 0
|
机器学习/深度学习 API 语音技术
EeSen、FSMN、CLDNN、BERT、Transformer-XL…你都掌握了吗?一文总结语音识别必备经典模型(3)
EeSen、FSMN、CLDNN、BERT、Transformer-XL…你都掌握了吗?一文总结语音识别必备经典模型
171 0