勾配ベクトルとは?意味から計算方法まで分かりやすく解説

数学

「勾配ベクトル」という言葉を聞いて、難しそうだなと思っていませんか?

実は、勾配ベクトルは「どの方向に進めば一番急に上るか」を教えてくれるベクトルです。山登りをイメージすると分かりやすいですね。

この記事では、勾配ベクトルの基本から実際の使い方まで、順を追って解説していきます。

スポンサーリンク

勾配ベクトルとは何か

勾配ベクトルは、多変数関数の「傾き」を表すベクトルです。

1変数関数の微分

まず、復習として1変数関数を考えてみましょう。

関数 y = f(x) があるとき、導関数 f'(x) は「x 方向の傾き」を表します。

例えば:

  • f(x) = x² のとき、f'(x) = 2x
  • x = 3 での傾きは f'(3) = 6

この傾きは1つの数値(スカラー)です。

多変数関数の場合

では、2変数関数 z = f(x, y) の場合はどうでしょうか?

この関数は、x 方向にも y 方向にも変化します。つまり、傾きが2つあるんです:

  • x 方向の傾き:∂f/∂x(x に関する偏微分)
  • y 方向の傾き:∂f/∂y(y に関する偏微分)

これらの偏微分を1つのベクトルにまとめたものが「勾配ベクトル」です。

勾配ベクトルの定義

2変数関数 f(x, y) の勾配ベクトルは:

∇f = (∂f/∂x, ∂f/∂y)

3変数関数 f(x, y, z) の場合は:

∇f = (∂f/∂x, ∂f/∂y, ∂f/∂z)

一般に、n 変数関数 f(x₁, x₂, …, xₙ) の勾配ベクトルは:

∇f = (∂f/∂x₁, ∂f/∂x₂, ..., ∂f/∂xₙ)

記号と読み方

勾配ベクトルは、次のように書かれます:

∇f(ナブラ エフ)

  • ∇ は「ナブラ」と読む記号
  • デル(del)とも呼ばれる

grad f(グラッド エフ)

  • gradient(勾配)の略
  • 正式には「グラディエント」

どちらも同じ意味で、次のように表されます:

∇f = grad f = (∂f/∂x, ∂f/∂y, ∂f/∂z)

勾配ベクトルの幾何学的意味

勾配ベクトルには、非常に重要な幾何学的意味があります。

最も急な方向を指す

勾配ベクトルの方向は、その点で関数の値が最も急激に増加する方向を指します。

山の例で考えてみましょう:

  • 山の高さを関数 h(x, y) とする
  • ある地点での勾配ベクトル ∇h は、その地点から最も急な登り坂の方向を指す

逆に言えば、-∇h(勾配ベクトルの逆向き)は最も急な下り坂の方向です。

変化の大きさを表す

勾配ベクトルの大きさ(ノルム)は、その方向での変化の急峻さを表します。

|∇f| = √((∂f/∂x)² + (∂f/∂y)²)
  • |∇f| が大きい → 急な傾斜
  • |∇f| が小さい → なだらかな傾斜
  • |∇f| = 0 → 平坦(極値点の可能性)

等高線に垂直

勾配ベクトルは、常に等高線(または等位面)に垂直です。

地形図をイメージしてください:

  • 等高線は同じ高さの点を結んだ線
  • 勾配ベクトルは、この等高線に対して垂直に突き出る
  • 等高線が密なところほど、勾配ベクトルが大きい

これは重要な性質で、後ほど証明します。

勾配ベクトルの計算方法

実際に勾配ベクトルを計算してみましょう。

例1:2変数の多項式関数

f(x, y) = x² + y² の勾配ベクトルを求めます。

手順:

  1. x に関する偏微分:
   ∂f/∂x = 2x
  1. y に関する偏微分:
   ∂f/∂y = 2y
  1. 勾配ベクトル:
   ∇f = (2x, 2y)

特定の点での値:

点 (1, 2) での勾配ベクトルは:

∇f(1, 2) = (2·1, 2·2) = (2, 4)

この点では、ベクトル (2, 4) の方向に最も急に増加します。

例2:より複雑な関数

f(x, y) = x²y + 3y³ の勾配ベクトルを求めます。

手順:

  1. x に関する偏微分:
   ∂f/∂x = 2xy  (y は定数として扱う)
  1. y に関する偏微分:
   ∂f/∂y = x² + 9y²  (x は定数として扱う)
  1. 勾配ベクトル:
   ∇f = (2xy, x² + 9y²)

特定の点での値:

点 (2, 1) での勾配ベクトルは:

∇f(2, 1) = (2·2·1, 2² + 9·1²) = (4, 13)

例3:3変数関数

