生成言語モデルのみから教師なし学習で機械翻訳を実現する!
3つの要点
✔️ 単一言語で学習されただけの言語モデルから、機械翻訳機能を導き出す
✔️ 逆翻訳によって翻訳例を作り出す
✔️ 翻訳例を増幅させてデータセットを合成する
AutoFormer: Searching Transformers for Visual Recognition
written by Jesse Michael Han, Igor Babuschkin, Harrison Edwards, Arvind Neelakantan, Tao Xu, Stanislas Polu, Alex Ray, Pranav Shyam, Aditya Ramesh, Alec Radford, Ilya Sutskever
(Submitted on 11 Oct 2021)
Comments: Published on arxiv.
Subjects: Computation and Language (cs.CL); Artificial Intelligence (cs.AI)
code:
本記事で使用している画像は論文中のもの、紹介スライドのもの、またはそれを参考に作成したものを使用しております。
はじめに
教師なしニューラル機械翻訳では、弱い翻訳モデルをブートストラップしてから、逆翻訳によって翻訳能力を増幅する等の手法があります。この研究では、既存の教師なしニューラル機械翻訳研究をさらに単純化し、生成言語モデルのみを使用します。事前トレーニングされた言語モデルのみを使用して、最先端の教師なしニューラル機械翻訳を導出出来る事を示します。
BACKTRANSLATION
逆翻訳(Backtranslation)は、ターゲットからソースへの翻訳モデルから、合成したソースからターゲットへのデータをサンプリングする事により、ターゲット側の単一言語データを使用するデータ拡張の方法として導入されました。
この研究では、機械翻訳を言語モデリングタスクとして捉え、ソースからターゲットへの翻訳と、ターゲットからソースへの翻訳の両方について、単一の言語モデルから共同で学習およびサンプリングします。
言語L1,L2の bitext <seq1, seq2>が与えられた時、翻訳タスクを以下の様に定式化します。
[L1] <seq1> [[TRANSLATE]] [L2] <seq2>
テスト時には、言語モデルには[L1] <seq> [[TRANSLATE]] [L2]を入力し、出力から候補翻訳<sampledSeq>を解析します。逆翻訳は、seq,とsampledSeqを逆にしてbitext〈sampledSeq、seq〉をfine-tuning する事で実装します。双方向の翻訳に同一の言語モデルを使用する事に注意してください。
順方向と逆方向の両方の翻訳に単一の言語モデルを使用し、反復ごとに共同で両方向にトレーニングします。逆翻訳を使用してモデルをトレーニングするには、さまざまな方法があります。
アルゴリズム1は、生成言語モデルpθを用いた逆翻訳の実装です。
pθは、書式化された
([L1] <seq1> [[TRANSLATE]] [L2]) から
([L1] <seq1>[[TRANSLATE]] [L2] <seq2>) を
完成させるように既に学習されているとします。
この逆翻訳を完了するには、そのような言語モデルを用意する必要があります。ここでは、インターネットの大規模データで学習されたGPT-3ファミリーの言語モデルを使用します。 大規模な生成的言語モデルは、強力なコンテキスト内メタラーニング能力を持つ事が知られています。その内2つの特殊なケースは、(1)指示に従う事(2)few-shotプロンプトです。
大規模言語モデルは、タスクにおける詳細な自然言語記述のから恩恵を受けるため、文脈内の例を示す事で、様々なタスク(質問応答、推論、翻訳)で強力なパフォーマンスを実現出来ます。事前トレーニングされたモデルのfew-shot翻訳機能を、逆翻訳のためのzero-shot形式に適合させる必要がありますが、これは2段階のプロセスで行います。 まず、GPT-3から少数のzero-shot翻訳をサンプリングします。
srcLangとtgtLangのbitext<srcSeq、tgtSeq>、および停止シーケンス<sep>が与えられた場合、zero-shotプロンプトには次の形式を使用します。
<sep> Given the following passage in <srcLang>: <sep> <srcSeq> <sep> a good <tgtLang> translation is: <sep> <tgtSeq> <sep>.
テスト時には、ストップシーケンス<seq>が検出されるまでサンプリングし、全体を通して、<sep>を\n---\nに設定します。このzero-shot変換をfew-shotプロンプトとして使用して、より小さなモデルから大きな合成データセットをサンプリングする事により、翻訳を増幅します。
次に、bittextでfine-tuningする事で、このタスクに沿った言語モデルを作成します。
ブートストラップを以下の様に実装します。
1 大規模コーパスで言語モデルpθ(・) を生成的に事前学習
2 few-shotプロンプト用に、別の言語モデルq(・)からzero-shotされたNS合成ターゲット側変換とNSターゲット側変換のプールをサンプリングします。
NS(またはNT)からランダムに抽出されたk個のショットの例を使用して、ソース側コーパスMS(またはターゲット側コーパスMT)を使用して、pθ(・)からCS合成ターゲット側翻訳(またはCT合成ソース側翻訳)をサンプリングします。
3 (プロンプト、サンプル翻訳)データを再フォーマットし、これらのデータの言語モデルpθ(・)をfine-tuningします。
4 全てのデータを逆にし、逆翻訳(サンプル翻訳、プロンプト)で言語モデルpθ(・)のfine-tuningを続けます。
なぜ増幅と抽出なのか?
few-shotプロンプトは柔軟性があり、生成的モデルから様々なタスクで能力を引き出す事が出来ますが、その利点は、大規模データによる大きなモデルで最も顕著に現れます。
zero-shot形式に合わせたまま、few-shot能力を維持する方法で言語モデルを繰り返しfine-tuningする方法は不明なままです。few-shot増幅により、教師なしでブートストラップデータを生成出来ます。蒸留によって反復的な逆変換が可能になる一方、few-shotがより小さなモデルpθ(・)を促すことにより、GPT-3自体からのfew-shotサンプリングのオーバーヘッドを回避出来る可能性があります。
実験
実験では、よく知られた WMT14 英語-フランス語 ベンチマークに焦点を当てます。
Algorithm 1では、半分の英語テキストと半分のフランス語テキストのみを使用して、ソースMSとターゲットMTを取得します。この時ソースとターゲットの暗黙的な文レベルの配置を回避します。逆翻訳の各反復で、どちらかの方向に100万の翻訳をサンプリングします。 特に指定がない限り、ブートストラップの後に逆変換を40回繰り返し、最終モデルを使用してBLEUを計測します。
ブートストラップを実装するために、さらに2048のトレーニング例を用意し、GPT-3からゼロショットの(英語-フランス語)1024例(または(フランス語-英語)1024例)の翻訳をサンプリングして、few-shotプロンプトとして使用します。few-shot増幅中に、それぞれ400万の初期ターゲット側とソース側の翻訳をサンプリングします。順方向の2つのエポック(蒸留)と逆方向の2つのエポック(初期逆変換)をfine-tuningします。
ブートストラップ中に、単一モデルからサンプリングし、それを模倣するようにトレーニングしてから、独自の数ショットのプロンプト世代を逆変換します。これらの実験では、few-shotのデモンストレーション自体がGPT-3によってzero-shotで生成されます。次に、前述した反復逆変換手順が続きます。この方法を、GPT-3ファミリーの、125M、350M、760M、1.3Bパラメーターモデルに適用します。
先行研究では、英語の事前学習モデルは、英語から別言語に翻訳するよりも、英語へ翻訳する方がはるかに優れた性能を発揮する事が分かっています。
興味深い事に、僅かなfew-shotプロンプトデータでたった2エポックの逆翻訳を行った後、精度は逆転し、全てのモデルが(フランス語-英語)BLEUよりも大幅に高い(英語-フランス語)BLEUを達成します。これは、モデルがフランス語に関する知識が不足している訳では無く、単にずれている事、そして英語からの翻訳に関する潜在的な知識が逆翻訳を使用して表面化出来る事を示唆しています。それに関連して、逆翻訳ラウンドでの高品質サンプルは、次の逆方向翻訳をトレーニングするための高品質の合成bitextに繋がります。
最良モデル(自己増幅GPT-3で蒸留された1.3Bパラメーターモデルとそれに続く40ラウンドの逆翻訳)によるBLEUスコアを、WMT14英語-フランス語ベンチマークでの教師なしニューラル機械翻訳の先行研究と比較します。
まとめ
強化学習のような逆翻訳は、単に計算とデータを交換する方法である事に注意してください。この研究は、最近のデータ駆動型アーキテクチャエンジニアリングの一部と見なす事が出来ます。
ここでは、タスク固有の誘導バイアスが、モデルにハードコーディングされるのではなく、トレーニングデータに組み込まれ、トレーニングデータから学習されます。言語モデリングの観点から翻訳タスクを定式化すると、エンコーダ-デコーダアーキテクチャによって課せられる入出力誘導バイアスを迅速なフォーマットでシミュレートできる事が分かります。この研究では機械翻訳のみに焦点を当てましたが、この方法は、順方向と逆方向が次のような系列間タスクに適用出来ます。
(1)自己回帰デコーダーのみのトランスフォーマーによって共同で学習可能であり、
(2)大規模な生成的事前学習後のfew-shotプロンプトに対応出来る
逆翻訳は単に逆自己トレーニングであり、基本的に翻訳タスクに結び付けられていません。 今後は翻訳以外の、トランスフォーマーアーキテクチャの一般的なアプリケーションでの研究をお勧めします。
この記事に関するカテゴリー