「勾配ベクトル」という言葉を聞いて、難しそうだなと思っていませんか?
実は、勾配ベクトルは「どの方向に進めば一番急に上るか」を教えてくれるベクトルです。山登りをイメージすると分かりやすいですね。
この記事では、勾配ベクトルの基本から実際の使い方まで、順を追って解説していきます。
勾配ベクトルとは何か

勾配ベクトルは、多変数関数の「傾き」を表すベクトルです。
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² の勾配ベクトルを求めます。
手順:
- x に関する偏微分:
∂f/∂x = 2x
- y に関する偏微分:
∂f/∂y = 2y
- 勾配ベクトル:
∇f = (2x, 2y)
特定の点での値:
点 (1, 2) での勾配ベクトルは:
∇f(1, 2) = (2·1, 2·2) = (2, 4)
この点では、ベクトル (2, 4) の方向に最も急に増加します。
例2:より複雑な関数
f(x, y) = x²y + 3y³ の勾配ベクトルを求めます。
手順:
- x に関する偏微分:
∂f/∂x = 2xy (y は定数として扱う)
- y に関する偏微分:
∂f/∂y = x² + 9y² (x は定数として扱う)
- 勾配ベクトル:
∇f = (2xy, x² + 9y²)
特定の点での値:
点 (2, 1) での勾配ベクトルは:
∇f(2, 1) = (2·2·1, 2² + 9·1²) = (4, 13)
例3:3変数関数
f(x, y, z) = xyz² の勾配ベクトルを求めます。
手順:
- 各変数に関する偏微分:
∂f/∂x = yz²
∂f/∂y = xz²
∂f/∂z = 2xyz
- 勾配ベクトル:
∇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) の勾配ベクトルを求めます。
手順:
- x に関する偏微分:
∂f/∂x = e^x · sin(y)
- y に関する偏微分:
∂f/∂y = e^x · cos(y)
- 勾配ベクトル:
∇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 は予測値と正解の誤差
学習の手順:
- 現在の重みで予測を計算
- 誤差を計算
- 勾配ベクトル ∇E を計算(バックプロパゲーション)
- 勾配の逆方向に重みを更新:
w_new = w_old - α∇E
- 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 を解く
- 勾配降下法で最適化問題を解ける
- 機械学習の学習アルゴリズムの核心
- 物理学では保存力や拡散を記述
勾配ベクトルの直感的理解
山登りの例:
- 勾配ベクトル = 「最も急な登り坂の方向と急峻さ」
- 等高線 = 「同じ高さの点を結んだ線」
- 勾配ベクトルは等高線に垂直
温度分布の例:
- 勾配ベクトル = 「温度が最も急激に上昇する方向と上昇率」
- 逆方向に進めば最も急激に冷える
勾配ベクトルは、ベクトル解析、最適化理論、機械学習、物理学など、幅広い分野で必須の概念です。しっかり理解して、応用できるようになりましょう!

コメント