본문 바로가기
Machine Learning

5. 결과 값을 비교하는 방식(Cost function)

by 대소니 2016. 7. 4.


우리는 Supervised 방식을 공부하고 있기 때문에 결과 값을 비교할 수 있습니다.

왜냐하면 실제 정확한 결과 값을 알고 있기 때문입니다.

이 결과 값을 비교할 수 있는 표현이 Cost입니다. 그리고 Cost를 수학적인 함수로 표현하는 것도 배우게 될 것입니다.


이전 내용에서 이어서

h 함수를 일차방정식으로 표현할 수 있었습니다. ( h = Ax + B)

여기서 A와 B를 Parameters라고 합니다. 이 파라미터가 결정이 되면 우리는 원하는 결과 값을 찾을 수 있게 됩니다.


그럼 이 파라미터 값은 어떻게 찾을 수 있을까요?

바로 minimize를 해서 찾을 수 있습니다. 

우리는 이미 결과 값을 알고 있기 때문에 실제 결과 값과 알고리즘이 수행하여 예측한 결과 값을 비교해서 그 차이를 구할 수 있는데, 이 차이가 가장 작은 즉, 실제 값과 가장 가까운 결과가 나올 수 있는 파라미터를 구하면 될 것입니다.

그러한 파라미터로 구성된 직선이 우리가 찾고자 하는 기준이 됩니다.



Dataset에서 첫번째 데이터를 보면 집의 사이즈가 2104피트인 집이 실제 가격이 460,000달러였습니다.

x가 2104 값일때 실제 결과인 h가 460,000 값이 되어야 하는 것이지요

그런데 알고리즘을 수행하여 머신이 학습한 결과 값이 400,000달러라고 가정을 해보면 실졔 값과의 차이가 60,000달러 만큼 발생하는 것을 알 수 있습니다. 이 60,000달러가 Cost로 표현이 됩니다.


Cost는 예측된 결과 값(h) - 실제 결과 값(y)으로 정의를 할 수 있는데 이 값이 마이너스(-)의 값을 가질 수 있으므로 제곱을 해줍니다. 수식으로 표현하면 Cost = (h - y)^2이 되고 아래 그림의 오른쪽 위에 표현식과 비슷하게 됩니다


첫번째 데이터에 대한 것만 보고 표현한 것이니 이것을 모든 Dataset으로 확장해서 표현을 하면 1번째 데이터부터 m번째 데이터까지의 합으로 나타낼 수 있습니다. 또 이 값을 2m으로 나누어주면 평균 값이 됩니다.


이것을 수식으로 아래 그림과 같이 표현 할 수 있습니다. 그리고 이것이 Cost 함수가 됩니다.

우리는 이 cost가 가장 적은 것을 찾아야 하는것이 목표입니다.

목표를 달성하기만 하면 우리는 정확한 값을 에측할 수 있게 되기 때문입니다



Cost 함수를 제이(J)로 표현하였고 이 J함수가 minimize 된 값을 찾는 것이 우리의 목표라고 아래 왼쪽 그림에서 표현이 되어 있습니다.



지금까지 Cost에 대해서 알아보았는데 이제부터는 이 Cost함수가 어떤 의미와 특징을 가지고 있는지 알아봅니다.


Cost함수를 좀더 간단하게 표현하기 위해서 세타zero를 0이라로 가정하여 없앴습니다. ( y = Ax 가 됩니다)

h = Ax를 그래프로 그리면 아래 왼쪽의 그림과 같이 표현이 됩니다.

여기서 또 A = 1 이라고 가정을 하면 h = x가 되니 (1,1), (2,2)의 값을 갖는 직선이 되겠지요. 

실제 결과인 y와 h의 값이 동일하다면 이때 cost 함수를 아래와 같이 풀어보면 값이 0이 됩니다.

다시말하면, A=1이고 B=0일때 Cost=0이 되는 것입니다.



이렇게 하나씩 그래프로 찍어서 보면 아래 오른쪽 그림과 같이 Cost 함수는 이차방정식의 그래프로 나타나는 것을 알 수 있습니다. 이때 minimize 된 값을 찾는 것이 목표이기 때문에 그래프에서 가장 아래쪽인 j=0이 되는 cost가 0이 되는 세타one (혹은 A)를 찾아내는 것이 목표이자 머선이 학습으로 수행하여 찾아야할 파라미터 값이 됩니다. ( A=1 )



이 J 함수를 3차원으로 나타내면 아래 그림과 같이 된다고 합니다. 이쁩니다.



위 3차원 그래프를 등고선의 형태로 표현하면 아래와 같이 된다고 합니다.

만약 왼쪽의 직선과 같은 h를 발견했다면 실제 데이터(점들)과 많이 다르기 때문에 비용함수인 J가 중앙에서 멀리 있는 것(등고선의 바깥쪽에)을 볼 수 있습니다.



그러나 이것은 우리의 목표와 맞지 않으므로 답이 아니지요

아래 그림과 같은 직선으로 표현되는 h를 발견했다면 실졔 데이터와 비슷하기 때문에 비용함수인 J가 중앙에 있는 것을 보실 수 있습니다. 우리가 찾는 minimize라는 의미는 등고선으로 표현 했을때 정중앙에 위치하는 즉, Cost가 0에 가까운 것을 찾는 다는 뜻입니다. 또 Cost가 0에 가깝다는 의미는 실제 데이터의 결과값과의 차이가 거의 나지 않는 다는 똣이고 이는 예측 가능한 정확도가 높다는 것이 됩니다.



이런 과정으로 머신이 학습을 하여 결과를 찾는 것입니다.

많은 수식과 그래프로 표현이 되었지만 요약하자면 알고리즘(머신)이 수행되면서 예측한 값과 실제 값을 비교해서 Cost를 분석하고 이 Cost가 가장 적은 기준을 찾아내는 것입니다.

댓글6

  • 2016.10.25 22:12

    비밀댓글입니다
    답글

    • Favicon of https://daeson.tistory.com 대소니 2016.10.26 01:08 신고

      안녕하세요. 공부하시는데 도움이 된다니 기쁘네요^^

      네 일반적으로는 평균값 계산이 말씀하신 것과 같지만, 여기서는 제곱에 대한 Sum이기 때문에 결과적으로는 평균값이 됩니다.

  • 코리 2017.11.24 22:04

    안녕하세용 코세라 머신러닝 수업듣다가 3차함수에서 포기해버린 수포자 입니다..
    고등학교때 문과수학만 배워서..(미적분도 모릅니다) 머신러닝을 포기했는데. 다시 도전하고 싶습니다..

    수학에서 어느부분을 배워야...이 강의를 이해할수 있을까요?
    답글

    • Favicon of https://daeson.tistory.com 대소니 2017.11.24 23:37 신고

      코세라 머신러닝에서 필요한 수학이라고 하면,

      1. 일차, 이차방정식
      2. 벡터, 메트릭스 사칙연산
      3. 총합과 평균 개념
      4. 미분
      이정도 될것 같습니다.

      미분은 그냥 변화량, 기울기 정도만 아셔도 되는 정도라서 겁 먹을 필요는 없을 것 같습니다. 저도 수학은 잘 못합니다.^^ 화이팅하세요~

  • 2019.06.02 15:44

    평균을 구할때 왜 m이아닌 2m으로 나누나요?
    답글