基于 Transformer 架构的中英机器翻译(汉译英)实现

复制代码
""""
使用transformer架构中,自动模型方式,进行实践。
"""
import os
os.environ["HF_ENDPOINT"] = "https://hf-mirror.com"  # 国内镜像
# os.environ["HF_HUB_DISABLE_SYMLINKS_WARNING"] = "1"  # 可选:关闭 symlink 警告
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
model_name = "Helsinki-NLP/opus-mt-zh-en"
# 确保已安装 sentencepiece!
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSeq2SeqLM.from_pretrained(model_name)
# 测试翻译
text = "我喜欢学习人工智能和自然语言处理。"
inputs = tokenizer(text, return_tensors="pt", padding=True, truncation=True)

translated_ids = model.generate(
    **inputs,
    max_new_tokens=256,
    num_beams=4,
    early_stopping=True
)
result = tokenizer.decode(translated_ids[0], skip_special_tokens=True)
print("英文翻译:", result)

基于 Transformer 架构的中英机器翻译(汉译英)实现,使用的是 Hugging Face Transformers 库和预训练模型 Helsinki-NLP/opus-mt-zh-en。下面我们逐部分解释其逻辑,并重点说明它采用的是 Transformer 的哪种模式。

✅ 一、整体架构:Encoder-Decoder(编码器-解码器)模式

🔑 这是标准的 Seq2Seq(Sequence-to-Sequence)任务结构,属于 Transformer 的"完整版"------同时包含编码器和解码器。

📌 为什么是 Encoder-Decoder?

翻译任务:输入一个序列(中文),输出另一个序列(英文)

模型 opus-mt-zh-en 基于 MarianMT,而 MarianMT 是 Facebook/Meta 和 Helsinki-NLP 基于 Transformer Encoder-Decoder 改进的翻译模型

这类模型在训练时学习"源语言 → 目标语言"的映射

✅ 对比其他 Transformer 模式:

表格

模式 典型模型 用途 是否适合翻译

Encoder-only BERT, RoBERTa 分类、抽取 ❌ 不适合生成

Decoder-only GPT, Llama 文本生成 ❌ 无显式编码源句

Encoder-Decoder T5, Bart, MarianMT 翻译、摘要、问答生成 ✅ 最适合翻译!

所以你的代码使用的是 Transformer 的 Encoder-Decoder 模式。

🔍 二、代码逐行解析

. 设置国内镜像(解决网络问题)

python

编辑

os.environ["HF_ENDPOINT"] = "https://hf-mirror.com"

让 transformers 从 HF-Mirror 镜像站 下载模型,避免连接 huggingface.co 超时

. 导入核心模块

python

编辑

from transformers import AutoTokenizer, AutoModelForSeq2SeqLM

AutoTokenizer:自动加载匹配的分词器(这里是 SentencePiece)

AutoModelForSeq2SeqLM:专用于 序列到序列语言建模 的模型类(即 Encoder-Decoder)

⚠️ 注意:不能用 AutoModel 或 AutoModelWithLMHead,必须用 ForSeq2SeqLM

. 指定模型名称

python

编辑

model_name = "Helsinki-NLP/opus-mt-zh-en"

这是一个在 OPUS 平行语料上训练的 中→英翻译模型

基于 Transformer Encoder-Decoder,约 6 层编码器 + 6 层解码器

. 加载分词器和模型

python

编辑

tokenizer = AutoTokenizer.from_pretrained(model_name)

model = AutoModelForSeq2SeqLM.from_pretrained(model_name)

自动下载并缓存模型权重和 tokenizer 配置

tokenizer 内部使用 SentencePiece 对中英文进行子词切分

. 准备输入文本

python

编辑

text = "我喜欢学习人工智能和自然语言处理。"

inputs = tokenizer(text, return_tensors="pt", padding=True, truncation=True)

tokenizer 将中文转为 token ID 序列(如 [872, 123, 456, ...])

return_tensors="pt":返回 PyTorch 张量(input_ids, attention_mask)

这些张量将送入 Encoder

. 生成翻译结果(关键:解码过程)

