効果的なディープラーニング(深層学習)モデルのための10のヒント

昨日、私は幸運にもArno CandelH20を用いたディープラーニングの講演会に参加しました。

ディープラーニングとは、階層型ニューラルネットワーク(バックプロパゲーションを用いた確率的勾配降下法による教師あり学習)を指します。
彼は、堅牢なディープラーニングモデルを開発するための以下のヒントを与えてくれました。

1. 非常に大きなデータセットの結果を迅速に得られるように、H20を利用して複数のノードにアルゴリズムを分配する。

2. 平均値を0に、標準偏差を1に設定する特徴のスケーリングにより、データを自動的に標準化する。こうすることで、元の単位や分散に関係なく、それぞれの適切な特徴量を最終モデルに確実に提供することができます。

3. +/- sqrt(6/(#units + #units_previous_layer))における均一分布を用いて、重みを自動的に初期化する。

4. 適応学習率を用いる。各ニューロンに、そのトレーニング履歴を基に学習率を自動的に設定します。詳細については、Zeilerの2012年の論文”ADADELTA: An Adaptive Learning Rate Method“をご覧ください。

5. 正則化を用いる。簡略化されたモデルを作成し、過学習のリスクを軽減するために、0以外の重みに対してペナルティを科し、また大きな重みに対して強いペナルティを科します。

6. 複雑な共適応を回避するために、ランダムに選択したニューロンをドロップアウトする。詳細については、Geoff Hintonの2012年の論文”Improving neural networks by preventing co-adaptation of feature detectors“をご覧ください。

7. グリッドサーチとチェックポイントを使用して多くのハイパーパラメータを探索し、最も有望なモデルのトレーニングを継続する。

8. より複雑な関数にはより多くの階層を使用する(特に、非線形性を持つ関数)。

9. データ内の微細な構造を検出するために、階層ごとにより多くのニューロンを使用する。

10. アンバランスなクラスに対して、H20のconfig balance_classes = trueを使用する。

Arnoのスライドはこちらでご覧になれます。