feature image

2018年9月15日 | ブログ記事

論文の紹介【Universal Transformers】

この記事は2018年夏のブログリレー9/15の記事です。

はじめに

こんにちは、hukuda222です。今日は私ときんいろモザイクの小路綾ちゃんの誕生日です。実にめでたい日です。ところで、きんモザといえば何でしょうか? そう、英語です。そんなわけで英語の論文を頑張って読んだので、どんな感じだったかを紹介することにしました。色々拙いと思いますが、その辺は生暖かい目でスルーするか優しく指摘してくださると幸いです。
読んだのは、Universal Transformers(https://arxiv.org/abs/1807.03819)です。

概要

RNNやCNNを使わずにAttentionのみを利用したTransformer(https://arxiv.org/abs/1706.03762)によって、翻訳、画像生成、形態素解析などのタスクをこなせるようになったものの、他の多くのタスクにおいてはRNNの方が優れています。
そこで、汎用的に優れた性能を発揮するUniversal Transformersです。これはRNNのように系列の個々の情報を参照するのではなく、毎回系列全ての情報を参照しています。

導入

が最初の入力で、,,...,,と順番に計算していきます。()ここでのは系列のシンボルを表してるので翻訳の場合は、それぞれの単語です。

これの優れている点は、RNNと違ってそれぞれの単語の次のステップへの計算が独立なので並列的に計算できるところと、全ての単語の情報を次のステップの推定に使うことができるという点です。

従来のRNN以外の手法では、訓練中に与えられた長さ以外の入力に対してうまく処理することができなかったのですが、この手法では対応できます。

モデル

Encoder

Scaled Dot-Product Attention

という入力がしれっと出てくるんですが、Query、Key、Valueの頭文字です。です。はそれぞれ入力に行列を掛けて作ります。

MultiHead Attention

で、です。Scaled Dot-Product Attentionを別々に回やってその結果を組み合わせているのでより精度が上がるらしいです。

Encoder全体

LayerNormalizationは、バッチ単位ではなくニューロン単位で出力を正規化する手法です。
Transition関数については、Separable Convolutionと全結合のニューラルネットをタスクに応じて使い分けるのが良いようです。
Separable Convolutionは畳み込みを空間方向とチャネル方向で行いパラメータを削減する手法です。Xception: Deep Learning with Depthwise Separable Convolutions(https://arxiv.org/abs/1610.02357)で提案されています。

は、系列の中での位置と、時間(何回繰り返されたか)、成分の次元に依存するパラメータです。位置エンコーディングと呼ばれ、時系列の情報を組み込むのに必要なようです。

Decoder


Decoderはこれを出力します。で、は語彙数です。これが最も大きくなる語彙が予測された語彙となります。出力は1単語ではなく、回目以降の出力を合わせたものが推定された回答となります。

Adaptive Computation Time(https://arxiv.org/abs/1603.08983)

繰り返される数はACT(Adaptive Computation Time)によって決めることができます。ACTはRNNのを算出するところを最適化する手法です。具体的には、を中間状態の入力としてを計算し、それをさらに中間状態の入力として、を計算し、……を計算し、それらの重み付け平均を取ったものを、それらの出力を重み付け平均したものをの時の出力とします。
この記事が僕はわかりやすかったです(日本語なので) https://qiita.com/shotasakamoto/items/80809657c4492721b709

成果

定数回で打ち切るようにしたのを無印のUniversal Transformer、前述のACTによって何回で打ち切るかを決めたものをAdaptive Universal Transformerとしているようです。

bAbI Question-Answering

bAbIタスクは、質問応答の形式で自然言語理解の基礎的な能力をテストすることを目的としたタスク群です。12カテゴリー20種の小タスクで構成され、それぞれの小タスクの訓練データとテストデータは文脈設定の単文と1000文ずつの質問からなります。スコアはエラーの比率なので低いほど高精度です。

LAMBADA Language Modeling

LAMBADAタスクは小説から作られた穴埋め問題のタスクです。bAbIは語彙が少なく高いスコアが取りやすいのですが、こちらは小説が元のため難易度が高いです。LSTMやTransformerよりも良い結果を出してはいるもののRCのタスクは6割弱と難しいことがわかります。

Machine Translation

英独翻訳のタスクです。BLUEスコアは人間が翻訳したものに近ければ近いほど高くなります。そもそも元の論文のTransformerが発表時にBLUEスコアが1位だったらしいので、それをさらに上回っててやばいなぁという感じです。

感想

長文読解を解きたくて適した方法を探していたのですが、この手法が向いてそうな気がしました。どの論文も多くの過去の論文を参照してることが多いので界隈によく出てくるものをちゃんと抑えないと辛そうな気がするというのと、参照している論文は大体全部あるのでarXivはすごいなぁと思いました。あと、論文だけ読んでも実装できるくらい完全に理解したかと言われると怪しいので、論文をスッとコードに落とせる人はすごいです。

hukuda222 icon
この記事を書いた人
hukuda222

主にプログラムを書いてます。

この記事をシェア

このエントリーをはてなブックマークに追加
共有

関連する記事

2017年11月14日
IBIS2017参加報告
Keijan icon Keijan
2017年12月26日
RustでMCMC(Metropolis-Hasting)
David icon David
2017年11月4日
文章をよしなに分散表現しよう
David icon David
2019年12月25日
TensorFlow.jsでwasmを使ってみるためにコントリビュートした【AdC2019 56日目】
sappi_red icon sappi_red
2019年8月27日
曲が...曲が出来ていくぞ!!!!
kashiwade icon kashiwade
2019年8月26日
ゲームを作ろう!
Kanagu icon Kanagu
記事一覧 タグ一覧 Google アナリティクスについて