2012-02-06 15 views
4

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

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

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

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

+0

「良くない」とはどういう意味ですか? –

+0

@ MichaelJ.Barberたとえば、期待値は0.35で、私は0.65です。それは違いです。しかし、異なるステップと反復回数で私は0.35を得ることができます。問題は、適切なパラメータを取得したときに、どのようにしてより大きなスケールで知ることができるのでしょうか? – Andrew

+0

@ MichaelJ.Barber、コスト関数の値が小さい(最小化されていても)テスト値は正しい値とはかなり離れていますが、値のコスト関数が少し大きければ、テスト例に適した値が得られます。 – Andrew

答えて

17

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

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

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

より困難な問題に対処するには、ローカルミニマムからエスケープするアルゴリズムを変更することがあります。一般的なアプローチ:

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

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

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

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

+0

グラジエント降下を伴うハイブリダイゼーションGAでの読み方をお勧めしますか – Alex

0

に行くことができ、物事がたくさんあります。

  • あなたstepは悪い選択
  • あなた誘導体はオフ
  • あなたの「期待値」は
  • を誤解されるかもしれないかもしれない可能性がであなたのグラデーションの降下は、収束するのが単純に遅くなる可能性があります

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

+0

問題がローカルミニマムに陥った場合は、実際にはより大きなステップサイズが適しているかもしれません。実験する必要があります。 –

+0

そうです、私は地元の最低限に立ち往生することさえ考えていませんでした。しかし、それが問題ならば、最初は勾配降下以外の何かをするのが最善でしょう。 – comingstorm

+0

あまりにも掃除、私は言うだろう。グラデーションベースのメソッドは、何度もうまく使用されました。グラデーションは、*たくさんの情報を持っています。難しい問題は難しいので、さまざまな方法を試してみるべきです。とにかく、私たちがどのような方法を使っていても、大部分の場合、グローバルな最適化を見つけるようなことはありません。 –

関連する問題