본문 바로가기

Machine Learning/2024winter

[Machine Learning] Gradient와 Steepest Direction의 원리 (편미분 설명 추가)

선형 회귀(Linear Regression)의 최적화(Optimizer) 알고리즘 중 처음 배우는 것이 경사 하강법(Gradient Descent)이다. 경사 하강법 (Gradient Descent)의 핵심 개념은 기울기(Gradient)의 방향이 함수의 값이 가장 크게 증가하는 방향(Steepest Direction)을 나타내며, 이 기울기(Gradient)의 반대 방향으로 이동하면 손실함수(Loss Function)를 효과적으로 최소화할 수 있다는 점이다.

기울기(Gradient)의 개념을 정확히 이해하기 위해 먼저 편미분(Partial Derivative)의 개념을 살펴보고, 이를 바탕으로 기울기(Gradient)를 정의하겠다. 마지막으로 Gradient가 항상 함수의 값이 가장 크게 증가하는 방향(Steepest Direction)을 가리키는 이유를 설명하겠다. 

목차
1. 편미분(Partial Derivative)
 1.1. 일변수함수의 미분
 1.2. 편미분의 정의

2. Gradient(기울기)

3. Steepest Direction (가장 가파른 방향)
 3.1. Directional Derivative(방향 도함수)
 3.2. Directional Derivative and Gradient
 3.3. Steepest Direction 

1. 편미분(Partial Derivative)


1.1. 일변수함수의 미분

편미분을 배우기 전에는 일변수함수(독립변수 하나에 종속변수가 하나인 함수)에 대해 미분을 해왔다.어떤 함수를 미분한다는 것은 도함수를 구하는 것이며, 이는 순간변화율을 구하는 것이다. 순간변화율은 기울기를 구하는 식에서 그 의미를 명확히 알 수 있다. 

[그림1] 두 점의 기울기

<Definition 1>
평면상의 두 점 $(a,f(a)),(b,f(b))$을 지나는 직선의 기울기는
$$\begin{align} m = \frac{f(a)-f(b)}{a-b},\quad a\neq b\end{align}$$
이다. $a=b$인 경우, 이 직선은 $x$축에 수직인 직선이고 기울기는 없다.

 

식(1)에서 $b$가 $a$에 한없이 가까워지면, 식(1)은 점 $a$에서의 순간적인 변화율을 구하는 형태가 된다. 미분에서 독립변수$x$와 종속변수$y$의 관계를 이해하기 위해 평균변화율에서 순간변화율을 구하는 과정을 살펴보자.

 

$x$가 $a$에서 $b$까지 변하면 $x$의 변화[$x$의 증분(increment)]는 다음과 같다.

$$\begin{align}\Delta x = a-b\end{align}$$

이에 따른 $y$의 변화는 다음과 같다.

 $$\begin{align}\Delta y = f(a)-f(b)\end{align}$$

구간 $\left [ x_{1},x_{2} \right ]$에서 $x$에 대한 $y$의 평균변화율(average rate of change)은 다음과 같이 정의한다.

$$\begin{align} \frac{\Delta y}{\Delta x} =\frac{f(a)-f(b)}{a-b} \end{align}$$

$b$가 $a$에 접근할 때, 즉 $\Delta x$가 $0$에 접근할 때 평균변화율의 극한을 $x=a$에서 $x$에 대한 $y$의 순간변화율(instantaneous rate of change)라고 한다.

$$\begin{align} \displaystyle \lim_{\Delta x \to 0} \frac{\Delta y}{\Delta x} =\displaystyle \lim_{b \to a} \frac{f(a)-f(b)}{a-b} \end{align}$$

일변수함수 $f$의 경우 극한이 존재하는 $x$에 대하여 $f$의 도함수를 아래와 같이 정의한다. 

