GNMT - Google のニューラル ネットワーク翻訳システム

GNMT - Google のニューラル ネットワーク翻訳システム

1. はじめに

2016年9月、Googleはニューラルネットワークベースの翻訳システム(GNMT)をリリースし、GNMTが複数の主要言語ペアの翻訳で翻訳エラーを55%~85%以上削減したと主張し、この翻訳システムの技術的な詳細を論文(

Google のニューラル機械翻訳システム: ギャップを埋める

人間翻訳と機械翻訳の違い

)が展示されており、読んでとても勉強になりました。

II. 概要

一般的に言えば、NMT [ニューラルネットワーク翻訳システム] には通常、入力テキストを受け入れるための RNN [再帰ニューラルネットワーク] と、ターゲット文を生成するための RNN [再帰ニューラルネットワーク] の 2 つが含まれています。同時に、現在普及しているアテンションメカニズム [注意メカニズム] が導入され、長い文を処理する際のシステムの精度と効率が向上します。しかし、Google は、このようなニューラル ネットワーク システムには通常、次の 3 つの弱点があると考えています。

  • トレーニング速度が遅く、膨大な計算リソースを必要とします。パラメータ数が多いため、翻訳速度も従来のフレーズベース翻訳システム[PBMT]よりもはるかに遅くなります。
  • まれな単語の処理は非常に弱く、元の単語を直接コピーすることは、多くの場合、決して良い解決策ではありません。
  • 長い文を処理する場合、一部の単語が抜け落ちる可能性があります。

さらに、GNMTは上記の3つの問題を解決することに取り組んでいます。GNMTでは、RNNは残差接続を備えた8層ニューラルネットワーク(実際にはエンコーダーは9層、入力層は双方向LSTM)を使用します。残差接続は、勾配や位置情報などの特定の情報を伝達するのに役立ちます。同時に、アテンション層は、図に示すように、デコーダーの最下層とエンコーダーの最上層に接続されます。

GNMT構造図

  • 翻訳速度の問題を解決するために、Google は翻訳プロセスで低精度アルゴリズム (モデル内の一部のパラメータを 8 ビットに制限) と TPU を使用しました。
  • 使用頻度の低い単語をより適切に処理するために、Google は入力と出力でサブワード単位(ワードピースとも呼ばれる)を使用します(たとえば、「higher」を「high」と「er」に分割し、個別に処理します)。
    *ビームサーチでは、Google は長さの正規化とカバレッジ ペナルティを追加して、翻訳プロセス中に生成されるさまざまな長さの文の処理をより効率的にし、モデル内での翻訳漏れの数を減らしました。

Google は、多くの改良を重ねた結果、英語とフランス語、英語と中国語、英語とスペイン語など複数の言語ペアにおけるエラー率が以前の PBMT システムに比べて 60% 減少し、平均的な人間による翻訳レベルに近づいたと主張しています。

次に、魔法の GNMT モデルの詳細を詳しく見てみましょう。

3. モデル構造

上の図に示すように、GNMT には通常のモデルと同様に、エンコーダー、デコーダー、アテンション ネットワークの 3 つのコンポーネントがあります。エンコーダーは入力文を一連のベクトルに変換します。各ベクトルは元の文の単語を表します。デコーダーはこれらのベクトルと独自に生成した単語を使用して次の単語を生成します。エンコーダーとデコーダーはアテンション ネットワークを介して接続されており、これによりデコーダーはターゲット単語を生成するときに元の文のさまざまな部分に焦点を当てることができます。

さらに、予想通り、翻訳システムの精度を高めるには、エンコーダーとデコーダーの RNN ネットワークが十分に深く、簡単には気づかない元の文章とターゲットの文章の詳細を取得できる必要があります。Google の実験では、レイヤーを追加するごとに PPL が約 10% 減少します。

モデル内の注意メカニズムに関しては、次の式を使用して計算します。

注意の公式

実は、ここで質問があります。*** の a i はベクトルですか?繰り返しますが、スカラー (数値) です。式からするとスカラーのようですが、私のこれまでの理解では、attention は入力文の単語数と同じ長さのベクトルです。

3.1 残留接続

前述のように、多層に積み重ねられた LSTM ネットワークは、通常、層の少ないネットワークよりもパフォーマンスが優れています。ただし、単純なスタッガード スタッキングではトレーニングが遅くなり、勾配爆発や勾配消失の影響を受けやすくなります。実験では、単純なスタッキングは 4 層でうまく機能し、6 層でパフォーマンスが良好なネットワークはまれであり、8 層はさらにまれです。この問題を解決するために、図に示すように、残差接続がモデルに導入されます。

残余接続図

