2017/11/26

Relation Netowrksの概要

いきなりまとめ


Relation Netowrksとは関係性の推論を行えるニューラルネット。

画像や音声の単純な認識ではなく、複雑な思考が可能。
例えば、
  • グレーの物体から最も離れている物体の形は何か?
  • ボールは今何処にあるか?
  • ランダムに動くボール群のどれがペアになっているか?
といった質問に回答可能。



Today I Learned


A simple neural network module for relational reasoning
を参考に。


Relation Netowrksとは


関係性の推論を行うことのできるニューラルネット。

特徴は
・関係性の推論に特化
・ plug-and-play
・入力データ形式が比較的自由


Relation Netowrksの威力


関係性の推論タスクで他のモデルや人間をアウトパフォーム。

・画像認識QAタスク(CLEVRデータセット、Sort-of-CLEVRデータセット)
  • 95.5%の最先端のパフォーマンス
  • それまでのベストモデルを27%上回った
  • 人間に対してもアウトパフォーム
各画像は3Dオブジェクトを含み、異なるカテゴリーの質問と関連付け。
属性についての質問(球は何色か?)、属性の比較についての質問(立方体と直方体が同じ素材か?)など。


・テキストQAタスク(bAbIデータセット)
  • 18/20のタスクに成功
  • 基本タスクでは2.1%のトータルエラー
bAblデータセットはテキストベースのQA。
20のタスクからなり個々のタスクは特定の推論、演繹、帰納、数え上げなどに対応。
個々の質問はsupporting factsと関連付け。
例:ボールはどこだという質問に対するfactsはサンドラはボールを拾った、サンドラはオフィスへ行ったなど。
パフォーマンスが95%以上ならばタスクを解いたと判定。


 ・動的システムにおけるタスク(物理シュミレーションデータセット)
  • 93%のデータに対してすべての接続性を認識
  • カウントタスクでは95%のパフォーマンス
各シーンはテーブル上を動く10個のカラーボールを含む。
ランダムに選ばれたボールペアは不可視のスプリングによって接続。
入力データは状態マトリックス。
それぞれの行がボールに対応し、列はRBGカラー値、16ステップにおける空間的座標を表現。

タスクは2種。
1:ボール間の接続性の有無の判定
2:テーブル上のシステムの数のカウント


Relation Netowrksの中身


・入力データ
幅広い入力形式に対応 。
CNNまたはLSTMから出力されたembedding、
状態を描写したベクトルなど。

QAタスクでは画像に関するパッチ、質問をLSTMで処理したembeddingを入力。

テキストQAタスクではサポートセットから20個のセンテンスを選択。
サポートセンテンスおよび質問をLSTMで処理し、embeddingをペアにして入力。


・モデル構造

Relation Netowrksの基本構造。





すべてのオブジェクトペアをMLP のgに入力し関係性を得る。
オブジェクトはCNN、RNNで処理したembeddingや状態描写ベクトル。
それらを要素ごとに足し合わせMLPのfに入力し回答を出力。

画像認識QAタスクでは、4層のConvNetでembeddingを得る。
質問の処理には128ユニットのLSTM。
gには4層のMLP。
fには3層のMLP。
回答ボキャブラリーをsoftmaxにより出力。
ロス関数にはcross-entropyを使用。
トレーニングにはAdam。





2017/09/16

Differentiable Neural Computers(DNC)の概要

いきなりまとめ


Differentiable Neural Computers(DNC)はNeural Turing Machines(NTM)の強化版。
構造データの記録、構造データを使用した質問への回答が可能。
例えば、
  • 地下鉄最短経路の探索
  • 家系図の探索
  • 複雑な指示の実行
が可能。



Today I Learned


Differentiable neural computers
を参考に。


Differentiable Neural Computersとは


DNCはmemory augmented neural networkの一種。

メモリを使用することで複雑かつ構造データに関わる質問に回答可能。
例えば、ストーリーの作成、家系図、地下鉄の地図。
reinforcement learningを使ってブロックパズルゲームを解くことも可能。



Differentiable Neural Computersの中身


Neural Turing Machinesと同様にコントローラーとメモリーバンクを搭載。

違いはメモリーバンクへのアドレスを生成する方法。
読み込み時にはassociative temporal linksによって連続的に書き込まれた情報にアクセス。
メモリのusageが記録され使用率の低いアドレスから書き込みに使用される。



Differentiable Neural Computersの威力


DNCに複雑な構造データを作成させ、そのデータに従い質問に回答させるでテストを実施。

グラフデータは任意に結合した経路やサイクルを表現する際に重要。
DNCは任意のグラフに関して説明、質問に対する回答が可能。


・地下鉄の地図

例えばロンドン地下鉄。
ボンドストリートからスタートして、
中央線に乗って1駅、
環状線に乗って4駅、
ジュービリー線に乗って2駅乗る、
するとどの駅に着くか?
といった質問に答えることが可能。
またムーアゲートからピカデリーサーカスまでのルートの提案が可能。


・家系図

