[최적화] Strong duality and KKT conditions

이우준·2021년 11월 2일
1

Optimization

목록 보기
5/6
post-custom-banner

Recap

지금까지 우리는 convex optimization problem을 위한 여러 방법들에 대해 공부했다: (이전 포스팅에서 전부 다루지는 못했지만) LP, LS, QP, SOCP, SDP.

하지만 이 외에도 convex 문제를 다루기 위해 사용되는, 유명한 방법이 하나 더 존재한다: Cone program (CP)

그러나 CP를 본 강의에서 다루기에는 너무 복잡하고, 이해에 필요한 것에 비해 얻는 것이 적어 이러한 방법론은 더 이상 다루지 않을 것이다.

대신 본 포스팅에서는 일반적인 QP와 SOCP, SDP에 대해 어떠한 algorithm을 적용할 수 있을지 strong dualityKKT conditions 을 기반으로 알아보자. (강의 자료의 표현을 빌리면, 이 두 가지 개념은 algorithm의 설계에 insights를 제공한다.)

참고로, 앞으로의 main contents 를 정리하면 다음과 같다.

  1. Algorithms for general convex optimization (이번 포스팅)

  2. Non-convex optimization

Strong duality

Primal & dual problems

Strong duality는 primal problem과 dual problem을 기반으로 하기 때문에, 먼저 이 둘이 뭔지를 알아봐야 한다.

이에 앞서 convex optimization의 standard form을 생각해보자.

minf(x): fi(x)0(i=1,,m)Axb=0\begin{aligned} \min f(x) : \textrm{ } &f_i(x) \leq 0 \quad (i=1,\cdots,m) \\ &Ax-b = 0 \\ \end{aligned}

이때 f(x)f(x)fi(x)f_i(x) 들은 모두 convex function 이고, equality constraint에서 ARp×dA \in \mathbf{R}^{p \times d} 이다. 우리는 그 중 p<dp<d 인 경우에 관심이 있고, rank(A)=p\textrm{rank}(A) = p 라고 가정하자. (더 정확히, 우리는 항상 AArank\textrm{rank}pp인 full-rank 행렬을 만들 수 있으니 그렇다고 가정할 수 있다.)

Primal problem 이란 우리가 시작하는 problem을 지칭한다. 즉, 위의 식 자체가 곧 primal problem 이다.

다음으로 dual problem 을 알기 위해서는 두 가지 function에 대해 알아야 한다: 하나는 Lagrange function 이고, 다른 하나는 dual function 이다.

지금까지의 내용을 정리하면 다음과 같다.
Primal problem:
A problem that we start with
Dual problem:
Another problem which is closely related to the primal problem

Lagrange function

Lagrange function은 L(x,λ,ν)\mathcal{L}(x,\lambda,\nu) 와 같이 표현된다. 식은 총 세 가지 arguments로 표현되는데, 여기서 xx는 interested optimization variable이고 λ\lambda는 size mm, ν\nu는 size pp의 real-valued vector 이다: λ:=[λ1,,λm]\lambda := [\lambda_1, \cdots, \lambda_m]^{\intercal}, ν:=[ν1,,νp]\nu := [\nu_1, \cdots, \nu_p]^{\intercal}

참고로 λ\lambdaν\nu 의 size는 각각 inequality, equality constraint의 개수와 같다.

이들을 종합한 Lagrange function의 꼴은 다음과 같다.

L(x,λ,ν):=f(x)+i=1mλifi(x)+ν(Axb)\mathcal{L}(x,\lambda,\nu) := f(x) + \sum_{i=1}^{m} \lambda_i f_i(x) + \nu^{\intercal} (Ax - b)

이때, 각 (ii 번째) constraint에 곱해져 있는 상수 λi\lambda_iνi\nu_iLagrange multiplier 라고 한다. (νi\nu_i가 안 보이게 equality constraint와 관련된 식을 왜 vector form으로 쓰는지 궁금할 수 있는데, 그냥 통상적으로 vector form으로 잘 정리되니 그렇다는 것 같다.)

Dual function

Dual function g(λ,ν)g(\lambda, \nu) 는 다음과 같이 정의된다.

g(λ,ν):=minxXL(x,λ,ν)=minxXf(x)+i=1mλifi(x)+ν(Axb)\begin{aligned} g(\lambda,\nu) &:= \min_{x\in \textcolor{blue}{\mathcal{X}}} \mathcal{L}(x,\lambda,\nu) \\ &= \min_{x\in \textcolor{blue}{\mathcal{X}}} f(x) + \sum_{i=1}^{m} \lambda_i f_i(x) + \nu^{\intercal} (Ax - b) \end{aligned}

