TensorflowとAdamOptimizerを使用して回帰問題に対処する非常に単純なANNがあり、すべてのハイパーパラメーターを調整する段階になりました。
今のところ、調整しなければならないさまざまなハイパーパラメータを確認しました。
2つの質問があります。
1)私が忘れていた可能性のある他のハイパーパラメータはありますか?
2)現時点では、私のチューニングはかなり「手動」であり、適切な方法ですべてを実行していないかどうかはわかりません。パラメータを調整するための特別な順序はありますか?たとえば、最初に学習率、次にバッチサイズ、次に...これらすべてのパラメーターが独立していることはわかりません。実際、一部のパラメーターが独立していないことは確かです。どれが明らかに独立していて、どれが明らかに独立していないのですか?それらを一緒に調整する必要がありますか?特別な順序ですべてのパラメーターを適切に調整することについて述べている論文や記事はありますか?
編集:これは、さまざまな初期学習率、バッチサイズ、正則化パラメーターについて取得したグラフです。紫の曲線は私には完全に奇妙です...コストは他の方法よりもゆっくりと低下するようですが、より低い精度で動かなくなりました。モデルが極小値でスタックしている可能性はありますか?
学習率には、減衰を使用しました:LR(t)= LRI/sqrt(Epoch)
ご協力いただきありがとうございます !ポール
私の一般的な順序は:
依存関係:
の最適値は
お互いに強く依存しています。私はその分野の専門家ではありません。
ハイパーパラメータについて:
Tensorboardを実行します。そこにエラーをプロットします。 TBがプロットするデータを探すパスにサブディレクトリを作成する必要があります。そのサブディレクトリの作成はスクリプトで行います。そのため、スクリプトのパラメーターを変更して、試してみますそこに名前を付けて実行し、すべての試行を同じグラフにプロットします。グラフとデータの最も効果的な設定がすぐにわかります。
重要性の低いパラメーターについては、おそらく妥当な値を選択してそれをそのまま使用できます。
あなたが言ったように、これらのパラメーターの最適値はすべて互いに依存しています。最も簡単なことは、各ハイパーパラメータに妥当な範囲の値を定義することです。次に、各範囲からパラメーターをランダムにサンプリングし、その設定でモデルをトレーニングします。これを何度も繰り返してから、最適なモデルを選びます。運が良ければ、どのハイパーパラメータ設定が最も効果的かを分析し、そこからいくつかの結論を出すことができます。
私はテンソルフローに固有のツールを知りませんが、最良の戦略は、最初に0.01、0.001、0.005、0.005のweight_decayの学習率などの基本的なハイパーパラメーターから始めることです。そして、それらを調整します。手動で行うと時間がかかります。カフェを使用している場合は、入力値のセットからハイパーパラメーターを取得して最適なセットを取得するための最良のオプションを次に示します。
https://github.com/kuz/caffe-with-spearmint
詳細については、このチュートリアルにも従うことができます。
http://fastml.com/optimizing-hyperparams-with-hyperopt/
レイヤーの数については、まずネットワークを小さくしてデータを増やすことをお勧めします。十分なデータが揃ったら、モデルの複雑さを増やします。