家系図問題においては複雑な推論が可能。
例えば、両親、子供、兄弟といった関係のみから、
フレイヤの母方の曾祖父は誰か?
といった質問に回答可能。


・Reinforcement Learning

DNCはreinforcement learningにも応用可能。
カラーブロックの配置問題。
青のブロックを緑の下に、
オレンジのブロックを赤の左に、
紫をオレンジの下に、
青を紺色の右に、
・・・といった一連の指示が実行可能。
DNCはそれぞれの指示をメモリーに格納し、順次実行。



2017/09/09

Neural Turing Machinesの概要

いきなりまとめ


Neural Turing Machinesはワーキングメモリを搭載したニューラルネットワーク。
NTMではメモリーの使用法を含むすべてがトレーニング可能。
コピータスクを実行させると人間と同様の操作を学習。



Today I Learned


Neural Turing Machines
を参考に。


Neural Turing Machinesとは


ワーキングメモリを搭載したニューラルネット。

NTMはコントローラーとメモリーバンクから構成。
コントローラーは通常のニューラルネットと同様の入出力+メモリーバンクに対して読み書き。
コントローラーから出力され読み書きを行う機能をヘッドと呼ぶ。



Neural Turing Machinesの中身


・コントローラー

コントローラーはfeedforwardネットでも可能だが、RNN(LSTMなど)が良い。
context-dependent computationが可能となるため。


・メモリーバンク

メモリーバンクは行がアドレスを表す行列。
NTMではメモリー操作を含むすべてがトレーニング可能。

読み書き用ヘッドはメモリへのアクセスのためにメモリーアドレスに対応したベクトル(weighting vector)を出力。

weighting vectorは補完的な2つのadressingメカニズムから生成。
content-based addressingはコントローラーから出力されるkey vectorとアドレスごとのコンテンツの類似度を算出。
location-based adressingではshift weightingにもとづいてアドレスを移動。

読み込みではweighting vectorを用いてmemory matrixの行の加重和によりread vectorを算出。

書き込みは2つ操作から構成。
まず前回までのmemory matrixに対してweighting vectorとerase vectorを用いて要素ごとの削除を実行。
削除後のmemory matrixに対してweighting vectorとヘッドから出力されるadd vectorにより追加を実行。



Neural Turing Machinesのパフォーマンス


ランダムなビット列を入力し、出力するコピータスクを実行。
通常のLSTMをアウトパフォーム。

コピータスクでトレーニングしたNTMはコピータスクを人間がプログラミングする場合と同様の操作を学習。

    初期化:ヘッドをスタート位置に戻す
    区切り文字が含まれない間ループ
        input vectorの読み込み
        ヘッド位置にinputの書き込み
        ヘッドの位置を1増加
    ヘッドをスタート位置に戻す
    ループ
        ヘッド位置からoutput vectorを読み込み
        outputの出力
        ヘッド位置を1増加



2017/09/02

ベイズを用いたハイパーパラメーターの最適化

いきなりまとめ


ハイパーパラメーターの自動最適化方法の1つがBayesian Optimization。
Bayesian Optimizationとは
  • gaussian processによるブラックボックス関数のモデル化
  • グリッドサーチよりも少ないトレーニング時間
  • ベストなパフォーマンス



Today I Learned


Bayesian Optimization for Hyperparameter Tuning
を参考に。


ハイパーパラメーターの自動最適化


ほとんどのハイパーパラメーター最適化アルゴリズムはSequantial Model-based Global Optimization SMBO。
これらは真のブラックボックス関数(ハイパーパラメーターからvalidation setに対するパフォーマンス)を近似するために代理関数を使用。
代理関数を最大化するようなパラメーターが次の試行に使用。
SMBOは代理関数を最大化する基準および代理関数のモデル化によって違いが存在。


・Bayesian Optimizationとは

代理関数のモデル化にgaussian processをベースとしたexpected improvementを使用。
expected improvementは新たなパラメーターがもたらす改善についての期待確率。

Gaussian Processとは
  • 関数についての確率分布
  • データに分布関数を適合させるようトレーニング
  • パラメーター空間における任意のexpected improvementが計算可能
最も高いexpected improvementが次の試行におけるハイパーパラメーターの設定。

Bayesian Optimizationの実装で有名なのはSpearmint


・Bayesian Optimizationのパフォーマンス

Bayesian Optimizationのテストのためにthe San Francisco Crimes datasetを使用。
モデルのテストにおいては時間と場所を用いて39の犯罪カテゴリを予測。

GPUを使ったトレーニングは1回あたり25分。
指定したパラメーター空間に対してグリッドサーチを行うと12.6日。
Bayesian Optimizationは15.8時間かかり、ベストなパフォーマンスを獲得。
ランダムサーチの場合13.7時間かかり、Bayesian Optimizationに次ぐパフォーマンス。

2017/08/31

DeepLearningを実用する際のテクニック2

いきなりまとめ


DeepLearningではデータの事前処理が必要。
Computer Visionには特有の事前処理、
  • ピクセル値の標準化
  • サイズの標準化
  • データの増幅