여기서 주목할 점은 두 가지 이다.

  1. xxentire space X\mathcal{X}에 속해 있다. Entire space는 곧 (xx가 존재할 수 있는) valid space 이다. 이는 정의역 (혹은 domain) 과 같고, problem에서의 optimization variable xx를 생각해보면 X:=domfdomf1domfm\mathcal{X} := \textrm{dom} f \cap \textrm{dom} f_1 \cap \cdots \cap \textrm{dom} f_m 으로 정의할 수 있다.
    \Rightarrow Primal problem에서 inequality, equality constraint들에 의해 결정되었던 feasible set 과는 다르다. Search space가 조금 더 확장됐다고 보면 된다.
  1. 일반적으로 L(x,λ,ν)\mathcal{L}(x,\lambda,\nu)xx 에 대한 convex가 아닐 수 있다. 만약 모든 ii 에 대해 λi0\lambda_i \geq 0 이면, L(x,λ,ν)\mathcal{L}(x,\lambda,\nu) 는 단순히 convex function과 affine function의 합이므로 이때는 convex function이 맞다. 하지만 λi\lambda_i 에 대한 조건은 없으므로, 이는 negative 일수도 있고 이 경우 g(λ,ν)g(\lambda,\nu)-\infty가 될 수 있다.
    (e.g., λ1=1\lambda_1 = -1, f1(x)=ex (convex)f_1(x) = e^x \textrm{ (convex)}, XR\mathcal{X} \in \mathbf{R}. 이때, x=+g(λ,ν)=x=+\infty \rightarrow g(\lambda,\nu) = -\infty)

다시 본론으로 돌아가 dual problem 을 마저 정의해보자.

Dual function은 f(x)+i=1mλifi(x)+ν(Axb)f(x) + \sum_{i=1}^{m} \lambda_i f_i(x) + \nu^{\intercal} (Ax - b) 에 대한 minimization의 solution 이다. 이때 특정 xx 를 고정하여 생각해보자. 그렇다면 앞서 언급한 식은 λ\lambdaν\nu 에 대한 함수이다. 더 구체적으로 xx가 고정되었으니 그에 대한 term은 상수로 볼 수 있고, 이는 λ\lambdaν\nu 에 대한 affine function 이다.
\Rightarrow Affine in (λ,ν)(\lambda,\nu)

여기서 알아낼 수 있는 중요한 point가 있다. 다음의 질문을 생각해보자. 두 affine function의 minimum은 convex 일까, concave 일까? 답은 concave 이다.

즉, min(L(x1,λ,ν),L(x2,λ,ν))\min(\mathcal{L}({x_1, \lambda, \nu}), \mathcal{L}({x_2, \lambda, \nu})) 은 concave 이다. (두 직선의 minimum을 생각해보면, concave 형태임을 알 수 있다.)

그런데 g(λ,ν)g(\lambda, \nu)는 두 개의 minimum이 아닌 무수히 많은 모든 xx에 대한 minimum 이다. 여기서 우리는 g(λ,ν)g(\lambda, \nu) 가 concave 라는 것을 알 수 있다. \Rightarrow Concave in (λ,ν)(\lambda, \nu)

Dual problem은 그러한 concave (오목) 함수 g(λ,ν)g(\lambda, \nu)에서 maximum을 찾는 것으로, 식은 다음과 같다.

(Dual problem):  maxλ,νg(λ,ν):λ0\textrm{(Dual problem): }\textrm{ } \max_{\lambda, \nu} g(\lambda, \nu): \lambda \geq 0

주목할 점은 ν\nu가 아닌 λ\lambda 에 대한 constraint 만 존재한다는 것이다. 이유는 추후에 다뤄보도록 하고, 이를 식에 반영하여 아래와 같이 표현할 수 있다.

maxλ,νminxXf(x)+i=1mλifi(x)+ν(Axb):λ0\max_{\lambda, \nu} \min_{x \in \mathcal{X}} f(x) + \sum_{i=1}^{m} \lambda_i f_i (x) + \nu^{\intercal} (Ax-b) : \lambda \geq 0

Strong duality

Strong duality는 primal problem과 dual problem의 optimal solution 간 관계이다. 각각을 pp^*dd^* 로 두자.

