基本概念 このセクションでは、勾配降下法をより一般化するために、機械学習アルゴリズムとは独立して勾配降下法アルゴリズム [Gradient Descent、GD] について説明します。 始める前に、まず 2 つの基本的な概念を紹介します。これら 2 つの概念を理解しておけば、機械学習の知識がほとんどなくても、このセクションをうまく理解できるはずです。
勾配降下法は、コスト関数を最小化するパラメータ値を見つけるために使用できる、広く使用されている最適化アルゴリズムです。 勾配降下法を中学校数学の言語で説明すると、関数_が最小値に達すると、対応する独立変数_を見つけるプロセスになります。ここで、機械が学習したいのはパラメータであり、これはパラメータ推定に使用されるコスト関数であり、これはの関数です。 したがって、基本的に中学校数学の知識があれば、勾配降下法アルゴリズムを理解できます。 勾配降下法の基本的な手順は次のとおりです。
上記は、勾配降下法アルゴリズムの最も基本的かつ中核的な概念です。非常にシンプルです。 以下は、勾配降下法アルゴリズムのいくつかのバリエーションです。バッチ勾配降下法 [BGD]、確率的勾配降下法 [SGD]、ミニバッチ勾配降下法 [MBGD] アルゴリズムの紹介 ベグド BGD は、勾配降下アルゴリズムの最も原始的な形式であり、パラメータが更新されるたびにトレーニング セット全体のデータを使用するという特徴があります。 BGD の具体的な実装は次のとおりです。
したがって、BGD の疑似コード形式は次のように簡単に記述できます。
上記の式の合計は、各反復で、勾配がトレーニング セット全体に基づいて計算されることを反映しています。 BGD は、常にトレーニング セット全体に基づいて勾配を計算するため、グローバル最適解が得られます。これが BGD の利点です。ただし、計算量が膨大になり、計算の反復速度が非常に遅くなります。 シンガポールドル SGD はデータセット全体ではなく、一度に 1 つのサンプルの勾配を計算します。したがって、SGD はコスト関数から開始し、それを合計する必要はありません。単一サンプルのコスト関数は次のように記述できます。(これは、後続の計算の便宜上、ここでも設定されます) したがって、SGD のパラメータ更新ルールは次のように記述できます。 SGD の疑似コード形式は次のとおりです。
SGD の重要なポイントは、サンプルをランダムな順序で選択することです。SGD には局所最適ジレンマがあるため、毎回同じ順序でサンプルを選択すると、同じ場所で局所ジレンマに陥ったり、収束が遅くなったりする可能性が高くなります。したがって、SGD をより適切に機能させるには、ランダム化によってもたらされる利点を最大限に活用する必要があります。つまり、各反復 (疑似コード内の最も外側のループ) の前に、トレーニング セットをランダムに配置できます。 勾配降下法では毎回 1 つのサンプルのみが取得されるため、SGD のトレーニング速度は非常に高速ですが、ノイズが発生し、精度が低下します。つまり、すべての反復がグローバル最適値に到達するわけではなく、すべての反復でコスト関数値を削減できるわけではありません。ただし、言い換えると、ノイズによってある程度はローカル最適値を回避できます。 SGD のもう 1 つの利点は、オンライン学習に使用できることです。つまり、モデルがトレーニングされた後、新しいデータが到着する限り、モデルは新しいデータを使用して再学習し、パラメータを更新して新しい変更に適応できます。 MBD MBGD は、BGD と SGD の欠点を解決するために考案された妥協的なアルゴリズムであり、BGD と SGD の利点を活用しています。基本的な考え方は、パラメータが更新されるたびに、すべてではなく 1 つでもなく、n 個のサンプルが使用されるというものです。(SGD は、n=1 の MBGD の特殊なケースと見なすことができます) MBGD のコスト関数やその導関数式、パラメータ更新規則式はここでは示しませんが、基本的には BGD と同じです (上記を参照)。 MBGD の疑似コードは次のとおりです。
上記の 3 つの勾配降下アルゴリズムの長所と短所をまとめます。
ヒント 勾配降下アルゴリズムを使用する際のヒントをいくつか紹介します。
高度な 以下の内容は少し難解で、著者はいくつかの概念にあまり詳しくないので、記録だけ残しておきます。 SGD の Keras 実装では、decay、momentum、nestrov という 3 つのキーワード引数が提供されていることに気付きました。
BGD が最小値に達すると、コスト関数全体の真の勾配は非常に小さくなり、最終的には 0 に減少するため、BGD は固定学習率を使用できます。ただし、SGD の勾配推定によって導入されたノイズ源は最小値でも消えないため、SGD の収束を確実にするために、時間の経過とともに学習率を徐々に減らす必要があります。 実際には、学習率は通常、反復まで線形に減少します。 このうち、 は k 回目の反復を表し、 は 番目の反復を表します。 上記の式では、設定する必要がある量には、初期学習率、最終学習率、終了反復が含まれます。通常、値は数百で、 に設定されます。したがって、残る主な問題は適切な値を選択することです。値が大きすぎると、学習曲線が激しく揺れ、コストが大幅に増加します。値が小さすぎると、学習プロセスが非常に遅くなります。 前述のように、勾配降下法では、学習を加速するためにモメンタムの概念が導入されており、特に、高曲率(曲率:曲線が直線から外れている度合い)、小さいながらも一貫した勾配、またはノイズの多い勾配の処理に顕著な加速効果があります。モメンタムアルゴリズムは、前回の指数関数的に減衰した勾配の移動平均(移動平均:時系列データを分析するための効果的なツール)を蓄積するため、その方向に進み続けることができ、コストを継続的に削減できます。 正式には、運動量アルゴリズムは、パラメータ空間におけるパラメータの移動方向と速度を表す速度の役割を導入します。これは負の勾配の指数関数的減衰平均に設定され、その更新規則は次のとおりです。 上記の式から導き出される結論の 1 つは、 に対して が大きいほど、前の勾配が現在の方向に与える影響が大きくなるということです。 運動量の概念が導入される前は、更新ステップサイズは勾配ノルムに学習率を掛けた値に過ぎません。運動量が導入された後は、勾配シーケンスのサイズと配置に依存します。連続する多くの勾配が同じ方向を指している場合、最大ステップサイズは次のようになります。 ネステロフ運動量アルゴリズムは標準運動量アルゴリズムのバリエーションであり、その更新規則は次のとおりです。 ネステロフ運動量アルゴリズムと標準運動量アルゴリズムの違いは、勾配の計算です。勾配は現在の速度を適用した後に計算され、標準運動量法に補正係数を追加するものと解釈できます。 話題外 最適化アルゴリズムの収束率を調べる場合、通常は追加誤差 を測定します。これは、現在のコストが最小のコストを超える量です。SGD を凸問題 (凸集合で定義された凸関数の最小化を含む問題) に適用すると、k ステップの追加誤差は の桁になり、強く凸な場合は になります。追加の条件が想定されない限り、これ以上の改善は不可能です。 Cramer-Rao 境界は、一般化誤差が より速く減少することはできないことを示しています。したがって、Bottou と Bousquet は、機械学習タスクの場合、 より速く収束する最適化アルゴリズムを探すことは価値がないと考えています。その理由は次のとおりです。 収束が速いということは、過剰適合に相当する可能性がある サンプルコード 以下は、BGD、SGD、MBGD の Python コード実装です。これには、高度な部分で説明した高度な内容は含まれていません。
上記のコードを実行すると、以下に示すように、3 種類の勾配降下アルゴリズムの関数グラフが得られます。
|
<<: データマイニングコンテストのルーチンとディープラーニングの限界について話す
テスラのオプティマスロボットが労働者を攻撃? !マスク氏は噂を払拭するために緊急で姿を現し、事実を歪...
現在、ATAP(Advanced Technology and Projects Lab)の使命は、...
コンピュータービジョンの分野では、畳み込みニューラルネットワーク (CNN) が常に市場を支配してき...
デジタル経済の時代において、企業の将来の競争力を形成する鍵として、データの価値は企業からますます注目...
ワイン、酒類、ビール会社を含むあらゆる業界が、モノのインターネット (IoT) と人工知能 (AI)...
2023年にAIが世界にどのような変化をもたらすかといえば、間違いなくビッグモデルの急速な発展が最...
ただの楽しみのために、Go 言語を学ぶことにしました。新しい言語を学ぶ最良の方法は、深く学び、できる...
[51CTO.com クイック翻訳] 統計によると、回答者が現在選択している最も一般的に使用されてい...
皆さんご存知のとおり、2013年以来、我が国は世界最大の産業用ロボットの需要と応用市場となっています...