본문으로 바로가기



Optimization with R - 4. 다변수 함수 최적화, 뉴턴법(Newton’s method) 적용 예제

category Statistics/Optimization 2017.07.15 21:01
Optimization with R - 4. 다변수 함수 최적화, 뉴턴법(Newton’s method) 적용 예제

뉴턴법 일반화

지난 포스팅에서 우리는 최적화 기법으로서의 뉴턴 방법은 함수를 2차 근사시키는 것이 핵심 아이디어라는 것을 알아보았다. 이번 시간에는 이제까지 다루었던 내용을 입력 변수가 여러개인 다변수 함수에 어떻게 적용하는지에 대하여 알아보자.

2변수 함수의 예

최적화 기법에서의 뉴턴 스텝은 주어진 현재 위치, \(x_{now}\),에서 다음 위치, \(x_{next}\),로 갈 때 현재 위치의 1차 미분계수와 2차 미분계수를 이용했다.

\[ \tag{1} x_{next}=x_{now}-\frac{f'\left(x_{now}\right)}{f''\left(x_{now}\right)} \]

위의 식을 일반적인 다변수 함수, \(f\left(x_{1},...x_{k}\right)\in\mathbb{R}\),에 적용할 수 있는 꼴로 바꾼다면 다음과 같다.

\[ \tag{2} \mathbf {x} _{next}=\mathbf {x}_{now}-[\mathbf {H}(\mathbf {x} _{now})]^{-1}\nabla f(\mathbf {x} _{now}) \]

\((2)\)에서 \(∇f(x)\)gradient라고 부르는 1차 도함수를 일반화 시킨 개념이고, \(H(x)=∇^2f(x)\)Hessian matrix라고 부르며 2차 도함수의 일반화 시킨 개념이다. 만약 역행렬을 나누기의 일반화 개념이라고 생각한다면, 위의 식 (2)는 식 (1)을 일반화 시킨 형태가 된다.

Example

다변수 함수를 이해하기 위한 가장 효과적인 방법은 우리가 상상할 수 있는 가장 간단한 예를 가지고 놀아보는 것이다. 다음과 같은 함수를 생각해보자.

\[ f\left(x_{1},x_{2}\right)=2x_{1}^{2}+3x_{2}^{2}+2x_{1}x_{2}-2x_{1}-1x_{2}+2 \]

언뜻 복잡해 보이지만, 위의 함수는 다음과 같이 예쁜 행렬을 이용한 형태로 다시 나타낼 수 있다. 이러한 형태로 나타내는 이유는 미분 계산이 훨씬 간편해지기 때문이다.

\[ f\left(\mathbf{x}\right) =\frac{1}{2}\mathbf{x}^{T}\left(\begin{array}{cc} 4 & 2\\ 2 & 6 \end{array}\right)\mathbf{x}-\left(\begin{array}{c} 2\\ 1 \end{array}\right)^{T}\mathbf{x}+2 \]

위의 식에서 벡터 \(\mathbf{x}\)\[ \mathbf{x}=\left(\begin{array}{c} x_{1}\\ x_{2} \end{array}\right) \] 를 의미한다. 먼저 함수가 어떻게 생겼는지 한번 그려보도록 하자.(마우스와 휠을 사용하여 움직일 수 있습니다.)