(Primal):  p:=minf(x): fi(x)0, i=1,,m, Axb=0(Dual):  d:=maxλ,νminxXf(x)+i=1mλifi(x)+ν(Axb): λ>=0\begin{aligned} \textrm{(Primal): }\textrm{ } p^* &:= \min f(x): \textrm{ } f_i(x) \leq 0, \textrm{ } i=1,\cdots,m, \textrm{ } Ax-b = 0 \\ \textrm{(Dual): }\textrm{ } d^* &:= \max_{\lambda, \nu} \min_{x \in \mathcal{X}} f(x) + \sum_{i=1}^m \lambda_i f_i(x) + \nu^{\intercal} (Ax-b): \textrm{ } \lambda >= 0 \end{aligned}

Strong duality는 pp^*dd^*에 대해 다음의 관계식이 성립하는 경우이다.

(Strong duality):  p=d\textbf{(Strong duality): }\textrm{ } p^* = d^*

당연히, 일반적으로 둘은 다르다. 하지만 흥미롭게도 mild condition 하의 convex optimization에 대해서는 strong duality가 성립하고, 우리는 이를 strong duality theorem 이라 한다.

Mild condition? It says that,
There  x\exists \textrm{ } x such that strict inequality fi(x)<0f_i(x) < 0 holds for all ii subject to Ax=bAx = b.

그나저나 strong duality theorem이 algorithm 설계에 있어서 왜 중요한 것일까?

이는 strong duality 가 만족할 때 필요충분 조건으로 얻을 수 있는 성질이, algorithm 적 insight를 제공할 수 있기 때문이다. 이번 포스팅에서는 그 필요충분 조건이 무엇인지 까지만 다뤄볼 예정이다.

KKT conditions

이전에 equality-constrained LS problem의 closed form solution을 다루면서 KKT equation에 대해 다룬적이 있다. KKT condition은 그와 관련 있는데, 보다 자세히 설명하면 (convex로 제한되지 않은) 일반적인 optimization problem의 optimality에 대한 필요 조건이다.

그런데 KKT conditions에 대한 자세한 공식들을 다루기에 앞서, 왜 strong duality와 KKT conditions가 algorithm 적 insight를 주는지에 대해 알아보자.

Algorithmic insights

KKT conditions&Strong duality\textbf{KKT conditions} \quad \& \quad \textbf{Strong duality}

Convex optimization에 대해 다음의 세 가지 성질이 성립한다.

  • Strong duality holds: p=dp^* = d^*
  • KKT conditions \Leftrightarrow p=dp^* = d^* (위에서 언급한 필요충분 조건 이다.)
  • KKT conditions를 보장하는 natural algorithm이 존재한다.

따라서, general convex optimization에 대한 algorithm을 만들기 위해서는 KKT condition을 만족하는 것으로 충분하다.

Algorithm에 대한 자세한 내용은 다음에 보기로 하고, 이번 포스팅에서는 위의 성질들 중 두 번째에 집중해 볼 것이다.

KKT conditionsp=d\textrm{KKT conditions}\Leftrightarrow p^* = d^*

(\Leftarrow)

증명에 앞서서 다음을 가정하자.

  • Strong duality 만족, p=dp^* = d^*
  • xx^*primal problemminimizer 이다. 즉, xx^*pp^*를 얻을 수 있다.
  • (λ,ν)(\lambda^*, \nu^*)dual problemmaximizer 이다. 똑같이, (λ,ν)(\lambda^*, \nu^*)dd^*를 얻을 수 있다.

즉 가정으로부터 우리는 f(x)=p=d=g(λ,ν)f(x^*) = p^* = d^* = g(\lambda^*, \nu^*) 임을 알 수 있으므로, 다음을 유도할 수 있다.

f(x)=g(λ,ν)=(a)minxXf(x)+i=1mλifi(x)+ν(Axb)(b)f(x)+i=1mλifi(x)+ν(Axb)(c)f(x)\begin{aligned} f(x^*) &= g(\lambda^*,\nu^*) \\ &\overset{(a)}{=} \min_{x\in \mathcal{X}} f(x) + \sum_{i=1}^{m} \lambda_i^* f_i(x) + \nu^{*\intercal} (Ax - b) \\ &\overset{(b)}{\leq} f(x^*) + \sum_{i=1}^{m} \lambda_i^* f_i(x^*) + \nu^{*\intercal} (Ax^* - b)\\ &\overset{(c)}{\leq} f(x^*) \\ \end{aligned}

여기서 (a)(a)는 dual function과 Lagrange function의 정의, (b)(b)xx^*에 대한 가정으로 인해 성립한다. (xx^*는 feasible point 중에서 선택된 primal problem의 minimizer 이므로, entire space에서의 Lagrange function에 대해서는 (b)(b)가 성립하는 것이다.)