<Definition 2>
함수 $f(x)$에 대하여 극한 
$$\begin{align}f'(x) =\displaystyle \lim_{h \to 0}\frac{f(x+h)-f(x)}{h}\end{align}$$
이 존재하면 이것을 $f(x)$의 도함수(derivative)라 한다. 도함수를 구하는 과정을 미분(differentiation)이라고 한다.

 

정의역 내 임의의 점에서 순간 변화율과 동일한 기울기를 가지는 직선은 그 점에서 접선이 된다.

[그림2] 접선

 

 

이처럼 독립변수와 종속변수가 각각 하나인 함수 $y=f(x)$에 대해, 독립변수 $x$의 무한히 작은 변화에 따른 종속변수 $y$의 순간 변화율을 나타내는 것이 미분이다. 


1.2. 편미분의 정의

일변수함수와 달리 다변수함수는 독립변수가 2개 이상이기 때문에 함수의 출력값이 여러 입력 변수의 영향을 동시에 받는다. 따라서 미분도 단순히 한 변수에 대한 변화율을 구하는 것이 아니라, 각 독립변수에 따른 변화율을 개별적으로 고려해야 한다. 

 

각 변수에 해당하는 축의 방향으로 입력 값이 바뀜에 따라 출력 값이 바뀌는 정도를 편미분(Partial Derivative)이라 한다. 편미분을 구할 때 하나의 변수만 변화시키고, 나머지 변수들은 상수로 고정하여 해당 변수에 대한 함수의 변화율을 구한다.

<Definition 3>   
입력 변수가 $\mathbf{x} = [x_{1}\;x_{1}\;\cdots \;x_{n}]^{T}$인 함수 $f:\mathbb{R}^n\to \mathbb{R}$ 에 대해, $f$의 $x_{i}$에 대한 편미분을 다음과 같이 정의한다.
$$\begin{align}\frac{\partial f}{\partial x_{i}} = \displaystyle \lim_{h \to 0}\frac{f(x_{1},x_{2},\cdots ,x_{i}+h,\cdots ,x_{n})-f(x_{1},x_{2},\cdots x_{i},\cdots ,x_{n})}{h} \end{align}$$

 

이변수함수에서의 편미분은 다음과 같다.

이변수함수 $f(x,y)$는 두 개의 독립변수 $x$와 $y$를 가지는 함수이다. ( $f:\mathbb{R}^2\to \mathbb{R}$)

$x$에 관한 $f(x,y)$의 편미분을 다음과 같이 나타낸다.

$$\begin{align} \frac{\partial f}{\partial x} (x,y)=f_{x}(x,y) = \displaystyle \lim_{h \to 0}\frac{f(x+h,y)-f(x,y)}{h} \end{align}$$

$y$에 관한 $f(x,y)$의 편미분을 다음과 같이 나타낸다.

$$\begin{align} \frac{\partial f}{\partial y}(x,y) = f_{y}(x,y)= \displaystyle \lim_{h \to 0}\frac{f(x,y+h)-f(x,y)}{h} \end{align}$$

 

식 (8), (9)은 일반적인 이변수함수의 편미분 표현이다. 벡터 표기법을 이용한 편미분 표현을 제시하겠다.

입력변수를 $\mathbf x = \begin{bmatrix}x & y \\\end{bmatrix} ^T$로 나타내면, 함수를 다음과 같이 벡터 함수 형태로 표현할 수 있다.

$$\begin{align} f(x,y) = f(\mathbf{x}) \end{align}$$

벡터 표기법을 사용하여 편미분을 정의하면 다음과 같다.

$$\begin{align} \frac{\partial f (\mathbf{x}) }{\partial x}  = \displaystyle \lim_{h \to 0}\frac{f(\mathbf{x}+h\mathbf{i})-f(\mathbf{x})}{h} \end{align}$$

$$\begin{align} \frac{\partial f (\mathbf{x}) }{\partial y}  = \displaystyle \lim_{h \to 0}\frac{f(\mathbf{x}+h\mathbf{j})-f(\mathbf{x})}{h} \end{align}$$

