確率的勾配降下法。 実装オプション。 確率的勾配降下法がスムーズになりすぎる

SVM

サポートベクターマシン(英語SVM、サポートベクターマシン)-分類問題に使用される同様の教師あり学習アルゴリズムのセットと 回帰分析..。 線形分類器のファミリーに属し、Tikhonov正則化の特殊なケースと見なすこともできます。 サポートベクターマシンの特徴は、経験的分類誤差が連続的に減少し、ギャップが増加することです。そのため、この方法は最大ギャップ分類器法としても知られています。

この方法の主なアイデアは、初期ベクトルをより高次元の空間に転送し、この空間に最大のギャップがある分離超平面を検索することです。 クラスを分離する超平面の両側に2つの平行な超平面が構築されます。 分割超平面は、2つの平行な超平面までの距離を最大化する超平面になります。 アルゴリズムは、これらの平行な超平面間の差または距離が大きいほど、平均分類器エラーが小さくなるという仮定に基づいて機能します。

多くの場合、機械学習アルゴリズムでは、データを分類する必要があります。 各データオブジェクトは、次元空間(p個の数のシーケンス)内のベクトル(点)として表されます。 これらの各ポイントは、2つのクラスのうちの1つにのみ属します。 次元の超平面によって点を分離できるかどうかに関心があります。これは線形分離可能性の典型的なケースです。 そのような超平面がたくさんある可能性があります。 したがって、クラス間のギャップを最大化することが、より信頼性の高い分類に寄与すると考えるのは当然のことです。 つまり、超平面から最も近い点までの距離が最大になるような超平面を見つけることができますか? これは、超平面の反対側にある2つの最も近い点の間の距離が最大であることを意味します。 そのような超平面が存在する場合、それは何よりも私たちの興味を引くでしょう。 これは最適分割超平面と呼ばれ、対応する線形分類器は最適分割分類器と呼ばれます。

正式には、問題は次のように説明できます。

ポイントは次の形式であると想定します。ここで、ポイントが属するクラスに応じて、値1または?1を取ります。 それぞれが次元の実数ベクトルであり、通常は値またはで正規化されています。 ポイントが正規化されていない場合、ポイントの座標の平均値からの偏差が大きいポイントは、分類器に大きな影響を与えます。 これは、各要素が属する事前定義されたクラスを持つ学習コレクションと考えることができます。 サポートベクターマシンにも同じ方法で分類してもらいたい。 これを行うには、次の形式の分離超平面を作成します。

ベクトルは、分割する超平面に垂直です。 パラメータの絶対値は、超平面から原点までの距離と同じです。 パラメータがゼロの場合、超平面は原点を通過するため、解が制約されます。

最適な分離に関心があるので、最適なものに平行で、2つのクラスのサポートベクターに最も近いサポートベクターと超平面に関心があります。 これらの平行超平面は、次の方程式で記述できることを示すことができます(正規化まで)。

トレーニングサンプルが線形分離可能である場合、トレーニングサンプルポイントがそれらの間に存在しないように超平面を選択し、超平面間の距離を最大化することができます。 それらの間のストリップの幅は、ジオメトリの理由から簡単に見つけることができ、等しいので、私たちのタスクは最小化することです。 ストリップからすべてのポイントを除外するには、すべてのポイントを確認する必要があります

次のように書くこともできます。

クラスの線形分離可能性の場合、最適な分離超平面を構築する問題は、条件(1)の下で最小化に還元されます。 これは二次最適化問題であり、次のようになります。

クーン・タッカーの定理によれば、この問題は次のようになります。 デュアルタスク探す 鞍点ラグランジュ関数。


双対変数のベクトルはどこにありますか

この問題を、双対変数のみを含む同等の二次計画問題に還元しましょう。


決めたとしましょう この仕事、それからそれは式によって見つけることができます:

その結果、分類アルゴリズムは次のように記述できます。

この場合、合計はサンプル全体ではなく、サポートベクターのみに適用されます。

クラスの線形分離不可能性の場合、アルゴリズムが機能するために、トレーニングセットを間違えましょう。 オブジェクトのエラーの大きさを特徴付ける一連の追加変数を紹介しましょう。 (2)を出発点として、不等式制約を緩和し、最小化された関数に合計エラーのペナルティを導入します。

