グラデーション降下の実装

私はバッチと確率的勾配降下の両方を実装しました。私はいくつかの問題が発生している。これは確率的なルールです:

1 to m {  
 theta(j):=theta(j)-step*derivative (for all j)  
} 

私が持っている問題は、たとえコスト関数が小さくなっても、テストではそれが良くないと言います。ステップを少し変更して反復回数を変更すると、コスト関数は少し大きめですが、結果は正常です。これは過度の "症状"ですか?どちらが正しいかをどのように知るのですか? :)

私が言ったように、費用関数はもっと小さくなっていますが、テストではそれは良くないと言います。

4
@ MichaelJ.Barberたとえば、期待値は0.35で、私は0.65です。それは違いです。しかし、異なるステップと反復回数で私は0.35を得ることができます。問題は、適切なパラメータを取得したときに、どのようにしてより大きなスケールで知ることができるのでしょうか?
追加された 著者 Andrew,
@ MichaelJ.Barberと、コスト関数の値が小さければ(最小化されていても)、テスト値は正しい値から大きく離れていますが、値のコスト関数が少し大きければ、テスト例に適した値が得られます。
追加された 著者 Andrew,
「悪い」とはどういう意味ですか?
追加された 著者 Michael J. Barber,
あなたの質問にあなたのコメントを編集する必要があります。また、最適化するパラメータと関数を初期化する方法について何か言えば助かります。
追加された 著者 Michael J. Barber,

2 答え

勾配降下は、関数を最小化するための局所探索方法である。それがパラメータ空間の極小値に達すると、これ以上進ませることはできません。これにより、勾配降下(および他のローカルメソッド)は、グローバル最小値に達するのではなく、ローカルミニマムに陥る傾向があります。ローカルミニマムは、あなたが達成しようとしているものの良い解決策かもしれません。期待することは、最小化しようとしている機能に依存します。

特に、高次元のNP完全問題は扱いにくいことがあります。彼らはしばしば、指数関数的に多くの局所的最適性を有し、それらの多くはコストの点で全体的最適性とほぼ同じであるが、全体最適のパラメータ値と直交するパラメータ値を有する。これらは、難しい問題です。一般的には、十分なローカル最小値を探す代わりに、グローバルな最適値を見つけることは期待できません。これらは関連する問題でもあります。多くの興味深い問題には、これらの特性だけがあります。

簡単な問題で勾配降下の実装を最初にテストすることをお勧めします。多項式で最小値を見つけようとするかもしれません。これは1つのパラメータの問題であるため、多項式の曲線に沿ってパラメータ値の進行をプロットすることができます。あなたは、何かが劇的に間違っているかどうかを知ることができるはずです。また、検索がローカルミニマムにいかに詰まっているかを観察することもできます。また、初期パラメータの選択がかなり重要であることがわかるはずです。

より困難な問題に対処するために、アルゴリズムを変更してローカルミニマムをエスケープすることができます。いくつかの一般的なアプローチ:

  • ノイズを追加します。これにより、見つかったパラメータの精度が低下し、局所的な最小値を「ぼかす」ことができます。検索は、ノイズと比較して小さいローカルミニマムから飛び越えることができますが、さらに深い最小値にトラップされます。ノイズを追加するためのよく知られた方法は、シミュレーテッドアニーリングです。

  • 勢いをつけます。ステップを定義するために現在のグラジエントを使用すると同時に、前のステップと同じ方向に継続します。前のステップのほんの一部を運動量の項として取ると、続行する傾向があり、これは検索をローカルの最小値を超えて行うことができます。端数を使用することによって、階段は指数関数的に減衰するので、階段の貧弱さは大きな問題ではありません。これは、勾配降下が逆伝播として知られているニューラルネットワークを訓練するために使用された場合、常に勾配降下の一般的な修正であった。

  • ハイブリッド検索を使用します。まず、グローバル検索(例えば、遺伝的アルゴリズム、様々なモンテカルロ法)を使用していくつかの良い出発点を見つけ、勾配降下を適用して関数の勾配情報を利用する。

私は使用するための勧告をしません。代わりに、私は、あなたが取り組んでいるものに関連する問題を他の人がやったことを見るために少し研究をすることを提案します。純粋に学習経験であれば、おそらく運動量が働くのが最も簡単です。

17
追加された
あなたは勾配降下を伴うハイブリダイゼーションのGAに関するいくつかの読解を勧められるでしょうか
追加された 著者 Alex,

起こっていることがたくさんある:

  • あなたのステップが悪い選択になる可能性があります
  • デリバリーがオフになっている可能性があります
  • あなたの「期待値」が間違っている可能性があります
  • グラデーションの降下が単純に収束するのが遅くなる可能性があります

私はランレングスを上げようと試み、プロットはさまざまなステップ値で実行されます。より小さいステップは、大きすぎるステップの問題を避けるより良いチャンスを持つでしょう。

0
追加された
問題がローカルミニマムに陥った場合、実際には大きなステップサイズが適しているかもしれません。実験する必要があります。
追加された 著者 Michael J. Barber,
あまりにも掃除、私は言うだろう。グラデーションベースのメソッドは、何度もうまく使用されています。グラデーションは、たくさんの情報を持っています。難しい問題は難しいので、さまざまな方法を試してみるべきです。とにかく、私たちがどのような方法を使っていても、大部分の場合、グローバルな最適化を見つけるようなことはありません。
追加された 著者 Michael J. Barber,
そうですね、私は地元の最低限の人で立ち往生することを考えていませんでした。しかし、それが問題ならば、最初は勾配降下以外の何かをするのが最善でしょう。
追加された 著者 comingstorm,