Universal Transformerを用いて翻訳を超える

  • 2018.08.17
  • AI
Universal Transformerを用いて翻訳を超える

1.Universal Transformerを用いて翻訳を超えるまとめ

・機械翻訳で圧倒的な性能を示したTransformerをより汎用的にしたUniversal Transformerの解説
・複数の解釈ができる曖昧な単語をより深く調べるように動的に動作を変更する事ができる
・Transformerは翻訳以外の作業は不得意だが、Universal Transformerは様々な作業に応用できる

2.Transformerをより汎用的にしたUniversal Transformer

以下、ai.googleblog.comより「Moving Beyond Translation with the Universal Transformer」の意訳です。

昨年、我々は既存の機械翻訳や、その他の自然言語を扱う既存のアルゴリズムよりも顕著な成功を収めた新しい機械学習モデルであるTransformerをリリースしました。

Transformer以前のニューラルネットワークに基づく機械翻訳アプローチの大半は、文章の先頭から順番に処理をしていました。これはRNN(リカレントニューラルネットワーク)を利用しているためであり、RNNは文章を先頭から順番に翻訳をします。なぜなら、ある文を翻訳した結果を続く文を翻訳する際にインプットに利用するからです。これにより前後の単語だけでなく、前の段落の文脈を捉えて翻訳する事が可能になり、 RNNは文書のような連続する処理(シーケンス処理)において非常に強力ですが、その逐次性は、長い文章ではより多くの処理ステップと時間が必要となり、またそれらの繰り返し構造は人工知能を適切に学習させる事を大変困難にさせます。

RNNベースのアプローチとは対照的に、Transformerでは全ての単語またはシンボルを並列に処理しながら、セルフアテンションメカニズムを使用して、離れた位置の文章から文脈を組み込む事ができます。並行して全ての単語を処理しつつ、複数の処理ステップにわたって各単語を文中の他の離れた単語の解釈時に入力情報として関与させることで、Transformerはリカレント(再帰)モデルよりもはるかに速く訓練することができます。

注目すべきことに、Transformerによる翻訳結果はRNNの翻訳結果よりずっと優れていました。しかしながら、より小さく構造化された言語を理解する作業、またはもっとシンプルな文字列のコピー(例えば、「abc」の入力を「abcabc」に変換するなど)といった単純なアルゴリズムタスクでさえ、トランスフォーマはあまりうまく機能しません。対照的に、Neural GPUやNeural Turing Machineなどの既存のアプローチは前述のようなシンプルなタスクでは上手く動作しますが、翻訳のような大規模な言語理解タスクでは上手く動作しません。

論文「Universal Transformers」では、私たちは標準のTransformerを、斬新で効率的なparallel-in-time recurrenceを使用し、計算的に様々なタスクに応用できるチューリング完全なUniversal Transformersに拡張します。

我々は、Transformerの速い訓練速度を維持するために並列構造を構築しましましたが、Transformerの異なる変換関数を複数のparallel-in-time recurrentな変換関数に置き換えました。(下図のように同じ変換関数が、複数の処理ステップにわたって並列に、全てのシンボルに適用され、各ステップの出力が次のステップの入力に使用されます)

重要なことは、RNNがシンボルを順次処理するケースで、Universal Transformerは全てのシンボルを(Transformerのように)同時に処理します。しかし同時にUniversal Transformerはセルフアテンションを使用して平行に複数回、再帰的に反復処理を行い、各シンボルの解釈を改善します。このparallel-in-time recurrenceメカニズムは、RNNで使用されている順次処理する再帰的メカニズムよりも高速であり、Universal Transformer を標準的なフィードフォワードTransformerより強力にします。

Universal Transformerは、セルフアテンションを使用して異なる位置からの情報を結合し、反復遷移関数を適用することによって、シーケンスの各位置について一連のベクトル表現(h1~hmとして示される)を繰り返して品質を向上します。矢印は操作間の依存関係を示します。

各ステップでは、オリジナルのTransformerと同様に、セルフアテンションを使用して、各シンボル(例えば、文中の単語)から他の全てのシンボルに情報が伝達されます。しかし、この変換が各記号に適用される回数(すなわち反復段階の数)は、事前に手動で設定(たとえば、固定数または入力長に設定することもできます)、またはUniversal Transformer自体によって動的に決定することもできます。

後者の機能を実現するために、各位置に適応計算メカニズムを追加しました。このメカニズムにより、あいまいなシンボルやより多くの計算を必要とするシンボルに、より多くの処理ステップを割り当てることができます。

