25確率勾配降下法

確率的勾配降下

1.コンセプト

  私たちは前に学んだ、勾配降下法は、常に損失関数は、我々はに対応して最適化するということであったθθ、ある時点でθの勾配値は正確に計算されます。
ここに写真の説明を挿入
  次に、導出された式から、正確な勾配を見つけるために、この式の各項目をすべてのサンプルに適用する必要があることがわかります(mmm)計算を実行します。以前に合計計算があるため、このような降下方法は通常、バッチ勾配降下と呼ばれます。私たちの場合は、他の言葉では、すべての演算処理をバッチで、試料中のすべての情報を計算しなければならないが、これは明らかに問題をもたらすミリメートルmが非常に大きい場合、つまり、サンプルサイズが非常に大きい場合、勾配自体の計算には非常に時間がかかります。それで、この質問に基づいて、何か改善はありますか?

  実際、すべての式がmmに対して正しいため、非常に簡単です。m個のサンプルが計算されました。平均を取得するには、1mmを追加する必要があります。mなので、自然に導き出されたアイデアは、一度に1つのサンプルしか計算できないということですか?この考えに基づいて、上記の式を次のように変更できます。
ここに写真の説明を挿入
  ここでは、合計記号を削除します。この場合、iiiの場合、常に固定のものを使用しますiii、それに応じて、ブラケットの外側でmmで割る必要はありませんm、2を掛けるだけです。もちろん、上記の式をベクトル化することもできます。ベクトル
ここに写真の説明を挿入
  化の方法は以前と同じですが、X bXbの場合はX bの場合、毎回X bXbのみを取得しますX bの1行で計算を実行するのは問題ありません。このような式を検索の方向として使用できますか?ここで特に注意しなければならないのは、この式は損失関数の勾配ではなくなったため、勾配の方向ではなく検索の方向について話しているということですが、勾配式を観察し、毎回ランダムに1つを取り出すことを想像します。iii、このiiはランダムに選択されますiを入力し、次の式を使用して計算します。
ここに写真の説明を挿入
  この式で計算されるのもベクトルであり、方向を表すこともできます。この方向を検索して継続的に繰り返します。損失関数の最小値を取得できますか?そして、そのような考えの実現は確率的勾配降下と呼ばれます。

ここに写真の説明を挿入
  確率的勾配降下法の検索プロセスを上の図に示します。勾配降下法を使用する場合、外側の点から開始し、固定方向に前進することを思い出してください。これは、損失関数全体の最小値です。ただし、ランダム降下勾配法では、毎回取得する方向が損失関数が減少する方向であるとは保証できません。また、減少速度が最も速い方向であるとは保証できません。そのため、検索パスは次のようになります。パス、これはランダム性の特徴であり、予測できません。ただし、実験の結論から、それでも、勾配降下法のように必ずしも最小点に達するとは限りませんが、確率的勾配降下法によって、通常、損失関数全体の最小点に到達できることがわかります。しかし、私たちのmmmが非常に大きい場合、多くの場合、確率的勾配降下を使用して、特定の時間に特定の精度交換することをお勧めします。

  そして具体的な実現には、非常に重要なテクニックがあります。私たちの確率的勾配降下法の過程で、この学習率(ηη確率的勾配降下法の過程で学習率が常に固定値である場合、確率的勾配降下法がある程度これに到達している可能性が非常に高いため、 η)の値は非常に重要になります。最小値の中心付近の位置は現在ですが、このランダムなプロセスでは不十分であるため、ηηηは再び固定値であり、最小値の位置からゆっくりと飛び出します。したがって、実際には、確率的勾配降下法での学習率が徐々に低下することを期待し、次のようにする関数を設計できます。私たちの学習率(ηηη)勾配降下法のサイクル数が増えると、対応するηηηの値はどんどん小さくなっています、あなたはそれを考えたかもしれません、最も簡単な方法は相互形式を使用することです(i_itersはサイクル数を表します):
ここに写真の説明を挿入
  しかし、サイクルが少ない場合、そのような実装にはいくつかの問題があることがあります当時、ηの低下が速すぎました。たとえば、1〜2 i_itersの変更、当社のηのηηは、一度に50%低下します。10000から10001までi_itersが増加した場合、当社ηηηは1万分の1しか下がらず、その後ηηの前後にη値の減少の比率が大きすぎるため、通常、実装時に分母に定数bbを追加します。b、私は通常後でbbを与えますbの値は50です。
ここに写真の説明を挿入
  分子の位置で1に固定すると、目的の効果が得られない場合があるため、分子にも一定のaaをとらせます。a
ここに写真の説明を挿入
  だから、aaを追加することができますabbbは、確率的勾配降下法に対応する2つのハイパーパラメーターと見なされますが、その後の学習では、これら2つのハイパーパラメーターは調整されないため、経験的に優れた値aaを選択します。a = 5、bbb = 50。しかしとにかく、確率的勾配降下法でより良い収束結果を得るために、私たちの学習率はサイクル数が増えるにつれて徐々に減少するはずです。

  実際、この徐々に減少するアイデアは、シミュレートされたアニーリングのアイデアですいわゆるシミュレートされたアニーリングのアイデアは、実際に私たちの自然の状況をシミュレートしています。たとえば、鋼を作るには火の精錬が必要です。このプロセスでは、火の精錬の温度が高から低に徐々に冷却されます。これがいわゆるアニーリングです。プロセス、次にこの冷却機能は時間ttですt関連。したがって、時々 、我々はまた、変更ηηηの値は次のように記述されます。
ここに写真の説明を挿入


2.実現

  確率的勾配降下の原理はすでに明確に紹介していると思いますが、それを実装するための具体的なコードを見てみましょう。

ここに写真の説明を挿入
ここに写真の説明を挿入
ここに写真の説明を挿入
ここに写真の説明を挿入


  次のブログでは、確率的勾配降下法のトレーニングプロセスを、線形回帰アルゴリズムとsklearnsklearnにカプセル化します。確率的勾配降下法がで使用されるS k個のLは、電子RをN

  特定のコードについては、25 Stochastic Gradient DescentMethod.ipynbを参照してください。

おすすめ

転載: blog.csdn.net/qq_41033011/article/details/109099363