HUOXIU

NLLBとChatGPTの双方向最適化:マイナー言語の応用における翻訳モデルと言語モデルの統合戦略の探究

著者: Huang Minghui、vivoインターネットアルゴリズムチーム

本稿では、あまり一般的に教えられていない言語を対象としたアプリケーションにおいて、NLLB翻訳モデルとChatGPTの双方向最適化戦略を検討する。まず、NLLB-200の背景、データ、トークナイザー、モデル、そしてLLM(大規模言語モデル)との類似点、相違点、そして相乗効果について紹介する。次に、ChatGPTによって生成されたサンプルを用いてNLLB-200を微調整したり、NLLB-200の翻訳結果をLLMのプロンプトとして利用したりするなど、実践的な応用例を提示する。本稿で提示された研究と実践を通して、あまり一般的に教えられていない言語における翻訳モデルと言語モデルの統合に関する参考資料とガイダンスを提供することができる。

I. NLLBの背景

NLLB(No Language Left Behind)[1]は、Metaが立ち上げた言語の壁を打破することを目指すプロジェクトです。このプロジェクトは、話す言語に関わらず、誰もが平等に情報にアクセスし、コミュニケーションをとることを可能にします。公式には、単一のモデルを用いて複数の言語を翻訳する世界初の設計であるとされており、ソーシャルメディアプラットフォーム上でより多くの人々が言語を超えて交流できるようになることを期待しています。

NLLBプロジェクトの中核は、正確かつ幅広い言語に適応可能な翻訳モデルの開発です。これには、英語、中国語、スペイン語といった広く話されている言語だけでなく、高品質な機械翻訳に必要なデータリソースが不足していることが多い、先住民族言語や地域言語といったあまり話されていない言語も含まれます。NLLBプロジェクトのより広範なビジョンは、多様な言語の壁を乗り越えてコミュニケーションと知識へのアクセスを促進し、グローバルコミュニティにおける教育、経済機会、そして社会的包摂を支援することです。これらの言語向けのAIモデルとデータセットが改善されるにつれて、それらは様々なツールやプラットフォームに統合され、リアルタイム翻訳サービス、コンテンツ理解、その他の言語関連機能を提供することが可能になり、世界中のユーザーにメリットをもたらします。

NLLBプロジェクトには、複数言語の翻訳データセットと機械学習ベースの翻訳モデルが含まれています。これらの技術とモデルは、限られたデータからより効果的に学習し、翻訳データが少ない可能性のある言語を他の言語に翻訳することを可能にします。これらの目標を達成するために、NLLBは研究者、言語学者、エンジニアを結集し、高度な機械学習モデル、データ収集・拡張戦略、そして翻訳が文字どおりの正確さだけでなく、文化的・文脈的にも正確であることを保証するための評価手法の改善に取り組んでいます。

この記事では、NLLBプロジェクトの主役であるNLLB-200事前学習済みモデルを中心に紹介します。これはMeta AIがオープンソース化した大規模な機械翻訳モデルであり、200以上の言語間の相互翻訳をサポートしています。

1.1 NLLB-200データ

現在、Google翻訳は約130言語をカバーしていますが、Microsoft翻訳は約110言語をカバーしています。Meta AIは、NLLB(National Language Translation Load)プロジェクトを通じて、200言語以上のカバーを目指しています。そのため、Meta AIはモデル自体の検討に加えて、データアノテーションやデータクリーニングなど、翻訳モデルレベルを超えた側面にも重点を置く必要があります。

NLLB-200プロジェクトでは、Flores-101データセットの拡張版であるFlores-200データセットを使用しています。Flores-200データセットは、世界中の101の言語を収録しています。Flores-200データセットは、従来の言語セットをカバーするだけでなく、さらに多くの言語を追加することで、収録言語数を合計200に拡大しています。

研究チームは、公開データとウェブクローラーでクロールされたデータの収集に加え、バックトランスレーション戦略を用いてトレーニングデータセットをさらに拡張しました。バックトランスレーションとは、既存の機械翻訳モデルを用いてターゲット言語のテキストをソース言語に再翻訳し、より豊富な新しいトレーニングサンプルを作成する独自のデータ拡張手法です。これにより、様々な言語におけるモデルのパフォーマンスと精度が向上します。

