Transformers是一种深度学习模型架构,由Hugging Face公司在2017年发布,最初源于论文《Attention is All You Need》。该架构抛弃了传统的循环神经网络(RNN)和卷积神经网络(CNN)在处理序列数据时的时间或空间上的连续性约束,而是完全依赖于自我注意机制(Self-Attention)来捕获长距离依赖关系。这一突破使得Transformer模型在自然语言处理(NLP)领域取得了重大进展,尤其在机器翻译、文本分类、命名实体识别、问答系统、摘要生成等多种任务上表现卓越。
以下是使用Transformers框架进行应用的一个简单实例:
例子:使用Hugging Face Transformers库进行文本分类
# 导入所需模块
from transformers import AutoTokenizer, AutoModelForSequenceClassification, Trainer, TrainingArguments
# 1. 加载预训练模型和对应的tokenizer
model_name = "bert-base-uncased" # 假设我们要使用BERT模型
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name, num_labels=2) # 假设有两类标签
# 2. 准备数据
train_texts = ["I love this movie", "This film was terrible"]
train_labels = [1, 0] # 假设1表示正面评价,0表示负面评价
# 对数据进行编码
train_encodings = tokenizer(train_texts, truncation=True, padding=True)
# 创建Dataset对象
from torch.utils.data import Dataset
class TextDataset(Dataset):
def __init__(self, encodings, labels):
self.encodings = encodings
self.labels = labels
def __getitem__(self, idx):
item = {key: torch.tensor(val[idx]) for key, val in self.encodings.items()}
item['labels'] = torch.tensor(self.labels[idx])
return item
def __len__(self):
return len(self.labels)
train_dataset = TextDataset(train_encodings, train_labels)
# 3. 设置训练参数
training_args = TrainingArguments(
output_dir='./results', # 输出目录
num_train_epochs=3, # 总训练轮数
per_device_train_batch_size=16, # 每个设备的批次大小
logging_dir='./logs', # 日志目录
)
# 4. 创建Trainer对象并训练模型
trainer = Trainer(
model=model,
args=training_args,
train_dataset=train_dataset,
)
trainer.train()
# 5. 使用训练好的模型进行推理
test_text = "The acting was brilliant."
test_encoding = tokenizer(test_text, return_tensors='pt')
predictions = model(**test_encoding).logits.argmax(-1).item()
print(f"The predicted sentiment is: {'positive' if predictions == 1 else 'negative'}")
例子中,我们首先加载了一个预训练的BERT模型和与其配套的tokenizer,接着对训练数据进行编码,并构建一个PyTorch Dataset对象。然后,我们设置了训练参数并通过Trainer进行训练。最后,我们展示了如何使用训练好的模型对新的文本进行分类预测。当然,这只是一个非常简化的示例,实际应用中需要处理大量数据,并且可能涉及到更复杂的pipeline和数据预处理。