본문 바로가기

machine learning56

[TENSOR FLOW]Tensorflow 설치하기 아래의 명령어를 실행하여 tensorflow docker 이미지를 가져온다. $> sudo docker pull b.gcr.io/tensorflow/tensorflow-full 여기서 참고로 docker는 반드시 sudo 권한에서만 작동되기 때문에 user를 sudo 권한으로 만들어 주거나 docker 그룹에 해당 user를 추가해 주면 된다. docker 그룹에 user를 추가하는 방법 $> vi /etc/group group 파일을 연 후, docker:x:999: 이렇게 써있는 부분에 , 해당 유저 id를 추가해 주면 된다. ex) docker:x:999:test1,test2,test3 image 파일을 다 받았으면 이제 docker 컨테이너를 시작해보자. $> docker run -it -p 99.. 2016. 4. 8.
[PYSPARK] linear regression 이번 시간에는 pyspark를 이용하여 linear regression을 배워볼 것이며 million song dataset이라는 데이터를 사용하여 회귀분석을 할 것이다. 우선 가장 먼저 해야할 작업이 당연 spark context를 만드는 작업이다. from pyspark import SparkContextsc = SparkContext(); context 생성 후에 millionsong.txt 파일을 읽어온다. 이 때 분산 파티션은 2로 설정해준다. rawData = sc.textFile("millionsong.txt", 2) 읽어들인 rawData를 살펴보면 아래와 같음을 확인할 수가 있다. 이제 우리는 LabeledPoint라는 객체를 사용할 것이다. 이 LabeledPoint는 pyspark에서.. 2016. 4. 5.
A simple network to classify handwritten digits http://neuralnetworksanddeeplearning.com/ 의 e-book을 의역함. 이제 실제로 이미지를 인식해 보자. 이미지를 인식하는데 두가지 문제가 있다. 첫번째로 연속된 이미지의 형태를 각각의 단일 숫자 이미지로 나누어야 한다. 예를 들어 아래와 같은 연속된 이미지가 있다고 할때, 위의 이미지를 아래의 6개의 이미지로 나누어야 한다. 사람은 위의 문제를 쉽게 풀 수 있지만, 컴퓨터 프로그램으로 이를 정확하게 나누기가 어렵다. 일단 이미지가 잘 나뉘어졌다고 치면, 그 다음으로 각각의 숫자를 분류를 해야하는 문제를 가지고 있다. 만약 분류를 정확히 할 수 있다면 이미지 분할 문제는 그렇게 어렵지가 않다. 한가지 접근법으로 많은 유형의 분할된 이미지를 만들고 이 각각의 분할 이미지를 .. 2016. 1. 21.
The architecture of neural networks http://neuralnetworksanddeeplearning.com/ 의 e-book을 의역함. 이 전에 언급한 바와 같이 가장 최좌측의 레이어를 input layer라고 부르며 가장 오른쪽의 레이어를 output layer라고 부른다. output layer는 하나의 neuron만을 가진다. 중간에 있는 layer들은 hidden layer라고 부른다. hidden이라는 뜻이 무언가 엄청 그럴싸한 느낌을 주는 layer라고 생각할 수가 있겠지만 그냥 단지 input도 output도 아닌 존재를 hidden이라고 부를 뿐이다. 위의 네트워크는 하나의 hidden layer를 가지고 있지만, 다른 몇몇의 네트워크들은 다중의 hidden layer를 가질 수도 있다. 예를 들어 아래의 네트워크는 두 개.. 2016. 1. 20.
Learning with gradient descent http://neuralnetworksanddeeplearning.com/ 의 e-book을 의역함. 이번에는 우리가 만든 neuron network에서 숫자를 인식하기 위해 어떻게 학습을 시켜야 하는지를 살펴보자. 첫 번째로는 학습을 시키기 위한 data-set이 필요하며 우리는 MNIST data set을 이용할 것이다. 아래의 그림이 MNIST 데이터 set의 몇몇 데이타들이다. MNIST 데이터는 2가지로 나뉘는데 첫번째는 트레이닝 데이타로 쓰일 60000개 이미지이며, 이 이미지는 greyscale에 28 x 28 사이즈로 구성이 되어 있다. 두번째는 테스트 데이타로 쓰일 10000개 이미지이다. 이것 역시 28 x 28 greyscale 이미지로 되어 있다. 우리는 테스트 데이타를 사용해서 얼.. 2016. 1. 20.
Sigmoid neurons http://neuralnetworksanddeeplearning.com/ 의 e-book을 의역함. Sigmoid neurons 학습 알고리즘이란 단어는 매우 매력적이다. 예를 들어 input 데이터가 스캐너의 raw data라든지, handwritten된 숫자 이미지일 경우에, 숫자의 정확한 분류를 output으로 출력하기 위해 weight와 bias를 학습해야 할 것이다. 어떻게 학습이 이루어지는지를 확인하기 위해서, 네트워크의 몇몇의 weight 또는 bias를 약간 변경할 수 있다고 가정하자. 우리가 weight를 조금 변경하면 그와 일치하게 output도 변화가 일어날 것이다. 이러한 속성은 학습을 가능하게 한다. 만약에 weight 혹은 bias의 변화를 준 결과 값이 참이라면, 우리는 해당.. 2016. 1. 19.
perceptron http://neuralnetworksanddeeplearning.com/ 의 e-book을 의역함. Using neural nets to recognize handwritten digits 아래의 handwritten된 숫자가 있다고 고려하자 어떤 숫자가 써있느냐고 묻는다면, 대부분의 사람들은 504192라고 인식할 것이며, 엄청 쉬운 질문이라고 착각할 것이다. 하지만 사실은 그렇지가 않다. 사람이 가지고 있는 뇌에서는 V1으로 잘알려진 시각피질, 1억 4천개의 뉴런, 그리고 그들 사이의 수백억개의 연결 고리들을 가지고 있다. 또한 사람의 시각은 V1만 포함하고 있는게 아니라 V2,V3,V4,V5 전체를 포함하고 있으며 더 복잡한 이미치 처리를 수행한다. 우리는 시각적 세상을 이해하기 위해 최적으로 적.. 2016. 1. 14.
의사 결정 트리 이번에는 의사 결정 트리에 대해 알아보자. 의사 결정 트리는 약간 flow chart와 비슷하다. 어떤 입력 값에 대해 '참', '거짓'으로 분기를 타는 로직을 거쳐서 정답을 찾아나가는 과정이다. 이전 포스팅에서 언급한 kNN과는 어떠한 차이가 있을까?? kNN 같은 경우에는 모든 데이터에 대한 학습 데이터가 필요하다. 왜냐하면 데이터 하나하나 마다의 거리를 구해야 하기 때문이다. 하지만 decision tree 같은 경우에는 트리 모양만 만들어 주게 되면 따로 input 데이터가 들어왔을 시 kNN 처럼 일일이 계산을 해줄 필요는 없다. 그럼 이제 어떻게 decision tree를 만들어야 할 것인지에 대해 알아보기로 하자. decision tree를 설계하기 위해 엔트로피라는 단어가 나온다. 원래는 .. 2015. 8. 13.
k-Nearest Neighbors 알고리즘 기존의 데이터와 비교해서 입력이 들어왔을 때 이 입력 값이 기존의 데이터와 얼마만큼 연관 관계가 있느냐에 착안해서 만들어진 알고리즘. 입력 값이 들어왔을 경우 입력 값과 기존 데이터들과의 거리를 구하고, 가장 거리가 가까운 곳을 찾아서 비슷함을 찾아내는 방법이다.말로는 설명하기 어려우니 코드로 이해하자. 처음 코드를 보면 createDataSet이란 함수를 통해 사전 데이터 집합을 생성하였다. 사전 데이터는 [1.0, 1.1], [1.0, 1.0], [0, 0], [0, 0.1]의 값을 가지는 데이터이며 각각 'A','A','B','B'의 Label을 가진다.이렇게 데이터 셋을 생성한 후에, classify 함수를 호출하는데, classify 함수는 입력 데이터가 사전 데이터 셋과 비교하여 어떤 Labe.. 2015. 8. 12.