i 番目の層の入力と i 番目の LSTM の隠れ状態は、i+1 番目の LSTM の入力として使用されます。

残差接続のない LSTM 図

残差接続付き LSTM 図

3.2 エンコーダの双方向LSTMの第1層

文章の翻訳に必要なキーワードは、原文のどこにでも現れる可能性があり、原文の情報は右から左に並んでいる場合もあれば、原文のさまざまな位置に散らばって分離している場合もあります。原文からより包括的な情報を取得するには、双方向 RNN が適切な選択肢となる可能性があります。この記事のモデル構造では、双方向 RNN はエンコーダーの最初の層でのみ使用され、残りの層は依然として単方向 RNN です。

双方向 RNN 図

ご覧のとおり、ピンクの LSTM は文を左から右に処理し、緑の LSTM は右から左に処理します。2 つの出力は最初に連結され、次に次のレイヤーの LSTM に渡されます。

3.3 モデルの並列トレーニング

このセクションでは、主にトレーニング中にモデルを高速化するいくつかの方法を紹介します。

Google は、データ並列処理とモデル並列処理の両方を使用してトレーニングを高速化します。データ並列処理は非常に直接的で、モデルを n 個のコピーにコピーして展開します。各コピーのパラメータは共有され、各コピーはバッチ形式でトレーニングされます。つまり、バッチ サイズの文が同時にトレーニングされます。 Google の実験では、n は通常 10、バッチ サイズは通常 128 であり、その後 Adam および SGD メソッドを使用してパラメータが更新されます。

実験では、データの並列処理に加えて、モデルの並列処理も使用されています。つまり、上の図に示すように、ネットワークの各層は GPU 上に展開されます。このようにして、双方向 RNN のエンコーダーの最初の層が計算された後、現在のタイム ステップが完全に完了するのを待たずに次のタイム ステップを開始できます。並列コンピューティングにより、トレーニングが高速化されます。

双方向 RNN をすべてのレイヤーで使用しない理由は、そうすると、前方情報処理用と後方情報処理用に 1 つずつ、合計 2 つの GPU しか使用できず、並列計算の効率が低下するため、トレーニング速度が大幅に低下してしまうためです。

注目部分では、並列計算の効率を最大化するために、エンコーダの出力層がデコーダの最下層と揃えられます(出力テンソルの緯度は一貫している必要があるというのが私の理解です)。 (具体的な原理はまだよくわかりません)。

4. データ前処理

ニューラルネットワーク翻訳システムは、通常、操作中に単語数が限られた辞書を持っていますが、無数の単語に遭遇し、OOV(語彙外)問題を引き起こす可能性があります。これらの未知の単語は通常、日付、名前、地名などであるため、簡単な方法はこれらの単語を直接コピーすることです。明らかに、これは非名前やその他の単語を扱う場合の最善の解決策ではありません。Googleのモデルでは、サブワードユニットとも呼ばれるより優れたワードピースモデルが使用されています。たとえば、「Turingの専攻はNLPです。」という文では、WPMモデルで処理された後、「Turingの専攻はNLPです。」になります。また、名前などの単語を直接コピーするために、ソース言語とターゲット言語はワードピースモデルを共有します。WPMは、単語の柔軟性と正確さのバランスが取れており、精度(BLEU)も向上し、翻訳速度も速くなります。

5. 研修基準

一般的に言えば、N 組の文の中で、次の式を最適化することがトレーニングの目標です。

対応する入力が与えられたときの正解出力の対数確率

しかし、ここで問題があります。翻訳の BLEU 値は、一文の翻訳の品質に対する報酬と罰を反映できません。さらに、モデルはトレーニング中に誤った翻訳を見たことがないため、モデルの BLEU 値が高くても、それらの誤った文の確率は依然として高くなります。そのため、上記の式では、翻訳内の誤った文を明確に罰することはできません。 (原論文のこの部分を完全に理解しておらず、疑問に思っています。)

そのため、モデルをさらに改良する必要があります。ただし、BLEU値は2つのコーパスに対する評価基準であり、単一の文の評価への影響は理想的ではありません。そのため、GoogleはGLEU値を提案しました。GLEU値の一般的な意味は、ターゲット文と翻訳文のnグラム数(n = 1、2、3、4)をそれぞれ計算し、2つのセットの交差部分のサイズと元のセットのサイズの比率を計算し、小さい方の値を取ることです。