このデータは機械翻訳タスクに使用されるため、文対形式となっています。つまり、第一言語とそれに対応する表現、そして翻訳対象となる第二言語の対応する表現が含まれています。データの例を以下に示します。

 { "translation": { "ace_Latn": "ゴブニャン ハナ ゲウペウケウセワ ガタ アタワ グティンガイ ムナン マントン ガタ。", "ban_Latn": "イダ ネンテン ジャガ マンガヤン ウィアディン ングタン セメトン。" }, "laser_score": 1.2499876022338867, "source_sentence_lid": 1.0000100135803223, "target_sentence_lid": 0.9991400241851807, "source_sentence_source": "paracrawl9_hieu", "source_sentence_url": "_", "target_sentence_source": "crawl-data/CC-MAIN-2020-10/segments/1581875144165.4/wet/CC-MAIN-20200219153707-20200219183707-00232.warc.wet.gz", "target_sentence_url": 「https://alkitab.mobi/tb/Ula/31/6/\n」}

1.2 NLLB-200 トークナイザー

NLLB-200モデルは、大量のデータを収集・整理した後、言語に依存しない表現の学習を容易にするための複数の手法を採用し、単一言語だけでなく複数言語間の翻訳にも使用できるようになりました。最も重要な要素の一つは、すべての言語に対応できるトークナイザーの設計でした。このトークナイザーは共通の語彙、つまりSentencePiece語彙を用いて、関連するすべての言語の入出力シーケンスをエンコードします。

これは、同じサブワード単位を異なる言語間で共有できることを意味し、モデルが言語横断的に共通の語彙表現を学習するのに役立ちます。SentencePieceモデルは1億個のサンプル文で学習されました。低リソース言語を適切に表現するために、NLLBチームは高リソース言語をダウンサンプリングし、低リソース言語をアップサンプリングすることで、最終的に256,206語彙のモデルを学習しました(Llama/Llama2/Llama3では32,000語彙でした)。

NLLB トークナイザーを使用するには、次のパラメータを受け入れる NllbTokenizer を含む Transformers を直接呼び出します。

 - vocab_file (str) - bos_token (str, オプション、デフォルトは "<s>") - eos_token (str, オプション、デフォルトは "</s>") - sep_token (str, オプション、デフォルトは "</s>") - unk_token (str, オプション、デフォルトは "<unk>") - pad_token (str, オプション、デフォルトは "<pad>") - mask_token (str, オプション、デフォルトは "<mask>") - tokenizer_file (str, オプション) - src_lang (str, オプション) - tgt_lang (str, オプション) - sp_model_kwargs (Dict[str, str])

 from transformers import NllbTokenizer tokenizer = NllbTokenizer.from_pretrained( "nllb/nllb-200-distilled-1.3B", src_lang="eng_Latn", tgt_lang="fra_Latn" ) example_english_phrase = "国連事務総長、シリアには軍事的解決策はないと明言" expected_translation_french = ( "国連事務総長はシリアに軍事的解決策はないと主張している。" ) inputs = tokenizer( example_english_phrase, text_target=expected_translation_french, return_tensors="pt")

1.3 NLLB-200モデル

大規模トークナイザーの準備が整うと、各文を複数のトークンに適切に分割し、対応するトークンIDを見つけることができます。次のステップはモデルのトレーニングです。NLLB-200モデルは、Transformerアーキテクチャを用いて異なる言語間の表現を学習します。

  • 共有モデルパラメータ:共有パラメータは、統合ニューラルネットワークアーキテクチャ内の全言語で使用されます。これにより、モデルは特定の言語に特化しない特徴表現を学習するようになります。

  • 言語間転移学習: 類似の言語ペアでトレーニング中に知識を共有することにより、モデルは学習したパターンを異なる言語間で転移することができ、言語に依存しない機能の開発に役立ちます。

  • マルチタスク学習: 言語モデリング、ノイズ除去オートエンコーダーなどの翻訳に限定されないタスクをトレーニングに含めると、モデルが言語の共通性を捉えるのに役立ちます。

多言語機械翻訳モデルは、言語ペアごとに個別のモデルを構築する必要がなく、異なる言語間の翻訳を学習できます。このアプローチにより、モデルの数とメンテナンスコストが削減され、モデル間で異なる言語間で知識を共有できるため、リソースの少ない言語の翻訳パフォーマンスの向上に役立つことがよくあります。

1.4 NLLB-200蒸留

表1: NLLB-200と蒸留版のパラメータ

オープンソースのNLLB-200 MoE(Mixture of Experts)バージョンは、驚異的な545億個のパラメータを誇ります。この規模のモデルをデバイス上で実行することは非常に困難であり、膨大な計算リソースを必要とします。しかし、開発者は、パラメータを抽出して合理化したバージョンも提供しています。このモデルはわずか13億個のパラメータで構成されているため、オリジナルよりも大幅に軽量化され、ハードウェアリソースへの依存度が低減されるため、リソースが限られた環境でも動作可能です。

II. NLLBとLLM

LLMと同様に、NLLBは翻訳タスクとして、シーケンスからシーケンスへのタスクと表現でき、生成的カテゴリに属します。では、NLLBとLLMの類似点と相違点は何でしょうか?両者は排他的なものでしょうか?それとも連携できるのでしょうか?

2.1 NLLBモデルとLLMモデルの相違点と類似点

NLLBとLLMはどちらもTransformerアーキテクチャを基盤として採用しています。違いは、NLLBが標準的なエンコーダー・デコーダーアーキテクチャを採用しているのに対し、GPTベースのモデルはデコーダーのみを使用する(BERTはエンコーダーを使用する)点です。

Transformerモデルでは、エンコーダーが入力テキストを理解し、関連情報を抽出する役割を担います。このプロセスでは通常、テキストのシリアル化形式(単語や文字など)を処理し、自己注意メカニズムを利用してテキスト内の文脈関係を理解し​​ます。エンコーダーの出力は、入力テキストの連続表現であり、多くの場合、埋め込みと呼ばれます。この埋め込みには、エンコーダーがテキストから抽出した有用な情報がすべて含まれており、モデルが処理できる高次元ベクトル形式で表現されます。この埋め込みはデコーダーに渡されます。デコーダーの役割は、エンコーダーから受け取った埋め込みに基づいて、(ターゲット言語で)翻訳されたテキストを生成することです。デコーダーは、自己注意メカニズムとエンコーダー-デコーダー注意メカニズムも利用して、翻訳されたテキストを生成します。

LLM は、エンコーダーのみ、デコーダーのみ、またはその両方のハイブリッドのいずれかになります。3 つのタイプはすべて、Seq2Seq (シーケンスツーシーケンス) モデル カテゴリに属します。名目上はエンコーダーのみですが、LLM は実際には一部のテキストとトークンをデコードできるため、デコーダーとしても機能します。ただし、デコーダーのみのタイプやエンコーダー - デコーダーのタイプとは異なり、エンコーダーのみの LLM は、他の 2 つのタイプのような自己回帰特性を示すのではなく、入力を理解してタスク固有の出力を生成することに重点を置いています。自己回帰とは、出力が以前に生成されたトークンに基づいており、トークンごとにコンテキスト理解を生成することを意味します。一般に、エンコーダーのみのタイプは分類タスクに優れており、エンコーダー - デコーダー タイプは翻訳やテキスト要約など、入力に強く依存する出力の生成に適しており、デコーダーのみのタイプはさまざまな Q&A タスクに適しています。

2.2 NLLBとLLMは目的が異なる

現在の大規模言語モデルも優れた翻訳能力を備えていますが、ChatGPTなどのLLMは高リソース言語の翻訳に優れており、一方、NLLB-200は低リソース言語の翻訳能力を大幅に向上させました。NLLB-200とLLMの翻訳能力における主な違いは、その焦点と訓練目標にあります。

1. プロフェッショナリズム:

  • NLLB-200は機械翻訳向けに設計・最適化されており、リソースの少ない言語を含む200以上の言語をサポートしています。これは、特に十分なデータサポートが不足している言語ペアにおいて、機械翻訳において高い専門性と精度を発揮することを意味します。

  • LLMはある程度の翻訳タスクを実行できますが、その主な目的は自然言語の理解と生成であり、流暢で自然な対話の作成を目指しています。そのため、LLMの翻訳能力は、NLLB-200のような翻訳目的に明示的に訓練されたモデルほど強力ではない可能性があります。

2. カバーエリア:

  • NLLB-200 は、幅広い言語を網羅するように特別に設計されており、リソースの少ない言語でも優れた翻訳サポートを保証します。

  • LLM は多言語処理をサポートしていますが、そのトレーニング データセットは、特にリソースの少ない言語の場合、NLLB-200 ほど複数の言語を包括的にカバーしていない可能性があります。

3. 適用範囲:

  • NLLB-200 は翻訳専用に設計されており、正確な翻訳が求められるシナリオに適しています。

  • LLM は単純な翻訳タスクを実行できますが、コンテキストを理解し、人間のような応答を生成する必要がある対話シナリオに適しています。

まとめると、NLLB-200はトレーニングと設計に基づき機械翻訳において優れた性能を発揮することが期待される一方、LLMは高品質な会話体験の創出に重点を置いています。複雑または特殊な翻訳タスク、特に希少言語間の翻訳においては、NLLB-200の方が適している可能性があります。しかし、人間のユーザーとの自然なコミュニケーションが求められる状況では、LLMの方が適しているかもしれません。

2.3 NLLBとLLMの連携

NLLB-200 と LLM は翻訳においてそれぞれ異なる強みを持っていますが、LLM の強力な自然言語理解および生成機能は、NLLB-200 の独自の翻訳テクノロジーを補完することができます。

  • LLM独自の生成機能を活用することで、より正確なドメイン固有の用語データセットを作成することができます[2]。このようなターゲットデータセットは、NLLB-200をさらに微調整するために使用することができ、特定の技術分野や専門分野における翻訳性能を向上させることができます。

  • 現在の大規模言語モデル(LLM)は、主に主流言語に基づいています。これは、英語や中国語などの言語のコーパスが、入手の容易さ、データの質と量において明らかな利点を持っているためです。55のアフリカ言語など、コーパスリソースが比較的少ない小規模言語の場合、この集中化の傾向は、LLMが主流言語ほど優れたパフォーマンスを発揮しないことを意味します。そのため、NLLB-200の翻訳機能を使用して、LLMを使用する前に、小規模言語のプロンプトを主流言語に翻訳することができます[3]。

これら 2 つのアプローチを組み合わせた具体的な方法については、後ほど詳しく説明します。

III. 実用化

3.1 LLMを使用してNLLB-200の微調整のためのターゲットデータを生成する

現在、アプリストアが国際的に運営されている主な国は、インド、インドネシア、タイ、マレーシア、フィリピン、ベトナムなどです。さらに、ユーザーベースが小さい他の数十の国と地域でも利用されています。ユーザークエリで使用される言語の多様性により、2023年初頭の評価結果では、すべての国で現地語クエリによる悪い事例が存在することが示されました。一部の国ではユーザー行動データが限られているため、ユーザー行動ベースのモデルが効果的に機能しません。さらに、多くのアプリは国際的に英語名を使用しているため、テキストマッチングだけに頼ると、現地語クエリと英語のアプリが一致せず、ユーザーにとって望ましくない結果になる可能性があります。この問題に対処するには、各運営国で再現率の低い現地語クエリを英語に翻訳し、結果を取得する翻訳機能を導入する必要があります。

NLLB-200モデルの元のトレーニングデータは様々な記事から取得されており、説明的な単語を多数含む可能性があるため、テキストリコールでは重要な情報を捉えきれない可能性があります。そのため、NLLB-200モデルを輸出店舗の検索に使用するには、モデルに簡単な微調整を行う必要があります。

3.2 LoRAの微調整:ソリューションの紹介

大規模言語モデルは膨大な数のパラメータ(例えばGPT-3は1750億個のパラメータ)を持ち、下流のタスクに適用する際に全てのパラメータを微調整するには相当な計算能力が必要になります。コスト削減のため、少数のパラメータのみを学習することでモデルを下流のタスクに適応させることを目的とした、パラメータ効率の高い微調整手法がいくつか提案されています。

LoRA(ラベル指向アテンティブ・ファインチューニング)は、ラベル関連のアテンションメカニズムを導入することで、モデルが予測ラベルに関連する情報により適切に焦点を合わせ、重要な情報を学習・抽出する能力を向上させる、広く用いられている手法です。この手法は、モデルのパフォーマンスと推論能力の向上において大きな成果を上げています。したがって、LoRAファインチューニングをモデルトレーニングに導入することで、モデルはラベル関連のテキスト情報をより深く理解・学習し、予測精度と汎化能力を向上させることができます。現在、LoRAはコンピュータービジョンにおける安定拡散法、自然言語処理におけるLlamaなどの主流のファインチューニング手法となっています。

LoRA(ラベル指向アテンティブ・ファインチューニング)は、独自のファインチューニング手法を提案します。これは、事前学習済みモデルのパラメータを固定し、低ランク行列の積を学習可能なパラメータとして元の重み行列にバイパスとして追加することで、パラメータの変動量をシミュレートする手法です。この手法は、微妙な調整によって下流のタスクのニーズに適応することを目指しています。

[図1]:LoRAの微調整方法

具体的には、左側のWはLLMの事前学習パラメータを表します。一般的な微調整プロセスでは、このWパラメータは学習の進行に伴ってW+ΔW+ΔWに更新されます。ここで、ΔWはΔW=BAに分解できます。

したがって、h=W+ΔW=W+BAh=W+ΔW=W+BAです。

順方向計算では、hx=(W+ΔW)x=(W+BA)xhx=(W+ΔW)x=(W+BA)xとなります。

つまり、左側のWWはLLMの事前学習済みパラメータを表し、固定されています。右側にはAAとBBという2つの行列が含まれており、下流のタスクに基づいて微調整されます。結果が得られた後、WWとBABAをマージして新しいモデルの重みを出力します。別のアプローチは、左側と右側のパラメータをマージするのではなく、推論中に両方のモデルを同時にロードし、並行して計算を実行し、結果を加算することです。この方法の革新性は、独自のパラメータ調整方法にあり、多数のパラメータを調整することなくモデルの重みの微調整を実現し、特定のタスクに対するモデルの適応性とパフォーマンスを向上させることを目指しています。ディープラーニングの分野において、LoRAは幅広い応用の見通しと可能性を示しています。

さらに、Hugging FaceはすでにPEFTライブラリ[4]をオープンソース化しており、このライブラリには直接呼び出せる多くの効率的なファインチューニング手法が含まれているため、独自のファインチューニングアルゴリズムを開発する必要がなくなりました。コードからわかるように、PEFTは様々な効率的なファインチューニング手法をサポートしており、Hugging Faceはよく使われるパラメータファインチューニング手法をカプセル化して提供しており、直接利用できます。PEFTライブラリにカプセル化された手法は以下の通りです。

 class PeftType(str, enum.Enum): """ PEFT のさまざまなタイプのアダプタの列挙クラス。サポートされている PEFT タイプ: - PROMPT_TUNING - MULTITASK_PROMPT_TUNING - P_TUNING - PREFIX_TUNING - LORA - ADALORA - BOFT - ADAPTION_PROMPT - IA3 - LOHA - LOKR - OFT - POLY - LN_TUNING """ PROMPT_TUNING = "PROMPT_TUNING" MULTITASK_PROMPT_TUNING = "MULTITASK_PROMPT_TUNING" P_TUNING = "P_TUNING" PREFIX_TUNING = "PREFIX_TUNING" LORA = "LORA" ADALORA = "ADALORA" BOFT = "BOFT" ADAPTION_PROMPT = "ADAPTION_PROMPT" IA3 = "IA3" LOHA = "LOHA" LOKR = "LOKR" OFT = "OFT" POLY = "POLY" LN_TUNING = "LN_TUNING" VERA = "VERA"

PEFTの公式ガイドラインによると、LoRAはあらゆるモダリティとモデルをカバーしており、様々なシナリオに適用できる汎用的な手法となっています。そのため、私たちは輸出店舗検索の翻訳を微調整するためにこの手法を採用しました。

ソース コードを見ると、独自のコードを書く必要はなく、呼び出すだけで次の主なカテゴリのタスクに LoRA を直接使用できます。

 class TaskType(str, enum.Enum): """ PEFTでサポートされる様々なタスクタイプの列挙クラス。サポートされるタスクタイプの概要: - SEQ_CLS: テキスト分類。 - SEQ_2_SEQ_LM: シーケンスツーシーケンス言語モデリング。 - CAUSAL_LM: 因果言語モデリング。 - TOKEN_CLS: トークン分類。 - QUESTION_ANS: 質問応答。 - FEATURE_EXTRACTION: 特徴抽出。下流タスクの埋め込みまたは特徴として使用できる隠れ状態を提供します。 "FEATURE_EXTRACTION"

3.3 NLLBモデルの微調整:データ

翻訳されたクエリをテキストマッチングで英語のアプリとマッチさせたいので、翻訳も英語のアプリの命名規則に近づけたいと考えています。例えば、次のようになります。

接続詞、修飾語、その他主観的でない語の使用を最小限に抑えましょう。例えば、「The digital wallet.」には不要な接続詞「the」が含まれており、ノイズの原因となる可能性があります。「digital wallet.」と翻訳した方が、テキストリコールの効率が上がります。

単語が複数の意味を持つ場合は、アプリ内でよく使われる単語を選ぶようにしてください。例えば、両方の単語が「ネットワーク接続なし」を意味する場合、「netless」ではなく「offline」と翻訳する必要があります。

この効果を実現するには、まず微調整用の特定のデータバッチを準備する必要があります。データ生成には、ChatGPT(GPT 3.5ベース)を使用しました。

1. 海外でアプリが運営されている国における露出度で上位 100 のアプリを選択します。

2. アプリのメインタグ名を入力し、表2の例に示すように、ChatGPTでヒンディー語、タイ語、またはベトナム語(英語とは大きく異なる言語)に翻訳します。「少数言語 - 英語」の翻訳ペアを構築し、モデルを微調整します。

表2: トレーニングデータの例

3.4 NLLBモデルの微調整:トレーニング

3.4.1 事前学習済みモデルの初期化

トランスフォーマーからインポートAutoModelForSeq2SeqLMモデル = AutoModelForSeq2SeqLM.from_pretrained("nllb/nllb-200-distilled-1.3B")

3.4.2 lora パラメータを設定し、get_peft_model() を使用してトレーニングする PeftModel を取得します。

 peft からインポート get_peft_model、LoraConfig、TaskType peft_config = LoraConfig( task_type=TaskType.SEQ_2_SEQ_LM、 inference_mode=False、 r=8、 lora_alpha=16、 lora_dropout=0.1、 target_modules=["q_proj", "k_proj", "v_proj", "out_proj", "fc_in", "fc_out", "wte"]、 ) lora_model = get_peft_model(model、 peft_config) lora_model.print_trainable_parameters() # トレーニング可能なパラメータ: 4718592 || すべてのパラメータ: 1375356928 || トレーニング可能%: 0.3430812688646303

3.4.3 通常のトレーニング方法に従ってトレーニングします。

学習パラメータの数は元の値の0.34%に削減されました。以前は並列学習に複数のGPUを必要としていたパラメータが、単一のGPU、あるいはCPUマシンでも学習できるようになりました。学習後、PeftModelは保存されます。

 lora_model.save_pretrained('nllb_lora_model')

3.5 NLLBモデルの微調整:推論

先ほど PeftModel モデルのみを保存したため、推論プロセス中にベース モデルと推論用の lora パラメータの両方を読み込む必要があります。

3.5.1 前述のベースモデルの初期化

トランスフォーマーからインポートAutoModelForSeq2SeqLMモデル = AutoModelForSeq2SeqLM.from_pretrained("nllb/nllb-200-distilled-1.3B")

3.5.2 保存された lora パラメータを取得して PeftModel 結果を取得します。

 Peft から PeftConfig をインポートします。PeftModel config = PeftConfig.from_pretrained("nllb_lora_model") lora_model = PeftModel.from_pretrained(model, "nllb_lora_model")

3.5.3 通常の推論方法に従って結果を出力します。

私たち自身の実験結果によると、LoRAは微調整が速く、計算リソースをほとんど必要とせず、非常に優れた結果をもたらします。ほとんどの場合、完全なパラメータ微調整と同等の効果が得られます。

 lora_model.generate( **encoded_text, forced_bos_token_id=tokenizer.lang_code_to_id["eng_Latn"] )

オープンソース テストに基づくと、LoRA は通常、パラメータの 1% 未満をトレーニングし、ほぼ完全なパラメータの微調整結果を達成できます。

3.6 微調整前後のNLLBモデルの比較

翻訳機能では、ソース言語での基本的なエラー修正と補完も実行できます。

例えば、ユーザーが「フリーゲーム」と入力した場合、実際の表現は「フリーゲーム」であるべきです。NLLB-200モデルによる翻訳後、正しい英語訳は「フリーゲーム」となります。これにより、テキスト、タグ、セマンティクスに基づいた後続の検索が容易になります。

不要な接続詞を減らすと、アプリケーション検索に適したより簡潔なクエリが生成されます。

元の翻訳は記事に基づいていたため、文章をより滑らかでエレガントに(そしてより長く)読みやすくするために、接続詞などの要素が多く含まれていました。しかし、アプリケーション名自体が短く、通常のクエリも1つか2つの短い単語で構成されているため、このアプローチはアプリケーション検索には適していません。そのため、長い文を翻訳することは、正しい結果の取得を妨げます。例えば、次のケースが挙げられます。

最初の結果を例に挙げると、「チャットゲームをプレイする」という翻訳の場合、「パーティーゲーム」という回答が多く表示されますが、これはユーザーのニーズに完全には一致しません。これは、クエリに多くの単語が含まれているためノイズが発生し、テキストマッチング処理で重要でない単語が一致してしまうためです。

そのため、モデルはアプリにできるだけ近い名前を翻訳する必要があります。「チャットゲーム」を翻訳すれば、クエリ全体が大幅に簡素化されます。その結果、ノイズが削減され、再現率も大幅に向上します。類似ラベルを介して「いたずらマスター」のような結果を見つけることも可能です。

アプリ名との一貫性を保つためのクエリの作成:特定の種類のアプリケーションには、共通の命名規則が存在します。例えば、シミュレーションゲームは通常「シミュレーション」または「シミュレータ」と呼ばれます。辞書は通常「単語」ではなく「辞書」と呼ばれます。発音アプリは通常「音節」ではなく「スペル」と呼ばれます。そのため、下流データを微調整することで、翻訳クエリをアプリ名に近づけることができます。

例えば、「モッキングゲーム」と翻訳するのは問題があります。なぜなら、実際に「モッキング」という言葉を名前に含むアプリケーションやゲームはごくわずかだからです。したがって、テキスト想起における主なキーワードが「ゲーム」である場合、ユーザーのニーズを満たすことは明らかに困難です。

しかし、「シミュレーションゲーム」を翻訳することができれば、学校シミュレーションやスライムシミュレーションなど、一連のシミュレーションゲームを見つけることができます。

IV. NLLB-200の翻訳結果をLLMのプロンプトとして利用する

GPT3.5とGPT4はどちらも英語を中心とした大規模言語モデルであることは間違いありません。一方、Wenxin Yiyan、Tongyi Qianwen、Doubao、Kimiは中国語を中心としたモデルです。

大規模言語モデルの学習には膨大なリソースが必要となるため、貧困に苦しむアフリカ諸国では、自国言語を中心とした大規模言語モデルの開発が困難です。では、これらの国々で中国語や英語を話さない人々は、大規模言語モデルのメリットを享受できないのでしょうか?答えは間違いなく「ノー」です。最近の研究では、ChatGPTやLlamaは、あまり話されていない言語のプロンプトを英語に翻訳した後、迅速に正確な結果を提供できることが示されています。

4.1 直接プロンプトと翻訳プロンプトの実践

今回は非常にニッチな言語、マオリ語(mri)を取り上げます。一般的に、Common Crawlなどの言語統計に基づき、1%を超える言語を高リソース言語、それ以下の言語を低リソース言語とみなします。統計によると、マオリ語の言語割合は0.0009%で、実に小さな言語です。次に、この低リソース言語をプロンプト実験に使用します。

入力:

コ・テ・ハンガ・イ・テ・コロカ・メ2ラカ・オ・テ・カカフ・ムカ・カフランギ・メ・テ・ハウルア・オ・テ・ヌイ・オ・テ・カカフ・ムカ・マ。 E hia katoa nga momo kakahu ka whakamahia kia rite ki te whakatakotoranga: 「ファカウトゥ:」。

ChatGPT出力:

キア・テア・テ・ハンガ・イ・テ・コロカ・メ・2・ラカ・オ・テ・カカフ・ムカ・カフランギ・メ・テ・ハウルア・オ・テ・ヌイ・オ・テ・カカフ・ムカ・マ、カ・テア・テ・ファカマヒア・イ・ンガ・モモ・カカフ・カトア・カ・リテ・キ・テ・ワカタコトランガ「ファカウトゥ:」。カ テア テ ファカマヒ、私はモモ カカフ ペネイ、テ カカフ ムカ、テ カカフ プカプカ、テ カカフ ララウ、私エタヒ アトゥ。コ・テ・テイク・ヘ・キア・リテ・テ・ファカマヒ・メ・テ・ファカリテ・イ・テ・ファカタコトランガ・キ・テ・ヒアヒア・オ・テ・タンガタ。

しかし、この回答は形式が間違っています。理解を深めるために出力を中国語に翻訳し直す​​と、回答の意味は次のようになります。

青い繊維布2束と白い繊維布の半分を使ってケープを作る場合、「答え:」の形式ではあらゆる種類の布を使用できます。これは、繊維布、本布、靴布など、さまざまな種類の衣服に適用されます。これは、ユーザーのニーズに応じて布を使用するためです。

この答えは全く無関係です。

一方、この問題を中国語コーパスを中心とした2つのモデル、Tongyi QianwenとChatGLM2に入力してみました。中国語コーパスを中心としたこれら2つのモデルは、この問題を理解し処理する能力がさらに低いことがわかります。

qwen-max-1201(人気のオンラインQ&Aプラットフォーム)の出力

コ・テ・ファカウトゥ・イ・トゥ・コレロ、ヘイ・アノ・テネイ:「タウ・アラピ」クア・ワカマヒア・ヘイ・タウイラ・モ・テ・ファカタコトランガ・オ・ンガー・モモ・カカフ。 Nā reira、ko te whakatakotoranga o ngā momo kakahu nei e rua ake atu ana ki te tauira o "Whakautu: "。

ChatGLM2-6B出力:

申し訳ございませんが、ご提供いただいたテキストには、私が回答すべき明確な質問やご要望が含まれていないようです。もう少し詳しい背景情報をご提供いただくか、何についてお知りになりたいのか、何についてお話ししたいのかを明確にしていただけますか?

しかし、これを中国語や英語に翻訳したらどうなるでしょうか?翻訳ソフトを使えば、次のメッセージを中国語に直接翻訳できます。

ローブを作るには、青い繊維布2反と白い繊維布の半分が必要です。布は全部で何反必要でしょうか?最終的な答えは「答え:<アラビア数字>」の形式で記入してください。

対応するChatGPT出力:

ローブを作るには、青い繊維生地2反と白い繊維生地の半分が必要です。全部で何反の生地が必要ですか?答え:3。

出力は繁体字ですが、理解には影響しません。答えは正しいです。同様に、このプロンプトをTongyi QianwenとChatGLM2に入力して確認してみましょう。Tongyi Qianwenが正しく答えられることがわかります。

qwen-max-1201(人気のオンラインQ&Aプラットフォーム)の出力:

答え:3頭の馬

ChatGLM2-6B出力:

答え: 4.5

英語に翻訳すると次のようになります。

To make a robe, two pieces of blue fiber and half of that amount of white fiber are needed. How many pieces of fabric does it take to make? You should format your final answer as "Answer:".

ChatGPT输出是:

To make the robe, it takes a total of 3 pieces of fabric.Answer: 3

同理,我们也把这个prompt 输入到通义千问和ChatGLM2 里面看一下。可以看到,此时通义千问依旧是可以正确回答的。ChatGLM 的回答错误可能是因为6B模型在推理上的不足。

通义千问qwen-max-1201输出:

To make a robe, we need 2 pieces of blue fiber and half of that amount of white fiber. Half of 2 is 1, so we need 1 piece of white fiber.In total, we need 2 pieces of blue fiber + 1 piece of white fiber = 3 pieces of fabric.Therefore, the answer is: Answer: 3.

ChatGLM2-6B输出:

Answer: 7

我们可以看到,一旦毛利语的prompt 先通过翻译,变成了高资源语种,比如中文或者英语,模型就能给出正确的答案,同时格式也能够满足我们的要求。

4.2 直接prompt 和翻译prompt 的效果

【图2】:各语种直接prompt &统一翻译成英语prompt 在ChatGPT 和Llama-2-70B-Chat 的表现

在论文中,研究人员提到,高资源语种翻译成英语之后再输入大模型,可能并不会有很大的提升,甚至还可能带来噪音,影响效果。但是,低资源语种,如果能够先翻译成高资源语种,然后再输入现在以高资源语种为中心的大模型,往往就能够取得不错的效果。

我们从【图2】也可以看出来,对于中文这种高资源语言,使用翻译之后,在ChatGPT 中效果还不如直接用中文prompt;而在Llama 中,将中文翻译成英语,然后再输入Llama,表现则要优于中文prompt,这可能是因为Llama 训练语料中的中文语料数量要远远ChatGPT 中的中文语料数量。

V. 要約と展望

使用LLM 生成的语料来微调特定任务的NLLB 模型是一个常见的做法,许多场景都在尝试利用LLM 的知识来更好地适应自己的任务。然而,LLM 生成的知识可能存在误导性,有时甚至可能与事实不符,因此在使用这些语料时,需要进行机器筛选或人工判断。

虽然机器翻译能提升以英语或中文等高资源语言为中心的LLM 在多语言NLP 任务中的性能,但并非适用于所有情境。对于需要深度语言理解及考虑文化差异的任务,使用母语提示常常更具有潜力,因为母语能更准确地捕捉文化和语言的微妙差别。因此,开发更多种类的多语言LLM 是非常必要的。

[参考資料]

[1] Costa-jussà MR, Cross J, Çelebi O, et al. No language left behind: Scaling human-centered machine translation[J]. arXiv preprint arXiv:2207.04672, 2022.

[2] Moslem Y, Romani G, Molaei M, et al. Domain terminology integration into machine translation: Leveraging large language models[C]//Proceedings of the Eighth Conference on Machine Translation. 2023: 902-911.

[3] Liu C, Zhang W, Zhao Y, et al. Is translation all you need? a study on solving multilingual tasks with large language models[J]. arXiv preprint arXiv:2403.10258, 2024.

[4] PEFT(https://huggingface.co/docs/peft/main/en/index)