勾配降下法は、機械学習モデルやニューラル・ネットワークのトレーニングによく使用される最適化アルゴリズムで、予測結果と実際の結果の間の誤差を最小限に抑えて機械学習モデルをトレーニングします。
トレーニングデータは、これらのモデルが時間の経過とともに学習するのに役立ち、勾配降下法内のコスト関数は特にバロメーターとして機能し、パラメーターの更新を繰り返すたびに精度を測定します。 このモデルでは、関数がゼロに近づくか等しくなるまで、可能な限り誤差が小さくなるようにパラメーターの調整を続けます。機械学習モデルの精度が最適化されれば、人工知能(AI)やコンピューターサイエンスのアプリケーションの強力なツールとなります。
IBMが2023年のGartner® Magic Quadrant™ for Cloud AI Developer Servicesレポートでリーダーに選出された理由をご覧ください。
Prestoに関する電子ブックに登録する
勾配降下法を見ていく前に、線形回帰の概念をいくつか確認しておくと役立つかもしれません。 直線の傾きを表す次の公式「y = mx + b」を覚えているでしょうか。mは傾きを表し、bはy軸の切片を表します。
また、統計で散布図をプロットして最適な線を見つける、というのを覚えているかもしれません。その際には、平均二乗誤差の式を使用して実際の出力と予測出力(y ハット)間の誤差を計算する必要がありました。 勾配降下法アルゴリズムも同様に動作しますが、凸関数に基づいています。
開始点は、パフォーマンスを評価するための任意の点にすぎません。 その開始点から導関数(または傾き)を見つけ、そこから接線を使用して傾きの急峻さを観察できます。 傾きは、重みとバイアスのようなパラメーターの更新を示します。 開始点の傾きはより急になりますが、新しいパラメータが生成されるにつれて、収束点として知られる曲線上の最低点に到達するまで勾配は徐々に減少します。
線形回帰で最適な直線を見つけるのと同様、勾配降下法の目標はコスト関数、つまり予測されたyと実際のyの間の誤差を最小限に抑えることです。これを行うには、方向と学習率という2つのデータ ポイントが必要です。これらの要因によって将来の反復の偏微分計算が決定され、局所的または大域的な最小値(つまり、収束点)に徐々に到達することができます。
勾配降下学習アルゴリズムには、バッチ勾配降下法、確率的勾配降下法、ミニバッチ勾配降下法という3種類があります。
バッチ勾配降下法では、トレーニング セット内の各ポイントの誤差が合計され、すべてのトレーニング例が評価された後にのみモデルが更新されます。 このプロセスは、トレーニング・エポックと呼ばれます。
このバッチ処理により計算効率が向上しますが、すべてのデータをメモリに保存する必要があるため、大規模なトレーニングデータセットの処理時間が長くなる可能性があります。 バッチ勾配降下法でも通常は安定した誤差勾配と収束が生成されますが、その収束点が最も理想的ではなく、局所的な最小値と全体的な最小値を見つけることができない場合があります。
確率的勾配降下法(SGD)は、データセット内の各サンプルに対してトレーニング・エポックを実行し、各トレーニングサンプルのパラメーターを一度に1つずつ更新します。 保持するトレーニング例は1つだけなので、メモリへの保存がより楽になります。 このような頻繁な更新により、より詳細な情報と速度が得られる一方、この方法はバッチ勾配降下法と比較すると計算効率が低下する可能性があります。 頻繁に更新されるためノイズの多い勾配が発生する可能性がありますが、局所最小値を回避して大域最小値を見つけるのにも役立ちます。
ミニバッチ勾配降下法は、バッチ勾配降下法と確率的勾配降下法の両方の概念を組み合わせたものです。この方法ではトレーニングデータセットを小さなバッチサイズに分割し、それらのバッチごとに更新を実行します。このアプローチは、バッチ勾配降下の計算効率と確率的勾配降下の速度の間のバランスをとります。
勾配降下法は最適化問題に対する最も一般的なアプローチですが、独自の課題も伴います。 例えば次のような課題があります。
凸問題であれば勾配降下法で大域的最小値を簡単に見つけることができますが、非凸問題が発生すると、この方法ではモデルが最良の結果を達成する大域的最小値を見つけるのに苦労する可能性があります。
コスト関数の傾きがゼロまたはゼロに近い場合、モデルが学習を停止することを思い出してください。大域最小値を超えるシナリオがいくつかある場合も、この傾き(局所最小値と鞍点)が生じる可能性があります。極小値は大域極小値の形状を模倣しており、現在の点の両側でコスト関数の傾きが増加します。 ただし、鞍点の場合、負の勾配は点の片側にのみ存在し、片側では極大値に達し、もう一方の側では極小値に達します。 「鞍点」という名前は、馬の鞍にちなんで付けられたものです。
ノイズの多い勾配は、勾配が極小値や鞍点を回避するのに役立ちます。
特にリカレント・ニューラル・ネットワークのようなより深いニューラルネットワークでは、モデルが勾配降下法と逆伝播法でトレーニングされる際に他の2つの問題に直面する可能性もあります。