はじめに
     ニューラルネットワークの実装を考えたことがある方なら、聞いたことがあるかもしれません。ニューラルネットワーク(以下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 件のコメント:
コメントを投稿