마지막으로 (c)(c)xx^*가 feasible point 임을 가정했기 때문에, constraint 들을 고려하면 성립함을 알 수 있다.
(λi0(\because \lambda^*_i \geq 0, fi(x)0  if_i(x^*) \leq 0 \textrm{ } \textrm{ } \forall i, Axb=0)Ax^* - b = 0)

참고로 λ\lambda^*도 feasible 한데, 이것이 dual problem에서 λ\lambda에 대한 constraint가 존재하던 이유이다.

다시 본론으로 돌아가 전체 식을 보면, 왼쪽의 첫 번째 항과 오른쪽 마지막 항은 f(x)f(x^*)로 같다. 즉, 이는 두 부등식 (b)(b)(c)(c)가 tight 하다는 것을 의미하는데, 그 중에서 (b)(b)에 주목하면 우리는 xx^*가 실제로 xx에 대해 L(x,λ,ν)\mathcal{L}(x, \lambda^*, \nu^*)를 최소화 한다는 것을 알 수 있다.

한편 λ\lambda가 non-negative 하다는 전제 조건만 있다면, L\mathcal{L}xx에 대한 convex 이고, unconstrained 하므로 아래의 식이 성립한다.

xL(x,λ,ν)=0\nabla_x \mathcal{L}(x^*, \lambda^*, \nu^*) = 0

이번에는 (c)(c)에 주목해보자. 여기서는 (어차피 0 값인) equality constraint를 생각하지 않아도 되니, 모든 ii 에 대해 λifi(x)=0\lambda_i^* f_i(x^*) = 0 임을 알 수 있다. 해당 condition에는 흥미로운 점이 있는데, 만약 λi>0\lambda_i^* > 0 라면 fi(x)=0f_i(x^*) = 0 이다. 반대로 fi(x)<0f_i(x^*) < 0 이면 λi=0\lambda_i^* = 0 이다.

fi(x)<0λi=0λi>0fi(x)=0\begin{aligned} f_i(x^*) < 0 &\Rightarrow \lambda^*_i = 0 \\ \lambda^*_i > 0 &\Rightarrow f_i(x^*) = 0 \end{aligned}

정리하면 둘 중 하나가 부등식을 strict 하게 만족하면 다른 하나는 0 값을 가질 수 밖에 없는데, 이러한 특징으로 인해 λifi(x)=0\lambda_i^* f_i(x^*) = 0complementary slackness 라고 부른다.

Why?
Slack은 곧 gap을 의미하는데, 이 gap은 (c)(c)를 의미한다.
Complementary 라는 말은 앞서 말한 것처럼 λi\lambda_i^*fi(x)f_i(x^*) 가 서로의 조건을 상대적으로 결정해 줄 수 있다는 특징에서 나왔다.

정리해보자. 우리는 p=dp^* = d^*라는 가정으로부터 아래의 관계식을 유도할 수 있었다.

xL(x,λ,ν)=0λifi(x)=0i\begin{aligned} \nabla_x \mathcal{L}(x^*, \lambda^*, \nu^*) &= 0 \\ \lambda^*_i f_i(x^*) &= 0 \quad \forall i \\ \end{aligned}

이 외에도 기존의 primal 및 dual problems에 있는 constraints를 합쳐 보면, 최종적으로 아래의 condition을 얻을 수 있는데 이게 KKT condition 이다.

KKT conditions:

xL(x,λ,ν)=0λifi(x)=0ifi(x)0iAxb=0λ0\begin{aligned} \nabla_x \mathcal{L}(x^*, \lambda^*, \nu^*) &= 0 \\ \lambda^*_i f_i(x^*) &= 0 \quad \forall i \\ f_i(x^*) &\leq 0 \quad \forall i\\ Ax^*-b &= 0 \\ \lambda^* &\geq 0 \end{aligned}

따라서, KKT condition 은 strong duality를 만족하기 위한 필요 조건 이다.

(\Rightarrow)

KKT conditions p=f(x)=g(λ,ν)=d\textrm{KKT conditions } \Rightarrow p^* =f(x^*) = g(\lambda^*, \nu^*) = d^*

이번에는 다음을 가정하자.

  • (x,λ,ν)(x^*, \lambda^*, \nu^*) 가 KKT condition을 만족한다. (=respects the KKT condition)

우리는 여기서 pdp^* \leq d^*pdp^* \geq d^* 임을 모두 보일 것이다.

먼저 pdp^* \leq d^* 이다. 이는 곧 f(x)=g(λ,ν)f(x^*) = g(\lambda^*, \nu^*) 임을 보이는 것과 같다. 왜냐하면 pf(x)p^* \leq f(x^*) 이고, g(λ,ν)dg(\lambda^*, \nu^*) \leq d^* 이기 때문이다.

