ホーム Topics グラジエント・ディセント (最急降下法) とは? 勾配降下法とは
watsonx.aiによる勾配降下法の適用 AI関連の最新情報の購読
以下のクラウド、円グラフ、グラフのピクトグラムのコラージュを使用したイラスト
勾配降下法とは

勾配降下法は、機械学習モデルやニューラル・ネットワークのトレーニングによく使用される最適化アルゴリズムで、予測結果と実際の結果の間の誤差を最小限に抑えて機械学習モデルをトレーニングします。

トレーニングデータは、これらのモデルが時間の経過とともに学習するのに役立ち、勾配降下法内のコスト関数は特にバロメーターとして機能し、パラメーターの更新を繰り返すたびに精度を測定します。 このモデルでは、関数がゼロに近づくか等しくなるまで、可能な限り誤差が小さくなるようにパラメーターの調整を続けます。機械学習モデルの精度が最適化されれば、人工知能(AI)やコンピューターサイエンスのアプリケーションの強力なツールとなります。

IBMがGartnerによってリーダーに選出される

IBMが2023年のGartner® Magic Quadrant™ for Cloud AI Developer Servicesレポートでリーダーに選出された理由をご覧ください。

関連コンテンツ

Prestoに関する電子ブックに登録する

勾配降下法の仕組み

勾配降下法を見ていく前に、線形回帰の概念をいくつか確認しておくと役立つかもしれません。 直線の傾きを表す次の公式「y = mx + b」を覚えているでしょうか。mは傾きを表し、bはy軸の切片を表します。

また、統計で散布図をプロットして最適な線を見つける、というのを覚えているかもしれません。その際には、平均二乗誤差の式を使用して実際の出力と予測出力(y ハット)間の誤差を計算する必要がありました。 勾配降下法アルゴリズムも同様に動作しますが、凸関数に基づいています。

開始点は、パフォーマンスを評価するための任意の点にすぎません。 その開始点から導関数(または傾き)を見つけ、そこから接線を使用して傾きの急峻さを観察できます。 傾きは、重みとバイアスのようなパラメーターの更新を示します。 開始点の傾きはより急になりますが、新しいパラメータが生成されるにつれて、収束点として知られる曲線上の最低点に到達するまで勾配は徐々に減少します。

線形回帰で最適な直線を見つけるのと同様、勾配降下法の目標はコスト関数、つまり予測されたyと実際のyの間の誤差を最小限に抑えることです。これを行うには、方向と学習率という2つのデータ ポイントが必要です。これらの要因によって将来の反復の偏微分計算が決定され、局所的または大域的な最小値(つまり、収束点)に徐々に到達することができます。

  • 学習率(ステップサイズまたはアルファとも呼ばれる)は、最小値に到達するまでに要するステップの大きさです。 これは通常小さな値であり、コスト関数の動作に基づいて評価および更新されます。 学習率が高いとステップが大きくなりますが、最小値をオーバーシュートする危険性があります。逆に、学習率が低いと、ステップサイズが小さくなります。精度が高いという利点がありますが、反復回数が多いほど最小値に達するまでに時間と計算がかかるため、全体的な効率が低下します。
  • コスト(または損失)関数は、現在位置における実際のyと予測yの差、つまり誤差を測定します。 これにより、モデルにフィードバックが提供されるため、パラメーターを調整して誤差を最小限に抑え、局所的または全体的な最小値を見つけることができます。そのため、機械学習モデルの有効性が向上します。 コスト関数がゼロに近づくかゼロになるまで、最急降下(または負の勾配)の方向に沿って移動し、継続的に反復します。 この時点で、モデルは学習を停止します。 さらに、コスト関数と損失関数という用語は同義語とみなされますが、両者の間には若干の違いがあります。 損失関数は1つのトレーニング例の誤差を参照するのに対し、コスト関数はトレーニングセット全体の平均誤差を計算することに注意してください。
勾配降下法の種類

勾配降下学習アルゴリズムには、バッチ勾配降下法、確率的勾配降下法、ミニバッチ勾配降下法という3種類があります。

バッチ勾配降下法

バッチ勾配降下法では、トレーニング セット内の各ポイントの誤差が合計され、すべてのトレーニング例が評価された後にのみモデルが更新されます。 このプロセスは、トレーニング・エポックと呼ばれます。

