What is gradient in Gradient Descent? / [勾配降下法]関数の勾配の定義を振り返る


勾配とは?

そもそもの勾配の定義から振り返ろう。以下のような関数fについて考える。

[mathjax]

$$f(x) = 3x_1^2 – 2x_1x_2 + 3x_2^2 -4x_1 -4x_2$$

このときベクトル$latex \nabla f(x)$を点xにおける関数fの勾配(gradient)という。

$$ \nabla f(x) = \left( \frac{\partial f(x)}{\partial x_1}, \frac{\partial f(x)}{\partial x_2}, \cdots, \frac{\partial f(x)}{\partial x_n} \right) \in \mathbb R^n $$

※ただし以下が成り立つ場合(これは2点を結ぶ線分の傾きから求められますよね?)

$$ f(x+d) = f(x) + \nabla f(x)^Td + o(\Vert{d}\Vert), d \in \mathbb R^n$$

この定義に基づくと上式の勾配は以下で表すことができる。

$$\nabla f(x) = \begin{pmatrix}
6x_1-2x_2-4 \\
-2x_1 + 6×2 -4 \\
\end{pmatrix}
$$

ここで勾配の定義をより直感的にするために以下の2点における勾配を考えてみる。

$$a = (0, 0)^T, \nabla f(a) = (-4, -4)^T$$
$$b = (2, 0)^T, \nabla f(b) = (8, -8)^T$$

このようにfにおける各点の勾配は接線に対して垂直なベクトルとして表される。
そして上図の各点において傾きが最大となる方向を表し、勾配と反対になる方向が降下方向となる。

つまり探索方向を勾配$latex \nabla f(x)$の逆(降下)方向に定めて探索することから「勾配降下法」と言われる所以である(と思う。)

勾配降下法の探索イメージ

初期点を(0, 0)とするとたとえばこんな感じ?