回译增强
核心思想: 通过将现有目标语言文本翻译回源语言来生成合成平行数据,然后使用这些合成对来训练或提示前向模型。这能廉价地扩展平行语料库——但需要注意质量问题。
:::info 这是一份食谱指南,不是完整实现 本指南概述了该策略及其关键陷阱。回译功能强大,但如果处理不当可能会放大错误。 :::
何时使用
- 你拥有单语目标语言文本但平行数据有限
- 你想要扩展训练语料库用于微调而无需手动翻译
- 你需要更多少样本示例但无法快速获得人工翻译
- 你愿意积极质量过滤合成数据
工作原理
[Target-language text] "awâsisak mêtawêwak"
│
▼
[Back-translate to source] "The children are playing" (via LLM or MT API)
│
▼
[Create synthetic pair] ("The children are playing", "awâsisak mêtawêwak")
│
▼
[Quality filter] Keep only high-confidence pairs
│
▼
[Use for training/prompting] Expand your parallel corpus
- 收集单语文本 — 目标语言的书籍、文章、转录、社交媒体
- 回译 — 使用 LLM 或 MT API 将每个句子翻译到源语言
- 质量过滤 — 往返翻译(再次翻译回来)并比较;保留往返翻译≈原文的对
- 使用合成语料库 — 用于微调、少样本示例或指导数据
质量过滤:往返测试
# Pseudo-code for round-trip quality filtering
for target_text in monolingual_corpus:
# Back-translate: target → source
synthetic_source = translate(target_text, "crk", "en")
# Forward-translate: source → target
round_trip = translate(synthetic_source, "en", "crk")
# Compare round-trip to original
chrf_score = compute_chrf(target_text, round_trip)
if chrf_score > 0.70: # High similarity = high-quality pair
parallel_corpus.append((synthetic_source, target_text))
关键陷阱:错误放大
:::warning 回译会放大现有模型偏差 如果你的回译模型持续犯同样的错误,你的合成语料库将把这些错误编码为"正确"。这会形成反馈循环:用坏数据训练 → 产生更差的翻译 → 生成更差的合成数据。始终要积极进行质量过滤并将合成数据与经过验证的人工翻译混合。 :::
单语文本来源
- 社区通讯、报纸和出版物
- 目标语言的政府文件(例如因纽特语的努纳武特议会记录)
- 教育材料和教科书
- 宗教文本(许多语言广泛可用)
- 社交媒体(需获得适当许可和质量过滤)
- 语言项目的转录音频/视频
优缺点
| ✅ 廉价扩展训练数据 | ❌ 如果未过滤会放大模型错误 |
| ✅ 利用丰富的单语文本 | ❌ 质量上限受回译模型限制 |
| ✅ 易于大规模生成 | ❌ 往返过滤计算密集 |
| ✅ 补充其他方法 | ❌ 合成数据永远不如人工翻译 |