qiita.com/To_Murakami/items/e8b7bfe66750fb3f2050
分析結果
- カテゴリ
- 教育
- 重要度
- 50
- トレンドスコア
- 14
- 要約
- 【機械学習】ニューラルネットワークにおける効率的なパラメータ調整方法についてまとめてみた #DeepLearning - Qiita 185 いいねしたユーザー一覧へ移動 197 X(Twitter)でシェアする Facebookでシェアする はてなブックマークに追加する more_horiz 記事を削除する close 一度削除した記事は復旧できません。 この記事の編集中の下書きも削除されます。 削除してよろしいですか? キャンセル
- キーワード
【機械学習】ニューラルネットワークにおける効率的なパラメータ調整方法についてまとめてみた #DeepLearning - Qiita 185 いいねしたユーザー一覧へ移動 197 X(Twitter)でシェアする Facebookでシェアする はてなブックマークに追加する more_horiz 記事を削除する close 一度削除した記事は復旧できません。 この記事の編集中の下書きも削除されます。 削除してよろしいですか? キャンセル 削除する delete info この記事は最終更新日から5年以上が経過しています。 @ To_Murakami ( Tomonari Murakami ) 【機械学習】ニューラルネットワークにおける効率的なパラメータ調整方法についてまとめてみた 機械学習 DeepLearning ニューラルネットワーク 185 最終更新日 2016年07月07日 投稿日 2016年07月04日 はじめに ニューラルネットワークの実装を考えたことがある方なら、聞いたことがあるかもしれません。ニューラルネットワーク(以下NN)のモデリングの完成には、職人芸的処置が必要だと。具体的には、モデル化においてたくさん出てくるパラメータをどう設定するかという点です。 本記事では、NNにおけるパラメータの効率的な調整手順をまとめてみました。NNの理論については、ここで触れないので、各自お調べください。 概観 まず、留意していただきたい点が一つあります。それは、 「最適なパラメータをすぐに決められる一発公式のようなものはない」 ということです。 実際に、多くの研究者が論文において、自身のモデルに特有なパラメータ設定をしています。 この問題に対して、神の一手(a priori)をゲットするのは、難しいでしょう。 したがって、 自身の経験と探索的アプローチ の積極的活用がパラメータ設定の基本戦略になります。 探索フロー ここでは、NNの代表的パラメータである次の4つに触れます。 ① 学習係数$\eta$ ② L2正則化項$\lambda$ ③ 隠れ層の次元(ユニット数) ④ ミニバッチ数 まず、全体図を示します。 (※上図、L2正則化項の記号は$\lambda$です。誤りのお詫びを申し上げます。) パラメータの設定でポイントとなるのが、できるだけ効率的な時間の使い方でQualityのバランスの取れたパラメータセットをみつける、という点です。 ①学習係数η ポイントは、 オーダー(桁数)感覚 です。まず、一般的な数字(0.01とか)からスタートし、桁数を大きくしていきます。 0.01 -> 0.1 -> 1 こんな感じです。 悪化していくようであれば、小さくしていきます。 最適な桁数を発見したのち、有効数字2桁圏内で、最もパフォーマンスのよい数値を決めます。 アウトプットイメージ: $\eta=0.025$ ②L2正則化項λ まずは、「正則化項が ない 状態$\lambda=0$」で$\eta$を決定し、「 ある 状態$\lambda=1$」から②の探索をスタートします。手順としては①と同じように、桁数→詳細の流れで絞り込みます。 ③中間層(隠れ層)の次元(ユニット数) ①、②を決めてから探索します。極端なところで、 次元数1から スタートして、アウトプットを見てみます。これは、徐々に大きくしていくアプローチがいいです。次元数によって、計算コストが変わるからです。 中間層の次元については、以下のStackOverflowでの議論が実践的でした。参考になります。 http://goo.gl/AM34f6 大略を掴む上では、 (入力層 + 出力層) x 2/3 のユニット数が適切という基準があります。しかし、これは特徴ベクトルの複雑さ、データのノイズ、訓練データ数といった背景を無視しているため、最適になるとは限りません。 結局のところ、「 探索的最適化 」が実践解の中では、より厳密であると言えます。この説の背景には、 未適合 (under fitting)と 過適合 (over fitting)があります(下図)。ユニット数が小さいときは、未適合のため学習精度が悪く、ユニット数が増えると、過適合のため、テスト精度が悪くなります。 したがって、この中間の最適な場所が、決めるべきユニット数になります。 複数層あるときは、はじめに1層目の最適化からトライします。このとき、2層目以降のユニット数は、1層目のそれに近づけておきましょう(それか同値)。 加えて、個人的には、SEM(共分散構造分析)様のくくり方がヒントになるという仮説を持っています。SEM起因で近しい次元を集約します。さらに、One-hotベクトルなどで膨張した次元を集約します。その上で、決定した次元数を中間層の初期設定に置きます。 ④ミニバッチ数 これは、結構特殊な立ち位置にあります。調整の目的は、計算スピードと精度のバランスですが、$\eta$や$\lambda$と相互作用を起こしません。 したがって、①~③ののちに、別途調整します。最小の勾配(取りこぼしのない)バッチ数1から始めて、徐々に規模を大きくしていきます。 参考文献 (1) Efficient BackProp 少し古いですが、誤差逆伝播法適用時の効果的なパラメータ設定について触れられています。 (2) Random search for hyper-parameter optimization Grid Search法というテクニックを提案しています。 パラメータを変数とみて、各軸の格子(Grid)を考えます。 格子探索から、最良のパラメータを見つけるというアプローチです。 (パラメータ数が増えるほど探索コストが爆増するので(次元の呪い)、Rondom searchとの併用を勧めています。) (3) Practical Bayesian optimization of machine learning algorithms パラメータ決定について、ベイズ推計を応用しました。 185 いいねしたユーザー一覧へ移動 197 comment 0 コメント一覧へ移動 新規登録して、もっと便利にQiitaを使ってみよう あなたにマッチした記事をお届けします 便利な情報をあとで効率的に読み返せます ダークテーマを利用できます ログインすると使える機能について 新規登録 ログイン 185 いいねしたユーザー一覧へ移動 197 more_horiz 記事を削除する close 一度削除した記事は復旧できません。 この記事の編集中の下書きも削除されます。 削除してよろしいですか? キャンセル 削除する delete