などが存在。



Today I Learned


Chapter 12 Application
を参考に。


Computer Vision


ANNでは通常データの事前処理が必要。
画像データの場合は
  • スケーリングは必須 ([0,1] or [-1, 1])
  • サイズの標準化も必要(可変サイズの場合はpoolingでサイズ調整が必要)
その他にも必要に応じて、
  • dataset augmentation(トレーニングデータの増幅)
  • データの正準型への変換(データの変動の削減)
など。


・Contrast Normalization

データの変動の大きな要因がコントラスト。
deep learningにおいてはコントラストはピクセルの標準偏差。

Global contrast normalization(GCN)では画像全域のデータによってピクセルの値を標準化。
これによりデータは球状に分布(DeepLearningは方向と距離を同時に扱うのは困難)。
GCNではエッジがボケてしまう場合がある(暗い部分と明るい部分のエリアが大きい画像、街の画像など)。

local contrast normalizationでは小領域ごとに標準化。
これによってGCNでボケてしまうエッジを検出可能。


・Dataset Augmentation

Dataset Augmentatioではトレーニングデータのコピーによってデータを増幅。
これによってモデルの一般性が向上可能。
特に画像認識において有効。


2017/08/19

DeepLearningを実用する際のテクニック1

いきなりまとめ


DeepLearningの実用においては計算コストに対する対応が重要。
計算の分散、計算の削減といったアプローチが可能。
この目的のために
  • 大規模分散実装
  • モデル圧縮
  • 動的システム
といった手法が採用される。



Today I Learned


Chapter 12 Application
を参考に。


大規模分散実装


入力データを分割して処理する場合(data parallelism)と
モデルのパーツを分割して処理する場合(model parallelism)。


・data parallelism

学習済みモデルにおける予測生成時のdata parallelismは容易。
単純に個々の入力データを個々のマシーンで分散処理する。

しかしモデルのトレーニング時におけるdata parallelismは困難。
通常のgradient descentによるt期のパラメーター更新はt-1期に依存しているため。
asynchronous stochastic gradient descentでは個々のマシーンがパラメーターを保存したメモリをロックなしで共有もしくはパラメーターサーバーを使用する。
他のマシンの成果を上書きするためSGDステップごとの平均的な改善は低下するが全体として学習速度は向上する。


・model parallelism

個々の入力データに対してモデルの異なるパーツを個々のマシーンで分割処理する。
トレーニング時および予測生成時の両方において可能。



モデル圧縮


実用においてはモデルのトレーニング時よりも、
トレーニングしたモデルから予測を生成する際の計算コストの方が重要。
エンドユーザーの計算資源は限られているため。

予測時の計算コストを減らす鍵はモデルの圧縮。
オリジナルのモデルをより小さなモデルに置き換えること。
オリジナルモデルがoverfittingを防ぐために複数の独立モデルをensembleしている場合などでは計算コストが大きくなる。

こうしたモデルはトレーニングサンプルが少ないためにサイズが大きくなる。
このモデルf(x)とランダムにサンプルしたxを使えばトレーニングセットを無制限に生成できる。
新たに生成したトレーニングセットに対してモデルをトレーニングすればサイズを縮小できる。
より効果的な方法は実際のテストポイントxに近い分布からサンプルすること。



動的システム


入力データを効率的に処理するにはDynamic Structureを持ったシステムを作る必要がある。
入力データに対してどのANN(ML model)を適用するか、
さらにそのモデル内においてどのfeaturesを使用するかという2段階がある。


cascade strategy

cascade strategyは稀なオブジェクトまたはイベントを検出するために用いられる。
確実に検出するためには洗練されたキャパの高いモデルが必要となるが計算コストが高い。
一方で入力が稀なオブジェクトを含んでないと否定するのはコストが低い。

こうした状況でa sequence of classfiersをトレーニングする。
最初のモデルはキャパが低くrecallが高くなるようトレーニングする。
最後のモデルはprecisionが高くなるようトレーニングする。
この手法は計算コストを抑えつつ高いキャパを持ったモデルによる高い信頼性を確保できる。

高いキャパを持ったcascadeを実装するには2通りある。
よりあとのモデルに高いキャパを持たせるか、
または個々のモデルは低いキャパだが多数組み合わせるか。


・the gater

gaterはどのタスクに特化したエキスパートネットワークを使用するかを選択するNN。

mixture of expertsではgaterは入力に対して特化ネットワークそれぞれのウェイトを出力し、
最終的に各ネットワークの加重平均を出力する。
この場合、計算コストを減らせない。

サンプルに対して1つのNNを選択するhard gaterならばtrainingとinfrerenceの時間を加速させる。
特にゲートの数が少ない場合はうまく機能する。

Relation Netowrksの概要

いきなりまとめ Relation Netowrksとは関係性の推論を行えるニューラルネット。 画像や音声の単純な認識ではなく、複雑な思考が可能。 例えば、 グレーの物体から最も離れている物体の形は何か? ボールは今何処にあるか? ランダムに動くボール群のどれが...