このバッチ処理により計算効率が向上しますが、すべてのデータをメモリに保存する必要があるため、大規模なトレーニングデータセットの処理時間が長くなる可能性があります。 バッチ勾配降下法でも通常は安定した誤差勾配と収束が生成されますが、その収束点が最も理想的ではなく、局所的な最小値と全体的な最小値を見つけることができない場合があります。

確率的勾配降下法
 

確率的勾配降下法(SGD)は、データセット内の各サンプルに対してトレーニング・エポックを実行し、各トレーニングサンプルのパラメーターを一度に1つずつ更新します。 保持するトレーニング例は1つだけなので、メモリへの保存がより楽になります。 このような頻繁な更新により、より詳細な情報と速度が得られる一方、この方法はバッチ勾配降下法と比較すると計算効率が低下する可能性があります。 頻繁に更新されるためノイズの多い勾配が発生する可能性がありますが、局所最小値を回避して大域最小値を見つけるのにも役立ちます。

ミニバッチ勾配降下法
 

ミニバッチ勾配降下法は、バッチ勾配降下法と確率的勾配降下法の両方の概念を組み合わせたものです。この方法ではトレーニングデータセットを小さなバッチサイズに分割し、それらのバッチごとに更新を実行します。このアプローチは、バッチ勾配降下の計算効率と確率的勾配降下の速度の間のバランスをとります。

勾配降下法に関する課題

勾配降下法は最適化問題に対する最も一般的なアプローチですが、独自の課題も伴います。 例えば次のような課題があります。

極小値と鞍点
 

凸問題であれば勾配降下法で大域的最小値を簡単に見つけることができますが、非凸問題が発生すると、この方法ではモデルが最良の結果を達成する大域的最小値を見つけるのに苦労する可能性があります。

コスト関数の傾きがゼロまたはゼロに近い場合、モデルが学習を停止することを思い出してください。大域最小値を超えるシナリオがいくつかある場合も、この傾き(局所最小値と鞍点)が生じる可能性があります。極小値は大域極小値の形状を模倣しており、現在の点の両側でコスト関数の傾きが増加します。 ただし、鞍点の場合、負の勾配は点の片側にのみ存在し、片側では極大値に達し、もう一方の側では極小値に達します。 「鞍点」という名前は、馬の鞍にちなんで付けられたものです。

ノイズの多い勾配は、勾配が極小値や鞍点を回避するのに役立ちます。

勾配消失と勾配爆発
 

特にリカレント・ニューラル・ネットワークのようなより深いニューラルネットワークでは、モデルが勾配降下法と逆伝播法でトレーニングされる際に他の2つの問題に直面する可能性もあります。

  • 勾配消失:勾配が小さすぎる場合に発生します。バックプロパゲーション中に後方に進むにつれて、勾配は小さくなり続けるため、ネットワーク内の以前の層の学習が後の層よりも遅くなります。 これが発生すると、重さのパラメーターは重要でなくなるまで更新されます。 例えば、0の場合は学習を停止したアルゴリズムになります。
  • 勾配爆発:勾配が大きすぎて不安定なモデルになります。 この場合、モデルの重みが大きくなりすぎ、最終的にはNaNとして表現されます。 この問題に対する解決策の1つとしては、モデル内の複雑さを最小限に抑えるのに役立つ次元削減手法を活用することです。
  •  
関連ソリューション
AI駆動型のテクノロジー

ビジネス・ワークフローからIT 運用に至るまで、AIを活用した自動化をサポートします。大手企業がどのように変革を遂げているかをご覧ください。

AI駆動型のテクノロジーはこちら
参考情報 深層学習アプリケーション向けの効率的な分散型確率的勾配降下アルゴリズム

IBM Researchは、個々の学習器からの疎な勾配集約を可能にする、分散型のバルク同期確率的勾配降下アルゴリズムを提案しています。

RにおけるXGBoostの実装

XGBoostアルゴリズムを使用して勾配ブースト・デシジョン・ツリーを実装し、分類タスクを実行します。

次のステップ

AI開発者向けの次世代エンタープライズ・スタジオであるIBM watsonx.aiを使用して、生成AI、基盤モデル、機械学習機能をトレーニング、検証、チューニング、デプロイしましょう。わずかなデータ、わずかな時間でAIアプリケーションを構築できます。

watsonx.aiの詳細はこちら デモの予約