안녕하세요. 오태호입니다.
이 글에서는 Optimization 기법중에 하나인 LBFGS Method(Limited Memory Broyden–Fletcher–Goldfarb–Shanno Method)의 수식을 다음과 같이 4개의 Part에 걸쳐서 차근차근 유도하여 LBFGS Method의 구조를 조금 깊게 살펴보도록 하겠습니다.
•
Derivation of LBFGS Part 1 - Newton’s Method
pytorch.optim 패키지에 보면 SGD, Adadelta, Adagrad, RMSprop, Adam와 같은 Optimizer는 여러 곳에서 자세한 설명을 찾아볼 수 있습니다. 하지만 LBFGS Method의 경우에는 여러 곳에서 설명을 찾아 봐도 자세한 설명을 찾아보기가 쉽지 않아서 정리해 보았습니다.
이 글을 이해하기 위해서는 Calculus, Linear Algebra, Machine Learning에 대한 기초지식이 필요합니다.
이 글에서 굵은 글자체 대문자는 Matrix를 의미하고, 굵은 소문자는 Vector를 의미하며, 일반 소문자는 Scalar를 의미합니다. Vector는 특별히 언급이 없으면 Column Vector를 의미합니다.
Taylor Series
Taylor Series를 이용하여 가 의 근처의 값을 가질 때 를 근사해서 표현하면 다음과 같습니다.
마찬가지로 Taylor Series를 이용하여 3차원 공간에서 가 의 근처의 값을 가지고 가 의 근처의 값을 가질 때, 를 근사해서 표현하면 다음과 같습니다.
, , , Gradient , Hessian 을 다음과 같이 정의합니다.
위의 를 Vector를 사용하여 간결하게 다시 정리하면 다음과 같습니다.
참고로 이 식은 가 여기에서 다룬 2차원 Vector가 아니라 더 높은 고차원의 Vector인 경우에도 성립합니다.
Vector Differentiation
Vector 를 다음과 같이 정의합니다.
Scalar 를 Vector 로 미분하는 경우 두 가지 방법으로 할 수 있습니다.
첫 번째 방법은 다음과 같은 Numerator Layout입니다.
두 번째 방법은 다음과 같은 Denominator Layout입니다.
학계에서 사용되는 것을 살펴보면 표준화된 방법 없이 두 가지 방법 모두가 많이 사용되는 것을 볼 수 있습니다. 어떤 경우에는 두 방법을 섞어가며 사용하는 경우도 있습니다. Machine Learning 분야에서는 Denominator Layout을 사용하는 경우가 더 많은 편입니다. 이 글에서는 특별히 언급이 없으면 Denominator Layout을 사용하도록 하겠습니다.
다음은 몇 가지 유용한 Vector 미분에 관한 정리입니다.
간략하게 다시 정리하면 다음과 같습니다.
Newton’s Method
를 최소로 하는 를 찾으려고 합니다. 그런 를 찾기 위해 을 만족하는 를 찾는 것을 시도합니다. 처음에는 으로 하는 를 로 추정하고, 보다 더 개선된 를 찾습니다. 의 형태는 Taylor Series를 사용하여 다음과 같이 근사한 형태를 사용합니다.
을 만족하는 는 Vector Differentiation을 참고하여 다음과 같이 구합니다. 가 Continuous하다면 는 Symmetric한 성질도 이용합니다. (여기서 는 Continuous하다고 가정합니다.)
이렇게 찾은 를 라고 하고 위의 방법을 다시 수행하여 보다 더 개선된 를 찾아서 이것을 라고 합니다. 이런 식으로 반복하여 를 최소로 하는 를 찾습니다. 이렇게 를 최소로 하는 를 찾는 방법을 Newton’s Method라고 합니다.
정리하면 다음과 같이 조금씩 개선된 를 하나씩 구합니다. 여기서 는 Newton Direction이라고 합니다. 가 Newton Direction 방향으로 움직이면서 를 최소로 하는 값을 찾습니다.
이 Newton’s Method를 그대로 사용하면 가 Diverge하면서 제대로 를 구하지 못할 수도 있기 때문에 다음과 같이 Newton’s Method를 살짝 수정한 Relaxed Newton’s Method를 사용하는 경우가 많이 있습니다. 여기서 는 Step Size라고 합니다. 가 작은 값을 가지면 가 Diverge하지 않도록 돕는 역할을 합니다.
Gradient Descent와 비교해 보도록 하겠습니다. Gradient Descent는 다음과 같이 를 구합니다.
Gradient Descent는 의 이동방향을 결정할 때 Gradient만을 활용하지만 Newton’s Method에서는 의 이동방향을 결정할 때 Hessian 도 함께 활용하여 좀 더 정확한 방향으로 를 이동시키는 것을 확인할 수 있습니다.
Wolfe Conditions
Newton’s Method에서 Step Size 를 정할 때 뭔가 기준을 가지고 정해야 하는데 이때 많이 사용하는 기준이 Wolfe Conditions입니다. Wolfe Conditions는 Armijo Rule과 Curvature Condition로 구성되어 있습니다.
Armijo Rule은 다음과 같습니다.
여기서 는 Newton Direction입니다. 은 Hyperparameter로 의 범위의 값에서 적당히 설정하는데 보통 0에 가까운 값으로 설정합니다. 직관적으로 설명하면, x를 Newton Direction으로 만큼 이동시켰을 때 실제 의 값이 Newton’s Method로 계산한 의 근사치 보다 충분히 작게 되도록 를 정해야 된다는 뜻입니다. 얼마나 충분히 작아야 하는지는 설정한 의 값에 의해 결정됩니다. 의 값이 작아지면 허용되는 의 범위가 넓어지면서 가 더 큰 값을 가질 수 있게 됩니다. 은 가 가질 수 있는 최대값을 결정합니다.
Curvature Condition은 다음과 같습니다.
여기서 는 Newton Direction입니다. 은 Hyperparameter로 의 범위의 값에서 적당히 설정하는데 보통 1에 가까운 값으로 설정합니다. 직관적으로 설명하면, 의 Gradient보다 를 Newton Direction으로 만큼 이동시켰을 때의 의 Gradient가 충분히 크도록(Negative이던 것이 0에 가까워 지도록) 를 정해야 된다는 뜻입니다. 얼마나 충분히 커야 하는지는 설정한 의 값에 의해 결정됩니다. 의 값이 커지면 의 범위가 넓어지면서 가 더 작은 값을 가질 수 있게 됩니다. 은 가 가질 수 있는 최소값을 결정합니다.
Wolfe Conditions에서 위에서 언급한 Curvature Condition대신에 다음과 같은 Curvature Condition을 사용하는 경우도 있습니다.
이와 같은 Curvature Condition을 사용하는 경우에는 Strong Wolfe Conditions라고 합니다.
Conclusion
이 글에서는 LBFGS Method를 살펴보기 위한 첫단계로 Newton’s Method에 대해 살펴보았습니다.
Newton’s Method는 Gradient Descent에 비해서 방향을 잘 결정한다는 장점이 있지만 큰 단점이 하나 있습니다. Newton Direction을 계산하기 위해서는 Inverse Hessian 을 계산해야 하는데 이것은 의 차원이 높아지면 계산이 매우 힘들어집니다.
Derivation of LBFGS Part 2 - SR1 Method에서는 가 고차원일 경우에 어떻게 Inverse Hessian 를 계산해서 Newton’s Method를 사용할 수 있는지 알아보도록 하겠습니다.
작성자
관련된 글 더 보기