지금까지의 최적화 포스팅에서는 convex optimization만 다뤘다.
그렇다면 자연스럽게 아래와 같은 의문이 들 것이다.
Q. 만약 풀고 싶은 optimization problem이 non-convex 라면, 앞서 배운 technique 들을 적용할 수 있을까?
A. YES
우리는 지금까지 배운 기법들을 통해 non-convex optimization의 optimal solution을 최대한 가깝게 구할 수 있는데, 이를 위해 필요한 개념이 weak duality 이다.
Algorithms for general convex optimization (저번 포스팅)
Non-convex optimization (이번 포스팅)
본 포스팅에서 다룰 내용은 크게 아래의 세 가지이다.
1. Weak duality 와 weak duality theorem 이 무엇인지.
2. Weak duality 가 non-convex optimization problem 을 근사시키는 데 어떤 도움을 주는지.
3. 근사한 결과가 최적값과 얼마나 비슷한지.
Weak duality theorem
Primal & dual problems
둘을 설명하기에 앞서, 일반적인 optimization 문제는 다음의 standard form으로 표현할 수 있다.
min x ∈ R d f ( x ) : f i ( x ) ≤ 0 ( i = 1 , ⋯ , m ) h i ( x ) = 0 ( i = 1 , ⋯ , p ) \begin{aligned} \min_{x \in \mathbf{R}^d} f(x) : \textrm{ } &f_i(x) \leq 0 \quad (i=1,\cdots,m) \\ &h_i(x) = 0 \quad (i=1,\cdots,p) \\ \end{aligned} x ∈ R d min f ( x ) : f i ( x ) ≤ 0 ( i = 1 , ⋯ , m ) h i ( x ) = 0 ( i = 1 , ⋯ , p )
그리고 이를 primal problem 으로 두자. 이때 ( f ( x ) , f i ( x ) , h i ( x ) ) (f(x), f_i(x), h_i(x)) ( f ( x ) , f i ( x ) , h i ( x ) ) 는 임의의 scalar 함수 ( R d → R ) (\mathbf{R}^d \rightarrow \mathbf{R}) ( R d → R ) 로, 꼭 convex나 affine 일 필요는 없다 .
다음으로 dual problem 을 정의하자. 이를 위해서는 Lagrange function과 dual function이 필요하다.
Lagrange function:
L ( x , λ , ν ) : = f ( x ) + ∑ i = 1 m λ i f i ( x ) + ∑ i = 1 p ν i h i ( x ) \mathcal{L}(x, \lambda, \nu) := f(x) + \sum_{i=1}^{m}\lambda_i f_i(x) + \sum_{i=1}^{p}\nu_i h_i(x) L ( x , λ , ν ) : = f ( x ) + ∑ i = 1 m λ i f i ( x ) + ∑ i = 1 p ν i h i ( x )
(이때, λ ∈ R m \lambda \in \mathbf{R}^m λ ∈ R m 과 ν ∈ R p \nu \in \mathbf{R}^p ν ∈ R p 는 Lagrange multiplier 이다.)
Dual function:
g ( λ , ν ) : = min x ∈ X L ( x , λ , ν ) g(\lambda,\nu) := \min\limits_{x\in \mathcal{X}} \mathcal{L}(x, \lambda, \nu) g ( λ , ν ) : = x ∈ X min L ( x , λ , ν )
(여기서 X \mathcal{X} X 는 optimization variable x x x 가 존재할 수 있는 entire space 이다.)
cf) X : = dom f ∩ dom f 1 ∩ ⋯ dom f m ∩ dom h 1 ⋯ ∩ dom h p \mathcal{X} := \textbf{dom } f \cap \textbf{dom } f_1 \cap \cdots \textbf{dom } f_m \cap \textbf{dom } h_1 \cdots \cap \textbf{dom } h_p X : = dom f ∩ dom f 1 ∩ ⋯ dom f m ∩ dom h 1 ⋯ ∩ dom h p
이들을 이용한 dual problem은 다음과 같다.
max λ , ν g ( λ , ν ) : λ ≥ 0 \max\limits_{\lambda, \nu} g(\lambda, \nu) : \lambda \geq 0 λ , ν max g ( λ , ν ) : λ ≥ 0
이제 앞서 알아본 primal, dual problem의 optimal value를 각각 p ∗ , d ∗ p^*, d^* p ∗ , d ∗ 로 두자.
Weak duality 란 이 둘의 관계가 아래와 같은 경우를 의미한다.
p ∗ ≥ d ∗ ⋯ ( ∗ ) p^* \geq d^* \quad \cdots \textrm{ } \textrm{ } (*) p ∗ ≥ d ∗ ⋯ ( ∗ )
여기서 중요한 점은 ( ∗ ) (*) ( ∗ ) 가 non-convex case를 포함한, 모든 optimization problem들에 대해 성립한다는 것이다.
⇒ \Rightarrow ⇒ 이러한 이론을 weak duality theorem 이라 한다.
Proof of the weak duality theorem (=( ∗ ) (*) ( ∗ ) )
증명에 앞서서 다음을 가정하자.
p ∗ p^* p ∗ 는 primal problem의 feasible point x ∗ x^* x ∗ 로 얻을 수 있다.
d ∗ d^* d ∗ 는 dual problem의 feasible point ( λ ∗ , ν ∗ ) (\lambda^*, \nu^*) ( λ ∗ , ν ∗ ) 로 얻을 수 있다.
이제 x ∗ x^* x ∗ 와 ( λ ∗ , ν ∗ ) (\lambda^*, \nu^*) ( λ ∗ , ν ∗ ) 가 각각 primal problem의 minimizer, dual problem의 maximizer 임을 이용하면 식을 다음과 같이 전개할 수 있다.
p ∗ = f ( x ∗ ) ≥ ( a ) f ( x ∗ ) + ∑ i = 1 m λ i ∗ f i ( x ∗ ) + ∑ i = 1 p ν i ∗ h i ( x ∗ ) ≥ min x ∈ X f ( x ) + ∑ i = 1 m λ i ∗ f i ( x ) + ∑ i = 1 p ν i ∗ h i ( x ) = ( b ) g ( λ ∗ , ν ∗ ) = d ∗ \begin{aligned} p^* &= f(x^*) \\ &\overset{(a)}{\geq} f(x^*) + \sum_{i=1}^{m} \lambda^*_i f_i(x^*) + \sum_{i=1}^{p} \nu^{*}_i h_i(x^*) \\ &\geq \min_{x\in \mathcal{X}} f(x) + \sum_{i=1}^{m} \lambda^*_i f_i(x) + \sum_{i=1}^{p} \nu^{*}_i h_i(x)\\ &\overset{(b)}{=} g(\lambda^*, \nu^{*}) \\ &= d^* \\ \end{aligned} p ∗ = f ( x ∗ ) ≥ ( a ) f ( x ∗ ) + i = 1 ∑ m λ i ∗ f i ( x ∗ ) + i = 1 ∑ p ν i ∗ h i ( x ∗ ) ≥ x ∈ X min f ( x ) + i = 1 ∑ m λ i ∗ f i ( x ) + i = 1 ∑ p ν i ∗ h i ( x ) = ( b ) g ( λ ∗ , ν ∗ ) = d ∗
이때 ( a ) (a) ( a ) 가 성립하는 이유는 feasible point ( x ∗ , λ ∗ , ν ∗ ) (x^*, \lambda^*, \nu^*) ( x ∗ , λ ∗ , ν ∗ ) 가 각각에 대한 constraint를 만족하기 때문이고 ( f i ( x ∗ ) ≤ 0 (f_i(x^*) \leq 0 ( f i ( x ∗ ) ≤ 0 , λ i ∗ ≥ 0 , h i ( x ∗ ) = 0 ) \lambda^*_i \geq 0, h_i(x^*)=0) λ i ∗ ≥ 0 , h i ( x ∗ ) = 0 ) , ( b ) (b) ( b ) 는 dual function의 정의에 의해 성립한다.
위의 증명에서 ( f ( x ) , f i ( x ) , h i ( x ) ) (f(x), f_i(x), h_i(x)) ( f ( x ) , f i ( x ) , h i ( x ) ) 의 function type에 대한 내용은 하나도 사용하지 않았음 을 기억하자.
⇒ \Rightarrow ⇒ Weak duality holds for any optimization
Why weak duality matters?
그래서 weak duality theorem이 왜 중요할까?
앞서 언급했던 것처럼 weak duality는 primal non-convex optimization problem을 근사(approximation)할 수 있게 해준다.
그런데 이를 설명하기에 앞서, dual problem의 중요한 특징 하나를 알 필요가 있다.
Convexity of the dual problem
Dual problem 은 optimization type에 상관없이 항상 convex 이다. (따라서 tractable 즉, 풀 수 있다)
이말인즉슨 dual problem은 항상 풀 수 있으므로, 우리는 original non-convex primal problem의 approximated solution d ∗ d^* d ∗ 를 얻을 수 있다는 것이다.
Proof of the convexity of the dual problem
Dual function은 다음과 같다.
g ( λ , ν ) = min x ∈ X f ( x ) + ∑ i = 1 m λ i f i ( x ) + ∑ i = 1 p ν i h i ( x ) g( \lambda, \nu) = \min\limits_{x\in \mathcal{X}} f(x) + \sum_{i=1}^{m}\lambda_i f_i(x) + \sum_{i=1}^{p}\nu_i h_i(x) g ( λ , ν ) = x ∈ X min f ( x ) + i = 1 ∑ m λ i f i ( x ) + i = 1 ∑ p ν i h i ( x )
여기서 주목해야 할 점은 두 가지다.
1) x x x 값이 특정되면 아래의 식은 ( λ , ν ) (\lambda, \nu) ( λ , ν ) 에 대한 affine.
f ( x ) + ∑ i = 1 m λ i f i ( x ) + ∑ i = 1 p ν i h i ( x ) f(x) + \sum_{i=1}^{m}\lambda_i f_i(x) + \sum_{i=1}^{p}\nu_i h_i(x) f ( x ) + i = 1 ∑ m λ i f i ( x ) + i = 1 ∑ p ν i h i ( x )
2) Affine function들의 minimum은 concave function을 이룬다.
따라서 우리는 g ( λ , ν ) g(\lambda,\nu) g ( λ , ν ) 가 ( λ , ν ) (\lambda, \nu) ( λ , ν ) 에 대해 항상 concave 함을 알 수 있다.
즉, concave function을 maximize 하는 dual problem은 결국 convex optimization 이다.
How to solve the dual problem?
(Dual) d ∗ : = max λ , ν g ( λ , ν ) : λ ≥ 0 \textrm{(Dual) } \textrm{ } d^* := \max\limits_{\lambda, \nu} g(\lambda, \nu) : \lambda \geq 0 (Dual) d ∗ : = λ , ν max g ( λ , ν ) : λ ≥ 0
Dual problem이 convex optimization 이긴 해도 inequality constraint가 존재하기 때문에, gradient descent와 같은 방식을 바로 적용할 수는 없다.
따라서 여기에는 interior point method 를 사용할 것인데, 이는 다음의 두 단계로 이루어진다.
1) Logarithmic barrier (LB)를 사용하여 문제를 unconstrained problem으로 근사.
LB ( z ) : = − μ log ( − z ) , for some μ > 0 \textrm{LB}(z) := -\mu \log(-z), \textrm{ for some } \mu >0 LB ( z ) : = − μ log ( − z ) , for some μ > 0
Fig 1. Logarithmic barrier
그런데, dual problem은 minimizing이 아닌 maximizing problem 이다. 따라서 우리는 LB에 마이너스 (-) 부호를 적용하여 z → 0 z \rightarrow 0 z → 0 에 따라 − ∞ -\infty − ∞ 의 값을 갖도록 바꿔줘야 한다.
− LB ( z ) : = + μ log ( − z ) , for some μ > 0 -\textrm{LB}(z) := + \mu \log(-z), \textrm{ for some } \mu >0 − LB ( z ) : = + μ log ( − z ) , for some μ > 0
이를 dual problem에 적용하면, 다음의 approximated unconstrained optimization 식을 얻을 수 있다.
max λ , ν g ( λ , ν ) + μ ∑ i = 1 m log ( λ i ) : λ ≥ 0 \begin{aligned} \max\limits_{\lambda, \nu} g(\lambda, \nu) \textcolor{blue}{+} \mu \sum^m_{i=1} \log(\lambda_i) : \xcancel{ \lambda \geq 0 } \end{aligned} λ , ν max g ( λ , ν ) + μ i = 1 ∑ m log ( λ i ) : λ ≥ 0
(→ log ( − λ i ) \rightarrow \log(-\lambda_i) → log ( − λ i ) 가 아니고 log ( λ i ) \log(\lambda_i) log ( λ i ) 인 이유는, standard form에 있는 inequality constraint − λ ≤ 0 -\lambda \leq 0 − λ ≤ 0 때문이다.)
2) 근사시킨 optimization 식에 gradient descent (or ascent)를 적용.
L approx ( λ , ν ) = g ( λ , ν ) + μ ∑ i = 1 m log ( λ i ) \mathcal{L}_{\textrm{approx}}(\lambda, \nu) = g(\lambda, \nu) + \mu \sum^m_{i=1} \log(\lambda_i) L approx ( λ , ν ) = g ( λ , ν ) + μ i = 1 ∑ m log ( λ i )
이때 stationary point ( λ ~ , ν ~ ) (\tilde{\lambda}, \tilde{\nu}) ( λ ~ , ν ~ ) 는 다음과 같이 얻을 수 있다.
∇ λ L approx ( λ ~ , ν ~ ) = 0 ; ∇ ν L approx ( λ ~ , ν ~ ) = 0 \nabla_{\lambda} \mathcal{L}_{\textrm{approx}}(\tilde{\lambda}, \tilde{\nu}) = 0; \textrm{ } \textrm{ } \nabla_{\nu} \mathcal{L}_{\textrm{approx}}(\tilde{\lambda}, \tilde{\nu}) = 0 ∇ λ L approx ( λ ~ , ν ~ ) = 0 ; ∇ ν L approx ( λ ~ , ν ~ ) = 0
Interior point method의 효과는 LB에 있는 parameter μ \mu μ 에 따라 달라진다.
Stationary point ( λ ~ , ν ~ ) (\tilde{\lambda}, \tilde{\nu}) ( λ ~ , ν ~ ) 를 생각해보자. 애초에 dual problem은 maximization 문제였고, interior point method는 이를 근사하여 푸는 방법이기 때문에 g ( λ ~ , ν ~ ) g(\tilde{\lambda}, \tilde{\nu}) g ( λ ~ , ν ~ ) 는 d ∗ d^* d ∗ 보다 작거나 같을 수 밖에 없다. 참고로 둘 사이의 관계는 다음과 같다. (m m m 은 original optimization에서의 inequality constraints 개수)
d ∗ − g ( λ ~ , ν ~ ) ≤ m μ d^* - g(\tilde{\lambda}, \tilde{\nu}) \leq m \mu d ∗ − g ( λ ~ , ν ~ ) ≤ m μ
즉 충분히 작은 μ \mu μ 를 이용하면, d ∗ d^* d ∗ 에 가까운 근사값 g ( λ ~ , ν ~ ) g(\tilde{\lambda}, \tilde{\nu}) g ( λ ~ , ν ~ ) 을 얻을 수 있다.
충분히 작은 μ \mu μ 값을 통해 거의 d ∗ d^* d ∗ 와 같은 값을 얻었다고 해도, p ∗ p^* p ∗ 와의 gap은 존재한다. 이를 식으로 표현하면 다음과 같다.
Gap ≈ p ∗ − d ∗ ( ∵ d ∗ is approximated ) \textrm{Gap} \approx p^* - d^* \textrm{ } \textrm{ } (\because d^* \textrm{ is approximated}) Gap ≈ p ∗ − d ∗ ( ∵ d ∗ is approximated )
여기서 gap 이라는 표현이 나오는데, 이는 결국 dual problem에 의해 생긴 것이므로 이를 duality gap 이라고도 한다.
참고로, 이렇게 weak duality를 기반으로 한 approximation 기법을 부르는 이름이 있다 ⇒ \Rightarrow ⇒ Lagrange relaxation
이렇게 부르는 이유는, 원래의 primal problem은 minimization problem 이지만 d ∗ ≤ p ∗ d^* \leq p^* d ∗ ≤ p ∗ 의 관계가 성립한다. 이때 이를 dual problem이 primal problem에 비해 더 relaxed 한 constraints를 가지고 있다고 해석할 수 있고, 식 전개 과정에서 Lagrange function 을 사용하기 때문에 위와 같은 용어를 사용한다.
How good is Lagrange relaxation?
이전 강의에서 배웠던 relaxation 기법들과 Lagrange relaxation을 비교하면 다음과 같다. (포스팅에서 다루지 않은 내용들도 포함되어 있기 때문에, 가볍게 참고만 하면 될 것 같다.)
vs LP relaxation
(Boolean problem 기준)
Lagrange relaxation은 LP relaxation과 같은 performance를 보인다.
vs SDP relaxation
(일반적으로)
Lagrange relaxation은 최소한 SDP relaxation 만큼은 좋다.
(하지만, MAXCUT problem 기준)
Lagrange relaxation은 SDP relaxation과 같은 performance를 보인다.
Reference
카이스트 서창호 교수님 강의 - EE424: 최적화개론 lecture 18.