지금까지는 주어진 목적함수에 대해 최소화하는 다양한 방법들을 살펴보았다. 하지만 실제로는 단순히 목적함수만 주어지지 않는다. 선형회귀에서도 랏소나 릿지와 같이 가중치들에 대한 제약식이 주어진다. 이렇게 제약식이 주어졌을 때, 어떻게 문제를 해결할 수 있는지 알아보자.
1. 예시
다음과 같은 최적화 문제 수식을 생각해보자.
minimizexf(x)subject to x∈X(1)
위 문제를 풀 때, 제약조건이 없다면 가능한 집합 X는 Rn로 실수 전체가 될 것이다. 하지만 제약 조건이 있는 문제에서는 Rn의 부분집합이 된다. 가중치에 대한 상한 혹은 하한이 있는 제약식을 생각해보자. 이는 아래 그림과 같이 일변수 문제에선 가중치의 범위를 제한하는 꼴이다.
minimizexf(x)subject to x∈[a,b](2)
만약 다변량 목적함수에 대해 위와 같은 제약식이 있다면, 이는 아래 그림과 같이 초사각형 내에서 최적해를 찾는 문제가 될 것이다.
2. 제약조건의 형태
제약조건은 보통 부분집합으로 직접 주어지지 않고, 두가지 형태로 주어진다.
등식 제약조건 h(x)=0
부등식 제약조건 g(x)≤0
이때, 이러한 제약조건은 다음처럼 표현할 수 있을 것이다.
minimizexf(x)subject to {hi(x)=0(i=1,…,l)gj(x)≤0(j=1,…,m)
이 식에서 등식 제약조건은 가능한 집합을 이용해서 표현할 수도 있다
h(x)=(x∈X)
3. 제약조건 제거
가장 간단하게 제약조건이 있을 때 어떻게 최적화할 수 있는지 생각해보자. 부등식 제약조건
예를 들어 제약식이 a≤x≤b라고 하면, x를 다음과 같이 변형하면 제약식을 지워도 제약식 아래에서 최적해를 찾을 수 있다.
x=ta,b(x^)=2b+a+2b−a(1+x^22x^)
x를 위처럼 변형하면, 아래 그림에서 보는 것처럼 x^=1에서 x=a고, x^=−1에서 x=b가 된다.
목적함수가 f(x)=x2+3x+1일 때, 위의 제약식에서 최적화하기 위해선, 결국 목적함수가 다음과 같이 변화한다.
본래 3차원 공간에서 표현되겠지만, 간단하게 표현하고자, 위에서 내려다보는 2차원으로 표현해보면 위와 같은 상황이다.
f는 등고선을 통해 색으로 표현되어 있고, h는 곡선으로 검은 선으로 표현되어 있다. 이때 h역시 3차원 공간에서 선이 아니라 사실은 수직으로 서 있는 평면이 될 것이다. 결국 우리는 제약식 h 위의 점들 중에 f 등고선 중 가장 아래에 있는 점이 최적해로 간주할 수 있다. 그때의 등고선은 h와 접하는 등고선일 것이다.
이때 중요한 점은 등고선과 그래디언트는 서로 수직이라는 점이다. 높이가 c인 등고선을 r(t) (t는 매개변수)로 나타내보면, f(r(t))=c 가 될 것이다. 등고선의 어떤 지점이든 높이가 똑같기 때문이다. 이때, 만약 지점을 t=a로 고정하고 등고선과 그래디언트를 내적해보면 다음과 같을 것이다.
∇f(r(t))r(t)=∇cr(t)=0r(t)=0
이 된다.
즉, 등고선과 그래디언트의 내적은 항상 0이 되므로 수직임을 알 수 있다.
이를 이용하면 f의 등고선과 h가 접하는 점에서 f의 그래디언트는 당연히 수직일 것이다. 또한, h가 f의 등고선에 접하고 있다면, 해당 점에서 등고선 h(x)=0의 방향의 h의 방향도 함수 값은 당연수 0일 것이다.
이를 종합하면 우리는 등식 제약조건에서 최적해를 찾을 때, f의 등고선과 h(x)=0의 등고선과 일치하는 점을 찾는 문제가 된다. 이를 라그랑주 승수법이라 한다.
자 이제 수식으로 정리해보자.
우선 다음 제약식을 만족해야 한다.
h(x)=0
이때, 그래디언트가 다음 식처럼 어떤 계수(라그랑주 승수)λ에 대해 일치하는 x를 구하면 된다.
∇f(x)=λ∇h(x)
이때 λ는 두 그래디언트가 방향은 같으나 크기가 같다는 보장이 없기 때문에 보정을 위해 들어간다.
가중치와 승수의 함수인 라그랑지안의 공식은 다음과 같아진다.
L(x,λ)=f(x)−λh(x)
결국 라그랑지안 공식의 그래디언트를 푸는 문제로 전환되는데, ∇L(x,λ)=0의 해는 두가지로 나뉘게 된다. 첫번째로, ∇xL=0는 ∇f(x)=λ∇h(x)의 조건을 제공하게 되고, ∇λL=0은 h(x)=0의 조건을 제공한다. 이렇게 구해진 해는 모두 critical point이다.
이해가 잘 가지 않으니, 전에 풀던 문제로 돌아가보자.
라그랑주 승수법으로 식을 다시 구성하면 다음과 같다.
우리는 라그랑주 공식의 그래디언트가 0인 지점을 찾는 것이므로 0으로 설정하고 해를 구하게 되면, x≈1.358,x2≈1.165,λ≈0.170인 것을 확인할 수 있다.
라그랑주 승수법은 하나의 등식 제약조건만 풀 수 있는 것이 아니라 복수의 등식 제약조건이 주어진 경우에도 사용이 가능하다. 2개의 등식 제약조건이 있다면 아래와 같이 풀 수 있을 것이다.
minimizexf(x)subject to {h1(x)=0h2(x)=0
위 식에서 두 제약조건을 하나로 합치는 것은 어려운 일이 아니다.
hnew(x)=h1(x)2+h2(x)2=0
으로 구성하면 된다. 이렇게 제약조건을 변경한다 하더라도, 이전과 동일한 점들을 만족하기 때문에 해는 변하지 않고, 기존의 라그랑주 승수법을 그대로 이용할 수 있다. 다만 그래디언트 계산시 조금 조심할 부분이 있다. 우선 위의 식으로 그래디언트를 계산하면 다음과 같을 것이다.
∇f−λ∇hnew∇f−2λ(h1∇h1+h2∇h2)=0=0
하지만 새로운 제약조건을 만드는 것은 꼭 위와 같이 이루어질 필요가 없다. 임의의 스칼라 c>0를 삽입하여 제약조건을 구성하여도 전혀 문제될 것은 없을 것이다.