optimization은 decision science에서 중요한 툴로 사용된다.

예를 들어, 라이프 가드와 바다에 빠진 사람이 존재한다.
이때 A, B, C 루트 중 하나를 선택하여 요 구조자를 구할 것인지 결정 해야하는 상황에서
시간 최소화, 거리 최소화, 요 구조자 생존률 최대화 등 최적화 도메인을 설정하여 최적의 변수 찾는 과정이다.
이때, 중간에 돌이 있다든지, 구멍이 있다든지 제약조건이 존재할 수도 있고, 이러한 제약 조건 하에 최적의 값을 찾아나간다.
Optimization에는 3가지 key components가 있다.
최적화의 절차
mathematical expression

dicision variable x가 objective function f(x)로 표현되었다고 할때, 최소로 하는 x를 찾는 문제
constraint가 있을 수 있기 때문에 subject to g_i(x)로 나타낸다. g_i(x)=i번째 제약조건을 나타낸다.
constraints g_i(x)를 만족하는 x의 부분집합을 feasible region이라고 한다.
x의 값이 유한하지 않을 수 있기 때문에 일일히 evaluation 해보는 것은 불가능에 가깝다.
optimal하다?ˀ 이러한 feasible region 중에서 가장 최소로 하는 값(minimization 문제라면)

maxmization을 할경우 objective function에 마이너를 붙여 convert한다.
constraint g_i(x) 또한 동일하다.
등호인 constraint가 있을 경우 constraint를 위와 같이 표현할 수 있기때문에, minimal한 form은 상단의 것으로 약속한다.

여기서 f’(x)=0 인 점에서 local minimum을 찾을 수 있다.
for convex(볼록함수) problems, guaranteed global minimum
decision variable이 n개 경우로 확장해보자

이경우 column vector로 위와 같이 표현한다.

각각의 variable에 대해 편미분을 진행 했을 때(gradient),

인 점이 optimal point가 된다.
예제를 풀어보자.

이 문제에서의 variable의 차원은 2이고, 각각의 variable에 대해 편미분을 진행하자.

gradient가 0이 되는(0벡터가 되는) 값을 구하자.

x는 위와 같은 결과가 나오고 이 값은 곧 optimal point x(x*)가 된다.
위와 같이 direct한 방법 말고도, iterative한 방법으로도 solution을 찾을 수 있다.

idea?
미분을 했을때 기하학적인 의미를 살펴보면 f’(x)은 가장 가파른 방향으로의 direction을 나타낸다.
그러면 minimization 문제에서 우리는 f’(x)을 찾기 때문에 랜덤한 x값에서 시작하여 direction의 반대방향으로 업데이트해나가게 된다.

이렇게 반복적으로 업데이트하며 optimal한 point를 찾아가게 되는데, 이 방법을 gradient descent 방법이라고 한다. 이 방법의 경우 최소한 local minimum solution으로 수렴함을 보장한다.
함수가 매우 복잡할 경우, closed form의 함수가 존재하지 않는 등 다양한 이유로 해석적 direct method로 풀 수 없을때, 컴퓨터를 이용하여 iterative한 방법으로 풀 수 있기에 optimization에서 iterative method가 중요시 사용된다.
고차원에서도 gradient descent 방법을 적용한다면, optimal solution에 접근한다는 것을 기하학적인 형상을 통해 직관할 수 있다.

기하학적인 형상.
실제로 파이썬으로 적용해보자.

위 식은 직접적인 방법으로 풀면 x*=[[3],[3]]임을 알 수 있다. 아래와 같이 변환하여 gradient descent method를 적용해보자.

실제 파이썬 실습을 통해 실제 3에 근사함을 알 수 있다.
그러면 여기서 alpha값은 어떤 의미를 가지는가?

alpha 값이 작을경우 많은 iteration을 해야하므로 많은 시간이 걸리게 된다.
alpha 값이 클 경우 overshoot이 발생한다.
그러면 gradient descent method는 항상 수렴성을 보장하는가?

multiple local minimum이 존재할 경우, global minimum으로의 수렴을 보장하지 않는다.
그러면 어떻게 수행을 하는가?ˀ → radom으로 여러번에 걸쳐 시행하는 방법이 practical하게 사용된다. 물론 optimal(global minimum) solution을 보장하지는 않는다.
Gradient Descent방법은 매우 general 하고 generic 하기 때문에, neural networks나 deep learning에서 활용된다. TensorFlow에는 기본적으로 Gradient Descent 방법이 임베디드 되어 있어 손실 함수를 정의하고 decision variable 값을 찾을 때 사용된다.