Factorは、分割帯域幅の最大化と合計エラーの最小化の間の関係を調整できるようにするメソッド調整パラメーターです。

同様に、Kuhn-Tuckerの定理により、問題をラグランジュ関数の鞍点を見つけることに還元します。


類推して、この問題を同等の問題に減らしましょう。


実際には、サポートベクターマシンを構築するために解決されるのはこの問題であり、(3)ではありません。一般的なケースでは、ポイントの2つのクラスへの線形分離可能性を保証できないためです。 アルゴリズムのこの変形は、ソフトマージンSVMアルゴリズムと呼ばれますが、線形分離可能な場合は、ハードマージンSVMについて説明します。

分類アルゴリズムの場合、式(4)が保持されますが、唯一の違いは、オブジェクトをサポートするだけでなく、問題のあるオブジェクトもゼロ以外の値を持つことです。 ある意味では、これは不利な点です。なぜなら、騒音の放出はしばしば違反者であり、それらに基づいて構築された決定ルールは実際には騒音に依存しているからです。

定数は通常、スライディング制御基準に従って選択されます。 値ごとに問題を新たに解決する必要があるため、これは時間のかかる方法です。

サンプルがほぼ線形分離可能であり、外れ値のみが誤って分類されていると考える理由がある場合は、外れ値フィルタリングを適用できます。 まず、一部のCで問題が解決され、エラー値が最大のオブジェクトのごく一部がサンプルから削除されます。 その後、切り捨てられたサンプルを使用して問題が再度解決されます。 残りのオブジェクトが線形分離可能になるまで、これらの反復のいくつかを実行する必要がある場合があります。

ウラジミールヴァプニクとアレクセイチェルボネンキスによって1963年に提案された、最適な分割超平面を構築するためのアルゴリズムは、線形分類アルゴリズムです。 しかし、1992年に、Bernhard Boser、Isabelle Guyon、Vapnikは、スカラー積から任意のカーネルへの遷移に基づいて非線形分類器を作成する方法、いわゆるカーネルトリックを提案しました(M.A. Aizerman、E.M。Bravermann、L。V。潜在的な関数の方法のためのRozonoer)、これは非線形セパレーターの構築を可能にします。 結果として得られるアルゴリズムは線形分類アルゴリズムと非常に似ていますが、上記の式の各内積が非線形カーネル関数(より高い次元の空間内の内積)に置き換えられる点が異なります。 最適な分割超平面がこの空間にすでに存在している可能性があります。 結果の空間の次元は元の空間の次元よりも大きくなる可能性があるため、スカラー積を比較する変換は非線形になります。つまり、元の空間の最適な分割超平面に対応する関数も非線形になります。

元の空間の次元が十分に高い場合、サンプルがその中で線形に分割可能になることを期待できることは注目に値します。

最も一般的なカーネルは次のとおりです。

1.リニアコア:

2.多項式(同次):

3. RBF関数:

4.シグモイド:

私たちに提起された問題の枠組みの中で、線形同次カーネルを使用します。 このカーネルは示した 優れた結果ドキュメント分類タスクでは、単純ベイズ分類器と比較すると、この分類器のトレーニングには比較的長い時間がかかります。 このリストの他のすべてのコアの作業もチェックされ、分類精度に特別な改善を導入することなく、トレーニングにはるかに長い時間がかかることがわかりました。

学習を高速化するために、確率的勾配降下法と呼ばれる方法を使用します。これにより、精度をあまり犠牲にすることなく、分類器のトレーニングを大幅に高速化できます。

確率的勾配降下法

勾配法は、機械学習だけでなく、幅広いクラスの最適化アルゴリズムです。 ここでは、勾配アプローチは、線形分類器でシナプスの重みのベクトルをフィッティングするための方法と見なされます。 トレーニングセットのオブジェクトでのみ知られているターゲット依存関係とします。

依存関係を近似するアルゴリズムを見つけましょう。 線形分類器の場合、目的のアルゴリズムは次の形式になります。

ここで、活性化関数の役割を果たします(最も単純なケースでは、置くことができます)。

経験的リスクを最小化するという原則によれば、これには最適化問題を解決するのに十分です。

与えられた損失関数はどこにありますか。

最小化するには、最急降下法を適用します。 これは段階的なアルゴリズムであり、各反復で、ベクトルは汎関数の最大の減少の方向(つまり、逆勾配の方向)に変化します。

