勾配 (G検定)

勾配

1. 定義と概要

勾配(グラディエント、gradient)とは、複数の変数を持つ関数について、ある地点での各変数ごとの偏微分を並べたベクトル(向きと大きさの両方を持つ量)のことです。記号では∇f(ナブラエフ)やgrad fと表され、勾配ベクトルとも呼ばれます。

各変数についての偏微分を並べることで、その地点から関数の値が最も急に増加する方向と、その増加の急さ(大きさ)を表します。例えば2つの変数を持つ関数f(x, y)の勾配は∇f=(∂f/∂x, ∂f/∂y)と表され、向きが関数値の増加が最も急な方向、大きさ(ノルム)がその増加の急さです。

1つの変数を持つ関数の傾きは、微分係数(接線の傾き)という1つの数値で表せます。しかし変数が2つ以上になると、ある地点から進める方向は無数にあり、方向によって関数値の増え方も変わります。この「どの向きに進めば値が最も増えるか」と「その増え方の急さ」を1つのベクトルにまとめたものが勾配です。

機械学習では、モデルの予測誤差を表す誤差関数(損失関数。モデルの予測と正解とのズレの大きさを数値で表したもの)が、多数のパラメータ(重み。モデルの中で学習によって調整される数値)を変数とする多変数関数です。その誤差を減らす方向を知るために勾配が使われます。

勾配そのものは関数が増加する方向を指すため、誤差を減らしたい学習では勾配とは逆方向(最急降下方向。関数の値が最も急に減少する向き)にパラメータを動かすという考え方につながります。この考え方が勾配降下法(勾配を使って、誤差が減る方向へパラメータを繰り返し更新していく最適化のアルゴリズム。問題を解くための具体的な手順)の土台です。

2. 試験対策ポイント

まず押さえておきたいのは、勾配という言葉と∇(ナブラ)という記号の対応です。勾配は各変数についての偏微分を並べたベクトルであり、向きと大きさという2つの意味を同時に持ちます。向きは関数の値が最も急に増加する方向を、大きさは前述のノルムでその増加の急さを表します。

勾配が意味を持つのは、変数が2つ以上ある多変数関数の場合です。1変数関数における微分係数が1つの数値で表されるのに対し、勾配は複数の偏微分を並べたベクトルとして表される点が、取り違えやすいところです。

誤差を最小化したい学習の場面では、勾配そのものではなく勾配の逆方向、つまり最急降下方向に進むという符号の向きにも注意が必要です。勾配は関数の値が増加する方向を示すため、誤差を減らすにはその逆向きへパラメータを更新します。

層を重ねたモデルであるニューラルネットワークでは、誤差逆伝播法(バックプロパゲーション。出力側の誤差を入力側へ逆向きに伝えながら各層の勾配を効率よく計算する手法)によって、各層のパラメータについての勾配を効率よく計算します。勾配降下法・誤差逆伝播法といった関連語も、勾配という量を土台にあわせて確認しておきたいところです。

3. 関連概念との比較・相違点

勾配と名前の似た用語は複数あり、それぞれ指しているものが異なります。まず全体像を並べると次のとおりです。

用語 何を指すか 勾配との違い
勾配 多変数関数の各変数ごとの偏微分を並べたベクトル ー
微分係数 1変数関数の接線の傾きという1つの数値 対象とする変数の数が異なる
勾配降下法 勾配の逆方向へパラメータを繰り返し更新していく最適化のアルゴリズム 量そのものではなく手続き
勾配消失問題・勾配爆発問題 誤差逆伝播をたどるうちに勾配の大きさが極端に小さく、あるいは大きくなる学習上の現象 量そのものではなく、その量に起きる現象

それぞれの違いを、以下で順に補足します。

微分(1変数関数の微分係数)との最大の違いは、対象とする変数の数です。1変数関数の微分係数は接線の傾きという1つの数値で表されますが、勾配は変数が2つ以上ある多変数関数について、各変数ごとの偏微分を並べたベクトルであり、向きと大きさの両方を持ちます。

勾配降下法との最大の違いは、量そのものか手続きかという点です。勾配は関数の傾きを表す量、つまりベクトルそのものを指しますが、勾配降下法はその勾配を使って、逆方向へパラメータを繰り返し更新していく最適化のアルゴリズムを指します。

勾配消失問題・勾配爆発問題との最大の違いは、量そのものか、その量に起きる現象かという点です。勾配自体は数学的に定義された量ですが、勾配消失問題・勾配爆発問題は、層を重ねたニューラルネットワークで誤差逆伝播をたどるうちに勾配の大きさが極端に小さくなったり大きくなったりする学習上の現象を指し、勾配という量の性質から生じる別の話題です。

4. ビジネス・実務での活用シナリオ

製造業の品質予測では、工程データから不良率を予測するモデルを学習させる際に、予測誤差を表す誤差関数の勾配を計算します。誤差が減る方向へパラメータを調整することで検知精度を高められるため、不良品の見逃しや誤検知を減らすうえで欠かせない計算です。

金融の与信スコアリング(顧客の返済能力を数値で評価する仕組み)では、顧客属性から返済確率を予測するモデルの誤差関数について勾配を求め、その情報をもとにパラメータを最適化します。市場や顧客層の変化に応じてスコアの精度を改善し続けるためには、勾配にもとづく地道な更新が土台になります。

広告・マーケティングのクリック率予測では、大量のパラメータを持つ予測モデルを学習させます。全データを一括で使うと勾配の計算コストが高くなるため、少数のまとまり(ミニバッチ)単位で勾配を求め、日々更新されるデータに追従させる工夫が取られます。刻々と変わるユーザーの行動に対応し続けるには、この計算コストを抑える工夫が実務上の前提です。

5. 要点まとめ

  • 勾配とは、多変数関数についての偏微分を並べたベクトルで、ある地点から関数の値が最も急に増加する方向とその大きさを表します。
  • 1変数関数の微分係数(接線の傾き)との違いは、対象が多変数であることと、向き・大きさを持つベクトルである点です。
  • 機械学習では誤差関数の勾配を求め、その逆方向(最急降下方向)へパラメータを動かして誤差を減らすという考え方が、勾配降下法につながります。

6. 確認問題

問1勾配ベクトルは、ある地点から関数の値が最も急に増加する方向を示す。

解答・解説をみる

○ 正しい

勾配は各変数についての偏微分を並べたベクトルで、その向きは関数値が最も急速に増加する方向を表します。大きさ(ノルム)はその増加の急さを示します。

問2勾配は1変数関数についてのみ定義される概念で、2変数以上の関数では定義できない。

解答・解説をみる

× 誤り

正しくは、勾配は変数が2つ以上ある多変数関数について定義される概念で、各変数ごとの偏微分を並べたベクトルとして表されます。1変数関数の場合は微分係数(接線の傾き)という1つの数値で表されます。

問3誤差関数の値を減らしたい機械学習の学習では、パラメータを勾配と同じ方向ではなく、勾配の逆方向に更新する。

解答・解説をみる

○ 正しい

勾配は関数値が増加する方向を示すため、誤差を小さくするにはその逆方向(最急降下方向)へパラメータを動かします。この考え方が勾配降下法の更新式の符号に反映されています。