본문 바로가기

machine learning56

word2vec으로 영화 추천 하기 word2vec을 검색 엔진에 포팅했는데 이제 이걸 가지고 무엇을 해야 하나 고민을 하던 찰나에 아래의 링크를 발견했다. http://www.slideshare.net/ssuser2fe594/2015-py-con-word2vec word2vec을 이용해서 영화 추천을 해봤다는 발표자료인데 word2vec에 학습시킬 corpus만 잘 조합하면 가능할 것 같아서 나도 한번 해보기로 했다. movieLens 라는 사이트에 들어가게 되면 사용자들이 각 영화에 대해 평점이나 tag를 매겨놓은 데이터를 다운 받을 수가 있다. 나같은 경우엔 다운 받은 파일들 중 movies.csv, ratings.csv 만 가지고 word2vec으로 만들 corpus를 만들어 보기로 했다. movies.csv 같은 경우에는 영화 i.. 2016. 11. 18.
backpropagation 손으로 따라가 보기 들을 때면 '아하~' 하고 이해하지만 자고 일어나면 항상 '왜 저렇게 되지??' 의 대명사가 되었던 backpropagation.. 그래서 직접 손으로 따라가 보기로 했다. target이 되는 방정식은 y = wx의 가장 간단한 1차 방정식.. 원래는 y =3x의 방정식인데, 이를 찾아가는 과정을 backpropagation을 써서 따라가 보기로 했다. 우선 w의 처음 초기 값은 1로 설정한다. 그리고 cost function은 (target - 예측값)의 제곱을 구하는 MSE를 쓰기로 한다. 그럼 이제부터가 관건인데.. 우리가 실제 알고 싶어하는 것은 w 값이 변했을 때 cost function의 변화량이 얼마나 바뀌는가 이다. 왜냐하면 cost function의 변화량이 크다는 것은 아직 정답 값과 .. 2016. 11. 17.
Jupyter에서 Matplotlib 한글 적용하기 word2vec을 통해 word 들을 vector로 변환하였고, 이를 그래프로 표현해주어야 한다. (word 간의 분포도를 보고 싶으니깐..) vector는 3차원만 넘어가도 표현하는데 어려움이 많다. 그래서 이를 위해 tsne라는 것을 사용했다. tsne는 vector의 차원을 줄여주는 기법 중의 하나로, 가령 예를 들어 3차원의 벡터 공간에 있는 데이터 들을 2차원으로 옮기지만 그들간의 거리는 충분히 유지하면서 옮겨주는 방법이다. 보다 상세한 설명은 아래 슬라이드 참조.. http://sssslide.com/www.slideshare.net/ssuserb667a8/visualization-data-using-tsne tsne로 좌표 변환하는 python code는 아래와 같이 하면 된다. import.. 2016. 10. 19.
Word2Vec porting python이나 spark 등에서 word2vec을 사용해보기만 했지.. 내가 실제로 소스를 들여다 볼 일은 없을거라고 생각했었는데.. 실제 소스를 까서 porting 작업을 진행해야 하는 우려 사항이 발생했다. 우선 word2vec에 대해 간략하게 설명을 하자면, 가장 단순하게 말해서 word를 vector로 바꿔서 표현해 주는 것이다. 아니 왜??? 그냥 word를 쓰면 안돼?? 실생활에서는 물론 그냥 word를 쓰는게 당연하다. 하지만 컴퓨터는 해당 word에 대한 의미를 전혀 알지 못하기 때문에, 컴퓨터에게 의미 있는 어떤 수치로 알려주기 위해서는 vector 표현으로 주는 게 바람직하다. 그런데 이게.. 아무 벡터나 막 만들어서 주는게 아니라, 비슷한 단어끼리는 비슷한 벡터가 될 수 있도록 학습.. 2016. 9. 30.
[TENSORFLOW] 텐서플로우에서의 쓰레드 TENSORFLOW는 파이썬 기반 언어라고 생각해서 그런지 멀티 쓰레드가 지원 안되는지 알았는데, 다행히도 멀티 쓰레드가 가능한 것 같다. TENSORFLOW에서의 멀티쓰레드는 동일한 Session 객체를 사용할 수 있게 해주고 병령로 ops를 동작하게 해준다. TENSORFLOW에서는 보다 원할한 멀티쓰레드 동작을 위해 두 개의 class를 제공하는데 tf.Coordinator와 tf.QueueRunner이다. 두 개의 클래스는 함께 사용되도록 디자인 되었다. Coordinator는 멀티쓰레드가 함께 종료될 수 있도록 도와주고, 예외처리를 할 수 있도록 제공하고 있다. QueueRunner는 동일한 큐안에서 tensor가 동작할 수 있도록 쓰레드를 생성하는데 도움을 준다. Coordinator - sh.. 2016. 5. 20.
[TENSORFLOW] TensorFlow Mechanics 101 지난 번에 레이어 없는 MNIST를 구현 하였다면 이번에는 Hidden Layer가 있는 MNIST를 구현해 보는 코스이다. 소스는 아래와 같다. 코드가 지난 번 보다는 복잡하다. 우선 MNIST 데이터를 가져오기 위한 input_data.py는 /root/work/deep/code/01_mnist_beginning에 있다고 가정하고 위와 같이 sys.path.append를 정의해 주었다. 실행 순서대로 코드를 분석해 보자면, 우선 run_training을 통해 실제 mnist 데이터를 training하고 test를 진행해 볼수 있다. run_training 함수를 살펴보자. data_sets = input_data.read_data_sets("MNIST_data/", False) 위의 함수를 통해 mn.. 2016. 5. 3.
[TENSORFLOW] 버전 확인 및 업데이트 하기 Tensor Flow의 MNIST 튜토리얼 진행 중 막히는 부분이 있어 찾아보는 도중 tensorflow update를 진행하라는 게시글을 목격했다. '내가 깐 Tensor Flow 버전이 머지?' 라는 생각이 갑자기 들며, -v 옵션을 주거나, help를 쳐봐도 버전 정보를 보는 어떤 방법도 없길래 주변 지인에게 물어봤더니, 그냥 freeze로 확인하면 된다고 한다. (-_-) $> pip freeze 이렇게 하면 pip로 깔린 모든 패키지의 버전 리스트가 나타나고, 당연히 tensorflow의 버전도 확인이 가능하다. 내친김에 업데이트도 진행하기로 결심! $> pip uninstall tensorflow$> pip install --upgrade https://storage.googleapis.com.. 2016. 4. 28.
[TENSOR FLOW] MNIST 인식하기 우리는 지금부터 MNIST 필기체 데이터를 인식하는 프로그램을 만들어 볼 것이다. 일단 MNIST DATA를 가져오기 위해서 아래의 url에서 input_data.py를 다운 받는다. https://tensorflow.googlesource.com/tensorflow/+/master/tensorflow/examples/tutorials/mnist/input_data.py 우리는 지금부터 MNIST 필기체 데이터를 인식하는 프로그램을 만들어 볼 것이다. 일단 MNIST DATA를 가져오기 위해서 아래의 url에서 input_data.py를 다운 받는다. 다운 받았으면 이제 import로 input_data를 호출하여 MNIST DATA를 가져온다. import syssys.path.append("/root.. 2016. 4. 11.
[TENSOR FLOW] Introduction 아래 코드를 살펴보자. tensorflow gradient descent tutorial 코드임. 위 코드의 궁극적인 목표는 weight와 bias를 찾아내는 것이다. 위에서의 답은 weight 0.1과 bias 0.3이다. W 값을 찾기 위해서 1x1 행렬의 -1 ~ 1 사이의 값을 무작위로 하나 가져오고 bias는 0으로 설정한다.Gradient descent learning_rate를 0.5로 둔다. 그런 다음 loss 함수를 등록하고, tensor flow의 모든 변수를 초기화 시킨다. tensor flow는 실제 session이 생성되고 run 함수가 호출되기 전까지는 어떤 계산도 이루어 지지 않는다. 위의 과정은 모두 data flow 그래프를 만드는 과정이고 실제 session.run이 일어.. 2016. 4. 9.