学習率と呼ばれる正のパラメータはどこにありますか。

最急降下法を実装するには、主に2つのアプローチがあります。

1.バッチ、各反復でトレーニングサンプル全体が表示され、その後でのみ変更されます。 これは計算コストがかかります。

2.確率的(確率的/オンライン)。アルゴリズムの各反復で、トレーニングサンプルから何らかの(ランダムな)方法で1つのオブジェクトのみが選択されます。 したがって、ベクトルは新しく選択されたオブジェクトごとに調整されます。

確率的勾配降下アルゴリズムは、次のように擬似コードで表すことができます。

-トレーニングサンプル

-学習のペース

-汎関数の平滑化のパラメータ

1.重みのベクトル

1)重みを初期化します

2)機能の現在の評価を初期化します。

3)繰り返します:

1.ランダムにオブジェクトを選択します

2.アルゴリズムの出力値とエラーを計算します。

3.最急降下法を実行します

4.汎関数の値を見積もります。

4)値が安定するまで、および/または重みの変化が止まるまで。

SGDの主な利点は、冗長な大容量データのトレーニング速度です。 入力データの量が非常に多くなるため、これは私たちの前に設定されたタスクのフレームワーク内で私たちにとって興味深いものです。 同時に、SGDアルゴリズムは、古典的なバッチ勾配降下法とは対照的に、わずかに低い分類精度を提供します。 また、SGDアルゴリズムは、非線形カーネルを使用したサポートベクターマシンのトレーニングには適用できません。

結論

解決する問題の一部として、TF-IDFソースデータ変換アルゴリズムを使用する必要があります。これにより、まれなイベントの重みを増やし、頻繁なイベントの重みを減らすことができます。 変換後に得られたデータを、直面している問題の解決に適した分類器、つまり、確率的勾配降下法を使用してトレーニングされた単純ベイズ分類器または線形カーネルを備えたサポートベクターマシンに転送します。 また、バッチ勾配降下法でトレーニングされた非線形カーネルを使用したサポートベクターマシンのパフォーマンスをテストします。 しかし、 与えられたタイプカーネルが複雑すぎ、再トレーニング可能性が高く、分類器のトレーニングに使用されなかったデータに分類器がうまく対応できないため、分類器は目前のタスクには適していないようです。

与えられたソフトウェアマシンの前処理

したがって、家の価値などの価値をそのサイズで予測するタスクがあります。 または、システムによるリクエストの処理時間。 しかし、あなたは何を知っていることはありません。

線形回帰を使用することにしました。次に、モデルが予測する価格と販売された住宅の実際の価値との差が最小になる係数を見つけたいと考えています。 これを行うには、次のいずれかの方法を使用できます。

  1. バッチ勾配降下
  2. 確率的勾配降下法
  3. 通常の方程式
  4. ニュートン法

今日は2種類の最急降下法についてお話します。

最急降下法

とにかく最急降下法とは何ですか?

1つの変数からのある種の複雑な関数を想像してみてください。 彼女にはいくつかの高値と安値があります。 この関数の各ポイントで、導関数をとることができます。

緑の線は、この時点で導関数が正になり、赤が負になることを示しています。

関数上の任意の点を選択します。 そのポイントに最も近い最小値まで「下がる」必要があります。 ポイントの導関数が正の場合(緑色の線)、これは最小値があなたの「後ろ」にあることを意味し、それに下がるには、ポイントの座標から減算する必要があります。 NSあなたのデリバティブの価値。

あなたの時点で導関数が負(赤い線)である場合、これは最小値があなたの「前」にあることを意味し、それに到達するために、もう一度、座標から減算する必要があります NSあなたのデリバティブの価値。 その値は負であるため、負の値を引くと、座標が増加します。 NS.

さて、降下が途方もなく長くなったり、誤って速くなったりしないように、選択したポイントでの導関数の値に何らかの係数を掛けます。

しかし、これは関数が1つの座標に依存している場合にすべて当てはまります。 住宅販売モデルの場合、コスト関数は2つの変数に依存します。

この機能は、3D空間の「カップ」と考えることができます。

いくつかの変数の関数の導関数は、勾配と呼ばれます。 勾配は、変数の数の次元を持つベクトルであり、ベクトルの各要素は、ある1つの変数の導関数です。

