본문 바로가기
머신 러닝

05.Linear_regression의 cost 최소화 개념

by Jnamelight 2017. 12. 3.

이번 강의에서는 cost(W,b)가 minimization 되는 개념을 배웠다.



 Simplified hypothesis 를 통해서 



이런식으로 식을 간편하게 변경하고 W 의 따라 Cost(W) 가 어떻게 변화되는지 알아보았다

( b를 생략했음으로 cost역시 w 만 간섭)  


W = 1 , Cost(w) = 0


W = 0 , Cost(w) = 4.67


W = 2 . Cost(w)? => 4.67 정도나옴


(x,y 의값이 1,2,3 으로 동일할떄)



즉 위의 값을 그래프로 그려보면





이런 그래프가 형성된다. 즉 여기서 가장  minimization 한 부분은 W 가 1일때이다.


하지만 데이터들은 이런식으로 쉽지 않다. 그럼 어떻게 최소값을 구할것인가?



바로 Gradient descent algorithm 기능을 이용 ( 경사를 따라 내려가는 알고리즘 )


이 알고리즘은 텐소플로우에 있는 기능으로써, 많은 머신러닝에서 최솟값(minimization)을 구할때 사용한다.

강력한 알고리즘이기 때문에 cost function값이 많아도 상관없다.



이 알고리즘의 개념은 쉽게 설명하자면 산을 내려가는 것으로 표현한다.


산의 정상이라고 가정했을때 맨밑으로 내려가기 위해서는 우리는


경사가 진곳을 찾아서 그경사를 따라서 쭉 내려간다.  바로 이원리를 이용한 알고리즘이다.



또한 이 알고리즘은


1. 아무대서나 시작이 가능하다 ( x, y 좌표가 어디든 상관 없음)


2. W 의 값을 조금씩 바꾼다 ( 경사 즉, 기울기를 조금씩 변화시킨다 ) => Cost(W,b)를 줄임


3. 반복하여 최소값을 찾아낸다.



그럼 어떻게 동작하는가?  바로 미분의 원리를 이용한다.


이렇게 해서... 미분공식을 통해서 W 의 값을 정한다. (수학을 잘해야하는 이유 )


어느정도 고등학교때 수학을 좋아했다면 쉽게(?) 이해할 것이다.




자여기서 중요한것은 그래프의 구성하는 방법이다.


cost function을 설계할떄 항상 주의해야 할점이다 밑을 보면 



이런 그래프라면 출발지점이 다르면 값도 다르게 나오기 때문이다. 그럼 결과도 달라지기 때문에 사용하면 안된다.


이 그래프가 가장 이상적인 그래프이다. 어느점에서 시작하든지 최솟값은 같기 때문이다. 그럼 결과도 같다.!




실습



실습하기전에 matplotlib 를 설치해주자 (그래프를 그려주는 파이썬 라이브러리 )

아나콘다를 이용해서 다운 받아도 되고~ cmd 도되고~ 받아주자.






그래프를 그려주는 예제 ( 위의 개념에서 나온 그래프 )





위와같이 그래프가 나온다





중요한건 이부분.! 위의 예제에서는 W 부분을 임의로 0.1 씩 주면서 값을 변경했다.


그 과정이 위와 같은대..


각각의 설명을 번호를 써넣었다.



어쩃든 보면 1번은 오차율? 이라고 생각하면된다 ( 작을수록 정확 , 하지만 느리겠지 ?)


2. 위의 식중 미분하기 전을 보여줌


3. 미분하는 과정


4. W 의 값을 어싸인 해주는 과정



이런 과정을 걸쳐서 W 의 값이 가장 최솟값으로 가게 해준다.




.. 맨날 코드를 짤때마다 저렇게 해야할까? ( 미분을 해야할까?)


아니다 텐서 플로우의 기능중 optimizer 기능을 이용하면




저 위의 4가지 단계를 2가지 단계로 그냥 쉽게 줄여준다.


이를 토대로 다시 코드를 짜보면.



이런 결과를 낸다 ~( 저번 시간에 배웠던 코드에서 이해가 안되는 부분이 이제야 이해됨 )


'머신 러닝' 카테고리의 다른 글

07.Multi_variable 실습  (0) 2017.12.04
06. Multi-variable linear regression  (0) 2017.12.03
04. Linear Regression  (0) 2017.12.02
03. TensorFlow 예제  (0) 2017.12.01
02. TensorFlow 설치  (0) 2017.12.01

댓글