グラディエントディセントをオプティマイザーとして使用して、学習率を(体系的に)調整する方法は?


12

ML / DLフィールドの部外者。Tensorflowに基づくUdacity Deep Learningコースを開始しました。課題3の問題4を行います。次の設定で学習率を調整しようとしています:

  • バッチサイズ128
  • ステップ数:2エポックを満たすのに十分
  • 隠しレイヤーのサイズ:1024、305、75
  • 重みの初期化:標準で切り捨てられた通常。sqrt(2 / n)の偏差。nは前のレイヤーのサイズ
  • ドロップアウト維持確率:0.75
  • 正則化:適用されません
  • 学習率アルゴリズム:指数関数的減衰

学習率パラメーターをいじくりまわした。ほとんどの場合、効果がないようです。ここにコード ; 結果:

Accuracy    learning_rate   decay_steps     decay_rate      staircase
93.7        .1              3000            .96             True
94.0        .3              3000            .86             False
94.0        .3              3000            .96             False
94.0        .3              3000            .96             True
94.0        .5              3000            .96             True
  • 学習率を体系的に調整するにはどうすればよいですか?
  • 学習率はステップ数とどのように関係していますか?

1
tpotは自動MLチューニングパイプラインを提供します
-denfromufa

回答:


4

勾配降下オプティマイザーを使用します。これは非常に良い概要です。

コードについては、このチュートリアルをご覧くださいこのこれはいくつかの例です。

個人的には、ADAMまたはRMSpropを使用することをお勧めします。設定するハイパーパラメーターがまだいくつかありますが、99%の時間で機能する「標準」のものがいくつかあります。ADAMについてはその論文を、RMSpropについてはスライドこのスライド

編集

OK、あなたはすでに勾配オプティマイザーを使用しています。その後、いくつかのハイパーパラメーター最適化を実行して、最適な学習率を選択できます。最近、自動化されたアプローチが提案されました。また、自動化されたハイパーパラメーターチューニングに関して、Frank Hutterによる有望な研究が多数あります。

より一般的には、AutoML Challengeをご覧ください。ここでは、チームによるソースコードも見つけることができます。この課題の目標は、ハイパーパラメーターの調整を含む機械学習を自動化することです。

最後に、LeCunによるこのペーパーDeepMinによるこの非常に最近のチュートリアル(第8章を参照)では、質問に役立つ可能性のある洞察を提供します。

とにかく、(特に簡単な問題のために)勾配降下オプティマイザーを使用する場合、学習率が学習にあまり影響を与えないことは通常です。通常、これらのオプティマイザーは非常に信頼性が高く、さまざまなパラメーターで動作します。


コードで既にGradient Descent Optimizerを使用しています。リンクをありがとう!
トーラン

@Thoran OK、コードを読んでいませんでした:D(そして質問はオプティマイザーについて言及していません)。私はあなたにいくつかの助けを与えるために私の答えを編集しました:)
サイモン

素晴らしい開発により、<のような部外者にとって仕事が簡単になります。歩数と学習率がどのように関連しているか知っていますか?私の腸は、より多くのステップがある場合、学習プロセスが遅くなるはずだと教えてくれます。
トーラン

@Thoran通常、はい、ステップ数が多いほど、プロセスは遅くなります(しかし、より安定します)。ハイパーパラメーターを手作業で調整するのに役立つ「トリック」の参照をいくつか追加して、回答をさらに編集しました。
サイモン

私はそれを消化するための非常にクールなものは、それはいくつかの時間がかかります:D
Thoran

1

多くの機械学習アルゴリズム自体でハイパーパラメーターのチューニングを自動化することも、Gradient Descentオプティマイザーのハイパーパラメーター、つまり学習率を自動化することもできます。

これを行うために人気があったライブラリの1つはスペアミントです。

https://github.com/JasperSnoek/spearmint


1

非常に最近の自動学習率調整器は、超勾配降下によるオンライン学習率適応で与えられます

このメソッドの実装は非常に簡単で、SGDのコア結果は次のとおりです。

αt=αt1+βf(θt1)Tf(θt2)

βe.g.f(θt2)α

βα0


0

ハイパーパラメーターを調整するには(学習率、減衰率、正則化など)、保留データセットを確立する必要があります。このデータセットはトレーニングデータセットから切り離されています。構成が異なる複数のモデルを調整した後(構成=各ハイパーパラメーターの特定の選択)、ホールドアウト精度を最大化するモデルを選択して構成を選択します。


ホールドアウトデータセットは、テストまたは検証データセットとどのように異なりますか?
トーラン

holdoutは検証用の別の名前です。基本的に、3つのばらばらのデータセット、train、holdout、およびtestがあります。Trainは、モデルの重みを学習するためにのみ使用されます(たとえば、勾配降下法を使用)。Heldoutは、モデルパラメーターの調整に使用されます。テストは、一般化パフォーマンスの測定にのみ使用されます(つまり、モデルが見えないデータで実行されることをどのように期待できますか)
Alireza

@Alirezaに時間をかけて説明してくれてありがとう。検証データセットを既に使用しています。そして、テストなしでは、精度を測定することはできません!
トーラン

元の質問は学習率の決定に関するものでした。元の投稿の最初の列が(トレーニングではなく)正確さを保持していた場合、0.5は0.1よりも優れていると言えます(ただし、値> 0.5を試してください)。[注:あなたがあれば、あなたの実験、テストとして機能するためにいくつかのデータからわずかパーティションを再実行する]
アリレザ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.