コスト関数は次のとおりです。

その勾配はとして示され、次の式で計算されます。

各偏導関数では、1つの変数からそれを数えます。 他のすべての変数は定数と見なされるため、それらの導関数はゼロに等しくなります。

その後、次の式を使用して各値を更新します。

このパラメーターは学習率と呼ばれ、関数の最小値に移動する速度を決定します。 パラメータを更新するたびに、最小値に向けて小さな一歩を踏み出します。 その後、手順を繰り返します。 これと並行して、前のステップと比較して、コスト関数の値がどの程度変化したかを調べます。 この変化が非常に小さくなったとき(時間をマークしています)、停止して最小点に到達したと見なすことができます。

それは、最も近いくぼみに向かって丘を下るようなものです。 最急降下法では、極小値を見つけることができますが、大域的最小値を見つけることはできません。 これは、関数が最小になるポイントが複数ある場合、勾配降下法によってそれらの1つ(開始点に最も近いポイント)に移動することを意味しますが、必ずしも最も深い隙間である必要はありません。

最初のステップの前に、ランダムな方法でパラメーターを決定します。取得する正確な最小値は、パラメーターの定義方法によって異なります。


ここで括弧内にあるのは、上記が最急降下法に関係していることに注意する必要があります。 一般的な見解ただし、特に最急降下法は扱いません。 線形回帰..。 線形回帰コスト関数は凸であり、最小値が1つしかないため(3Dカップを考えてください)、最急降下法で常にそれが検出されます。

コスト関数の最小値に近づくほど(予測価格と実際の価格の差が小さいほど)、行は履歴データをより適切に記述します。

歴史的な例が少ない場合はすべて順調ですが、数百万の場合は、小さなステップごとに数百万の計算を行う必要があり、これには長い時間がかかる可能性があります。

これに代わる方法として、確率的勾配降下法があります。これは、1つの例を取り上げて、それにのみ焦点を当てて値を更新する方法です。 次に、次の例を取り上げて、すでにそれに焦点を合わせてパラメーターを更新します。 NS。 これは、私たちが常に丘から「降りる」とは限らず、時には一歩上または横に行くという事実につながりますが、遅かれ早かれ私たちはその最小値に達し、その周りを一周し始めます。 値が私たちに合い始めたら(私たちが必要とする精度に達すると)、私たちは降下を停止します。

擬似コードでは、確率的勾配降下法は次のようになります。

