作者:来自 vivo 互联网算法团队- Huang Minghui
本文探讨了 NLLB 翻译模型与 ChatGPT 在小语种应用中的双向优化策略。首先介绍了 NLLB-200 的背景、数据、分词器和模型,以及其与 LLM(Large Language Model)的异同和协同关系。接着列举了实战与应用的案例,包括使用 ChatGPT 生成的样本微调 NLLB-200 和使用 NLLB-200 的翻译结果作为 LLM 的 prompt 等。通过本文的研究和实践,可以为小语种翻译模型和语言模型的融合提供一定的参考和借鉴。
一、NLLB 背景介绍
NLLB(No Language Left Behind) \[1\] 是Meta发起的一个项目,目标是打破语言障碍。不论每个人说的是什么语言,都能使他们平等地获取信息和交流。官方对外宣称,这是全球第一个以单一模型对应多数语言翻译的设计,希望借此能够帮助更多人在社群平台上进行跨语言互动。
NLLB 计划的核心是开发一个既准确又能适应大量语言的翻译模型。这不仅包括像英语、中文和西班牙语这样的广泛使用的语言,还扩展到那些使用人数较少的语言,比如土著和地区性语言,它们通常缺乏用于高质量机器翻译的数据资源。NLLB 计划的更广泛愿景是促进不同语言障碍背后的沟通与知识获取,进而支持全球社区的教育、经济机会和社会包容性。随着这些语言的AI模型和数据集的改进,它们可以被集成到各种工具和平台中,以提供实时翻译服务、内容理解和其他与语言相关的功能,为全球用户带来好处。
NLLB 项目包含多种语言的翻译数据集,也包含基于机器学习技术的翻译模型,这些技术和模型能够更有效地从有限的数据中学习,使得那些可能几乎没有翻译数据的语言也能被翻译成其他语言。为了实现这些目标,NLLB 聚集了研究人员、语言学家和工程师,共同致力于先进的机器学习模型、数据收集和增强策略,以及改进的评估方法,以确保翻译不仅仅是字面上的,而且在文化和语境上也是准确的。
在本文中,我们主要要介绍的是 NLLB 项目中的主角,也就是 NLLB-200 这个预训练模型。这是 Meta AI 开源的一个机器翻译的大模型,支持200+语言之前的互相翻译。
1.1 NLLB-200 数据
目前,谷歌翻译能够覆盖大约130种语言的翻译,而微软则大约能够翻译110种语言。Meta AI 的目标是通过 NLLB 计划实现覆盖200多种语言的翻译。因此,除了考虑模型本身,Meta AI 还需要关注翻译模型层面之外的方面,包括数据标注与数据清洗等。
NLLB-200 项目使用的数据集名为 Flores-200,它是 Flores-101 数据集的扩展,其中包含来自世界各地的101种语言。而 Flores-200 数据集不仅覆盖了之前的语言集合,还增加了更多语言,使总数扩大到了200种。
除了收集公开可用数据和使用网络爬虫爬取的数据外,研究团队还采用回译策略来进一步扩充训练数据集。回译是一种独特的数据增强技术,涉及使用已有的机器翻译模型将目标语言的文本翻译回源语言,以创造新的、丰富的训练样本,有助于提高模型在各种语言上的表现和准确性。
由于这些数据用于机器翻译任务,因此其格式都是句子对格式,即包含第一种语言及其相应的表达,同时包含对应翻译的第二种语言的表达。数据示例如下:
1.2 NLLB-200 分词器
在收集并清理了大量数据之后,NLLB-200 模型使用了 一些方法来促进模型学习到语言不可知(language-agnostic)的表示,从而能够用于多种语言之间的转换,而不仅仅是针对特定的单一语言。其中,最关键的要素之一是设计了一个能够处理所有语言的分词器。在这个分词器中,使用了一个共享的词汇表,采用共享的 SentencePiece 词汇表来编码所有涉及的语言的输入和输出序列。
这意味着相同的子词单元可以在不同的语言之间共用,有助于模型学习到跨语言共通的词汇表示。该 SentencePiece 模型是在采样的1亿个句子上进行训练的。为了确保低资源语言能够得到充分的表示,NLLB 团队对高资源语言进行了下采样,同时对低资源语言进行了上采样,最终训练出一个词表大小高达256206的模型(相比之下,Llama/Llama2/Llama3的词表大小为32000)。
要使用 NLLB 的分词器,我们可以直接调用 Transformers,里面有一个 NllbTokenizer,接收的参数为: