티스토리 뷰

이번에는 cost 비용을 최소화 하기 위한 최적화 알고리즘 경사 하강법(Gradient Descent) 에 대해서 간략하게 알아보겠다.
먼저 최적화에 대한 개념을 잠깐 짚고 넘어가 보자.
최적화란, 여러 가지 허용되는 값들 중에서 주어진 기준을 가장 잘 만족하는 것을 선택하는 것 을 의미한다.
그 최적화의 종류에는 대표적으로 유전 알고리즘인 조합 최적화 그리고 경사 하강법인 함수 최적화 방법이 있다.
그 중 우리는 함수 최적화 방법인 경사 하강법 알고리즘을 활용하여 비용함수(Cost Function)를 최소로 만드는 것이 목적이었다. 
(다른말로, 에너지 함수라고 했던가..)

경사 하강법(Gradient Descent)
해당 함수의 최소값 위치를 찾기 위해 비용 함수(Cost Function)의 그레디언트 반대 방향으로 정의한 step size를 가지고 조금씩 움직여 가면서 최적의 파라미터를 찾으려는 방법이다.
여기서 그레디언트는 파라미터에 대해 편미분한 벡터를 의미하며 이 파라미터를 반복적으로 조금씩 움직이는 것이 관건이 되겠다.



머신 러닝에서는 가장 간단한 모델인 선형 회귀(Linear Regression) 를 예를 들고 있다.
선형 회귀에서는 이 cost를 최소화 하기 위해 아래와 같은 두줄의 코드를 작성 할 수 있다.

1
2
optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.01)
train = optimizer.minimize(cost)
cs



그리고, 선형 회귀 모델에서의 비용함수를 아래와 같이 정의할 수 있다.




이때, cost를 줄이기 위해 변경되는 W의 파라미터의 상관관계를 그래프로 나타낸다면..

cost의 값이 최소가 되는 것은 W의 값이 가운데로 수렴하게 된다는 것을 의미한다.

(편의상 추가적으로 더하는 항인 바이어스의 값은 제외 한다)



결국, 그래프 위에 랜덤하게 파라미터가 정해지면 해당 파라미터의 위치로 부터 최소값을 찾아 탐색하는 기준으로 경사도를 구해야한다.

이때 빨간점의 위치를 A라 하고 파란점의 위치를 B라 하자.

A의 위치에서의 경사의 기울기는 음수 이기 때문에 W의 값을 증가 시키게 되고 B의 위치에서의 경사의 기울기는 양수 이기 때문에 W의 값을 감소 시키게 된다.



여기서, 경사도를 구하기 위해서는 미분이 필요하게 되는데 이를 위해 식을 아래와 같이 변경한다.


그리고 경사 하강법의 수식을 가져온 후에 cost function의 식을 대입한다.

그리고 이것에 미분을 취해주게 되면,


다음과 같은 최종 식이 도출되게 된다.

해당 식을 여러번 실행 시키는 것이 경사 하강법 알고리즘의 핵심이다.

이를 통해서, cost가 최소화 되는 값을 가진다. 

함수 최적화 방법인 경사하강법 알고리즘은 그리디 접근방식을 사용한다. 

(알고리즘을 보다보면 그리디 알고리즘을 공부하게 되는데.... 읍...)

이것은 즉 휴리스틱(heuristic)한 탐색을 하기 때문에 국소 최적해(Local Minimum)을 가질 위험이 있다.

간단하게 예를 들어보자면,  어떤 사람이 등산을 할 때 정상을 향해서 등산을 하게 되는데 정상인 줄 알고 올라와봤더니 옆에 더 높은 봉우리가 있는 것이다.

이와 같이 정상이 어디인지 모르고 일단 사람이 판단했을 때 최적의 길로 올라 갔을 때 휴리스틱한 탐색을 한다하고 사람은 봉우리에 올라갔을 때 주변을 탐색할 수 있지만

기계는 그러지 못한다. 따라서 그를 해결하기 위한 매커니즘으로 Convex Function을 활용한다. 

이를 활용하면 어디서 시작하든지 간에 우리가 원하는 지점에 갈 수 있는 것이다. 

따라서 우리의 알고리즘은 항상 최적해를 보장해주고 이 cost의 값이 최소가 되는지 반드시 결과를 모니터링 해보아야한다.


































반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함