우리의 궁극적인목표는 deep learning 과 neural network 인데 이 알고리즘은

중요한 component 이므로 잘 이해하는 것이 중요합니다!


그럼 복습의 의미로 linear regression 을 짧게 살펴볼까요?


cost : 우리가 세운 가설과 실제 값의 차이이며

이 cost 를 최소화하는 알고리즘이 Gradient decent 알고리즘 입니다.

Gradient decent 알고리즘은 기울기를 작게하는 방향으로 한발짝씩 움직여 기울기가 0인부분에 수렴하도록

하는 것입니다. 이 때의 한발짝을 learning rate 라고 부릅니다.

이 기울기는 Cost function 을 미분하는 것입니다.



두개로 분류하는 것이라고 생각하시면됩니다.

Facebook 에서 어떤 타임라인은 보여주고 어떤것은 보여주지 말자 이런것을 판단하는 알고리즘이 필요할 것입니다.

뭔가 카드거래가 기존 패턴과 다르다? 라는 것을 판단하여 도난여부도 판단합니다.




따라서 두가지를 1 or 0 으로 나타내면 됩니다.


요즘의 주식예측은 이미 머신러닝이 사람을 뛰어넘었다고 합니다.



이번에는 공부량에 대한 시험 통과여부를 판단하는 머신러닝을 생각해봅시다.



이 때 생각해볼 문제점이 있습니다.

만약에 50시간 공부해서 합격한사람의 data가 입력되었을 때 그래프의 기울기가 기울어 질것입니다.

그렇다면 합/불의 기준선도 급격히 변화할 것입니다.



또 다른 문제점은 반드시 0과 1사이의 값이 나와야합니다.

그러나 0보다 작거나 1보다 큰 값이 나올 수 있습니다.

H(x) = Wx + b  에서 x = [1,2,5,10,11] , W = 0.5 , b = 0 인 data 를 학습시킨 후

x = 100 인 data가 들어와 값이 50 인 모델이 생길 수있다.


따라서 Linear Regression 이 간단하고 좋지만 이것을 0~1 사이의 값으로 압축하는 함수를 도입했습니다.


이 함수는 sigmoid 라고 불립니다. z 가 무한히 커진다면 1로 수렴하고 작아질수록 0에 수렴합니다!

따라서 이 함수의 특성을 이용해서 Logistic Hypothesis 를 구현합니다.



이제 남은 일은 cost function과 gradient decent 를 구현하면 됩니다.

원래의 Cost function 은 다음과 같았습니다.


이번에는 H(X)에 sigmoid 함수를 도입해보겠습니다.

원래는 H(X)가 Linear 하므로 cost function 의 모양은 밥그릇 모양이 되겠지만 이젠

1차원이아니므로 다음처럼 구불구불한 모양의 cost function이 주어질 것입니다.


이 때 문제점은 우리가 지금까지 사용한 gradient algorithm을 사용하면

시작점이 다른경우 결과가 달라질 수 있게됩니다.

우리가 찾고자하는 것은 Global minimum 인데 찾을 수 없게될 수 있습니다.


따라서 cost 함수를 바꿔야합니다.


왜 이렇게 할까요?

cost 함수의 정의는 실제의 값과 예측한값이 같을 수록 작아지고 다를 수록 커지는 것입니다.

따라서 이 cost 를 최소화 하는것인데, 

y = 1 인 case 를 생각해봅시다. 우리의 예측한값도 H(x) = 1 로 일치했다고 하면 cost(1) = 0 에 가깝게 될것입니다.

이번에는 가설이 H(x) = 0 으로 틀렸다고 하면 cost는 무한대로 수렴하게 됩니다.

y = 0 인 case 에서는 우리의 예측이 H(x) = 0 으로 일치하면 cost = 0 으로 수렴할것입니다.

예측이 H(X) = 1 로 실패했다면 cost 는 무한대로 커집니다



따라서 요약하면 다음과같습니다.

이 때 if condition 이 있다면 코딩하기 불편하므로 제거하기 위해서 맨 마지막과 같은 식을 쓰곤 합니다!


그다음 단계는 이제 Minimize cost하기 입니다.



이 미분한 값을 이용해서 Gradient decent algorithm 을 구현하면 됩니다.




+ Recent posts