ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Machine Learning] cost function - 왜 제곱을 사용하는 것일까?
    공부/ML 2019. 10. 23. 17:51

    머신러닝을 공부하다 보면 COST 함수에 대한 내용을 접하게 된다.

     

    기본적인 COST FUNCTION

    INPUT 값에 대한 기댓값으로 얼마가 나오겠지...라는 예측과 차이의 정도를 반환하는 함수로, 이 값이 작으면 작을수록 정확하게 예측했다고 판단할 수 있다.

     

    식을 보게 되면 예측값 [ x(i) ], 정답 [ y(i) ] 의 값의 차이를 제곱하고 있는 것을 확인할 수 있다.

    이에 대해서 

     

    "예측값과 정답의 차이가 크다면 더욱 더 weight를 가해서 좀 더 정확한 modeling을 하기 위해서 제곱 값을 적용한다."라고 흔히들 많이 설명한다.

     

    맞는 말이다. 하지만...

     

     

    왜 하필 제곱을 사용하는 것일까?

     

    오늘 저녁은 뭐먹지..

    예측값과 다른 것이 문제가 되어서 사용한다면 왜 3 제곱, 4 제곱... 100 제곱을 사용하면 되는 게 아닐까? 그럼 더 정확해지지 않을까?

     

    이것에 대한 대답은 "네니요" 라고 할 수 있다.

     

     

    즉, 따지고 보면 그렇지만은 않다... 는 것이다. 조금 더 살펴보자..

     

    이는 오버피팅(OverFitting)과 데이터의 분포에 대한 내용과도 연결된다.

     

     

    일단, "예측값과 정답의 차이가 크다면 더욱 더 weight를 가해서 좀 더 정확한 modeling을 하기 위해서 제곱 값을 적용한다."라는 내용은 정확하게 맞다.

    궁금증은 왜 하필 제곱이냐, 라는 것이다.

     

     

     

    어떠한 것에 대한 문제점을 확인하기 위해서 내가 많이 해보는 극단적인 예시를 들어보자. 앞서 언급한 100 제곱을 적용시켜 보도록 한다.

     

     

     

    위의 그림에서 new가 데이터에 추가적으로 갱신이 되었다고 하자. 그렇다면 모델은 저 데이터에 의해서 새롭게 fitting이 될 것이다. 즉, new에서의 예측값인 화면 밖의 큰 값과, 실제 값인 1.0의 차를 제곱하여 새로운 직선인 빨간 점선을 새로이 모델링하게 된다. (y값의 차이가 아닌 직선과의 수직거리를 cost로 연산하는 방식도 존재하지만 이는 여기서 설명하지 않도록 하겠다.)

     

    여기서 new는 아웃라이어(OutLier)로 일반적인 데이터 분포로부터 떨어져 있는 예외적인 case이다. 이러한 데이터는 모델의 분포와 동떨어져 있으며, 이로 인해 cost function이 급격히 증가하게 되므로, modeling에 있어서 악영향을 끼치게 된다.

     

    cost function의 승수가 제곱(2)일 경우, 예측치(10)와의 오차가 2인 데이터(8) 10개와 오차가 10인 데이터(20) 1개가 있다고 가정하자.

     

    이 cost function의 값은  4 * 10 + 100 * 1이 되고, 이 값을 줄이기 위해서 예측치(10)는 100/11, 대략 9.xxxx로이동하게 된다.

     

    이번에는 승수가 (100) 일 경우를 생각해보자.

    2의 100승 * 10 + 10의 100승 * 1 이  cost function의 값이 되며, 예측치는..... 계산을 못하겠다.

     

    안타깝지만 승수가 4인 경우로 합의를 보자.

     

    https://ko.numberempire.com/graphingcalculator.php

    연산의 결과 예측치는 11.xxxx일 때 cost function이 최솟값을 가지게 된다.

     

     

     

     조금 더 노오오력해서 승수가 6인 경우를 해본다면, 

    https://ko.numberempire.com/graphingcalculator.php

    cost function의 최솟값은 예측치를12.64 xxx 정도로 확인할 수 있다.

     

     

    뭐 신나게 두들겨 봤지만, 결론적으로 위의 결과들이 의미하는 바는 한 가지이다.

     

    "승수가 높으면 그만큼 OutLier에 의한 영향을 크게 받고 전체적인 모델링이 망가지기 쉬워진다."

    결과적으로, OutLier에 의해 끌려가게 된다.

     

    때문에 우리들이 일반적으로 사용하는 제곱이라는 값은

    '데이터의 분포가 가우시안 분포(Gaussian distribution)에서 크게 벗어나지 않는다'

    는 가정 하에 사용하는 것이라고 보면 된다.

     

     

    즉, 적당~~ 하다는 말이다.

     

    하지만 가우시안 분포와 다른 데이터 분포를 가진 데이터셋에 대한 모델링을 한다면 당연히! 문제가 된다.

     

     

    그럼 무엇을 써야 하는가? 가 궁극적으로 말하고자 하는 것이다.

     

    일반적으로 데이터는 밀집되어 있고 그 밀집은 가우시안 분포를 크게 벗어나지 않는다.(라고 나는 생각한다)

    그러나, 분명히 예외는 존재하며 그 예외를 고려해서 모델링을 하는 것이 중요하다는 것이다.

     

    만약, 가우시안 분포가 아닌 좀 더 샤프한 분포를 가지고 있는 데이터 셋이 있다고 가정하자.

     

    검은 색이 가장 샤프하군.

    그렇다면 위에서 문제가 되었던 OutLier의 존재 확률은 내려가게 되고, 따라서 cost function의 승수를 4로 사용하였을 때, 좀 더 정확한 modeling일 가능성이 높아진다. 

     

    또한 데이터가 쌍봉 분포(bimodal distribution) 라면, 완전히 다른 cost function을 요구하게 될 것이다.

     

     

    단순히 cost function이라고 해서 차이를 제곱해서 더하면 된다...라는 고정관념에서 벗어난다면, 좀 더 다양하고 유연한 모델링이 가능하지 않을까?

     

    적어도 왜라는 궁금증을 가지는 것이 그 시작점이라고 생각한다.

     

     

    *다른 의견, 지적, 비판은 감사히 받겠습니다.

    댓글

Designed by Tistory.