식 (11), (12)에서 벡터 $\mathbf i = \begin{bmatrix}1 & 0 \\\end{bmatrix}^T,\;\; \mathbf j = \begin{bmatrix}0 & 1 \\\end{bmatrix}^T$ 는 각각 $x$축 및 $y$축 방향의 단위 벡터(unit vector)를 나타낸다.


(예시 1)

함수 $f(x,y) = -x^2-y^2+5$에 대하여 $f_{x}(1,1) $을 구하여라.

 

편미분의 정의에 따라$\frac{\partial f}{\partial x}$을 계산하면

$$\begin{align} \frac{\partial f }{\partial x}  = \displaystyle \lim_{h \to 0}\frac{f(x+h,y)-f(x,y)}{h} = -2x \end{align}$$ 

이고 $x=1$, $y=1$을 대입하면 다음과 같은 결과를 얻는다.

$$ \begin{align}  f_{x}(1,1) = -2 \end{align} $$

 

[그림 4] $f(x,y) = -x^2-y^2+5 $

그래프로 보면, 함수 $f(x,y) = -x^2-y^2+5$는 [그림 4]의 곡면이다. (곡면 $\alpha$) 

[그림 5] 곡면과 y=1인 면이 만나서 생기는 교선

편미분의 정의에 의해 $y=1$ 위의 점만 고려하면, [그림 5]와 같이 곡면 $\alpha$와 평면 $y=1$의 교선이 된다. (교선 $\beta$)

[그림 6] (왼) 교선 $beta$ 위의 점(1,1,3)에서 접선 / (오) 곡면 위 점(1,1,3)에서의 x방향 접선의 기울기 벡터

[그림 6]에서 보는 것과 같이 교선 $\beta$에서 임의의 점 $x$에서 순간 변화율은 곡면 $\alpha$의 $(1,1,4)$에서 $x$축 방향 편미분과 같다.  


2. 기울기(Gradient)

<Definition 4>
입력변수가 $\mathbf{x} = [x_{1}\;x_{1}\;\cdots \;x_{n}]^{T}$인 함수 $f:\mathbb{R}^n\to \mathbb{R}$에 대해 식(16)을 gradient라고 정의한다.
$$\begin{align}\nabla f = \begin{bmatrix}\frac{\partial f}{\partial x_{1}} \\\vdots  \\\frac{\partial f}{\partial x_{n}}\end{bmatrix}\end{align}$$

 

함수의 정의역과 치역을 나타내는 표기법에 대해 추가 설명하겠다.

$f:\mathbb{R}^n\to \mathbb{R}$는 $n$-차원 벡터 공간 $ \mathbb{R}^n $에서 정의된 함수로, 정의역은 $n$차원 실수 공간인  $ \mathbb{R}^n $이며, 입력값은 $n$-차원 벡터이다. 치역은 실수 공간  $ \mathbb{R} $이며, 출력값은 하나의 실수 값으로 주어진다. 

 

3차원 공간에서 Gradient는 $x$방향으로의 편미분 값과 $y$방향으로의 편미분 값을 원소로 하는 벡터를 출력한다.

$$\begin{align}  \nabla f = \begin{bmatrix}\frac{\partial f}{\partial x} \\ \frac{\partial f}{\partial y} \end{bmatrix} = f_{x} \mathbf{i}+f_{y}\mathbf{j} \end{align}$$


(예시2)

$f(x,y) = -x^2-y^2+5 $ 함수를 이용해 Gradient 값을 구해보자.

 

$$ \begin{align}  \frac{\partial f(x,y)}{\partial x} = -2x  \end{align} $$

$$ \begin{align}  \frac{\partial f(x,y)}{\partial y} = -2y  \end{align} $$

 

$$\begin{align}  \nabla f = \begin{bmatrix}\frac{\partial f}{\partial x} \\ \frac{\partial f}{\partial y} \end{bmatrix} = \begin{bmatrix} -2x  \\ -2y  \end{bmatrix} \end{align}$$

 