GLEU 値を計算するのに Python を使用しました。コードは次のとおりです。

  1. get_ngrams(s,maxn)を定義します:
  2. nグラム = {}
  3. サイズ = 0  
  4. nが範囲( 1 ,maxn+ 1 )内である場合:
  5. i が範囲( 0 、len(s))内にある場合:
  6. jが範囲(i+ 1 、最小(i+n+ 1 、len(s)+ 1 ))内である場合:
  7. nグラム = ''  
  8. s[i:j]内の単語の場合:
  9. ngram += 単語
  10. nグラム += ' '  
  11. ngram = ngram.strip()
  12. ngramがngramsにない場合:
  13. nグラム[nグラム] = 1  
  14. サイズ += 1  
  15. サイズ、ngramを返す
  16. get_gleu を定義します(orig,pred,n= 4 ):
  17. orig_ = orig.split( ' ' )
  18. pred_ = pred.split( ' ' )
  19. n_orig、ngrams_orig = get_ngrams(orig_、n)
  20. n_pred、ngrams_pred = get_ngrams(pred_、n)
  21. カウントマッチ = 0  
  22. ngrams_origのvの場合:
  23. vがngrams_predにある場合:
  24. カウントマッチ += 1  
  25. min(count_match/n_orig,count_match/n_pred)を返す

したがって、改良後のモデルの評価基準は次のようになります。

改良最大尤度

r(Y, Y (i))はGLEU値の計算部分です。 GLEU は、単一文評価における BLEU の欠点を克服します。この実験では、BLEU 値でうまく機能します。

トレーニングをさらに安定させるために、Google はトレーニング基準の線形結合を作成しました。これは次の式になります。

混合最大尤度

トレーニング中、αは0.017に設定されました。

実際のトレーニングプロセスでは、まず O ml 標準トレーニングを使用してモデルを収束させ、次に O mixd 標準を使用してモデルのパフォーマンスをさらに向上させます。

6. 定量化可能なモデルと翻訳における定量化

(正直に言うと、原文の「Quantizable Model and Quantized Inference」をどう訳したら良いのか分かりません。)

この部分では主に、モデルが深く、計算量が多いため、翻訳プロセスでいくつかの問題が発生するため、Google はモデルの収束と翻訳効果に影響を与えずに一連の最適化対策を講じていることについて説明します。

残差接続のあるLSTMネットワークでは、時間方向のcitと深さ方向のxitという2つの値が継続的に転送され計算されます。実験では、これらの値は非常に小さいことがわかりました。エラーの蓄積を減らすために、これらの値は変換プロセス中に[-δ、δ]に明確に制限されます。したがって、元のLSTM式は次のように調整されます。

6.1 修正された方程式

6.2 完全なLSTM計算ロジック

翻訳プロセス中に、Google は式 6.1 と 6.2 のすべての浮動小数点演算を 8 ビットまたは 16 ビットの固定小数点整数演算に置き換え、重み W は次のように 8 ビットの整数として表現されました。

重量調整W

すべてのc i tとx i tは範囲[-δ, δ]に制限され、16ビットの整数で表されます。

6.2 の行列乗算 (例: W 1 x t ) では、代わりに 8 ビット固定小数点整数乗算が使用され、シグモイド、tanh、ドット積、加算などの他のすべての演算では、代わりに 16 ビット整数演算が使用されます。

デコーダーRNNの出力がy t であると仮定すると、ソフトマックス層では確率ベクトルp t は次のように計算されます。

修正確率ベクトル計算式

ロジットv t 'は[-γ,γ]に制限され、式6.2の重みW sと重みWも8ビットの整数で表され、計算プロセス中に8ビットの行列乗算が使用されます。

ただし、ソフトマックス層とアテンション層では量子化対策は講じられません。

c i t と x i t を [-δ, δ] に制限し、logit v t ' を [-γ, γ] に制限することを除いて、トレーニング プロセス全体で完全精度の浮動小数点数が使用されることに注意する必要があります。このうちγは25.0に設定され、δはトレーニング開始時に8.0に設定され、その後徐々に1.0に変化します。 (変換時はδを1.0として扱います。)

ログの困惑度とステップ数

赤い線は量子化対策によるトレーニングプロセスを表し、青い線は通常のトレーニングを表しています。追加の計画対策としていくつかの値を特定の範囲に制限すると、モデルの品質が向上することがわかります。

7. デコーダー

翻訳プロセスでは、従来のビーム検索アルゴリズムが使用されましたが、GNMT では α 値と β 値という 2 つの重要な最適化スキームが導入されました。

  • α値の役割は、翻訳文の長さを正規化することです。なぜなら、文章を選択する可能性は、劇中の各単語の確率の対数を取って足し合わせることで得られるからです。これらの対数確率はすべて負の値です。したがって、ある程度、長い文章では対数確率が小さくなりますが、これは明らかに不合理です。したがって、翻訳文の長さを計画する必要があります。
  • β 値の役割は、翻訳を逃さずに文全体をより適切に翻訳するようにモデルを促すことです。