これがどのように役立つかの直感的な例として、「私は川を渡ってbankに到着しました」という文章を考えてみましょう。(注:bankは、「銀行」、「土手」、「堤防」、「岸辺」、「海浜」、「塚」などに解釈できます)この場合、「bank」という言葉の意味は「I」または「river」などの曖昧でない単語と比べて、より多くの推測が行われる必要があります。

従来のTransformerを使用してこの文章をエンコードすると、各単語に無条件に同じ量の計算が適用されてしまいます。しかし、Universal Transformerの適応メカニズムは、モデルがより曖昧な言葉にのみ計算量を増やしてより正確な推測を試みる事を可能にします。

例えば単語「bank」の意味を厳密にするためにより多くの計算ステップを使用して追加的な文脈情報を統合する事ができます。その計算コストは、あいまいさが少ない言葉には計算ステップを費やさない事で確保できます。

最初は、Universal Transformerが入力を処理するために単一の関数を繰り返し適用する事が制限のように見えるかもしれません、特に異なる機能に異なる関数を適用する標準のトランスフォーマーと比較した場合は。しかし、1つの関数を繰り返し適用する方法を学ぶことは、アプリケーションの数(処理ステップの数)が可変になることを意味し、これが重要な違いです。

上で説明したように、Universal Transformerがより曖昧なシンボルに多くの計算を適用できるようにすること以外に、モデルは、入力の全体サイズ(長いシーケンスの場合はより多くのステップ)で関数アプリケーションの数を増減するか、トレーニング中に学習された他の特性に基づいて入力の任意の部分に改良を適用することがよくあります。これにより、Universal Transformerは、入力のさまざまな部分に異なる変換を適用することを効果的に学ぶことができ、理論的な意味でもより強力になります。これは、標準のTransformerでは実行できないことです。標準のTransformerでは学習済み変換ブロックが1回だけ適用されるためです。

しかし理論的にパワーが増加することは望ましい事ですが、私たちは実証的なパフォーマンスにも気をつけています。私達は実験でUniversal Transformerが文字列のコピーや逆順にソート、整数加算などをTransformerやRNNよりはるかに上手に学ぶことができることを確認しています。さらに、多様な言語タスクを理解するために、Universal TransformerはbAbI linguistic reasoning task とLAMBADA language modeling taskに挑戦し、最新のスコアを達成しました。

しかしおそらく最も興味深いのは、Universal Transformerは、同じトレーニングデータで同じ方法で訓練された同じ数のパラメータを持つ従来のTransformerに対して、0.9 BLEUだけ翻訳品質を向上させたことです。これはと、元のTransformerは昨年発表されたときに従来の機械翻訳モデルより2.0 BLEUのスコア改善を達成したのですが、それに更に約50%の相対的な改善を追加した事になります。

Universal Transformerは、このように、「実用的なシーケンスモデル(機械翻訳などの大規模な言語理解モデル)」と「計算上ユニバーサルなモデル(Neural Turing MachineやNeural GPUなどの勾配降下法を使って任意のアルゴリズムを実行することができるモデル)」とのギャップを埋めます。

私達は、最近のparallel-in-time sequence modelsを開発して計算量と再帰処理の深さを高める事、及び、ここで紹介した基本的なUniversal Transformerにさらなる改良を加えてより強力でよりデータ効率の良い学習アルゴリズムを構築する事、それらが、現在の最先端技術を超えた学習アルゴリズムの一般化に繋がる事に情熱を燃やしています。ここで紹介する基本的なユニバーサルトランスフォーマーのさらなる改良が、より多くの学習アルゴリズムを構築するのに役立つことを願っています強力で、より多くのデータを効率的に使用し、現在の最先端技術を超えて一般化されています。

もし、皆さんがこれを自分で試したいのであれば、Universal Transformerの学習と評価に使用されるコードは、オープンソースとしてTensor2Tensorリポジトリで公開されています。

謝辞
この研究は、Mostafa Dehghani、Stephan Gouws、Oriol Vinyals、Jakob Uszkoreit、およびŁukaszKaiserによって行われました。実り多いコメントとインスピレーションのため、Ashish Vaswani、Douglas Eck、David Dohanに感謝します。

3.Universal Transformerを用いて翻訳を超える感想

やっている事自体は人間が翻訳時に無意識にやっている事の真似で「曖昧な単語について前後の文脈を見て何度も意味を推測する。曖昧でない単語は特に注目せずにさっと翻訳する」だけの話なのですが、それを実現している所が凄いですね。

「チューリング完全」である事のインパクトがまだイマイチ飲み込めていませんが、応用範囲が一気に広がりそうだという期待感は凄いです。

4.Universal Transformerを用いて翻訳を超えるまとめ

1)ai.googleblog.com
Moving Beyond Translation with the Universal Transformer

2)arxiv.org
Universal Transformers

3)github.com
universal_transformer.py