2017年1月13日金曜日

ニューラルネットワークにおける効率的なパラメータ調整方法についてまとめてみた

はじめに

 ニューラルネットワークの実装を考えたことがある方なら、聞いたことがあるかもしれません。ニューラルネットワーク(以下NN)のモデリングの完成には、職人芸的処置が必要だと。具体的には、モデル化においてたくさん出てくるパラメータをどう設定するかという点です。
 本記事では、NNにおけるパラメータの効率的な調整手順をまとめてみました。NNの理論については、ここで触れないので、各自お調べください。

概観

 まず、留意していただきたい点が一つあります。それは、

「最適なパラメータをすぐに決められる一発公式のようなものはない」
ということです。

実際に、多くの研究者が論文において、自身のモデルに特有なパラメータ設定をしています。
この問題に対して、神の一手(a priori)をゲットするのは、難しいでしょう。

したがって、自身の経験と探索的アプローチの積極的活用がパラメータ設定の基本戦略になります。

探索フロー

ここでは、NNの代表的パラメータである次の4つに触れます。
学習係数ηη
L2正則化項λλ
隠れ層の次元(ユニット数)
ミニバッチ数

まず、全体図を示します。


上図、L2正則化項の記号はλλです。誤りのお詫びを申し上げます。)

 パラメータの設定でポイントとなるのが、できるだけ効率的な時間の使い方でQualityのバランスの取れたパラメータセットをみつける、という点です。

学習係数η

 ポイントは、オーダー(桁数)感覚です。まず、一般的な数字(0.01とか)からスタートし、桁数を大きくしていきます。

0.01 -> 0.1 -> 1

こんな感じです。
悪化していくようであれば、小さくしていきます。
最適な桁数を発見したのち、有効数字2桁圏内で、最もパフォーマンスのよい数値を決めます。
アウトプットイメージ: η=0.025η=0.025

L2正則化項λ

まずは、「正則化項がない状態λ=0λ=0」でηηを決定し、「ある状態λ=1λ=1」からの探索をスタートします。手順としてはと同じように、桁数詳細の流れで絞り込みます。

中間層(隠れ層)の次元(ユニット数)

 を決めてから探索します。極端なところで、次元数1からスタートして、アウトプットを見てみます。これは、徐々に大きくしていくアプローチがいいです。次元数によって、計算コストが変わるからです。
 中間層の次元については、以下のStackOverflowでの議論が実践的でした。参考になります。
http://goo.gl/AM34f6
 大略を掴む上では、(入力層 + 出力層) x 2/3のユニット数が適切という基準があります。しかし、これは特徴ベクトルの複雑さ、データのノイズ、訓練データ数といった背景を無視しているため、最適になるとは限りません。
 結局のところ、「探索的最適化」が実践解の中では、より厳密であると言えます。この説の背景には、未適合(under fitting)過適合(over fitting)があります(下図)。ユニット数が小さいときは、未適合のため学習精度が悪く、ユニット数が増えると、過適合のため、テスト精度が悪くなります。
 したがって、この中間の最適な場所が、決めるべきユニット数になります。

 複数層あるときは、はじめに1層目の最適化からトライします。このとき、2層目以降のユニット数は、1層目のそれに近づけておきましょう(それか同値)
 加えて、個人的には、SEM(共分散構造分析)様のくくり方がヒントになるという仮説を持っています。SEM起因で近しい次元を集約します。さらに、One-hotベクトルなどで膨張した次元を集約します。その上で、決定した次元数を中間層の初期設定に置きます。

ミニバッチ数

 これは、結構特殊な立ち位置にあります。調整の目的は、計算スピードと精度のバランスですが、ηηλλと相互作用を起こしません。
 したがって、~ののちに、別途調整します。最小の勾配(取りこぼしのない)バッチ数1から始めて、徐々に規模を大きくしていきます。

参考文献

(1)Efficient BackProp
少し古いですが、誤差逆伝播法適用時の効果的なパラメータ設定について触れられています。

(2)Random search for hyper-parameter optimization
Grid Search
法というテクニックを提案しています。
パラメータを変数とみて、各軸の格子(Grid)を考えます。
格子探索から、最良のパラメータを見つけるというアプローチです。
(
パラメータ数が増えるほど探索コストが爆増するので(次元の呪い)Rondom searchとの併用を勧めています。)

(3)Practical Bayesian optimization of machine learning algorithms
パラメータ決定について、ベイズ推計を応用しました。

 

0 件のコメント:

コメントを投稿