머신러닝 모델은 위와 같이 동작하게 된다.
- 머신러닝 알고리즘에 학습시킬 Training data set이 존재하며, 그것을 Learning Algorithm의 input으로 활용한다.
- Learning Algorithm은 input으로부터 학습한 내용을 기반으로 결과를 예측하기 위한 최적의 가설(hypothesis)를 세운다.
(여기서 가설을 '함수'라고 치환하여 쉽게 생각하자.) - 새롭게 관측되는 data를 가설의 x, 즉 input으로 투입하여 결과 y를 예측한다. 그 결과값을 predicted y라 한다.
비용함수(Cost Function)
우리는 hypothesis function의 정확도를 높이기 위해 비용함수(cost function)을 사용할 수 있다. 앤드류 응 교수님은 집 값을 예측하는 지도학습 문제를 예시로 들며 단 하나의 변수만을 가지고 있는 비용함수로 설명해줬다.
가설이 위와 같다고 가정해보자. 1차 함수 y = ax + b 꼴을 생각하면 이해가 더욱 쉬울 것으로 생각된다. 해당 가설에서 θ0은 가설 함수의 y절편이고, θ1은 가설 함수의 기울기다. 우리는 앞으로 이 세타(θ)들을 가설의 parameter라고 부를 것이며, 이 parameter들을 적절히 선택하여 가설의 결과값인 predicted y와 학습에 이용되는 data set 내의 실제 y(즉, target) 간의 간극을 최소화시키는 것이 비용함수의 목적이다.
쉽게 이해하기 위해 예시를 들어보자. data set에는 총 50개의 data가 존재한다고 가정하자. 우리는 data의 개수를 m이라 할 것이다. 그리고 data set에는 집 값을 예측하기 위한 feature인 '집 넓이'가 존재한다고 가정하며, 우리는 이 feature를 x라고 할 것이다. 그리고 data set의 또 다른 column에는 실제 집 값이 존재한다고 해보자. 우리는 이것을 y라고 할 것이다. 마지막으로, 각 row를 일련번호 i로 부를 예정이다. 그렇게 되면 data set의 형태는 다음과 같다.
id = i | 집 넓이 (㎡) = x | 실제 집 값 (100만원) = y |
1 | 32.56 | 427 |
2 | 23.19 | 312 |
3 | 53.37 | 653 |
... | ... | ... |
위와 같은 data set이 존재할 때, 우리는 비용함수 J를 아래와 같이 정의할 수 있다.
즉, data set 내 i번째 행에 있는 x를 가설함수 hθ에 투입하여 얻은 결과값과 data set 내 i번째 행에 있는 y 간의 차의 제곱하는 과정을 50번째 행까지 진행하고 그 과정 중 도출된 모든 값들을 더한다. 가설함수 hθ로부터 얻은 결과값과 실제 집 값의 차가 적을수록 예측을 정확히 한 것이니, 당연히 J의 결과값이 최소화될 수 있도록 가설함수의 파라미터를 적절하게 선택해야 할 것이다. 정리하자면, 비용함수 J의 결과값을 최소화시킬 수 있는 적절한 파라미터를 선택하는 것이 최종 목표이다.
여기서 하나 중요한 점은, 단순이 가설함수의 결과값과 실제 y값의 차를 구하는 것이 아니라 차이의 제곱을 구하는 것이다. 단순히 가설함수의 결과값과 실제 y값의 차만 구했을 경우 어느 경우에는 음수가 나올 수 있으며, 해당 음수가 비용함수 J의 결과값에 반영될 경우 최적의 θ를 선택할 수 없게 될 수 있다. 그러므로 꼭! 차이의 제곱을 구할 수 있도록 해야 한다.
추가적으로, 앤드류 응 교수님은 비용함수 J를 보다 간단히 만들기 위해 일련의 과정을 거쳤다.
- 시그마 앞에 1/m을 곱함으로써 평균값을 구하는 식으로 변형한다.
- 평균값을 최소화하기 위해 1/2을 한 번 더 곱해준다. 특정 값을 최소화하는 것과 특정 값의 반을 최소화하는 것은 같은 과정을 갖기 때문에 적절한 θ를 구하는 과정에는 전혀 영향을 끼치지 않는다.
그 결과 다음과 같이 약간 변형된 식이 나오며, 가설함수의 모양이 너무 지저분하다면 y-hat을 이용하여 깔끔한 식을 쓸 수도 있다.
source :
1. Andrew Ng <Machine Learning> - Model and Cost Function- "Cost Function, Coursera
'DS > Coursera' 카테고리의 다른 글
비지도학습(Unsupervised Learning)에 대한 이해 (2) | 2020.02.13 |
---|---|
지도학습(Supervised Learning)에 대한 이해 (0) | 2020.02.11 |
머신러닝에 대한 정의 (Maching Learning Definition) (0) | 2020.02.10 |