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