python

编辑

translated_ids = model.generate(

**inputs,

max_new_tokens=100,

num_beams=4,

early_stopping=True

)

🔁 内部发生了什么?

Encoder 接收 input_ids,将其编码为上下文表示(contextual embeddings)

Decoder 以 <s>(起始符)开头,逐步生成目标 token:

每一步都通过 Self-Attention 关注已生成的部分

通过 Cross-Attention 查询 Encoder 的输出(理解源句)

使用 Beam Search(束搜索)(num_beams=4)寻找更优翻译路径

最多生成 100 个新 token(不包括输入)

✅ 这就是典型的 自回归(Autoregressive)生成 + Encoder-Decoder 协同工作

. 解码输出

python

编辑

result = tokenizer.decode(translated_ids[0], skip_special_tokens=True)

print("英文翻译:", result)

将生成的 token ID 转回字符串

skip_special_tokens=True:去掉 <pad>, </s> 等特殊符号

🧠 三、Transformer Encoder-Decoder 在翻译中的作用

表格

组件 功能

Encoder 理解中文句子的语义,输出每个词的上下文向量

Decoder 根据 Encoder 输出,逐词生成英文,确保语义一致

Cross-Attention 让 Decoder 在生成每个英文词时,"回头看"中文原文(如生成 "I" 时关注 "我")

Positional Encoding 保留词序信息(因为 Transformer 本身无顺序感知)

📌 四、总结:这段代码的技术栈

表格

技术点 说明

模型架构 Transformer Encoder-Decoder(Seq2Seq)

任务类型 机器翻译(Chinese → English)

生成策略 Beam Search(num_beams=4)

依赖库 Hugging Face Transformers + PyTorch + SentencePiece

部署方式 CPU 推理(默认),可加 .to('cuda') 用 GPU

💡 补充:如何验证是 Encoder-Decoder?

你可以打印模型结构:

python

编辑

print(model)

会看到类似:

text

编辑

MarianMTModel(

(model): MarianModel(

(encoder): MarianEncoder(...)

(decoder): MarianDecoder(...)

)

(lm_head): Linear(...)

)


这明确表明:有独立的 encoder 和 decoder 模块。

✅ 结论:

你这段代码完美体现了 Transformer 的 Encoder-Decoder 模式在机器翻译中的应用,是现代 NLP 中最经典的 Seq2Seq 实现之一。

相关推荐
翱翔的苍鹰19 小时前
法律问答机器人”技术方案”的实现
人工智能·rnn·深度学习·自然语言处理
m0_6038887119 小时前
Structured Over Scale Learning Spatial Reasoning from Educational Video
人工智能·深度学习·机器学习·ai·论文速览
HyperAI超神经19 小时前
【TVM教程】设备/目标交互
人工智能·深度学习·神经网络·microsoft·机器学习·交互·gpu算力
Tadas-Gao19 小时前
大模型幻觉治理新范式:SCA与[PAUSE]注入技术的深度解析与创新设计
人工智能·深度学习·机器学习·架构·大模型·llm
查无此人byebye19 小时前
从零解读CLIP核心源码:PyTorch实现版逐行解析
人工智能·pytorch·python·深度学习·机器学习·自然语言处理·音视频
Mr. zhihao19 小时前
从 Word2Vec 到 Transformer:Attention 是如何被“逼出来的”?
人工智能·transformer·word2vec
沃达德软件19 小时前
人脸模糊图像清晰化技术
人工智能·深度学习·神经网络·机器学习·计算机视觉
机器学习之心HML19 小时前
GCN-TCN-Transformer回归模型 + SHAP 可解释性分析 Pytorch实现
pytorch·回归·transformer
OLOLOadsd12319 小时前
【深度学习】RetinaNet_RegNetX-800MF_FPN_1x_COCO_金属表面缺陷检测与分类模型解析
人工智能·深度学习·分类
查无此人byebye20 小时前
阿里开源Wan2.2模型全面解析:MoE架构加持,电影级视频生成触手可及
人工智能·pytorch·python·深度学习·架构·开源·音视频