$\nabla f$는 x,y의 함수이고 모든 x,y좌표에 대응되는 벡터가 생성된다. 

 

MATLAB을 이용하여 함수 $f(x,y) = -x^2-y^2+5 $의 Gradient를 각 점에서 벡터 화살표로 표현하여 그래프를 그려보겠다.

[그림 7] 곡면에서 Gradient 의 벡터 화살표 \ 곡면의 밑에서 본 벡터 화살표

 

[그림 7]의 벡터 화살표를 보면 모두 함수값이 가장 크게 증가하는 방향을 가리키는 것 처럼 보인다. 이 방향을 Steepest Direction (가장 가파른 방향)이라고 한다.

 

이제 우리는 Gradient의 방향이 항상 Steepest Direction이 되는지 알아보도록 하겠다. 


3. Steepest Direction

Gradient의 방향이 항상 함수의 값이 가장 크게 증가하는 방향인 이유는 다음 식이 성립하기 때문이다.

$$\begin{align} D_{u}f(\mathbf{x})=\nabla f(\mathbf{x})\cdot \mathbf{u} \end{align}$$

 

하나씩 차근차근 설명하겠다.


3.1. Directional Derivative (방향 도함수)

앞서 설명했듯 다변수함수는 독립변수가 2개 이상이기 때문에 함수의 출력값이 여러 입력 변수의 영향을 동시에 받는다. 따라서 각 독립변수에 따른 변화율을 개별적으로 고려해야 한다. 그렇기 때문에 편미분은 각 변수에 해당하는 축의 방향으로 입력 값이 바뀜에 따라 출력 값이 바뀌는 정도를 나타낸다. 즉, 편미분은 특정 축(예: $x$-축, $y$-축)에 대한 함수의 기울기를 측정하는 도구이다. 

그러나 함수가 특정 방향으로 어떻게 변화하는지 분석하려면, 단순히 축 방향(예: $x$-축 또는 $y$-축)만 고려하는 것이 아니라, 임의의 방향에서의 변화율을 계산해야 한다. 이를 방향 도함수(Directional Derivative)라 한다.

<Definition 5>
입력변수가 $\mathbf{x} = [x_{1}\;x_{1}\;\cdots \;x_{n}]^{T}$인 함수 $f:\mathbb{R}^n\to \mathbb{R}$에 대해 $$ \begin{align}D_{u}f(\mathbf{x})= \displaystyle \lim_{h \to 0}\frac{f({\mathbf{x}}+h \mathbf{u})-f(\mathbf{x})}{h}\end{align}$$ 를 unit vector $\mathbf{u}$방향의 Directional Derivative라 정의한다.

3차원 공간에서 unit vector $\mathbf{u}$가 $\mathbf{i} = [1\;0]^T$ 및 $\mathbf{j} = [0\;1]^T$일 때 directional derivative는 편미분이 된다.

$$ \begin{align}D_{u}f(x,y)= \displaystyle \lim_{h \to 0}\frac{f({x}+h \cdot 1,y)-f(x,y)}{h}\end{align}$$

$$ \begin{align}D_{u}f(x,y)= \displaystyle \lim_{h \to 0}\frac{f(x,y + h\cdot 1)-f(x,y)}{h}\end{align}$$


3.2. Directional Derivative and Gradient

<Theorem 1>
입력변수가 $\mathbf{x} = [x_{1}\;x_{1}\;\cdots \;x_{n}]^{T}$인 함수 $f:\mathbb{R}^n\to \mathbb{R}$에 대해 unit vector $\mathbf{u} = [u_{1}\;u_{1}\;\cdots \;u_{n}]^{T}$방향의 Directional Derivative는 Gradient와 다음의 관계를 갖는다. $$\begin{align} D_{u}f(\mathbf{x})=\nabla f(\mathbf{x})\cdot \mathbf{u} \end{align}$$