f(x, y, z) = xyz² の勾配ベクトルを求めます。

手順:

  1. 各変数に関する偏微分:
   ∂f/∂x = yz²
   ∂f/∂y = xz²
   ∂f/∂z = 2xyz
  1. 勾配ベクトル:
   ∇f = (yz², xz², 2xyz)

特定の点での値:

点 (1, 2, 3) での勾配ベクトルは:

∇f(1, 2, 3) = (2·3², 1·3², 2·1·2·3) = (18, 9, 12)

例4:指数関数・三角関数

f(x, y) = e^x · sin(y) の勾配ベクトルを求めます。

手順:

  1. x に関する偏微分:
   ∂f/∂x = e^x · sin(y)
  1. y に関する偏微分:
   ∂f/∂y = e^x · cos(y)
  1. 勾配ベクトル:
   ∇f = (e^x · sin(y), e^x · cos(y))

方向微分との関係

勾配ベクトルと方向微分には、密接な関係があります。

方向微分とは

方向微分は、ある特定の方向への関数の変化率です。

点 (x₀, y₀) から単位ベクトル u = (u₁, u₂) の方向への方向微分 D_u f は:

D_u f = ∂f/∂x · u₁ + ∂f/∂y · u₂

内積としての表現

これは、勾配ベクトルと方向ベクトルの内積として書けます:

D_u f = ∇f · u = |∇f| |u| cos θ

ここで:

  • θ は ∇f と u の間の角度
  • |u| = 1(単位ベクトル)

したがって:

D_u f = |∇f| cos θ

重要な性質

この式から、次のことが分かります:

最大値:θ = 0°(u が ∇f と同じ方向)のとき

D_u f = |∇f| cos(0°) = |∇f|

つまり、勾配ベクトルの方向が最も急な増加方向で、その変化率は |∇f| です。

最小値:θ = 180°(u が ∇f と逆方向)のとき

D_u f = |∇f| cos(180°) = -|∇f|

勾配ベクトルの逆方向が最も急な減少方向です。

ゼロ:θ = 90°(u が ∇f に垂直)のとき

D_u f = |∇f| cos(90°) = 0

勾配ベクトルに垂直な方向では、関数の値は変化しません。これが等高線の方向です!

等高線と勾配ベクトルの関係

勾配ベクトルが等高線に垂直であることを、数学的に示しましょう。

等高線とは

等高線は、関数の値が一定の曲線です:

f(x, y) = c (c は定数)

証明

等高線上の点 (x, y) での接線ベクトルを dr = (dx, dy) とします。

等高線上では、f の値は変化しないので:

df = 0

一方、全微分の公式から:

df = ∂f/∂x · dx + ∂f/∂y · dy

これをベクトルの内積で表すと:

df = ∇f · dr = 0

内積がゼロということは、∇f と dr が垂直であることを意味します。

したがって、勾配ベクトルは等高線に垂直です。

視覚的な理解

地形図で考えると:

  • 等高線が密な場所 → 急な斜面 → |∇f| が大きい
  • 等高線が疎な場所 → なだらかな斜面 → |∇f| が小さい
  • 勾配ベクトルは等高線を横切る方向(垂直)

勾配ベクトルの性質

勾配ベクトルには、いくつか重要な性質があります。

線形性

定数 a, b と関数 f, g に対して:

∇(af + bg) = a∇f + b∇g

例:

f = x², g = y³ のとき
∇(2f + 3g) = 2∇f + 3∇g
            = 2(2x, 0) + 3(0, 3y²)
            = (4x, 9y²)

積の微分法則

2つの関数 f, g の積に対して:

∇(fg) = f∇g + g∇f

例:

f = x², g = y のとき
∇(x²y) = x²∇y + y∇(x²)
       = x²(0, 1) + y(2x, 0)
       = (2xy, x²)

合成関数の微分(チェインルール)

h = f(g(x, y)) のとき:

∇h = f'(g) · ∇g

例:

h = (x² + y²)³ のとき
g = x² + y²、f(u) = u³ として
∇h = 3g² · ∇g
   = 3(x² + y²)² · (2x, 2y)
   = (6x(x² + y²)², 6y(x² + y²)²)

ゼロベクトルの意味

勾配ベクトルがゼロになる点:

∇f = (0, 0, ..., 0)

これは、すべての方向で傾きがゼロ、つまり停留点(極値点または鞍点)です。

具体的な応用例

勾配ベクトルの実用例を見てみましょう。

例1:温度分布

部屋の温度分布が T(x, y) = 100 – x² – y² で表されるとします。

勾配ベクトルは:

∇T = (-2x, -2y)

点 (3, 4) での勾配:

