AI & BigData/모두를 위한 딥러닝(정리)

텐서플로우(Tensor Flow) #3_ Linear Regression의 Cost 최소화 하기

Tigercow.Door 2018. 2. 27. 18:51


안녕하세요. 문범우입니다.

이번 포스팅에서는 지난 포스팅에서 구현했던 hypothesis 함수와 cost함수를 통해 Linear Regression에서의 cost를 최소화해보도록 하겠습니다.


* 해당 포스트의 모든 내용은 김성훈 교수님의 '모두를 위한 딥러닝'을 바탕으로 제작되었습니다.

관련한 상세 내용은 아래 링크를 참고해주세요.

https://hunkim.github.io/ml/



1. Simplified hypothesis


우리가 직접 텐서플로우를 사용하기전에 hypothesis를 보다 간략하게 정의해봅니다.



위의 수식과 같이 hypothesis와 cost함수를 정의해보았습니다.



2. cost 최소화


그럼 이제 tensorflow로 코드를 구현해보겠습니다.

그전에 추후 그래프를 확인하기 위해 모듈하나를 설치해야합니다.

metplotlib 이라는 건데 tensorflow 가상환경으로 들어가기전에 아나콘다에서 다음과 같은 명령어를 실행합니다.


pip install metplotlib


그리고 active tensorflow 명령어를 통해 텐서플로우 가상환경으로 들어가서 python을 실행합니다.


먼저 tensorflow와 matplotlib.pyplot 을 임포트하고 아래와 같이 코드를 작성합니다.



코드를 보시면, 먼저 필요한 모듈을 임포트했고, X와 Y에 대한 값을 지정하였습니다.

이후 hypothesis와 cost함수를 구현하였습니다.

그리고 session을 열고 초기화를 하였습니다.

그리고 그래프를 그리기 위해 W값과 cost의 값을 저장시킬 리스트를 만들고

for 문을 이용하여 -30부터 50까지 0.1 간격으로 돌립니다.

그리고 W_val와 cost_val를 통해 그래프를 그렸습니다.


위와 같은 코드를 작성하면 아래와 같은 그래프가 나타납니다.



위의 그래프에서 x축은 W이고 y축은 cost입니다.

그래프를 보면 알겠지만 해당 값을 최소화하는 W는 1입니다.


이제 우리의 목표는 이러한 W를 자동으로 찾아내는 것입니다.



3. Gradient descent


위에서 확인한 W를 Gradient descent를 이용하여 찾아냅니다.

즉, 미분을 이용하는 것입니다.



이제 위와 같은 식을 식 아래에 있는 코드처럼 텐서플로우에서 구현함으로써 cost 최소화를 구현합니다.

여기서 알파는 learning_rate입니다.


따라서 전체코드는 아래와 같습니다.



우리가 지난 포스팅에서 구현한 Linear Regression과 거의 동일합니다.

중간쯤에서 확인하시면 위에서 본 코드가 추가된 것을 확인할 수 있습니다.

여기서 우리가 원하는 것은 W가 1이되는 것입니다.

이러한 코드를 실행시켜보면 아래의 사진과 같습니다.



결과를 보면 cost가 점점 작아지면서 W가 1에 가까워지는것을 볼 수 있습니다.


물론 우리가 텐서플로우를 사용하다보면 아래와 같은 코드로 매우 쉽게 cost를 최소화할 수 있습니다.



위의 식을 이용해서 다양한 값들로 테스트를 해도 동일한 결과를 가지는 것을 확인하실 수 있습니다.



이렇게 해서 Linear Regression에서 cost를 최소화하는 방법에 대해서 알아보았습니다.

다음 포스팅에서는 multi-variable을 다뤄보도록 하겠습니다.

728x90