論文解説の最近の記事

概要

 今回は、以前ブログで紹介したText-to-Text Transfer Transformer(T5)から派生したWT5(Why? T5)を紹介します。

 Text-to-Text Transfer Transformerとは、NLP(自然言語処理)のタスクをtext-to-text(テキストを入力して、テキストを出力する)形式として考えたもので、様々なタスクでSoTA(State of the Art=最高水準)を獲得しました。こちらの記事で詳しく紹介しています。Googleが発表した自然言語処理モデルText-to-Text Transfer Transformer(T5)とは?

 このT5を改良したWT5のポイントは、"Why T5?"という名前にもある通り、予測に対してその予測の根拠となる説明を与えるということです。

 近年、大規模な事前学習モデルをはじめとするニューラルネットワークをNLPタスクに使用することで、人間を超えるような性能を達成するようになってきました。しかし、ニューラルネットワークの問題点として、なぜモデルがそのような予測をしたのかが分からない、いわゆる「ブラックボックス」になっているということが挙げられます。この問題を解決するためにWT5では、タスクの答えに加えて根拠を説明する文も与えています。この背景には、人間も意思決定の理由もブラックボックスになってはいるが、求めると理由を説明できるため、機械にも同じことを求めています。


手法

解釈可能性と説明生成

 予測の根拠を与える方法として採用されている3つを紹介します。

ルールベース
予測をするルールをあらかじめ与えて、そのルールの基づいて予測をする手法です。たとえば、「ひどい」という単語が入っていたらnegativeと判定するとしたら、「あの選手のプレーはひどかった」という文はnegativeと判定されます。この方法はあらかじめルールがあるので、予測の根拠は明らかになっていて解釈可能性は高いです。ただ、「あの選手のプレーにひどく感動した」のような文までnegativeと返してしまうことがあるので性能としてはあまりよくありません。

説明抽出
判定の根拠となる説明を入力の文字列からそのまま抽出してくる手法です。上の例でいうと「ひどかった」「ひどく感動した」を説明として抽出するイメージです。この手法だと、英語での"they"や日本語での「あれ」というような単語を含む文を抽出すると、単語が何を指しているのかわからないという問題が起こる可能性があります。

説明生成
言葉の通り入力を受けて判定する根拠を「説明抽出」のような制限なしに生成します。直感的に分かるような説明生成を正確におこなうことにより、人間に近い判断ができるようになります。


  WT5では、基本的に説明生成を行いますが、説明抽出のタスクにも対応できるようにしています。

 ここで解釈可能性と性能について、ルールベースの手法・従来のニューラルネット・WT5(提案手法)・人間で比べた図を見てみます。上で紹介したようにニューラルネットワークは性能は高くても解釈可能性は低く、ルールベースは性能が低くも解釈可能性は高いことが分かります。説明生成のWT5は人間と同等の解釈可能性を持ちながら、人間を超える性能を出しています。この図を見るだけでWT5の良さが分かります。

Interpretability.png


モデルのフォーマット

 WT5モデルがテキストを入力してテキストを出力する様子を図を使って説明します。WT5のもととなったT5の入出力を見てみます。

T5.png

入力では先頭に"translate English to German"などタスクを表すテキストが与えられて、その後ろに"That is good."などのタスクを行う入力を与えています。出力は、単に入力に対しての答えのみを返します。

wt5.png

 それに対してWT5では、説明文を生成したい場合、入力の先頭に"explain sentiment"など、"explain"+タスクという形式のテキストを与えることで、出力では"negative explanation"+説明ような、タスクの答え+"explanation"+根拠となる説明という形式のテキストを返して、タスクの答えとともに根拠となる説明も同時に返します。  また、説明は出力せずにタスクの答えのみを出したい場合には、図の青い部分のように、入力の先頭にタスク名のみを与えればその答えのみを与えられるようにモデルを構築しています。

 説明生成だけでなく説明抽出のタスクにも対応でき、その場合は入力の先頭の"explain"の部分を"explanation"変えることで、説明文を抽出するように訓練されています。


訓練

訓練に使用するデータセットは次の4つです。

e-SNLI
SNLIデータセット(前提と仮説が与えられて、前提に対して仮説が正しいのかを判定。それぞれのデータに対して正しい(entailment)、矛盾(contradiction)、どちらでもない(neutral)の中からいずれかがラベルとしてついている)について、それぞれのラベルに対する根拠となる説明テキストをアノテーションしたデータセット

Cos-E
Commonsense Question-Answering(CQA)データセット(一般常識についての質問応答セットで、質問に対して選択肢とその中から回答が与えられている)に、選択の根拠となる説明テキストをアノテーションしたデータセット

Movie Reviews
映画レビューの感情分析データセット(一つの映画レビューに対して、positive/negativeのラベルがついている)に、判定の根拠となるテキストを説明抽出によりアノテーションしたデータセット

MultiRC
MultiRCデータセット(文章が与えられて、その文についての質問と答えの候補が与えられていて、候補それぞれTrue/Falseのラベルが与えられている)に、説明抽出による説明がアノテーションされている

モデルの学習は、2種類のT5モデルを使ってファインチューニングを行います。一つは2億個のパラメータを持つBaseモデルで、もう一つが110個のパラメータを持つ11Bモデルを使います。ファインチューニングの方法としてはT5モデルの際と同様のダウンストリームタスクにより行っています。

学習率・バッチサイズ等、訓練の詳しい設定については論文をご覧ください。


評価

評価に使用する指標は、分類精度に対してはMultiRCのみF1スコアを採用して、それ以外はAccuracy、生成された文に対しては量的な評価として、説明抽出を行うタスク(Movie Reviews, MultiRC)についてはF1スコア、説明生成を行うタスク(e-SNLI, CoS-E)についてはBLUEを使用しています。 また、量的は指標だけでは説明の質についてが十分に評価することができないので、質的な評価として人間による評価も行っています。NLPのタスク、特に対話や今回のような文章を生成する際には人間の評価が重要になることがあるので、そこも注意深く見ていく必要があります。


実験

まずは、それぞれのデータセットでどうなるのかを見ていきます。

table1.png

結果を見ると、WT5-11Bがかなり高い性能を出しており、分類精度では2つ、説明文の評価では3つのタスクでSoTAを獲得しています。また、WT5-Baseでもそれなりのスコアを出せています。この結果はT5のときと似たような感覚です。

説明文の評価を見てみると、説明生成というタスクの性質を考えると量的なスコアが低めに出るのは必然なのかなと思います。ただ、論文中でも述べられているように、Cos-Eタスクの値は他と比べてもかなり低くなっていて、これはアノテーションした説明文の質があまりよくないことが原因ではないかとされています。人間が生成した説明文に対する人手による評価も低めに出ているので、そもそも人による説明がブレるようなタスクに対しては、性能が上がりにくいのかもしれません。

MultiRCでも、人による評価については同じような傾向があるようにも見えるので、個人的には、一般常識や読解など人により考えが変わるようなタスクでは、説明が難しくなってくるのかなと思います。ただ、この辺の評価はどう捉えるのかが難しい部分も出てくるので一概には言えないと思います。

実際にWT5(11B)が生成・抽出した説明文です。

table2.png


説明文を減らしての実験

次に、教師データとなる説明文を減らした場合にモデルの性能がどうなるのかを評価しています。

目的は、アノテーションをして説明文を付与する手間が省けるのかどうかを確認するためです。もし性能が変わらなければ、他のデータセットも簡単に使うことができる可能性があります。

fig3.png

結果を見ると、e-SNLIについては、Accuracyはほとんど変わらず、BLUEに関しては説明文を減らしていくと値が低下するものの、100まで減らしても従来のSoTAよりも高い数値を出しています。

Cos-Eについてもほとんど値は変化せず、説明文を減らしても影響は見られません。

それに対して、Movie Reviewsに関しては説明文を減らしていくとかなり性能が落ちていることが分かります。

また、グラフにはないですが、MultiRCもMovie Reviewsと同じような性能の低下があることから、説明抽出を行うタスクには説明文の教師データがそれなりに必要であることが分かります。


データセット間での転移

説明生成のタスクでは説明文の教師データ説明文が少なくても性能が下がらないことが分かったので、同じタスクの説明文を持たない他のデータセットを合わせて使用してうまくいくかを見ていきます。

具体的にはe-SNLIデータセットとMNLIデータセットを合わせて使用した場合と、Movie ReviewsとIMDb、Amazon Reviewsを使用した場合を見ます。MNLIとIMDb、Amazon Reviewsはそれぞれe-SNLIとMNLIよりもより多くのドメインを含んでいます。

それぞれの場合について今までと同様に学習させて、タスクの分類精度は上と同様の評価で、生成した説明文については人による評価を行います。 分類精度は、MNLI:91.5%・IMDb:97.2%・Amazon Reviews:98.1%とかなり良く、説明文の評価もMNLI:82%・IMDb:94%となっていて説明文生成もうまくいっていることが分かります。このことから、ドメインの異なる文章に対しても対応できることが分かります。 このような説明文が生成・抽出されます。   table3.png


タスク間での転移

最後に、異なるタスクのデータセットに対して学習を行ってもうまくいくのかを見ていきます。

具体的には、説明文ありのe-SNLIデータセットと説明文なしのe-SNLIデータセット、説明文なしのCoS-Eデータセットを使ってファインチューニングして、CoS-Eに対して説明文が生成できるかを見ます。e-SNLIとCoS-Eは全く違うタスクで、CoS-Eについては説明文を一つも与えていないので"zero-shot"になっています。

結果としては、完全にうまくいったとは言えないようですが、下のようにうまくいったものもあるのでタスク間での転移も可能だろうとしています。この辺は残った課題としていますね。 また、詳細については述べませんが、"bean-search decoding"を使うと説明の信頼性が改善されたようです。

table4.png

まとめ

 今回はText-to-Text Transfer Transformer(T5)をもとにした、予測と説明文を生成するWT5(Why? T5)について紹介しました。

まだ改善の必要があるものの、説明文生成などができればブラックボックスなものが解消されますし、アプローチはかなり異なってきます。将来的にはNLPだけでなく、他の分野のタスクでも説明文生成することができれば説明可能なAIの開発につながっていくかもしれません。 これからもtext-to-textの広がりに注目したいです。

参考文献

WT5?! Training Text-to-Text Models to Explain their Predictions
WT5?! Text-to-TextモデルでNLPタスクの予測理由を説明する手法!


Twitter・Facebookで定期的に情報発信しています!

機械学習のアルゴリズムがつくりだす状況を利用して、自然実験に近い分析をおこなった事例を紹介します。
このような事例を応用すれば、実際に実験をおこなわなくても介入効果などが分かるかもしれません。


はじめに

昨今、AI・機械学習の進歩のおかげで、様々な予測をおこなうことができるようになりました。
みなさんも機械学習を使った株価の予測などニュースでみかけることも増えたと思います。
株価だけでなく、交通量からチケットの売上・電力消費量etc......
なんでも予測されていますね。笑
このように2019年現在、たくさんの企業がなんらかの予測をするためにデータを集めています。


今回はこうした集めたデータを利用して、さらに分析をした事例を紹介します。
※正確に表現すると機械学習アルゴリズムが作った状況を利用して分析する事例です。


介入効果とは

介入効果と書くとピンと来ませんが、おこなったアクションに効果があったのかということです。

ある会社で商品の宣伝のために、全国でテレビCMをおこなったとします。
その結果、商品の売上が30%も上がりました! すごい! これからどんどんテレビCMを放送しよう!


本当にこれで良いでしょうか?


クリスマス時期のため売上が上がったかも...。(実際に多くの売上のデータでは季節調整がされています。)
もしくは、有名人がたまたまSNSでその商品の写真をupしたことで、若者を中心に大流行したからかも...。


テレビCMはお金をかけてやる必要があったのでしょうか?
広告の効果を正確に知るには、広告以外の状況が同じ店舗の売上を比べればわかります。(ざっくりいうとほぼ状況が同じものを比較する)


この場合だと、地域ごとにテレビCMを放送する地域、しない地域で分け、さらに売上状況や天気等、条件を揃えて比較する必要があります。


残念ながらこのような状況を意図的に作り出すのは難しいです。
より多くクリックされるweb広告を比較したり、奨学金の効果など、状況を同じにして効果を実験したい例はたくさんあります。


こうした詳しく原因を分析することを因果推論といいますが、これについては当社の記事「はじめての因果推論」を参考にしてみてください!


アルゴリズムが生むランダム化実験

ここで登場するのが、機械学習のアルゴリズムを利用して得るデータです。
需要と供給によって価格が変わるUberXのデータを使って、利用者がどれくらい価格に反応するか(価格弾力性)を測る分析を紹介します。
ここでネックなのが、価格だけの影響を知りたい場合に、どうやって他の要因を排除するか...
この点は、先程のテレビCMの効果を測る例と共通しています。


ここで役立つのが、機械学習を使ったアルゴリズムで集めたデータです!
Uberはもともと状況に応じて、自動で価格を上げ下げする仕組みです。そのためアルゴリズム内部では、1.249など少数点以下もしっかり計算されています。
しかし、利用者はそこまで細かい金額では払えないので、少数点第二位以下を四捨五入して表示するようプログラムされています。
ここにランダム化実験を見出すことができます。
つまりUberでは、1.249は1.2と表示され、1.251 は1.3と表示されることになります。
しかし値段以外の要因は1.249と1.251では、ほとんど同じです。よってこの2つで比較すれば、価格が利用者にどう影響するかを明らかにできます。


アルゴリズムが生むランダム化実験の応用性

このように、機械学習のアルゴリズムで集めたデータに自然実験が行えるような例は、たくさんあるのではないでしょうか?
例えば、裁判官の判決や奨学金を与えると生徒はどうなるのかなどです。
実際サイバーエージェントでは、こうした手法を使い広告の効果を測定する研究も行われているそうです。


このような手法を使えば、ランダム化実験や人為的なABテストなど、時間やコストが多くかかるプロセスを
回避できるかもしれません。


参考文献

・矢田紘平、成田悠輔「機械学習は自然実験を作り出す」『経済セミナーe-book No.15』、日本評論社、2019年12月、19-20ページ
・Cohen, Peter, Robert Hahn, Jonathan Hall, Steven Levitt and Robert Metcalfe (2016) "Using Big Data to Estimate Consumer Surplus: The Case of Uber,"NBER Working Paper 22627.
・Narita, Yusuke, Shota Yasui and Kohei Yata (2019) "Efficient Counterfactual Learning from Bandit Feedback,"Proceedings of the Thirty-Third AAAI Conference on Artificial Intelligence, pp.4634-4641.


Twitter・Facebookで定期的に情報発信しています!

概要

物体検知の分野ではCOCOと呼ばれるデータセットを使って、検知手法の精度に関して数値的な評価が行われます。2020年1月現在、トップの正解率を示しているのが、2019年9月に発表されたCBNetを用いた手法です。

今回は物体検知に関して全くの初心者の方でも理解できるように、この論文を解説していきたいと思います。(原著論文はこちら)

目次

前提知識

CBNetを理解する上で必要な物体検知についての知識をまとめます。以下の3つを押さえればCBNetだけでなく、物体検知全体の概要もつかめると思います。

Backbone

CNNの構造は以下のようになっているのでした。
※図はここから引用

cnn.jpg

CNNの特徴は、上の図のFEATURE LEARNINGのように、ConvolutionとPoolingを繰り返して画像から特徴量を抽出することです。ここで得られた特徴量をもとにして、ニューラルネットワークで学習・予測を行うので、これをいかにうまく行うかが認識精度に直結します。その意味で、この特徴抽出の部分を論文に従って「Backbone」と呼ぶことにします。

CNNベースの物体検知

物体検知をするには、位置の検出と、物体の分類という、2つのタスクを行う必要があります。物体検知の手法はたくさんありますが、この2つのタスクを同時に行うか、別々に行うかで大きく2つに分かれます。

今回はこのうちで、後者の方法に注目します。例えば、最初期に使われていたR-CNNという手法では、まず物体がありそうな場所(これをRoIと呼びます)を見つけ、その後各RoIについてCNNを実行し分類を行います。ただ、これではすごく時間がかかってしまうので、これ以降の手法では様々な工夫をしていますが、基本的なアイディアは同じです。

従って、当然ですがCNNの精度を上げることが、物体検知の精度を上げることにつながります。

detection_ex.png

モデルの評価

モデルの性能を評価するには、どの程度正確に物体検知ができているかという精度の面と、どれくらいの早さで物体検知ができるのかというスピードの面の、両方を考慮する必要があります。例えば自動運転に使うモデルでは、いくら精度が高くても処理スピードが遅いと使い物になりませんよね。

スピードの指標は簡単で、1秒当たり何枚の画像を処理できるか、で決まります。例えば、高速で知られるYOLOというモデルは、条件にもよりますが、1秒で30枚ほど処理できますので、スピードは 30 fps ということになります。

では、精度についてはどのように測るかというと、位置の精度と分類の精度に分けて考えます。まず、位置の精度を求めるには以下のように計算します。iou.png

※図はここから引用

モデルが予測した位置と実際の位置の重なり具合を評価するわけです。完全に一致すると IoU = 1、全く違っている場合はIoU = 0 となります。

分類の精度については、AP や mAP といった数値が用いられます。これらを求めるのは少し複雑なのでこちらを参照してください。「単純にいくつ正解したか、じゃダメなの?」と思うかもしれませんが、それは正確ではありません。例えば画像の中に、リンゴが3つと梨が1つあったとします。いくつ正解したか、を精度の指標にしたとすると、全ての物体を「リンゴ」と予測するモデルが仮にあったとしても 0.75 という高い精度が出てしまうからです。

APもmAPも数字が大きいほど分類精度が高いことを意味します。

実際の評価では、位置の精度と分類の精度を組み合わせて、例えば \(AP_{50}\) のように表します。これは IoU が 0.5 以上の場合のみを考える、という意味です。

CBNetの構造

これまでの議論を踏まえた上で、いよいよ最新の手法CBNetについて解説したいと思います。

CBNetは"Composite Backbone Network"の略です。Compositeは「複合された」という意味なので、複数のBackboneを合わせた構造をしている、ということです。CBNetの新しいところはCNNによって得られた特徴マップを用いて物体検知を行う部分ではなく、CNNそれ自体に階層的な構造を導入したことです。(物体検知部分は他のモデルを使います。)

AHLC

CBNetの本質は以下の図に集約されているので、これを説明します。


cbnet.PNG

普通のCNNではBackboneは一つだけです。図でいうと、右端の一列しかありません。一方のCBNetでは複数のBackboneを用意し(通常2つか3つ)、一つのBackboneの出力を次のBackboneへと入力するという方法をとっています。最終的に右端のBackbone(Lead Backbone)に左にあるBackbone(Assistant Backbone)の効果がすべて反映されます。そしてLead Backbone の出力を最終的な特徴マップとして使い、物体検知を行います。

言葉では分かりにくいので数式で表現します。まず、通常のCNNの場合

\[ x^l = F^l \left(x^{l-1}\right),\,l\geq 2 \]

と表現できます。左辺の \(x^l\) は \(l\) 層目の出力を表しています。\(x^l\) はその前層の入力 \(x^{l-1}\) に何らかの処理(畳み込みやプーリング) \(F^l\) を施すことで得られる、ということを意味します。

続いてCBNetの場合は、次のように表現できます。

\[ x_k^l = F_k^l \left(x_k^{l-1} + g\left(x_{k-1}^l\right)\right),\,l\geq 2 \]

となります。\(x\) や \(F\) の右下に新しい添字 \(k\) が付きましたが、これは \(k\) 番目のBackboneであることを表します。また、新たに \(g\left(x_{k-1}^l\right)\) という項が加わりましたが、これは前の( \(k-1\) 番目の)Backboneの \(l\) 番目の出力に、(サイズを変えるなどの)処理 \(g\) を施したものも入力として加味することを意味します。このタイプを論文では AHLC (Adjacent Higher-Level Composition = 隣の上位層との合成)と呼んでいます。

CBNetの本質はこれで尽くされていますが、一つ前のBackboneの出力をどのように次のBackboneに入力するかによっていくつかのパターンがあります。順に見ていきましょう。

SLC (Same Level Composition = 同じ階層同士の合成)

以下の図を見て先程のAHLCと比べると分かりやすいです。

slc.png

数式で表現すると次のようになります。

\[ x_k^l = F_k^l \left(x_k^{l-1} + g\left(x_{k-1}^{l-1}\right)\right),\,l\geq 2 \]

ALLC (Adjacent Lower-Level Composition = 隣の下位層との合成)

allc.png

数式で表現すると、

\[ x_k^l = F_k^l \left(x_k^{l-1} + g(x_{k-1}^{l-2})\right),\,l\geq 2 \]

※論文中では \(g(x_{k-1}^{l+1})\)となっていますが、誤植だと思われます。

DHLC (Dense Higher-Level Composition)

dhlc.png

数式で表現すると、

\[ x_k^l = F_k^l \left(x_k^{l-1} + \sum_{i=l}^L g_i\left(x_{k-1}^i\right)\right),\,l\geq 2 \]

ここで \(L\) は各Backboneの階層数です。

まとめとして、以上の4つのモデルを並べてみます。

cbnet.png

結果

最後に色々なパラメータを変えたときのCBNetの結果について示します。実行環境などの条件は論文を参照してください。

変えるパラメータは以下の3つです。

  1. CBNetの種類

  2. 得られた特徴マップから物体検知を行うモデル

  3. Backboneの数

1. CBNetの種類を変えた場合

compare_cbnet.png

これを見ると、一番最初に示したAHLCが最も高い精度を示しているといえます。

ADLCとAHLC(DHLCと同じです)との比較から、単にパラメータを増やせば精度が上がる、という問題ではないことが言えます。

2. 物体検知を行うモデルを変えた場合

compare_model.png

Singleは普通のCNN、DBは2層のBackbone、TBは3層のBackboneを表しています。これを見ると、どのモデルを使ってもCBNetが有効であることがわかります。これはCBNetによって画像の特徴がより良く抽出されていることを示唆しています。

3. Backboneの数を変えた場合

compare_backbone.png

Backboneの数を増やすほど精度が上がっているのが見て取れます。計算量とのトレードオフも考慮すると、2層か3層にするのが良さそうです。

最後に、CBNetを用いた物体検知モデルと、他の有力な物体検知モデルとの比較です。

compare_all.png

Cascade Mask R-CNNとCBNetを組み合わせたモデルが、精度の面では最高の成績を残しています。とはいっても未だに50%強の成績であり、改善の余地は十二分にあります。また、肝心な点である、なぜこうすると精度が上がるのか、ということは分かりません。現在の機械学習のモデルでありがちですが、よく分からないけどこうすると精度が上がったよ〜、というのが現状です。


Twitter・Facebookで定期的に情報発信しています!

概要

小説を丸ごと理解できるAIとしてReformerモデルが発表され話題になっています。今回はこのReforerモデルが発表された論文の解説を行います。

自然言語や音楽、動画などのSequentialデータを理解するには広範囲における文脈の依存関係を理解する必要があり困難なタスクです。"Attention is all you need"の論文で紹介されたTransformerモデルは広くこれらの分野で用いられ、優秀な結果を出しています。 例えば機械翻訳などで有名なBERTはTransferモデルが基になっており、数千語にも及ぶコンテキストウィンドウが使われLSTMに比べて長い文脈を考慮することができます。しかし、このようにモデルの規模が大きくなってくるとリソースの問題が発生し、大きな研究機関以外はモデルの訓練が行えない状況です。

ReformerはTransferを改良し軽量化することで、1つのアクセラレータ、16GBのメモリで100万ワードに及ぶ文章を扱えるようにしました。

この記事ではTransformerモデルがどう改善されたかを解説していきますので、Transformerモデル自体の解説については過去の記事を参考にして下さい。

【論文】"Attention is all you need"の解説


大規模なTransformerモデルが抱える問題

まずは従来のTransformerモデルを大規模化したときにどういった問題が起こるか説明します。


Attentionの問題

Transformerモデル内のAttentionの計算にはscaled dot-product attentionが使われています。

queryとkeyの次元を\(d_k\)としすべてのqueryをまとめた行列を\(Q\)で表し、keyとvalueも同様に行列\(K\)で\(V\)と表すとAttentionの計算は

$$ \rm{Attention}(Q, K, V) = \rm{softmax}(\frac{QK^T}{\sqrt{d_k}})V $$
トークンの長さを\(L\)とすると内積\(QK^T\)は計算量、メモリ量ともに\(O(L^2)\)となります。

例えば、\(Q\)、\(K\)、\(V\)のサイズがすべて\([batch\_size, length, d_k]\)だと仮定すると、トークンの長さが64Kの場合バッチサイズが1だったとしても

$$ 64\rm{K} \times 64\rm{K} \times 32 \rm{bit} \ \rm{float} \approx 16 GB $$

とメモリ消費が激しくなります。

このように小説のような非常に長い文章をTransformerで扱いたい場合に、Attention層で必要な計算量、メモリ量が問題になります。


Activationを保持しておくためのメモリ量の問題

もう1つの問題が逆伝播に必要な各層のActivationを保持しておくためのメモリ量の問題です。
まずTransformerモデル全体で32-bit floatのパラメータ数0.5B (Billion) を保持するのに約2GB必要です。
これに加えてトークンの長さが64KでEmbeddingのサイズが1024、バッチサイズが8とすると

$$ 64\rm{K} \times 1\rm{K} \times 8 \approx 0.5B \ floats $$


となるので、1つの層についてActivationを保持するためにさらに2GMのメモリが必要になります。
典型的なTransformerモデルが12個以上の層を持つので、Activationを保持しておくだけで24GB以上必要になります。

このようにモデルに与える文章が長くなるとすぐにメモリを使い果たしてしまいます。


Attentionの計算を効率化 (LSH Attention)

Attention層での処理で問題となるのは、内積\(QK^T\)の処理でした。Reformerではこれをlocality-sensitive hashing (LSH)によって解決します。

内積\(QK^T\)の処理が問題ですが、結局のところ知りたいのは\(softmax(QK^T)\)の結果です。

softmaxの結果は内積の値が大きい要素に寄与するため、queryとkeyの内積が大きくなるペアの計算結果だけを用いて近似値を求めることができます。つまりqueryとkeyのすべてのペアについて内積を計算するのではなく、queryに対して類似したkeyだけを考慮すればよいので処理が効率化されます。

このとき、queryと類似したkeyを選ぶのにLSHを使います。詳しい解説はここでは避けますが、LSHは高次元のデータを確立的処理によって次元圧縮する手法です。Reformerではハッシュ値の計算は次のようにして求めます。

以下の画像で示すようにベクトルをランダムに回転させてどの領域に移るかによってどのバケットに入れるかを決定します。画像内の上の例ではRandom Rotation 1 以外、xとyの移る先が異なるためそれぞれ違うバケットに入ります。一方で下の例では、xとyが3回の回転ですべて同じ領域に移るため同じバケットに入ります。

example of hashing function

次にLSHを利用してどのようにAttentionの計算を効率化するか具体的なステップを以下の図とともに説明します。図中の色はどのハッシュに割り当てられたかを示しており、似た単語は同じ色で表されます。

まずLSHによってハッシュを割り当てて、ハッシュ値によって単語を並べ替えます。並べ替えた後、小さな塊に分割することで並列処理を可能にします。そしてAttentionの処理を同じ塊の中および1つ前の塊に対して行うため大幅な計算不可の軽減ができます。

description of LSH attention

LSH Attentionの計算を式で表すと

$$ o_i = \sum_{j \in \mathcal{P}_i} \rm{exp}(q_i \cdot k_j - \mathcal{z}(i, \mathcal{P}_i))v_i \qquad \qquad \rm{where} \ \mathcal{P}_i = \{j:i \geq j \} $$
\(i\) はQの\(i\)番目の要素を表しており、\(\mathcal{P}_i\)はi番目のqueryに近いkeyの集合を表しています。また、\(\mathcal{z}\)はsoftmaxの分母の部分だと考えて下さい。

これらの処理により、計算量を\(O(n^2)\)から\(O(n\log n)\)まで削減することができます。これでAttentionの問題を解決することができました。


Activationを保持しておくためのメモリ量の削減 (Reversible Transformer)

Attentionの問題は解決されましたが、学習時に逆伝播のためにActivationを保持しておかなければならずメモリ消費が大きくなる問題が残っています。Reformerではこの問題を解決するために順伝播時にActivationをメモリ内に保持しておくのではなく、逆伝播時に再計算する方法を取りました。

この方法を実現させるためにGomez et al. (2017)で示されたReversible Residual Network (RevNet)を応用します。RevNetでは出力側から順次1つ先の層の結果を元にActivationを再計算します。

structure of reversible residual network

通常のネットワークでは(a)のようにベクトルが通過するスタックに各層が追加されていきます。一方でRevNetでは各層において2つのActivaltionを持ちます。そして(b)のようにそのうち1つだけが通常のネットワークと同じように更新されます。もう1つのActivationは(c)のようにもう一方のActivationとの差分を捉えるために使われます。

これにより順伝播時にActivationを保持する必要がなくなり、逆伝播時に出力側から順次再計算することでActivationを再現することができます。これでActivationを保持するためのメモリを削減することができました。


実験

最後にReformerのパフォーマンスを見てみましょう。実験には以下の入力のサイズが非常に大きいタスクに対して行われました。

  • enwik (テキストタスク) - 入力トークンの長さ64K
  • imagenet64 (画像生成タスク) - 入力トークンの長さ12K


まず、Reversible Transformerと通常のTransformerの性能を比べてみましょう。

experiment result of reversible transformer

グラフを見て分かるようにテキストと画像どちらのタスクにおいてもReversible Transformerが通常のTransformerとほぼ等しい性能を見せました。
Reversible Transformerによってメモリ消費を抑えても性能が犠牲になることはないとわかります。

次にLSH AttentionがTransformerの性能にどう影響するかみていきましょう。
次のグラフはfull attention (通常のAttention)とLSH Attentionとの比較です。グラフ中のn hashesはLSHでのハッシュの割り当て処理を何回行うか示しています。割り当てを複数回行った後、それぞれのラウンドでqueryと同じバケットに入ったすべてのkeyをAttentionの計算に利用します。なぜこのようなことをするかというと、LSHでは確率的にハッシュを割り当てるので、確率は低いですが類似した要素がちがうバケットに入る可能性があるからです。

グラフを見ると8 hashes以上でfull attentionと同じ性能になっています。

experiment result of LSH attention
最後に、以下のグラフは入力シーケンスの長さに対する学習にかかる時間を示しています。
入力シーケンスが長くなるとfull attentionでは指数関数的にかかる時間が増加する一方で、LSH Attentionはほぼ一定になっていることが見てとれます。

experiment result of attention speed


まとめ

ReformerはTransformerモデルをリソース面で改善することで16GBのメモリ、単一のアクセラレータで最大で100万語の文章の処理を可能にしました。また文章だけでなく画像や動画を扱うタスクへの応用も期待できます。さらに大きな研究機関以外でも非常に長いシーケンスを扱えるようになる可能性も秘めており、AIの民主化という観点でも今後期待が高まりそうです。


参考文献

  • Kitaev, N., Kaiser, Ł., & Levskaya, A. (2020). Reformer: The Efficient Transformer. arXiv preprint arXiv:2001.04451.
  • Gomez, A. N., Ren, M., Urtasun, R., & Grosse, R. B. (2017). The reversible residual network: Backpropagation without storing activations. In Advances in neural information processing systems (pp. 2214-2224).
  • Kitaev, N., Kaiser, Ł. (2020). Reformer: The Efficient Transformer. Retrieved from https://ai.googleblog.com/2020/01/reformer-efficient-transformer.html?m=1



Twitter・Facebookで定期的に情報発信しています!

機械学習では、訓練データとテストデータの違いによって、一部のテストデータに対する精度が上がらないことがあります。

例えば、水辺の鳥と野原の鳥を分類するCUB(Caltech-UCSD Birds-200-2011)データセットに対する画像認識の問題が挙げられます。意図的にではありますが訓練データを、

  • 水辺の鳥が写っている画像は背景が水辺のものが90%、野原のものが10%
  • 野原の鳥が写っている画像は背景が水辺のものが10%、野原のものが90%

となるように分割します。このときに、訓練データの中で「背景が野原で水辺の鳥」の画像や「背景が水辺で野原の鳥」の画像が少なく、同じようなテストデータに対して精度が上がらないことがあります。

Alt text

以降では、テストデータ全体の精度をaverage accuracyと呼ぶのに対して、このようなデータに対する精度をrobust accuracyと呼ぶことにします。パラメータの数が訓練データの数よりも多い(overparameterized)ニューラルネットワークでは、モデルの複雑度が高いために過学習しやすく、average accuracyは高くともrobust accuracyは低くなりがちです。

論文"Distributionally Robust Neural Networks"では、上記のような訓練データとテストデータの分布が異なるときのrobust accuracyを上げる最適化手法について説明されています。パラメータの多いニューラルネットワークがよく使われる画像認識や自然言語処理などのタスクに対して同じような最適化手法を適用でき、今後も広く使われる手法かもしれません。

この記事では論文で説明されていた手法について、簡単に概要を説明しようと思います。

"distributionally robust optimization"とは?

訓練データよりも多くパラメータが存在するニューラルネットワークでは、学習データにおけるロスの消失による過学習が問題となっていました。そのようなときは一般には平均的に汎化誤差(generalization gap)が小さくなるように最適化するのですが、どうしてもロスが最も大きいworst-case groupに対しては、依然汎化誤差大きいままになってしまいます。

そこで考えられた手法がdistributionally robust optimization(以下DRO)です。DROは一言で言えば最も大きいロスでの最小化です。

\[ \min_{\theta \in \Theta} \sup_{Q \in \mathcal{Q}} {\rm E}_{(x,y)\sim Q}[l(\theta;(x,y))] \]

\( \sup {\rm E}[l(\theta;(x,y))]\)が表すのがworst-case groupの平均のロスとなります。\(Q\)が表すのが分類する各グループ\(g\)ごとの分布の線形結合となるのですが、最小化は線形計画法のアルゴリズム(単体法)で行われます。そのため、最適解は実行可能領域の頂点、すなわちworst-case groupのみの分布における最適解と一致します。

\[ \min_{\theta \in \Theta} \max_{g \in \mathcal{G}} {\rm E}_{(x,y)\sim P_{g}}[l(\theta;(x,y))] \]

worst-case groupの分布では平均のロスが最も大きくなります。DROはその分布でのロスの最小化を目的とするアルゴリズムだと言えます。これまでの機械学習は平均的な汎化誤差を正則化(regularization)などによって低減させていましたが、DROはworst-case groupの精度の向上、つまりrobust accuracyの向上が目的です。

では、実際にどのようにしてworst-case groupの精度を向上させているのでしょうか?次節からはその具体的な手法について説明します。

従来手法によるrobust accuracyの向上

DROで使われる正則化の1つとして重み減衰(weight decay)が挙げられます。すでに様々な機械学習の中で使われている手法であり、例えば有名なものではL2正則化が挙げられます。

\[ E(w) + \cfrac{\lambda ||w||^{2}_{2}}{2} \]

論文では、画像認識のモデルであるResNet50においてL2正則化をするとき、\(\lambda\)は通常小さな値\((\lambda=0.0001)\)が設定されるが、この値を大きくするとrobust accuracyが上がるということが述べられています。つまり、強い重み減衰(strong weight decay)が手法の1つとして考えられます。

また、もう1つの正則化としてearly stoppingが挙げられます。こちらも機械学習でよく使われる手法ですが、想定されるニューラルネットワークのパラメータ数が多く学習数が大きいとすぐに過学習するため、early stoppingが有効だと言えます。

検証

それではDROの検証結果について見てみましょう。ベンチマークとしてERMモデルとの比較を行います。最初に述べたCUBのWaterbirdsの分類タスク(ResNet50による)の他に、CelebAデータセットにおける髪色の分類タスク(ResNet50による)と、MultiNLIデータセットにおける自然言語推論タスク(BERTによる)で比較しています。一般的な正則化(Standard Regularization)と前節で述べた2つの手法を試したときのaverage accuracy、robust accuracyは以下のとおりです。

Alt text

この結果からどのタスクにおいても、ERMではaverage accuracyに比べてrobust accuracyが大幅に低下したのに対して、DROのstrong weight decayとearly stoppingによってrobust accuracyが大幅に低下するのを防いでいることが確認できると思います。

また、CelebAに関してaccuracyの収束性についても見てみましょう。

Alt text

worst-case groupである「Blondの髪で性別がmale」の判別において、strong weight decayを用いたDROがそれぞれのグループで他の手法よりも良い収束性を持つことが確認できます。

グループサイズを利用した正則化

今回の論文では分類するグループの大きさを利用したDRO(group-adjusted DRO)についても述べられています。グループ内のデータの数を\(n_{g}\)とすると、最適化するべき目的関数は、

\[ \min_{\theta \in \Theta} \max_{g \in \mathcal{G}} {\rm E}_{(x,y)\sim P_{g}}[l(\theta;(x,y))] + \cfrac{C}{\sqrt{n_{g}}} \]

となります。ハイパーパラメータ\(C\)を用いた正則化項を付け加えるアイディアです。\(n_{g}\)の平方根の逆数を掛けることで、グループごとのデータ数を考慮した汎化をおこなうことができるようです。このgroup-adjusted DROのaccuracyは以下のようになっています。

Alt text

robust accuracyにおいてさらなる改善が見られますね。バリデーションによって\(C\)の値さえうまく決めることができればかなり役に立つ手法だと言えます。

importance weightingとの比較

実は同じような解決策として、importance weightingという従来手法が存在します。これはロスに重み付けした上で最小化を行う手法です。これはミニバッチからデータを等確率でリサンプリング(RS)することでrobust accuracyを上げる手法だそうです。こちらについてもベンチマークを見てみましょう。

Alt text

ERMよりもrobust accuracyが上がっていますが、DROほどではありません。DROは従来手法よりもrobust accuracyの向上に有効だと言えます。

終わりに

今回紹介した論文では訓練データとテストデータの分布の違いを考慮した手法であるDROについて簡単に紹介しました。従来よりもrobust accuracyを大きく上げたという点でより注目される手法だと思います。

しかし、なぜこのように正則化をすると精度が向上するのかという問いに対する明確な答えがまだない状態です。この論文を足がかりにrobust accuracyが上がる数理的なメカニズムが解明されれば、様々なモデルで汎化性能の向上が期待できるでしょう。

参考文献

DISTRIBUTIONALLY ROBUST NEURAL NETWORKS


Twitter・Facebookで定期的に情報発信しています!

はじめに

多くの機械学習モデルにおいて注意することの一つとして過学習(overfitting)があります。過学習は学習データに適合しすぎて未知のデータに適合できずに、汎化性能が低下してしまう現象のことを指します。DNNを例に取ると、モデルサイズを大きくしたり、エポック(epoch)及びイテレーション(iteration)を大きくしすぎるとモデルが過学習しすぎてテストエラー(汎化誤差)が大きくなってしまいます。ですが最近になって、一定以上を超えて上記のパラメータを大きくしていくとテストエラーが減少する"Double Descent"という現象が報告されているようです。今回はこの現象が起きている要因を解析している論文"Deep Double Descent: Where Bigger Models and More Data Hurt"の要約をしていこうと思います。

"Double Descent"とは

[The Elements of Statistical Learning]
この文献で述べられているように、従来ではモデルの複雑度(complexity)がある閾値を超えるとテストエラーが大きくなり続けるということが言われていました。一方で、ここ最近では100万を超えるパラメータを持つ巨大なモデルを構築する、学習回数を増やす、データを増やすことでテストエラーが改善していくという論文がここ5年の間に次々と報告されてきています。以下の図のように一度降下して再度降下していく現象を"Double Descent"と名付けられています。

スクリーンショット 2020-01-15 17.34.36.png

このグラフの特性は2つの領域に大別できます。上記で述べたテストエラーが悪くなり続けるという話は" Classical regime"のことを示しており、複雑度(モデルの構造や学習量)を一定以上に大きくすると再度降下していく"Modern regime"がその後に続いています。例えばシンプルな構造のニューラルネットワークと複雑なニューラルネットワークがあったとします。前者については従来から言われているように"under-fitting"と"over-fitting"からなるU字型の特性が観測できますが、後者は複雑にしていくとある閾値(図でいうinterpolation threshhold)で再度降下していくという具合です。
さて"Double Descent"についてはなんとなくわかりましたが、どのような要因によってこのような特性となるのでしょうか。次に論文の主軸であるEMCという指標について述べていきます。

EMCについて

EMCとは"トレーニングエラーがほぼ0になるときのサンプルの最大値"で定義されています。もちろんですがtraining errorが0になる時点というのは使用するモデルや学習方法や量、問題によって異なってきます。筆者はこのEMCという指標でDouble Descentを説明できるという仮設を立てています。
上記の文を式にすると以下のようになります。
スクリーンショット 2020-01-15 18.44.49.pngただし、
S:入力データ
D:データの分布
T:学習手順
n:サンプル数
ε:トレーニングエラー


上記の定義式を元に以下の図のように3つの領域に分けられます。

criteria.png

1. Uner-parameterized regime

EMCが大幅にnより小さいとき、複雑度が増加すると同時にテストエラーは減少する(EMC<n)

2. Critically parameterized regime

EMCがnにほぼ等しいとき、複雑度が増加すると同時にテストエラーは減少する若しくは増加する(EMC>n)

3. Over-parameterized regime

EMCが大幅にnより大きいとき、複雑度が増加すると同時にテストエラーは減少する(EMC≒n)

まだ分かりづらいと思うので補足します。横軸をsample数としてCritically parameterized regimeの部分に注目したグラフが以下のようになっています。
スクリーンショット 2020-01-16 14.14.48.png
定義通り捉えるとトレーニングエラーεが0付近の中でもサンプル数が最大となるのはおよそ1000となっているのでEMCは1000となります。この場合ではテストエラーのグラフのinterpolation threshholdはこの値付近に存在するということになります。もちろんこのグラフ特性は入力データSと分布D、学習手順T(これはモデルサイズは最適化アルゴリズムを含む)によって変化します。が、それぞれのパターン毎において求められるEMCの値付近にこのinterpolation threshholdが「経験則的に」存在している、つまりEMCとinterpolation threshholdは何かしらの相関が存在しているため、その延長線上に有るDouble DescentはEMCによって説明出来るという仮説が本論文の趣旨です。

 あくまでも仮説なので、EMC=nとなる付近でinterpolation threshholdが存在するということを以下の理論解析で説明しています。また、εの値は経験則的に決められており(ε= 0.1)、原則が存在するわけではないようです。図から分かるようにCritically parameterized regimeでは過学習のような振る舞いをしているため、汎化性能が劣化している領域です。そのため、予めこの領域を把握していれば汎化性能の劣化を防ぐことが出来るということですね。ということで以降はEMCに相関のあるモデルサイズ、学習量等を評価軸としてDouble Descentの振る舞いを見ていきます。

その前に

理論解析で採用されているLabel Noiseについて説明します。これは教師データの正解ラベルをpの割合で誤った正解ラベルに置き換えることでデータ分布を強制的に変えている雑音のことを指します。(以下イメージ図)Label Noiseを付加することでモデルが誤って学習をすすめるため、過学習のような特性になることが予想できます。また、εが非常に小さくなるまで学習をすすめることで テストエラーの理論限界はpになることも予想できます。
図1.png

それでは各種評価について見ていきます。今回評価軸は3つに大別できます。

・Model-wise Double Descentーモデル構造(モデルサイズ、最適化アルゴリズム)の変更やデータの水増しによるDouble Descentの特性(エポック固定)
・Epoch-wise Double Descentーいわゆる学習曲線(モデル構造固定)
・Sample-wise Non monotonicityーサンプル数変化によるDouble Descentの振る舞い及びCritically parameterized regime付近での特性

それぞれ多角的に評価しており、その一部を記載していきます。

1.Model-wise Double Descent

スクリーンショット 2020-01-16 11.09.06.png○諸元
モデル:ResNet18
最適化アルゴリズム:Adam(learning rate:0.0001)
エポック数:4000
その他:データ水増し
データセット:左 CIFAR-100、右 CIFAR-10
上記はモデルサイズ毎のテストエラー、トレーニングエラーの特性を示しています。両者グラフの違いとして左の結果はLabel Noiseを付加していない場合でも"Double Descent"のような振る舞いをしていることがわかります。また、Label Noiseが大きくなるにつれてinterpolation threshholdにおけるピーク値が大きくなり、左にシフトしていっていることも読み取れます。

2.Epoch-wise Double Descent

図2.png

○諸元
モデル:ResNet18
最適化アルゴリズム:Adam(learning rate:0.0001)
Label Noise:20%
その他:データ水増し
データセット:CIFAR-10
次に学習量に応じたテストエラーを見ていきます。左のグラフが馴染みのある学習曲線、右はテストエラーを深さとしたデプスマッピングです。学習量が多くなるにつれてEMCが大きくなることから、モデルサイズが大きくなるにつれてDouble Descentのような振る舞いが顕著に現れていることがわかります。また他のサイズでは範囲内の学習量ではUner-parameterized regimeの領域に属していることからモデルが小さい場合は引き続き学習を続け、その間のサイズであれば早期終了するなどして学習を止めたほうが良い事が読み取れます。

3.Sample-wise Non monotonicity

スクリーンショット 2020-01-16 12.11.32.png
○諸元
モデル:5-layers CNN
最適化アルゴリズム:SGD(learning rate:0.0001)
データセット:CIFAR-10
最後にサンプル数変化によるDouble Descentの振る舞いを見ていきます。サンプル数を増やすことでEMCが増加するため、interpolation threshholdが右にシフトします。そのため、モデル固定の場合にCritically parameterized regimeをサンプル数によって調整出来るため、汎化性能が劣化することを予め回避することができます。(例えばoverfitting に位置するモデルのサンプル数を増やすことでunderfittingの位置にシフト出来る)個人的に気になったのですが、Label Noiseが小さい上のグラフのほうがテストエラーが大きくなっているのが疑問に思いました。

結果まとめ

スクリーンショット 2020-01-16 12.32.19.png

終わりに

Fully understanding the mechanisms behind model-wise double descent in deep neu- ral networks remains an important open question. However, an analog of model-wise double descent occurs even for linear models. A recent stream of theoretical works analyzes this setting (Bartlett et al. (2019); Muthukumar et al. (2019); Belkin et al. (2019); Mei & Montanari (2019); Hastie et al. (2019)). We believe similar mechanisms may be at work in deep neural networks.

今回、"Double Descent"をEMCという指標で説明出来るという仮説を立てた事、またその根拠を理論解析で提示した論文の紹介をしました。上記の引用からも論理的な証明はまだできておらず発展途上ということだそうです。この"Double Descent"を解明することで、どれくらいの学習をさせるべきなのか事前に把握することができると同時に、モデルチューニングの最適化などにも貢献する重要なテーマであると思いました。

参考文献
・Trevor Hastie, Robert Tibshirani, Jerome Friedman"The Elements of Statistical Learning Data Mining, Inference, and Prediction,"Available:https://openreview.net/forum?id=B1g5sA4twr
・Preetum Nakkiran, Gal Kaplun, Yamini Bansal, Tristan Yang, Boaz Barak, Ilya Sutskever "DEEP DOUBLE DESCENT: WHERE BIGGER MODELS AND MORE DATA HURT," ICLR 2020 Conference Blind Submission, Available:https://openreview.net/attachment?id=B1g5sA4twr&name=original_pdf


Twitter・Facebookで定期的に情報発信しています!


"TASK2VEC"は2019年2月にsubmitされた論文の中で提唱された手法であり、「タスクをベクトル化する」手法です。 この手法が提唱されるまでは、"タスク間の関係を表現する"フレームワークが存在しなかったため、一部界隈で脚光を浴びました。
しかし、このTASK2VECの言わんとすることが理解出来ても、どういうものなのか正直ちょっとわかりにくいです。そこで今回は出来るだけ論文の内容をかみ砕いて解説したいと思います。

目次

1.TASK2VEC 概要
2.事前知識
3.TASK2VEC 手順
4.論文の実験結果
5.まとめ
6.参考文献


1.TASK2VEC 概要

上でも述べたように、"TASK2VEC"は「タスク」または対応するデータセットをベクトル化します。ここで言う「タスク」とはデータセットとラベルの組み合わせのことです。
この論文によると、事前学習によって得られたモデルを利用し、タスクの埋め込み表現、つまりベクトル表現を獲得します。 これによってタスクの間の類似度を算出でき、適切な事前学習済みモデルを選択できるようになるということです。
例えば、「犬」の画像認識を行うことを考える時、「人」の画像認識で用いたパラメータより「猫」の画像認識で用いたパラメータを使って画像分類した方が良さそうですよね。直感的にはこういうことです。

さらに具体的に見ていきましょう。ここでは次の節の事前知識を見ておくと良いです(特にFIMのところ)。
本論文では「probe network」と呼ばれるネットワーク(特徴抽出器)を用います。 この「probe network」はImageNetで事前学習させた唯一の特徴抽出器であり、この事前学習ののち、特定のタスクの分類レイヤでのみ再学習させます。 学習が完了したら、特徴抽出器で得られたパラメータのFIMを計算します。このFIMはタスクに関する重要な情報を含んでいるのですが、これについては後述します。
ここでは「probe network」という単一の特徴抽出器を用いているため、各タスクを固定長の、つまりクラス数などの詳細に依存しないベクトルとして埋め込むことができるということです。


活用事例

このTASK2VECですが、実際に社会に活用できることとして考えられるのが、

画像を分類したい→データ数が少ないので転移学習を使おう
→良い学習済みモデルないかな?TASK2VECで探してみよう!


などの一連の流れが考えられます。ちょっと抽象的かもしれませんが、つまりはサンプル数が少なすぎても諦めないで!という感じです。 (強化学習の考え方に近いかもしれません)

2.事前知識

転移学習(Transfer Learning)

この記事をご覧になっている方は、この「転移学習」について既にご存知かと思いますが簡単に説明します。 転移学習とは、ある領域(ドメイン)で学習させたことを、他の領域に役立たせ効率よく学習させることです。事前に学習させたモデルを学習済みモデルと言ったりします。 「データの時代」と言われるこの世の中ですが、データの入手が困難なケースもあります。そういった少ないデータ量で学習を進めていく際、この転移学習は真価を発揮します。 また数万〜数十万もの教師データを集め、各々にラベル付けを行うにはかなりの人件コストがかかります。このように、既にある(精度のいい)モデルを、別のものに使いまわす転移学習はこれからの時代必要不可欠でしょう。

転移学習のステップとして、
1.与えられたデータから、特徴量を抽出:
学習済みモデルの最終層以外の部分を利用して、データ内の特徴量を抽出します。ここで得られた学習済みモデルを「特徴抽出器」と言います。

2.抽出した特徴量を用いて、クラス分類する:
1.で実際に求めた特徴量を用いて、新しく追加したモデルに学習を施します。特に画像や音声を識別するモデルは他の分野に比べて流用しやすいため、転移学習が役立ちます。

この転移学習の可能性について、かの有名なcourseraの講師であるAndrew Ngは「機械学習の成功を今後推進するのは、教師なし学習、そして最近目覚ましい進化を遂げている強化学習でもなく、転移学習である」と言及しています。


メタ学習(Meta Learning)

メタ学習とは、「学習方法を学習する(learning to learn)」ことに他なりません。
人間で例えるなら、勉強をする際に教科書や参考書を読み込んだりしますが、ただ読むとしてもその方法は人によって様々です。 そこで、効率が良く理解しやすい読み方が分かれば勉強しやすいですよね。その方法を学習するのがここで言うメタ学習です。

ディープラーニングにおけるメタ学習は次の3つのステップに分けられます。

1.どのタスクでも、同じディープラーニングモデルを使う
2. 各タスク自体がどのようなものかを表す特徴ベクトルをディープラーニングによって抽出し、このベクトルと1.のモデルを使ってタスクを行う
3.各タスクで少数のデータを使って再学習させ、満遍なく良い結果が得られる1.のモデルを見つける

結果として、様々なタスクに特化したモデルが得られると言うわけです。


フィッシャー情報行列(FIM)

タスクを解くためには、入力\(x\)とそれに対応するラベル\(y\)の関係\(p_w (y|x)\)を学習する必要があります。 \(p_w (y|x)\)は重み\(w\)において入力\(x\)(例えば画像データ)が与えられた時、クラス(ラベル)が\(y\)である確率を示しています。
ここで、パラメータ\(w\)がこのタスクを解く際にどれほど重要な情報を含んでいるのか知るために、その摂動\(w'=w+\delta w\)について考えます。 \(p_w (y|x)\)と\(p_{w'} (y|x)\)が大きく異なるようであれば、そのタスクはパラメータに大きく依存していることがわかります。
これを計算する指標としてKLダイバージェンスと呼ばれるものがあります。その二次近似は、 \(\hat{p}\)を訓練データによって定義される経験分布とすると、 $$ \mathbb{E}_{x\sim \hat{p}}KL(p_{w'} (y|x) || p_w (y|x)) = \delta w \cdot F\delta w + \mathcal{o}(\delta w^2) $$ ここで出てきた右辺のFが、フィッシャー情報行列(FIM)と呼ばれるもので、FIMは以下の式で定義されます。 $$ F = \mathbb{E}_{x,y \sim \hat{p}(x)p_w (y|x)} [\nabla _w \log p_w (y|x)\nabla _w \log p_w (y|x)^T] $$ 数式がややこしくなってきましたが、FIMは確率分布の各パラメータ毎の勾配を計算し、その転置行列との積をとっています。また、FIMは確率分布空間上のリーマン距離(計量)であり、 結合分布\(\hat{p}(x)p_w (y|x)\)についてのある特定のパラメータ(重み、特徴量)を含んでいます。 確率分布はベクトルで、それをパラメータベクトルで(偏)微分すると行列となります。この時、行列のi行目は確率分布の全ての値をi番目のパラメータで微分したものとなります。 つまり、FIMの対角成分のみが、同じパラメータで微分したものの二乗が並びます。
これより、FIMにおける対応するエントリ(成分)が小さい値なら、そのタスクはパラメータに強く依拠していないことが分かります。また、FIMはタスクの(コルモゴロフ)複雑性にも関係していると言われています。
以上のことよりFIMをタスクを表す指標としているわけです。
しかし、異なるネットワークでFIMを計算すると比較ができないため、本論文では前述した「probe network」を用います。 また上の数式からも分かるように、全てのパラメータに対する勾配を計算しなくてはならないため、計算量が多すぎるという問題点があります。 これに対応するために、本論文では2つの仮定を置いています。

1.「probe network」内の異なるフィルター間には相関がないと(暗黙的に)仮定→FIMの対角成分についてのみ考える
2.それぞれのフィルターの重みパラメータは基本独立していない→同じフィルターの全ての重みに対し平均化を行う

これによって結果的に得られたものは、「probe network」内のフィルター数と一致した固定長ベクトルであり、 このベクトルを使ってタスク間の距離を計算していくのです。 本論文11ページ目の「Analytic FIM for two-layer model」に簡単な二層モデルでのFIM導出を紹介しているので、 興味のある方は是非参照してみて下さい。


3.TASK2VEC 手順

さてやっと本題に入れるわけですが、まずTASK2VECは大きく次のステップに分けられます

1.事前学習済みモデルによって得られるFIMを計算【2.事前知識参照】
2.FIMの対角成分のみを取り出し、固定長のベクトルを出力

行なっている作業は基本これだけで他のモデルと比較する際に、この出力されたベクトル間の距離を計算します。

ベクトル間の距離計算

このベクトル間距離をユークリッド距離で計量しようとすると、1.ネットワークのパラメータは異なるスケールを持つ、 2.埋め込まれたベクトルのノルムは、タスクの複雑性や計算に使われたサンプル数の影響を受けるといった問題が発生するため、 本論文では距離計算の手法として次の場合分けを行なっています。

◎Symmetric TASK2VEC distance【対称性あり】:
$$ d_{sym}(F_a, F_b) = d_{cos}\left(\frac{F_a}{F_a +F_b}, \frac{F_b}{F_a +F_b}\right). $$ ここで対称性ありの場合について、距離計算の際の頑健性を保つためコサイン距離を導入します。
\(d_{cos}\)はコサイン距離(類似度)、\(F_a\), \(F_b\)は2つのタスク\(a, b\)をベクトル化したもの(計算によって得られたFIMの対角成分)を表しています。 それぞれ\(F_a +F_b\)で割って標準化していることに注意してください。 例えば、iNaturalistにおける種間の分類学上距離(Tax. distance)とコサイン距離について、 以下の図右より、完璧にはマッチしてないですがタスクサイズ\(k\)が大きいほど良い相関(関係)があることが分かります。
自然言語処理
◎Asymmetric TASK2VEC distance【対称性なし】:
$$ d_{asym}(t_a \rightarrow t_b) = d_{sym}(t_a, t_b) - \alpha d_{sym}(t_a, t_0) $$ 次に非対称の場合についてですが、モデル選択の際は上記の転送距離(Transfer distance)が有効です。
一般的にImageNetのように複雑なタスク(データセット)から得られた学習済みモデルは良い性能を持っています。 本論文では、「タスクの複雑性は、"簡単なタスク\(t_0\)"の埋め込み表現によって得られるベクトルの大きさによって計算できる」 という考えをもとに、上記の計算式を導入しています。
この式が言わんとすることは、タスク\(a\)を用いてタスク\(b\)に転移学習させる際に、タスク\(a\)が複雑であればあるほど 良い結果がでるということです。つまり、タスク\(a\)とタスク\(b\)の類似性が高く、かつタスク\(a\)とタスク\(t_0\)の類似性が低いほど この距離は大きくなります。
ここで、\(t_a, t_b\)は2つのタスク、先ほど述べた\(t_0\)は簡単なタスク、\(\alpha\)はハイパーパラメータを表しています。 この\(\alpha\)はメタタスクをもとに選定されます。本論文の実験では、最適な\(\alpha\)がメタタスクの選定に関して 頑健性を持っていることが分かっています。(実験によるとprobe networkとして、ImageNetで事前学習させたResNet-34を使った時の\(\alpha\)は0.15)
【詳しくは本論文"3.1. Symmetric and asymmetric TASK2VEC metrics"参照】


MODEL2VEC【参考】

さて、上記のTASK2VECではタスク間の距離を算出することに成功しています。 しかしここまで読んでくださった読者様の中には、既にお気付きの方もいるでしょうがこのTASK2VEC、完全にモデルの詳細を無視してしまっています。
そこで、モデルが訓練されたタスクの埋め込みができるなら、そのモデルもベクトル化できるのではないか?と考えるわけです。
しかし、一般にそういったモデルの情報はブラックボックス化されてたりして分かりません。 そこで、同じタスクで異なる精度のモデルがあったら、タスクとモデル(アーキテクチャとトレーニングアルゴリズム)間の相互作用をモデル化するために、 2つの相互埋め込みを学習することを目標とすれば良いわけです。
具体的に本論文では、タスク空間に(似たタスク上でも良い精度を出すような)モデルを埋め込むために、メタ学習問題に関する次の公式を提唱しています。
\(k\)個のモデルが与えられた時、MODEL2VECによる埋め込み表現は、
$$ m_i = F_i + b_i $$ で与えられ、ここで\(F_i\)はモデル\(m_i\)をトレーニングするために使ったタスクをベクトル化したもので、\(b_i\)は学習済みの「モデルのバイアス」を表しています。
\(b_i\)は、タスク間距離によって与えられる最適なモデルを予測するための、k交差エントロピー誤差を最適化することによって得られます。 ここでタスク間距離は以下で定義されます。
$$ \mathcal{L} = \mathbb{E}[-\log p(m | d_{asym}(t, m_0), \cdots , d_{asym}(t, m_k))]. $$ トレーニング後、新しいタスクtが与えられた時、\(d_{asym}(t, m_i)\)を最大にするような\(m_i\)が最適なモデルというわけですが。。
あくまで参考程度に考えていただければ結構です。


4.論文の実験結果

使用データセット

まず本論文で使用するデータセットについて、簡単にまとめておきます。【右の数字はタスク数】

iNaturalist:生物を撮影した画像からなるデータセット。それぞれのタスクは種の分類タスクとなっている。【207】
CUB-200:鳥を撮影した画像からなるデータセット。それぞれのタスクは鳥類の分類タスクとなっている。【25】
iMaterialist:ファッション(服飾)画像のデータセット。服の分類に関するタスク(色、素材など)。【228】
DeepFashion:ファッション(服飾)画像のデータセット。iMaterialistと同じ、服の分類に関するタスク。【1000】

4つのデータ合わせて全1460のタスクで実験を行なっています。 これらのタスクで良い学習済みモデルを選択することに成功したTASK2VECですが、早速その実験結果を見ていきましょう。


学習済みモデル

先ほども述べましたが、本論文ではprobe networkとして、ImageNetで事前学習させたResNet-34を、 その後ファインチューニングしたものと、しないものとの2つで実験しています。

実験結果

本論文では4,100の分類器、156の特徴抽出機を使い、そして1,460の埋め込みを実験で行ったそうです(かかった時間は1,300GPU時間)。
再褐しますが、下図がiNaturalist, CUB-200, iMaterialistの3つのデータセットにおける各タスクを、t-SNEによって二次元のベクトルに落とし込み可視化したものです。(左図) 自然言語処理
データセットと相関のあるタスク(例えばiMaterialistだったらパンツの分類タスクなど)は、そのタスク間がうまく分離できており、きちんとグルーピングできています。 しかし右図のように入力ベクトルのみによって埋め込まれたものは、iMaterialistのタスクは1つのクラスタとしてまとまっています。 つまり、データセット内のタスク間を分離できていないということです。 やはりTASK2VECの方がよくタスク間の分離ができていますね。


誤差分布

次にiNaturalistとCUB-200の156の学習済みモデルから特徴量を抽出し、そのタスクの分類誤差を示したものを見ていきましょう。 自然言語処理
このヴァイオリン図において、縦軸はTest Error(テスト誤差)、横軸はそれぞれタスクを示しています。 赤の×がTASK2VECによってモデル選択を行なった場合の分類誤差、 青の△がファインチューニングしてないImageNetで事前学習させたものから抽出した分類誤差を表します。(赤×が低い値の方がいい)
まずこれらのタスクは、左から右へとベクトルのノルム(大きさ)が小さいものから順に並んでいます。 また右に行くに従って分類誤差が大きくなっていることから、TASK2VECによって得られるベクトルの大きさは、タスクの複雑性と正の相関があることが分かります。


サンプルサイズに対する依存性

私たちの興味のあるタスクが比較的少ないサンプル数しかない時、最適な特徴抽出器を見つけ出すことは特に重要になってきます。 次のグラフは、モデル選択においてサンプル数が変化した時、TASK2VECのパフォーマンスがどのように変わっていくかを表したものです。 自然言語処理 グラフはそれぞれ、
オレンジの点線:最も最適なモデルを選択した時
赤の実線:TASK2VECによって選択した特徴抽出器
赤の点線:ImageNetのみで事前学習させた特徴抽出器
青の実線:TASK2VECによって選択した特徴抽出器をファインチューニングしたもの
青の点線:ImageNetのみで事前学習させた特徴抽出器をファインチューニングしたもの
です。これより全てのサンプルサイズに対して、TASK2VECはImageNetのみで事前学習させたものより良い精度を出していることが分かります。
最後に、以下の最適誤差に関する表を見て下さい。 自然言語処理 まずMeta-taskとして、iNaturalistとCUB-200の二つのタスクを合わせた「iNat + CUB」、全てのタスクを混合させた「Mixed」について考えています。 ここで「Chance」は適当なモデルを選択した場合に得られた特徴抽出器で、この表よりChanceのように安価な(何も工夫してない)特徴抽出器よりも、 ImageNetのみで事前学習させた特徴抽出器の方が良い精度であることが分かります。 しかし、そのImageNetのみで事前学習させた特徴抽出器よりも、TASK2VECを用いてタスク間距離を測定し、 モデル選択を行なった方が更に良い最適なモデルが得られることが分かります。

5.まとめ

TASK2VECはタスク、もしくは対応するデータセットを固定長のベクトルとして表現する有用な方法です。
性質として、
1.そのベクトルのノルムは、タスクのテスト誤差やタスクの複雑性と相関がある。
2.埋め込みによるベクトル間のコサイン距離は、タスクの自然距離(例えば種間の分類学上距離、転移学習におけるファインチューニング距離)と相関がある。
などが挙げられます。
総括すると、TASK2VECに基づくモデル選択のアルゴリズムは、学習なしに最適な(もしくは最適に近い)モデルを提唱するため、 自分で一から力尽くで(brute force)最適な学習済みモデルを探す必要がない!ということです。とても画期的な考えですね。 さて本論文にもありましたが、タスク空間上のメタ学習はこれからの人工知能に向けての重要なステップとなるでしょう。
実際、このTASK2VECは完璧にタスクの複雑性や多様性を捉えているわけではないので、実社会で見ることは少ないかと思います。 しかし、このTASK2VECの考え方を基に更なる発展のため、私も勉強していきます。


6.参考文献

TASK2VEC: Task Embedding for Meta-Learning
転移学習とは?ディープラーニングで期待の「転移学習」はどうやる?
データがないのに学習可能? 最先端AI「メタ学習」がスゴい


Twitter・Facebookで定期的に情報発信しています!

Attention は "Attention is all you need" (Vaswani et al, 2017)で一躍有名になった手法ですが、実はこの論文の前からあった概念です。今回はこのAttentionの技術について、またこの論文について解説していきたいと思います。

1 Attentionの概念

Attentionとは、「注意」とあるように、画像や文章の特定の部分に注意を向けるよう、学習させていく方法です。人間の場合を考えてみましょう。私たちが何かを見るとき、全ての部分を同じように観察しているわけではありません。犬の絵があれば、「犬の顔」「犬の手足」「犬の尻尾」を認識して犬だと識別できるのであって、毛の一本一本や肋骨の形に注目している人は少ないでしょう。これと同じことを機械にさせることができれば、より人間に近い形で画像や文章を認識することができます。これがAttentionの一番の動機であり定義の一つです。

具体的にこれがどのようにモデルに表現されているかを知るには、まずSeq2Seqモデルを少し理解するのが良いと思います。

1-1 Seq2Seq モデル

Seq2Seqモデルは文章解析のために作られたモデルで、Encoderと呼ばれる入力を処理する部分と、Decoderと呼ばれる出力を処理する部分に分かれています (Sutskever, 2014)。従来のニューラルネットワークでは、元となる文章をまとめて機械に取り込むので、画像などの情報は処理できても、文章や会話のような順番(sequence)が重要となる入力に関しては上手く学習することができませんでした。そこで、入力の順番の情報も出力に反映させられうようにSeq2Seqが開発されました。

具体的には、EncoderとDecoderにRNNの一種であるLSTMを使います。詳しくはLSTMの記事を読んで頂けると早いですが、sequenceを処理できるRNNの中でも、多少距離が開いていても対応できるLSTMを使うことで、最大限に入力sequenceの情報を出力に反映させることができます。

attention

1-2 Attentionモデル

しかし、Seq2Seqには大きな限界があります。それは、入力の情報は結局最後には一つにまとめられて、固定された大きさのベクトルとして出力に引き渡される、という点です。これを解決し、さらに柔軟なモデルにするために、Attentionが開発されました(Bahdanau 2015)。言葉では分かりにくいので、具体的に図と数式で見ていきましょう。

attention

まず、従来のSeq2Seqのように各単語ごとにencoder(青)とdecoder(赤)からマシンの状態(state)を出力します。そして、推測したい言葉(target)から計算された出力(ht)を全てのencoder出力(hs)と組み合わせ、関連度(a_t)を算出します。

Alt text

このscoreの出し方は様々あり、後述のtransformerモデルの中では内積が使われています。

次に、この関連度でencoderに重りをつけ、「文脈」(context)を割り出します。

Alt text

そして、もう一度Decoderのtargetと文脈を組み合わせて、decoderの隠れ層の最終出力を決定します。

Alt text

最後に、このdecoderの結果を用いて最終出力を決定します。

Alt text

ここで鍵なのが、attentionの度合いを決定するa_tが毎回更新される、という点で、Seq2Seqにはない柔軟性を取り入れることに成功した、というところです。データのどこにattentionを向けるのか、機械に学習させることで、より早く、高い精度を達成することができます。

2 Attention is all you needのモデル

では、Attention is all you need (Vaswani, 2017)について見ていきましょう。上で触れたように、attention自体はこれ以前からある概念ですが、この論文の革新的なところは、余分な部分を取り除き、attentionのみで学習しても、高い精度がでる、という点でした。以下、論文で実装されているtransformerモデルについて解説したいと思います。

2-1 モデルの仕組み

モデルの中心にあるのはattentionなので、元データ(memory)と検索をかけたい入力(input)の関連度を計算します。 逆に言うと、それしかしません。

下の図で見てみましょう。memoryをkeyとvalueに分けるという工夫以外は、基本的にattention_weightを算出し、valueと組み合わせているだけです。以前のように先にRNNを通したりする必要はないのです。Attentionの仕組み自体は上で解説しているので、数式などは省略しますが、順番に見ていきましょう。

Alt text

2-1-1 input, memory

Alt text

入力はinputとmemoryの二つに分けられています。それぞれtensorで、shapeは[batch_size, length, depth]となっています。例として、

Alt text

というデータがあったとします。この場合inputlength=4, memorylength=3になります。 実際、自然言語等のデータを使う場合、多少の下処理が必要になってきます。

まず、文章をいくつかのトークンに区切り、さらにそれを数値に変換していきます。

Alt text

これでnumpy arrayに変換すれば、処理が可能になります。

2-1-2 query, key, value

Alt text

ここで先ほどの入力がquery, key, valueというattentionの中心になる情報に変換されます。queryはinputからくる、「検索をかけたいもの」になります。上の例でいうと、「猫」というのが検索をかけたいものであり、できればそれと関連する言葉が「結果」として出てきてほしい、ということになります。keyはこの検索をかけるときに、memory内のトークンと検索をかけるqueryがどの程度近いのかを図るための索引のようなものです。そして、keyの索引を参考に、対応する適切なvalueをアウトプットします。

なぜ、わざわざmemoryをkeyとvalueに分けるのでしょうか。元となった論文Miiler et al, 2016 によると、memoryを二つに分けることで、keyとvalueの間の非自明な変換によって高い表現力が得られる、ということです。つまり、keyとvalueの関係性が我々に理解のできないようなものであっても、うまく対応できるのです。

2-1-3 attention weight

上記のqueryとkeyから、attention weightと呼ばれる、関連度を計算していきます。この重みが大きいと、query中の言葉とkey中の言葉の関連度が高い、ということになります。

Alt text

まず、queryとkeyの関連度を取ります。上の図では内積をとっていますが、これは内積注意(Dot-Product Attention)と呼ばれる手法で、Attention is all you need内で使われている手法になります。他にも、加法注意(Additive Attention)と呼ばれるものもあり、その場合はqueryとkeyをFFN(Feed Forward Network)に通してattention weightを求めます。一般的に内積注意の方がFFNのパラメーターを調整する必要がなく、処理も速いと言われています。

次に、内積をsoftmaxにかけます。これは一つのqueryに対してweightの合計が1.0になるようにするためです。Softmax関数は入力に大きな値があるとgradientが0に近くなり、学習が遅れてしまいます。そこで、queryとkeyの次元が大きいほどlogitが大きくなることに注目して、queryの大きさを次元に従って小さくすることが一般的です。具体的には、

Alt text

 と調整します。

2-1-4 output

最後に、このように得られたattention weightをvalueと掛け合わせることで、出力を決定します。

Alt text

以上がこのモデルの基本構造になります。このモデルの要は1-2で触れたquery, key, valueに入力を分け、queryからvalueを導き出す、というところにあります。

2-2 Attentionの種類

Attentionには大きく分けて2種類あります。

1つ目は、inputとmemoryが全く同じデータの場合です。これはSelf-Attentionと呼ばれます。

2つ目は、inputとmemoryで違うデータを使う場合です。これはSourceTarget-Attentionと呼ばれます。

Self-Attentionでその言語の構造を学習した後で、SourceTarget-Attentionで新しい文章に対して予測を行うことができる、というイメージです。なのでTransformerモデルも含め、両方のAttentionを組み合わせているモデルがほとんどです。

2-3 Transformerに付け加えられた工夫

ここからはAttention is all you needで実装されたTransformerモデルを中心に、基本的なAttentionに加えてどのような工夫がなされているのか、解説していきたいと思います。

下図の通り、transformerにはattention以外に様々な要素が加え得られています。左側がdecoderと呼ばれる、self-attentionを主に使い文章自体の構造を学習していく部分で、右側がencoderと呼ばれる、self-attentionとsourcetarget-attentionを組み合わせ、新たなmemoryに対するアウトプットを求める部分になります。

attenntion


Attention Is All You Needより引用

2-3-1 Multi-head Attention

論文では、行くつもの小さなAttentionを並列に繋げると、パフォーマンスが上がったと言われています。それぞれのAttentionをheadと呼ぶので、Multi-head Attentionと呼ばれています。Attention is all you needでは、全体として512次元のtensorが使われていて、この総数はheadの数によりません。head=4ならば各headのデータ次元は128になりますし、head=8ならば64次元になります。

2-3-2 Masking

上でAttention weightの計算方法をご紹介しましたが、maskは特定のkeyに対応するattention weightを0にするために使います。入力にあたるlogitに対し、値を-∞に設定することで、softmax時の値が0になります。

Maskを使う動機は主に

・padを無視したい

・decoderのself-attentionの段階で情報を先読みできないようにするため

の2つがあります。

2-3-2-1 padを無視したい

Inputやmemoryにおいて、batchごとのトークンの数は様々です。例えば、

attention

のように、長さが1, 3, 2 とばらつきがあります。

そこで長さを揃えるためにpadで埋めることになります。

Alt text

しかしattention weightの計算をするとき、padの分は計算から除外したい、と考えます。なぜなら、padの数はbatch内の他の文の長さによって影響されるので、本来干渉するべきでない情報が影響し合うことになるからです。そこで、softmaxの結果を0にして影響を避けよう、というのがmaskの目的です。

2-3-2-2 decoderのself-attentionの段階で情報を先読みできないようにするため

Transformerのdecoderでは、self-attentionが行われる部分があります。しかし、新たなアウトプットを予測する部分ですから、自分自身をmemoryにしてしまうと、先の答えが見えているのと同じになってしまいます。今までに得た情報のみで推論するように、先のattention weightを全て0にしてしまいます。

Alt text

2-3-3 Hopping / Position-wise Feedforward Network

このmulti-head attentionを複数組み合わせたり、FFNを挟むことで、さらに学習精度が上がります。Attention is all you needでは、2048次元の中間層と512次元の出力層からなる2層の全結合ニューラルネットワークを使用しています。

Alt text

2-3-4 Wrapper

TransformerにはLayer Normalization, Attention Dropout, Residual Connectionなどの正規化が行われており、これらをまとめてwrapperとして実装しています。これらの措置は主に学習速度を上げたり、学習精度を高めたりするための措置です。

2-3-5 Positional Encoding

Attentionは、そのままではトークンの順序を情報として学習に使うことができません。このままでは語順が反映されなくなってしまうので、Positional Encodingを足します。Attention is all you need では、

PE(pos, 2i) = sin(pos/1000^{2i/d})

PE(pos, 2i+1) = cos(pos/1000^{2i/d})

としています。その理由として、相対的な位置(PE{pos+k})をPE{pos}の線形代数で表現できるため、学習がしやすいだろうからです。

以上、attention及びtransformerモデルについての解説でした。


アクセルユニバース株式会社(以下当社)では、人が対応している業務を画像認識、音声認識、文字認識等を活用して効率化する機械学習ソリューション開発をおこなっています。
「機械学習について」機械学習とプロセス


また、定期的にメルマガでも情報配信をしています。
ご希望の方は問い合わせページに「メルマガ登録希望」とご連絡ください。

参考文献

Attention Is All You Need

作って理解する Transformer / Attention

ディープラーニングブログ/論文解説 Attention Is All You Need (Transformer)


Twitter・Facebookで定期的に情報発信しています!

このアーカイブについて

このページには、過去に書かれた記事のうち論文解説カテゴリに属しているものが含まれています。

前のカテゴリは画像認識です。

次のカテゴリは利用事例です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。