コスト関数の変化が小さくなるまで:(

jの場合:= 1からm(

最後に、アルゴリズムの収束機能:十分に小さい値が使用されている場合、バッチ勾配降下法は常に最小値に収束します。 確率的勾配降下法は一般に最小値に収束しませんが、収束を達成できるようにする変更があります。

確率的勾配は次の式で推定されます。

つまり、指定されたランダムな方向で最小化される関数の増分に等しい重みを持つすべてのランダムベクトルの合計です。

単位ベクトルを単位ベクトルとすると、つまり、(3.3.22)から簡単にわかるように、この推定値は勾配の正確な値を示します。

説明されている両方の勾配推定は、決定論的推定法(3.3.22)とは大幅に異なる値を含め、任意の値に効果的に適用できます。サブセクション3.3.1の)。 そのような一般化の別の例を挙げましょう。

勾配検索(3.3.21)は、少なくとも2つのランダム検索アルゴリズムの特殊なケースです。 最初のアルゴリズム:

ここで、はまだ単位ランダム次元ベクトルです。 これは、よく知られている勾配ランダム検索アルゴリズムです。 2番目のアルゴリズムの形式は(3.3.23)ですが、勾配推定は次の式で計算されます。

見やすいように、両方のアルゴリズムは勾配検索アルゴリズム(3.3.21)に縮退します。

したがって、ランダム検索は、既知の通常の検索方法の自然な拡張、継続、および一般化です。

開く別のランダム検索機能 十分な機会その効果的なアプリケーションのために、最適化されたパラメーターの空間で検索方向を見つけるための複雑な通常の演算子の確率モデルとしてランダムステップ演算子を使用することです

したがって、線形戦術(3.3.12)を使用したランダム検索アルゴリズムは、最急降下アルゴリズムの確率モデルです。

ランダムベクトルが勾配推定をシミュレートします。 その確率的特性は推定された勾配の特性にさえ似ていないので、そのような「推定値」が粗雑とさえ言えないのは不思議です。 ただし、上記のように、ランダム検索アルゴリズムは効率的であるだけでなく、最急降下アルゴリズムよりも効率的である場合もあります。 ここ

ランダムステップ演算子は、たとえば式(3.3.22)に従って、面倒な勾配推定演算子を置き換えます。

ランダム検索の次の機能は、通常の方法とは区別されますが、グローバル性です。これは、グローバルな極値を見つけるように設計されていないローカルのランダム検索アルゴリズムに主に現れます。 したがって、ランダム降下アルゴリズムはグローバル極値を見つけることができますが、通常の最急降下アルゴリズムは、ローカル極値を見つけるように構築されているため、原則としてそのような可能性を許可しません。

したがって、ランダム検索アルゴリズムのグローバル性は、ランダム性を使用するための「ボーナス」のようなものであり、「 無料アプリ»アルゴリズムへ。 この状況は、構造が不明なオブジェクトを最適化する場合、問題の単一の極値に完全な信頼性がなく、複数の極値が存在する可能性がある場合に特に重要です(予期されていませんが)。 この場合、グローバル検索方法を使用することは賢明ではありません。 ローカルランダム検索方法は、ローカルの問題を効果的に解決し、原則としてグローバルな問題を解決できるため、ここで最も受け入れられます。 これにより、ユーザーが非常に高く評価する一種の心理的信頼性を備えたランダム検索が提供されます。

ランダム検索のアルゴリズムは単純であるため、主に消費者にとって魅力的です。 経験によれば、よく知られているランダム検索アルゴリズムは、ユーザーがそれぞれの特定のケースで、自分の好みや傾向(無視できない)だけでなく、詳細も反映する新しいアルゴリズムの「刺繡パターン」の単なる「キャンバス」です。最適化されているオブジェクトの。 後者は、アルゴリズムを「オブジェクト用に」設計する必要があるというよく知られた原則を実装するための好ましい基盤を作成します。 最後に、ランダム検索のアルゴリズムの単純さが、ハードウェア実装の単純さを決定します。 これにより、最適化可能なパラメーターの数に制限がない、シンプルでコンパクトで信頼性の高いオプティマイザーを構築できるだけでなく、コンピューター上で最適な合成を非常に簡単に整理することもできます。

最急降下法最も使用されている学習アルゴリズムであり、ほとんどすべてのモデルで使用されています。 最急降下法は、基本的にモデルのトレーニング方法です。 GEがなければ、機械学習は今日のようにはなりません。 いくつかの変更を加えた最急降下法は、トレーニングやディープに広く使用されており、エラーとして知られています。

この投稿では、少し数学を使った最急降下法の説明があります。 概要:

  • HSのポイントは、アルゴリズム全体を説明することです。
  • アルゴリズムのさまざまなバリエーション。
  • コードの実装:Phyton言語でコードを記述します。

最急降下法とは

最急降下法は、損失関数の最小値を見つける方法です(この関数には多くの種類があります)。 機能を最小化するということは、その機能の中で最も深い谷を探すことを意味します。 この関数は、機械学習モデルの予測におけるエラーを制御するために使用されることに注意してください。 最小値を見つけることは、可能な限り最小のエラーを取得するか、モデルの精度を向上させることを意味します。 モデルのパラメーター(重みとバイアス)を調整しながら、トレーニングデータセットを反復処理することにより、精度を向上させます。

したがって、損失関数を最小化するには最急降下法が必要です。

アルゴリズムの本質は、最小のエラー値を取得するプロセスです。 同様に、峡谷の底で金を見つけようとしてトラフに降りてきたように見えます(エラー値が最も低い)。


関数の最小値を見つける

さらに、(1つの重みに関連して)損失関数で最小のエラー(最も深い底)を見つけるには、モデルパラメーターを調整する必要があります。 それらをどのように設定しますか? これは数学的分析に役立ちます。 分析のおかげで、関数のグラフの傾きが変数に関する関数の導関数であることがわかります。 この勾配は常に最も近い谷を示します!

この図では、1つの重みを持つ損失関数(記号「J」で「エラー」と名付けられた)のグラフが表示されます。 ここで、1つの重みに対する損失関数の傾き(dJ / dwと呼びます)を計算すると、極小値に到達するために移動する必要がある方向が得られます。 今のところ、モデルの重みが1つしかないふりをしましょう。

損失関数

重要:すべてのトレーニングデータを反復処理するときに、重みごとにdJ / dw値を追加し続けます。 損失は​​トレーニング例によって異なるため、dJ / dwも変化し続けます。 次に、収集した値をトレーニング例の数で割って平均を求めます。 次に、(各重みの)その平均を使用して、各重みを設定します。

また注意してください:損失関数は、各トレーニング例でエラーを追跡するように設計されていますが、相対的な1つの重み関数の導関数は、このトレーニング例で重みを最小化するために重みをシフトする必要がある場所です。 損失関数を使用しなくてもモデルを作成できます。 ただし、各重み(dJ / dw)に関して導関数を使用する必要があります。

おもりを押す方向を特定したので、それを行う方法を理解する必要があります。 ここでは、ハイパーパラメータと呼ばれる学習率係数を使用しています。 ハイパーパラメータは、モデルに必要な値であり、非常に漠然とした考えがあります。 通常、これらの値は試行錯誤によって学習できます。 ここではそうではありません。すべてのハイパーパラメータに適合します。 学習率係数は、方向がdJ / dwから来る「正しい方向へのステップ」と考えることができます。

それは1つの減量関数でした。 実際のモデルでは、すべての重みに対して上記のすべてを実行し、すべてのトレーニング例を繰り返します。 比較的小さな機械学習モデルでも、1つまたは2つ以上の重みがあります。 これは、グラフが心が想像できない次元を持っているので、視覚化するのを難しくします。

グラデーションの詳細

損失関数に加えて、勾配降下法には、dJ / dw(すべての重みに対して実行される1つの重みに関する損失関数の導関数)である勾配も必要です。 dJ / dwは、選択した損失関数によって異なります。 最も一般的な損失関数は、二乗平均平方根誤差です。

任意の重みに関するこの関数の導関数(この式は、の勾配の計算を示しています):

これがGEのすべての数学です。 これを見ると、実際、GEには数学があまり含まれていないと言えます。 そこに含まれる唯一の数学は、乗算と除算です。 これは、関数の選択が各重みの勾配の計算に影響を与えることを意味します。

学習率比

上に書かれていることはすべて教科書にあります。 最急降下法に関する本ならどれでも開くことができます。同じように書かれています。 各損失関数の勾配式はインターネットで見つけることができますが、自分でそれらを導出する方法はわかりません。

ただし、ほとんどのモデルの問題は、学習率係数で発生します。 各重みの更新された式を見てみましょう(jの範囲は0から重みの数であり、Theta-jは j番目の重み重みベクトルでは、kは0からオフセットの数までの範囲です。ここで、B-kはオフセットベクトルのk番目のオフセットです)。 ここで、アルファは学習率係数です。 このことから、dJ / dTheta-j(重み勾配Theta-j)を計算し、次にその方向のアルファサイズのステップを計算していると言えます。 したがって、勾配を下げていきます。 オフセットを更新するには、Theta-jをB-kに置き換えます。

このステップサイズのアルファが大きすぎる場合、最小値を克服します。つまり、最小値を見逃します。 アルファが小さすぎる場合、最小値に到達するために使用する反復が多すぎます。 したがって、アルファは問題ないはずです。

最急降下法を使用する

まあ、それだけです。 最急降下法について知っておくべきことはこれだけです。 すべてを擬似コードで要約しましょう。

注:ここでは、スケールはベクトルで表されています。 より大きなモデルでは、それらはおそらく行列になります。

i = 0から「トレーニング例の数」まで

1.各重みとバイアスのi番目のトレーニング例の損失関数の勾配を計算します。 これで、各重みの勾配でいっぱいのベクトルと、オフセット勾配を含む変数ができました。

2.単一の累積ベクトルに対して計算された重み勾配を追加します。これは、各ケーススタディを反復した後、複数の反復にわたる各重みの勾配の合計を含む必要があります。

3.重みの場合と同様に、累積変数にバイアス勾配を追加します。

ここで、すべてのトレーニング例を繰り返し処理した後、次の手順を実行します。

1.重みとバイアスの累積変数をトレーニング例の数で割ります。 これにより、すべての重みの平均勾配とオフセットの平均勾配が得られます。 それらを再生アキュムレータ(OA)と呼びましょう。

2.次に、以下の式を使用して、すべての重みとバイアスを更新します。 dJ / dTheta-jの代わりに、重みをOAに、バイアスをOAに置き換えます。 オフセットについても同じようにします。

これは最急降下法の1回の反復でした。

このプロセスを最初から最後まで繰り返します。 これは、GSの最初の反復で、すべてのトレーニング例を反復し、勾配を計算してから、重みとバイアスを更新することを意味します。 次に、これをGEの反復回数だけ実行します。

さまざまな種類の最急降下法

最急降下法には3つのオプションがあります。

1. ミニバッチ:ここでは、すべてのトレーニング例を実行し、各反復で1つのトレーニング例のみで計算を実行する代わりに、n個のトレーニング例を一度に処理します。 この選択は、非常に大きなデータセットに適しています。

2.確率的勾配降下法:この場合、各学習例を使用してループする代わりに、1回だけ使用します。 注意すべき点がいくつかあります。

  • HSを繰り返すたびに、トレーニングセットをシャッフルし、ランダムなトレーニング例を選択する必要があります。
  • トレーニングの例を1つしか使用していないため、酔っ払った人がたくさん飲んだように、極小値への道は非常に騒がしくなります。

3. GSシリーズ:これは前のセクションで書かれたものです。 各トレーニング例をループします。


3ヒットとローカル安値を比較した画像

サンプルのPythonコード

GSシリーズに適用すると、これはPythonチュートリアルコードのブロックがどのように見えるかを示しています。

Def train(X、y、W、B、alpha、max_iters): "" "すべてのトレーニング例でGDを実行、X:トレーニングデータセット、y:トレーニングデータのラベル、W:重みベクトル、B:バイアス変数、alpha :学習率、max_iters:最大GD反復。 "" "DW = 0#重み勾配アキュムレータdB = 0#バイアス勾配アキュムレータm = X.shape#いいえ。 範囲内のiのトレーニング例の例(max_iters):dW = 0#範囲内のjのアキュムレータdB = 0のリセット(m):#1。すべての例を繰り返します。#2。w_gradとバイアスの重みとバイアスの勾配を計算します。 b_grad、#3。w_gradを追加してdWを更新し、b_gradを追加してdBを更新します。W= W-alpha *(dW / m)#重みを更新しますB = B-alpha *(dB / m)#バイアスリターンを更新しますW、B #更新された重みとバイアスを返します。

それで全部です。 これで、最急降下法とは何かをよく理解できたはずです。

どこ NS i-i番目のバッチで計算された関数。iはランダムに選択されます。

学習ステップはハイパーパラメータです。 値が大きすぎると学習アルゴリズムが発散し、小さすぎると収束が遅くなります。

慣性を伴う確率的勾配降下法

確率的勾配降下法では、反復ごとに勾配が大幅に変化することは珍しくありません。 これは、機能がさまざまなデータに基づいて計算されているためですが、データは大幅に異なる場合があります。 この変化は、前の反復で計算され、慣性のハイパーパラメーターμによってスケーリングされた勾配を使用して平滑化できます。

(14)
(15)

ご想像のとおり、慣性μのハイパーパラメータは、いわゆるニュートン慣性力のように、 反力は、勾配の変化に「抵抗」し、トレーニング中の重み係数の変化を和らげます。 この学習アルゴリズムは、運動量を伴う確率的勾配降下法またはSGDMと呼ばれます。

適応勾配法

適応勾配アルゴリズム(Adagrad)は、スケーリングのアイデアに基づいています。 このパラメーターの過去のすべての勾配の履歴を考慮しながら、調整可能な各パラメーターの学習率を個別に再スケーリングします。 これを行うには、各勾配要素を、前の対応する勾配要素の二乗和の平方根で除算します。 このアプローチは、勾配値が大きい重みの学習率を効果的に低下させ、反復ごとにすべてのパラメーターの平方和が着実に増加するため、すべてのパラメーターの学習率を時間の経過とともに低下させます。 ゼロの初期スケーリングパラメータg = 0を設定する場合、重み係数を再計算する式は次の形式になります(除算は要素ごとに実行されます)。

トピックの続き:
ルーター

デスクトップへのギガビットイーサネットなどの最新のデータおよび音声アプリケーションは、カテゴリ5eに評価されています。 このソリューションには必要な特性があります...