はじめに
前回は、偏微分を学びました。
偏微分を理解すると、多変数関数の変化を 1 つの変数ごとに捉えることができます。
しかし、実際に多変数関数の最適な値(最大値・最小値)を見つけるには、勾配(グラディエント) の概念が重要になります。
勾配は、関数の変化方向を示すベクトルであり、最適化の基本となる概念です。
特に、機械学習の勾配降下法(Gradient Descent) や、ポートフォリオ最適化 などの金融工学に広く応用されます。
今回は、勾配の概念と、最適化に向けた基本的な計算方法を学びます。
1. 勾配(グラディエント)とは?
多変数関数 f(x,y) の変化方向を示すベクトルを 勾配(グラディエント) と呼びます。
勾配は、各変数についての偏微分を並べたベクトルで表されます。
∇f=(∂x∂f,∂y∂f)
このベクトルは、関数が最も速く増加する方向を示します。
つまり、
- 勾配の向き → 関数が最も増加する方向
- 勾配の大きさ → その増加の速さ
を表します。
2. 勾配の計算例
例 1:関数 f(x, y) = x^2 + y^2 の勾配
まず、この関数の偏微分を求めます。
∂x∂f=2x,∂y∂f=2y
したがって、勾配ベクトルは
∇f=(2x,2y)
この勾配ベクトルは、原点に近いほど小さくなり、遠ざかるほど大きくなります。
-
例えば、点 (1,1) では
∇f(1,1)=(2,2)
これは関数がこの方向に最も速く増加することを意味します。
-
逆に、点 (−1,−1) では
∇f(−1,−1)=(−2,−2)
これは、関数がこの方向に最も速く増加することを意味します。
このように、勾配を使うと関数の増加・減少の方向がわかります。
3. 勾配降下法(Gradient Descent)
勾配の性質を利用して、関数の最小値を求める方法が 勾配降下法(Gradient Descent) です。
勾配降下法は、次のような手順で実行されます。
- 初期点 (x0,y0) を適当に選ぶ。
- 勾配 ∇f(x,y) を計算する。
- ∇f(x,y) の反対方向に少しだけ進む。
- これを繰り返し、関数の最小値を見つける。
更新式は次のようになります。
xn+1=xn−η∂x∂f
yn+1=yn−η∂y∂f
ここで、η は学習率(ステップの大きさ)です。
例 2: f(x, y) = x^2 + y^2 の最小化
- 初期点 (x0,y0)=(3,4) を選ぶ。
- 勾配を計算:
∇f(3,4)=(6,8)
- 学習率 η=0.1 として更新:
x1=3−0.1×6=2.4
y1=4−0.1×8=3.2
- これを繰り返すと、最終的に (x,y)=(0,0) に収束。
このように、勾配降下法は関数の最小値を見つけるための基本的な方法です。
4. 応用例
(1) 機械学習:ニューラルネットワークの学習
ニューラルネットワークのパラメータ(重み)は、損失関数の勾配を用いて最適化されます。
- 損失関数 L(w) の勾配を計算し、
- その方向に沿って重み w を更新することで、
- モデルの予測精度が向上する。
(2) 金融工学:ポートフォリオ最適化
ポートフォリオのリスク(分散)は、多変数関数として表されます。
- f(w1,w2,...,wn) をポートフォリオのリスク関数とすると、
- 各資産の割合 wi に関する勾配を計算し、
- 最適なポートフォリオの配分を見つける。
まとめ
- 勾配(グラディエント)は、関数が最も速く増加する方向を示すベクトル。
- 勾配降下法を使えば、多変数関数の最小値を効率的に求められる。
- 機械学習や金融工学など、幅広い応用がある。