machine learning(56)
-
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.01.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.01.20 -
Sigmoid neurons
http://neuralnetworksanddeeplearning.com/ 의 e-book을 의역함. Sigmoid neurons 학습 알고리즘이란 단어는 매우 매력적이다. 예를 들어 input 데이터가 스캐너의 raw data라든지, handwritten된 숫자 이미지일 경우에, 숫자의 정확한 분류를 output으로 출력하기 위해 weight와 bias를 학습해야 할 것이다. 어떻게 학습이 이루어지는지를 확인하기 위해서, 네트워크의 몇몇의 weight 또는 bias를 약간 변경할 수 있다고 가정하자. 우리가 weight를 조금 변경하면 그와 일치하게 output도 변화가 일어날 것이다. 이러한 속성은 학습을 가능하게 한다. 만약에 weight 혹은 bias의 변화를 준 결과 값이 참이라면, 우리는 해당..
2016.01.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.01.14 -
의사 결정 트리
이번에는 의사 결정 트리에 대해 알아보자. 의사 결정 트리는 약간 flow chart와 비슷하다. 어떤 입력 값에 대해 '참', '거짓'으로 분기를 타는 로직을 거쳐서 정답을 찾아나가는 과정이다. 이전 포스팅에서 언급한 kNN과는 어떠한 차이가 있을까?? kNN 같은 경우에는 모든 데이터에 대한 학습 데이터가 필요하다. 왜냐하면 데이터 하나하나 마다의 거리를 구해야 하기 때문이다. 하지만 decision tree 같은 경우에는 트리 모양만 만들어 주게 되면 따로 input 데이터가 들어왔을 시 kNN 처럼 일일이 계산을 해줄 필요는 없다. 그럼 이제 어떻게 decision tree를 만들어야 할 것인지에 대해 알아보기로 하자. decision tree를 설계하기 위해 엔트로피라는 단어가 나온다. 원래는 ..
2015.08.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.08.12