Proof)
directional derivative를 구하고자 하는 지점  $\mathbf{x} = [x_{1}\;x_{1}\;\cdots \;x_{n}]^{T}$ 및 방향 $\mathbf{u} = [u_{1}\;u_{1}\;\cdots \;u_{n}]^{T}$을 고려할 때 함수 $f$를 $t$에 대한 함수 $g(t)$로 정의할 수 있다.
$$\begin{align}g(t) &= f(\mathbf{x}+t\mathbf{u})\\ &=f(x_{1}+tu_{1},\cdots x_{n}+tu_{n})\end{align}$$

$g(t)$의 0에서의 미분은 다음과 같이 나타낼 수 있다.

$$\begin{align}
\frac{\mathrm{d} g(t)}{\mathrm{d} t}\Big|_{t=0} &= \displaystyle \lim_{h \to 0}\frac{g(t+h)-g(t)}{h}\Big|_{t=0}\\
&= \displaystyle \lim_{h \to 0}\frac{g(h)-g(0)}{h}\\
&=\displaystyle \lim_{h \to 0}\frac{f(\mathbf{x}+h\mathbf{u})-f(\mathbf{x})}{h} = D_{u}f(\mathbf{x})
\end{align}$$

 

 

변수를 $\mathbf{y} = \mathbf{x}+t\mathbf{y}$ 즉, $y_{i}+tu_{i},i=1,2\cdots,n$로 치환하자.

$$\begin{align}g(t) = f(\mathbf{x}+t\mathbf{u})= f(\mathbf{y})\end{align}$$

 

이 때 $g(t)$를 chain rule를 이용하여 t에 대해 미분하자

(다변수 함수의 chain rule 페이지 참고 : https://truthliesindiscomfort.tistory.com/78)

$$\begin{align}\frac{\mathrm{d} g(t)}{\mathrm{d} t} = \frac{\mathrm{d} f(\mathbf{y})}{\mathrm{d} t}=\frac{\partial f(\mathbf{y})}{\partial y_{1}}\frac{\mathrm{d} y_{1}}{\mathrm{d} t}+\cdots +\frac{\partial f(\mathbf{y})}{\partial y_{n}}\frac{\mathrm{d} y_{n}}{\mathrm{d} t}\end{align}$$

 

$\frac{\mathrm{d} y_{n}}{\mathrm{d} t}$ 는 $y_{n}= x_{n}+tu_{n}$를 t로 미분한 것이므로 $u_{n}$이 된다.

$$\begin{align}
&=\frac{\partial f(\mathbf{y})}{\partial y_{1}}u_{1}+\cdots +\frac{\partial f(\mathbf{y})}{\partial y_{n}}u_{n}\\
&=\begin{bmatrix}\frac{\partial f(\mathbf{y})}{\partial y_{1}} & \cdots  &\frac{\partial f(\mathbf{y})}{\partial y_{n}}\end{bmatrix}\begin{bmatrix}u_{1} \\\vdots\\u_{n}\end{bmatrix}\end{align}$$

 

$t=0$이라면, $\mathbf{y}=\mathbf{x}+0\cdot\mathbf{u} = \mathbf{x}$이므로, $g(t)$의 0에서의 미분은 다음과 같이 나타낼 수 있다.

$$ \begin{align} \frac{\mathrm{d} g(t)}{\mathrm{d} t}\Big|_{t=0} =\begin{bmatrix}\frac{\partial f(\mathbf{x})}{\partial x_{1}} & \cdots  &\frac{\partial f(\mathbf{x})}{\partial x_{n}}\end{bmatrix}\begin{bmatrix}u_{1} \\\vdots \\u_{n}\end{bmatrix} = \nabla f(\mathbf{x})\cdot \mathbf{u} \end{align}$$

 

그러므로 Directionals Derivative와 Gradient가 동일함이 증명된다

$$ \begin{align} \frac{\mathrm{d} g(t)}{\mathrm{d} t}\Big|_{t=0} = \nabla f(\mathbf{x})\cdot \mathbf{u} = D_{u}f(\mathbf{x}) \end{align} $$


3.3. Steepest Direcrtion

<Theorem 2>
임의의 지점 $\mathbf{x} = [x_{1}\;x_{1}\;\cdots \;x_{n}]^{T}$에서 함수 $f:\mathbb{R}^n\to \mathbb{R}$ 값이 가장 크게 증가하는 방향은 Gradient 방향이다.

 

Proof)

