데이터분석/Deep Learning

텐서플로우 입문기(1)

늘근이 2016. 12. 11. 10:49

대한민국에 사는 사람들 머릿속에 몰아친 혁명은 바로 두가지였다.


바로 2016년말에 일어난 2백만 평화 병신항쟁 

그리고 모든 패러디와 풍자를 낳았던 알파고의 등장.


전자는 다수의 사람들의 힘을 여실히 보여주었고, 후자는 대량의 데이터의 힘을 보여주었다.


어쨌든 IT블로그이니 알파고의 힘을 가능케한 구글의 오픈소스 머신러닝 라이브러리인 텐서플로우를 입문하는 기록을 남겨야겠다고 생각했다. 


이용한 서적은 [텐서플로 첫걸음, 한빛미디어, 조르디토레스 지음, 박해선 옮김]



리눅스 터미널로 깔짝깔짝하니 그래프도 안튀어나오고 답답해 죽겠어서 다시한번 친구한테 받은 포맷도 안되는 2009년형 맥똥컴을 부팅.


$ sudo easy_install pip

$ sudo pip install --upgrade virtualenv


$ virtualenv --system-site-packages ~/tensorflow


$ source ~/tensorflow/bin/activate


여기까지 했으면 다음과 같은 화면이 보인다.


이제 가상환경에 텐서플로우 설치를 하면 되는데 이는 최신버전이 잘 올라가 있지만, 일단은 귀찮기 때문에 다음과 같이 그냥 깐다.


$ sudo pip install tensorflow


이제 파로 파이썬에서  import구문으로 텐서플로우를 써먹어 볼수있다.

맥 혹은 리눅스  GUI 가 아니면 순수 터미널만 가지고 개인이 장난감으로 가지고 놀기에는 무리가 따른다. 





3,270,000원.. 마치 세진컴퓨터랜드 진돗개 시절 최고급 사양의 컴퓨터 가격을 보는것 같다.


빈털털이 지갑을 한번 보며 다시금 마음을 가다듬고 열심히 맥북을 갈구기 시작한다.


코드 편집 툴은 마이크로소프트 비주얼 스튜디오 코드를 이용한다. 상당히 가볍고 좋아서 많이 쓰고 있고 VI로 편집하는것은 솔직히 잘 하지는 못해서 이렇게 쓴다.

여기 나오는 코드는 죄다 한빛미디어에서 나온 텐서플로 첫걸음을 바탕으로 재구성 했다.


코드는 정말 간단하고 다음과 같다.




연산은 간단하게 multiply 말고도, 여러가지가 있다. TensorBoard를 이용하면 추적도 가능하다.



그래프도 아래와 같이 그려보았다. 일반적인 선형회귀 모양을 띄는 그래프에 약간의 랜덤성을 추가한 그래프임.



 

사실, 이는 선형방정식을 눈으로 보기 편하게 그냥 시각화 해놓은것이고 아무 기계학습 알고리즘도 아직은 들어가지 않았다. 우리가 해야하는 일은 이러한 점들이 눈에 뿌려졌을때, 이를 나타나게 한 근본적인 원인을 찾는것이라고 할수있다. 


이제는 전에 세웠던 아주 간단한 선형방정식인,


 y = W * x + b 부분에서  x,y  만 값을 가진상태, 즉 현상만이 보이는 상태에서 계수들을 추측해보는 행위를 해야한다. 지금은  W 와 b를 말한다.


(아래의 코드는 실습용으로 따라치기는 했으나, 텐서플로 첫걸음에서  github를 통해 공개한 코드)



실제 앞서 설정해놓았던 계수들은 gradientDescent방식으로 훈련이 된다. 






계속된 반복을 통하면 위와같이 제법 강건한 선형방정식을 유추해볼수 있게 된다.