KKT conditions를 이용하면, 우리는 λifi(x)=0\lambda^*_i f_i(x^*) = 0Axb=0Ax^*-b = 0 임을 알기 때문에 f(x)f(x^*)를 다음과 같이 표현할 수 있다.

f(x)=f(x)+i=1mλifi(x)+ν(Axb)f(x^*) = f(x^*) + \sum_{i=1}^{m} \lambda_i^* f_i(x^*) + \nu^{* \intercal} (Ax^*-b)

그렇다면 f(x)f(x^*)L(x,λ,ν)\mathcal{L}(x^*, \lambda^*, \nu^*) 와 같다. 다음으로는 Lagrange function과 dual function의 관계를 보자.

g(λ,ν):=minxXL(x,λ,ν)=minxXf(x)+i=1mλifi(x)+ν(Axb)=(a)f(x)+i=1mλifi(x)+ν(Axb)=L(x,λ,ν)\begin{aligned} g(\lambda^*, \nu^*) &:= \min_{x\in \mathcal{X}} \mathcal{L}(x, \lambda^*, \nu^*) \\ &= \min_{x\in \mathcal{X}} f(x) + \sum_{i=1}^{m} \lambda_i^* f_i(x) + \nu^{*\intercal} (Ax - b) \\ &\overset{(a)}{=} f(x^*) + \sum_{i=1}^{m} \lambda_i^* f_i(x^*) + \nu^{*\intercal} (Ax^* - b)\\ &= \mathcal{L}(x^*, \lambda^*, \nu^*) \\ \end{aligned}

여기서 (a)(a) 가 성립하는 이유는 KKT condition에 의해 xx^*가 minimizer 이기 때문이다.

따라서 f(x)=g(λ,ν)f(x^*) = g(\lambda^*, \nu^*) 임을 알 수 있다.

이제 pdp^* \geq d^* 임을 보이겠다.

시작에 앞서 pp^* 값을 얻게 하는 primal optimal point를 x~\tilde{x} 라 두자. 또한 dual optimal point (λ~,ν~)(\tilde{\lambda},\tilde{\nu})dd^*를 얻을 수 있다 가정하자. (이러한 가정을 하는 이유는 xx^*, λ\lambda^*, ν\nu^*가 primal 및 dual problem에 대한 optimal point라고 할 수 없기 때문이다; 저들은 그저 KKT condition을 만족하고 있을 뿐이다.)

p=f(x~)(a)f(x~)+i=1mλ~ifi(x~)+ν~(Ax~b)(=L(x~,λ~,ν~))minxXf(x)+i=1mλ~ifi(x)+ν~(Axb)=(b)g(λ~,ν~)=d\begin{aligned} p^* &= f(\tilde{x}) \\ &\overset{(a)}{\geq} f(\tilde{x}) + \sum_{i=1}^{m} \tilde{\lambda}_i f_i(\tilde{x}) + \tilde{\nu}^{\intercal} (A\tilde{x} - b) \quad (=\mathcal{L}(\tilde{x}, \tilde{\lambda}, \tilde{\nu}))\\ &\geq \min_{x\in \mathcal{X}} f(x) + \sum_{i=1}^{m} \tilde{\lambda}_i f_i(x) + \tilde{\nu}^{\intercal} (Ax - b)\\ &\overset{(b)}{=} g(\tilde{\lambda}, \tilde{\nu}) \\ &= d^* \\ \end{aligned}

여기서 (a)(a)가 성립하는 이유는 (λ~,ν~)(\tilde{\lambda},\tilde{\nu})가 feasible point 라 λ~ifi(x~)0\tilde{\lambda}_i f_i(\tilde{x}) \leq 0, Ax~b=0A\tilde{x} - b=0 이기 때문이다. (b)(b)는 dual function의 정의에 의해 성립한다.

참고로 pdp^* \geq d^* 인 관계를 weak duality 라 한다. 이는 non-convex optimization을 포함한 모든 optimization problem 에서 성립하는데, 자세한건 (포스팅 할지는 모르겠으나) 이후의 강의에서 알아보자.

Reference

카이스트 서창호 교수님 강의 - EE424: 최적화개론 lecture 14.

post-custom-banner

1개의 댓글

comment-user-thumbnail
2023년 12월 1일

감사합니다 :) dual function pointwise infimum of affine function이라서 concave한 애를 convex하게 만들어주는게 dual feasiblity의 역할이었네요 ..!

답글 달기