임의의 지점 $\mathbf{x} = [x_{1}\;x_{1}\;\cdots \;x_{n}]^{T}$에서 unit vector $\mathbf{u}$ 방향의 Directional derivative는 다음과 같음을 증명했다.

$$ \begin{align} \nabla f(\mathbf{x})\cdot \mathbf{u} = D_{u}f(\mathbf{x}) \end{align} $$

 

inner product의 정의에 의해 다음과 같이 나타낼 수 있다. (unit vector의 크기는 1이다.)

$$\begin{align}D_{u}f(\mathbf{x})&=\nabla f(\mathbf{x})\mathbf{u}=||\nabla f(\mathbf{x})||\,||\mathbf{u}||\cos\theta\\ &=||\nabla f(\mathbf{x})||\cos\theta \end{align}$$ 

$\cos\theta$의 범위는 $ -1\leq  \cos\theta \leq 1$이기 때문에 $D_{u}f(\mathbf{x})$의 범위를 다음과 같이 나타낼 수 있다.

$$ \begin{align}  -||\nabla f(\mathbf{x})||\leq D_{u}f(\mathbf{x})\leq ||\nabla f(\mathbf{x})|| \end{align} $$

 

즉 Directional Derivative $D_{u}f(\mathbf{x})$의 최대값는 $||\nabla f( \mathbf{x} )||$이다.

 

$$ \begin{align}  \cos\theta = 1 \Leftrightarrow \mathbf{u}=\frac{\nabla f(\mathbf{x})}{||\nabla f(\mathbf{x})||} \end{align} $$ 

Directional Derivative의 값이 가장 클 때는 Gradient 방향일 때이다.

(가장 감소하는 방향일 때 $\cos\theta = -1 $이다.)

 


(참고)

Gradient는 contour(등고선)의 접선(Tangent)과 항상 수직(Orthogonal)이다.

등고선은 동일한 함수값을 가지는 점들을 연결한 선이다. 따라서 등고선의 접선 방향에서는 함수값이 일정하게 유지되므로, 변화율이 0이 되어야 한다. ($\cos\theta = 0$) 이는 Gradient 벡터는 등고선의 접선과 항상 수직이며, 등고선의 법선 벡터(Normal Vector) 역할을 한다.

[그림 8] $f(x,y) = -x^2-y^2+5 $의 등고선 Plot과 Gradient Field


 

지금까지 우리는 경사 하강법(Gradient Descent)을 이해하기 위해 기울기(Gradient)와 편미분(Partial Derivative)의 개념을 살펴보았으며, 기울기가 항상 함수의 값이 가장 크게 증가하는 방향(Steepest Direction)을 가리킨다는 사실을 증명했다. 이를 바탕으로, 경사 하강법이 손실 함수(Loss Function)를 최소화하기 위해 기울기의 반대 방향 (가장 감소하는 방향$\cos\theta = -1 $) 으로 이동하는 원리를 설명할 수 있었다.

 


Git hub 링크

https://github.com/alstjrmin000/ML_tistorycode/tree/main/ML_tistory_code/gradient_tistorycode

 

참고자료

[1] https://www.postech.ac.kr/ppostechian-section/2021-%EA%B2%A8%EC%9A%B8%ED%98%B8-%EC%A7%80%EC%8B%9D%EB%8D%94%ED%95%98%EA%B8%B0-%E2%91%A0/

[2] https://angeloyeo.github.io/2019/08/25/gradient.html

[3] A Hobby After Calculus 제3판

[4] CALCULUS 2nd