∇T(3, 4) = (-6, -8)

解釈:

  • ベクトル (-6, -8) の方向に温度が最も急激に上昇
  • 逆方向 (6, 8) に進むと温度が最も急激に下降
  • 温度を上げたいなら (-6, -8) の方向に移動すべき

例2:山の標高

山の標高が h(x, y) = 1000 – 0.5x² – 0.5y² で表されるとします。

勾配ベクトルは:

∇h = (-x, -y)

点 (10, 0) での勾配:

∇h(10, 0) = (-10, 0)

解釈:

  • この点では、西(-x 方向)に進むと最も急に登る
  • 東に進むと最も急に下る
  • 南北方向(y 方向)には傾斜がない

例3:電位

電位が φ(x, y, z) = 1/√(x² + y² + z²) で表されるとします。

これは点電荷の電位です。勾配ベクトルは電場の逆方向を示します:

∇φ = -1/r³ · (x, y, z) = -r/r³

(r = (x, y, z) は位置ベクトル)

解釈:

  • 電場 E = -∇φ = r/r³ は原点から放射状
  • 原点に近いほど電場が強い(1/r² に比例)

最適化問題への応用

勾配ベクトルは、最適化問題で非常に重要な役割を果たします。

極値の条件

関数 f(x, y) が極値を持つための必要条件は:

∇f = (0, 0)

つまり、勾配ベクトルがゼロになる点です。

例:最小値を求める

f(x, y) = x² + 2y² – 4x – 8y + 20 の最小値を求めます。

手順1:勾配ベクトルを計算

∇f = (2x - 4, 4y - 8)

手順2:勾配をゼロにする

2x - 4 = 0  →  x = 2
4y - 8 = 0  →  y = 2

手順3:値を計算

f(2, 2) = 4 + 8 - 8 - 16 + 20 = 8

したがって、点 (2, 2) で最小値 8 を取ります。

勾配降下法

勾配降下法は、最小値を見つけるための反復アルゴリズムです。

基本アイデア:

  • 現在地から勾配の逆方向に少し進む
  • これを繰り返すと、最小値に近づく

アルゴリズム:

x_{n+1} = x_n - α∇f(x_n)

ここで:

  • α は学習率(ステップサイズ)
  • -∇f は勾配の逆方向(下り坂)

例:

f(x, y) = x² + y² の最小値を探します。

初期値:(x₀, y₀) = (5, 3)
学習率:α = 0.1

∇f = (2x, 2y)

ステップ1:
∇f(5, 3) = (10, 6)
(x₁, y₁) = (5, 3) - 0.1(10, 6) = (4, 2.4)

ステップ2:
∇f(4, 2.4) = (8, 4.8)
(x₂, y₂) = (4, 2.4) - 0.1(8, 4.8) = (3.2, 1.92)

ステップ3以降:
...繰り返すと (0, 0) に収束

この方法は、機械学習でニューラルネットワークの重みを最適化する際にも使われます!

機械学習での重要性

勾配ベクトルは、現代の機械学習において中心的な役割を果たしています。

ニューラルネットワークの学習

ニューラルネットワークは、誤差関数 E(w₁, w₂, …, wₙ) を最小化することで学習します。

ここで:

  • wᵢ はネットワークの重み(パラメータ)
  • E は予測値と正解の誤差

学習の手順:

  1. 現在の重みで予測を計算
  2. 誤差を計算
  3. 勾配ベクトル ∇E を計算(バックプロパゲーション)
  4. 勾配の逆方向に重みを更新:
   w_new = w_old - α∇E
  1. 1〜4を繰り返す

確率的勾配降下法(SGD)

実際の機械学習では、データセット全体で勾配を計算するのは計算量が多すぎます。

そこで、ランダムに選んだ一部のデータ(ミニバッチ)だけで勾配を近似します:

w_new = w_old - α∇E_batch

これにより:

  • 計算が高速化
  • メモリ使用量が削減
  • より良い汎化性能

現代の深層学習は、この方法に基づいています!

物理学での応用

勾配ベクトルは、物理学のさまざまな分野で現れます。

保存力とポテンシャル

保存力 F は、ポテンシャルエネルギー U の勾配の負として表されます:

F = -∇U

例:重力

重力ポテンシャル:U = mgh(h は高さ)

勾配:∇U = (0, 0, mg)

力:F = -∇U = (0, 0, -mg)

下向きの力になります。

電場

電場 E は電位 φ の勾配の負です:

E = -∇φ

点電荷の電位:

φ = q/(4πε₀r)

電場:

E = -∇φ = q/(4πε₀r²) · r̂

(r̂ は動径方向の単位ベクトル)

拡散と熱伝導

