머신러닝을 공부하고 다양한 예제를 작성하다 보면 몇몇 상황에서 원하지 않는 결과가 나오는 상황을 볼 수 있다.
이유야 다양하지만(learning step, data의 특성, 나의 실력) 이번에는 Local minimum에 대한 것을 살펴보자.
(바쁜 당신을 위해 빠른 진행)
일반적으로 cost function을 최소화하기 위해서 열나게 모델을 작성한다.
global minima == local minima
위 같은 경우 크게 문제없이 최적의 값(w)을 찾아낼 수 있다. 심플하게 사람이 저기에서 걷는다고 했을 때, 아무 생각 없이 오르막길 나올 때까지 걸으면 끝이다.
(우측 그림의 unregularized에 대해서는, 이 글에서 자세히 다루지 않지만, 데이터의 변수 간의 분포가 일정하지 않을 경우, 우측 그림과 같이 찌그러지게 되는데, 이 경우 overshooting의 가능성이 커지게 된다. regularize(정규화)를 통해 개선이 되기도 함.)
그렇다면 이제 조금 다른 경우를 보도록 하자.
global minima != local minima
이 그래프가 산악지형을 옆에서 본 것이라고 생각해 보자.
당신은 현재 산의 맨 좌측에서 바닥을 향해서 내려오려고 한다. 어디까지 내려가야 다 내려왔다고 알 수 있을까? 앞서 언급한 방법(오르막길나올떄까지 전진)으로는 그림의 local cost minimum에서 멈추게 될 것이다.
아니... 거 좀 더 가면 되는거 아니냐
맞는 말이다. 만약에 좀 더가보면 저기에 나와있는 global minimum에 도달할 수 있을 것이다.
그렇다면 다 내려온 것이라고 할 수 있을까?
다 내려왔다고 생각한 당신은 주변을 둘러보며 안심하고 그곳에 잠자리를 마련했을지 모르겠지만,
짜잔
'보여주지도 않고 무슨 수작질이냐' 라고 할 수도 있다. 하지만 그게 정상이다. 전지적 작가 시점처럼 모든 것을 아는 상황이 아니라면 당신은 그곳이 최소점 인지도 모르고 저기가 시베리아 산 중턱인 것도 알 턱이 없다.
w를 조정해 가며 최소값을 찾는 컴퓨터 또한 이와 같은 이유로 최저점을 도달하지 못하여 local minimum에 수렴해버리게 된다.
그래서 w의 범위를 적절하게 부여하거나, 초기값(initial value)을 훌륭한 값으로 주어줘야 한다는 것이다.
여기까지가 local minimum에 빠지게 되는 이유다.
그럼 제목에서 나온 본론으로 들어가 보자.
위의 내용은 local minimum이 존재한다는 가정이 깔려있다. 그렇다면 저렇게 물이 고여버릴 거 같은 local minimum이 존재하지 않는다면 정상적으로 global minimum에 도달할 수 있는 것 아닐까?
적어도 필자의 생각은 '그렇다'.
그런데 그러면 뭐해, local minimum이 저렇게 떡하니 있는데.
하지만, 조금만 더 깊게, 조금만 더 높게 생각해보자.
변수가 2가지일 경우(dimension=2) 하나의 데이터가 극소값(local + global)이라는 것은
x가 감소하다가 증가하고, y가 감소하다가 증가하는 경우이다.(두 변수 모두 감소하다가 증가)
각 x와 y는 다음과 같은 경우를 가지고 있다.
(tmi일 수도 있지만 여기서의 x,y는 데이터 값 자체가 아닌, w(coefficient)에 의해서 변동되는 각 오차값에 대한 값이다.
tmi=무시해도 좋다.)
1. x가 증가하다가 그대로 증가한다.
2. x가 증가하다가 감소한다.
3. x가 감소하다가 증가한다.
4. x가 감소하다가 그대로 감소한다.
4가지 경우가 존재하며 이는 y변수 또한 똑같다.
즉, 2차원 모델에서 어느 한 데이터가 극소값일 확률은 1/4 * 1/4 = 1/4^2 = 1/16이다.
a개의 데이터가 존재할 때 그중에 한 녀석도 극소값이 아닌 확률은 (15/16)^a이다.
(이는 '데이터의 특성'이나 데이터가 3개 이상이어야 minimum area가 생긴다는 여러 조건을 제외한 단순 연산이다.)