αとβの値に適用できる式

ここで、s(Y,X)は翻訳の最終スコアを表し、p i jはj番目の単語を翻訳する際のi番目の単語の注目度値を表します。

Google は記事の中で、次の 2 つの最適化方法についても言及しています。

まず、各ステップでは、ローカルスコアが

このステップのベストトークンよりビームサイズ以下である。次に、正規化されたベストスコアが

式14によれば、ビームサイズよりも大きいすべての仮説を最良値より下回るものから切り捨てる。

えーと、実はこれが従来のビームサーチアルゴリズムとどう違うのかよく分かりません。どなたかアドバイスを頂ければ幸いです。 。 。

En-Frコーパスにおける異なるα値とβ値がBLEUスコアに与える影響

αとβの値が0の場合、長さ計画とカバレッジペナルティを実行しないことに相当し、アルゴリズムは最も元のビーム検索アルゴリズムに戻ります。上記のBLEUを獲得したモデルは、MLのみを使用してトレーニングされたわけではなく、RL最適化も使用されていないことに注意してください。 RL の改良により、モデルがミスしたり過剰翻訳したりしないように強制されるからです。

En-FrコーパスでMLとRLの最適化によって得られたBLEU値の比較

Google の実験では α=0.2、β=0.2 でしたが、私たちの実験では、α=0.6~1、β=0.2~0.4 で中国語から英語への翻訳でより良い結果が得られます。

実験プロセスと結果

実験結果の比較

モデル部分は基本的に紹介しました。残りの第8回では、実験の様子と実験結果の写真を掲載します。今後も随時追加していきます。次の記事では、Facebookが公開しオープンソース化した、GNMTよりも優れていて高速であると主張されているFairSeqモデルを紹介する予定です...

論文で言及されているが使用されていない方法

OOV 問題に対処するもう 1 つの方法は、まれな単語をマークすることです。たとえば、Miki という単語が辞書に載っていないとします。マークすると、<B> M <M> i <M> k <E> i になります。このようにして、まれな単語は翻訳プロセス中に特別な記号に置き換えられます。

<<:  ビッグデータアルゴリズムのジレンマ

>>:  適切な場所で機械学習は革命をもたらすだろう

ブログ    
ブログ    

推薦する

Java プログラミング スキル - データ構造とアルゴリズム「多方向検索ツリー」

[[391530]]二分木問題の分析バイナリツリーは動作効率が高いですが、問題点もあります。次のバ...

...

Appleがニュース編集者を雇っているにもかかわらず、アルゴリズムがあなたが読むものを決定する

[[137024]]読むものを決めるのがメディアではなく、モバイル アプリケーションやソーシャル ネ...

古典的な論文を実装するための60行のコード:ポアソンディスクサンプリングを完了するのに0.7秒、Numpyよりも100倍高速

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

RangePerception: Range View3D 検出への新しいアプローチ!

この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...

2018 年に人工知能を変える 5 つのビッグデータ トレンド

ビッグデータや人工知能の広範な導入を通じて、これらの新興技術の大きな影響が世界経済に浸透するにつれ、...

Linux環境で仮想化技術を使用する方法

仮想化テクノロジーは、物理ホストが複数の仮想コンピューティング環境を同時に実行できるように、コンピュ...

...

DeepMind、ロボットの物体積み重ね能力を向上させるための新たなベンチマークを提案

ほとんどの人にとって、あるオブジェクトを別のオブジェクトの上に重ねることは簡単な作業です。しかし、最...

...

音声認識、マッチングアルゴリズム、モデルに関する簡単な説明

[[185868]]スピーチの基本概念スピーチは複雑な現象です。それがどのように生成され、どのように...

75歳のヒントン氏が再び警告:AIが人間を支配するかもしれない!

10月9日、ヒントン氏は「60 Minutes」のインタビューを受け、人工知能が人間を支配するかも...

ルカン、アンドリュー・ン、その他370人以上が共同書簡に署名:AIの厳格な管理は危険、オープン化がその解毒剤

近年、AIをどのように監督するかについての議論はますます白熱しており、有力者の意見も大きく異なってい...

OpenAI、ChatGPTのトレーニングで何百万ものユーザー情報を盗んだとして訴訟

有名モデルChatGPTの進路に、ちょっとした紆余曲折が訪れ始めた。カリフォルニアに拠点を置く法律事...

マイクロソフトは、Power Platform 向け Copilot サービスの開始を正式に発表しました。これにより、AI によるアプリ開発が一文で可能になります。

マイクロソフトは10月27日、エンタープライズアプリケーションカンファレンスにおいて、ローコードプラ...