物質の濃度 c や温度 T の勾配は、拡散や熱の流れを決定します:

フィックの第一法則(拡散):

J = -D∇c

(J は拡散流束、D は拡散係数)

フーリエの法則(熱伝導):

q = -k∇T

(q は熱流束、k は熱伝導率)

どちらも「高いところから低いところへ流れる」という自然な原理を表しています。

ナブラ演算子

勾配を表す記号 ∇ は、実は「演算子」として扱えます。

ナブラ演算子の定義

3次元の場合:

∇ = (∂/∂x, ∂/∂y, ∂/∂z)

これをベクトルのように書くと:

∇ = i·∂/∂x + j·∂/∂y + k·∂/∂z

(i, j, k は単位ベクトル)

3つの基本演算

ナブラ演算子は、3つの重要な演算を生み出します:

1. 勾配(gradient)

スカラー場 φ に対して:

∇φ = (∂φ/∂x, ∂φ/∂y, ∂φ/∂z)

結果はベクトル場。

2. 発散(divergence)

ベクトル場 F = (F_x, F_y, F_z) に対して:

∇·F = ∂F_x/∂x + ∂F_y/∂y + ∂F_z/∂z

結果はスカラー場。

3. 回転(curl)

ベクトル場 F に対して:

∇×F = (∂F_z/∂y - ∂F_y/∂z, ∂F_x/∂z - ∂F_z/∂x, ∂F_y/∂x - ∂F_x/∂y)

結果はベクトル場。

これらは、ベクトル解析の基本的な演算です。

座標系による表現

勾配ベクトルは、座標系によって表現が変わります。

直交座標(デカルト座標)

最も基本的な表現:

∇f = (∂f/∂x, ∂f/∂y, ∂f/∂z)

極座標(2次元)

極座標 (r, θ) では:

∇f = ∂f/∂r · e_r + (1/r)·∂f/∂θ · e_θ

ここで:

  • e_r は動径方向の単位ベクトル
  • e_θ は角度方向の単位ベクトル

円筒座標(3次元)

円筒座標 (ρ, φ, z) では:

∇f = ∂f/∂ρ · e_ρ + (1/ρ)·∂f/∂φ · e_φ + ∂f/∂z · e_z

球座標(3次元)

球座標 (r, θ, φ) では:

∇f = ∂f/∂r · e_r + (1/r)·∂f/∂θ · e_θ + (1/(r sin θ))·∂f/∂φ · e_φ

座標系に応じて適切な表現を使うことで、計算が簡単になることがあります。

よくある間違いと注意点

勾配ベクトルを扱う際の注意点をまとめます。

間違い1:スカラーとベクトルの混同

間違い:
「f(x, y) の勾配は 2x + 2y です」

正しい:
「f(x, y) = x² + y² の勾配は (2x, 2y) です」

勾配は必ずベクトルです!

間違い2:方向と大きさの混同

間違い:
「勾配ベクトルの大きさが最大増加方向です」

正しい:
「勾配ベクトルの方向が最大増加方向で、その大きさが増加率です」

間違い3:等高線との関係

間違い:
「勾配ベクトルは等高線に平行です」

正しい:
「勾配ベクトルは等高線に垂直です」

注意点:停留点の判定

∇f = 0 となる点は、必ずしも最小値ではありません:

  • 最小値(谷底)
  • 最大値(山頂)
  • 鞍点(峠)

のいずれかです。判定には二次微分(ヘッセ行列)が必要です。

まとめ

勾配ベクトルは、多変数関数の微分を一つにまとめたベクトルです。

この記事のポイント

  • 勾配ベクトル ∇f は各変数の偏微分を成分とするベクトル
  • 方向:関数が最も急激に増加する方向
  • 大きさ:その方向での変化率
  • 等高線に垂直という重要な幾何学的性質
  • 方向微分は勾配ベクトルとの内積で表される
  • 極値を求める際は ∇f = 0 を解く
  • 勾配降下法で最適化問題を解ける
  • 機械学習の学習アルゴリズムの核心
  • 物理学では保存力や拡散を記述

勾配ベクトルの直感的理解

山登りの例:

  • 勾配ベクトル = 「最も急な登り坂の方向と急峻さ」
  • 等高線 = 「同じ高さの点を結んだ線」
  • 勾配ベクトルは等高線に垂直

温度分布の例:

  • 勾配ベクトル = 「温度が最も急激に上昇する方向と上昇率」
  • 逆方向に進めば最も急激に冷える

勾配ベクトルは、ベクトル解析、最適化理論、機械学習、物理学など、幅広い分野で必須の概念です。しっかり理解して、応用できるようになりましょう!

コメント

タイトルとURLをコピーしました