Wednesday, 24 February 2016

뉴럴 네트워크와 딥 러닝의 간략한 역사


뉴럴 네트워크와 딥 러닝의 간략한 역사



Linear Regression and Supervised Machine Learning
아래와 같이 그래프 상의 점들을 최대한 가깝게 지나는 선을 그어보자. 이제 이 선을 통해 우리는 어떤 입력값에 대해서도 결과값을 추측해 볼 수 있다(예를 들어, x 가 100일 때 y값이 얼마가 될지). 이것은 주어진 입력-출력 값들을 통해서 일반적인 함수를 추론하는 200년 역사의 테크닉, Linear Regression이다. 직접적으로 방정식을 구할 수는 없지만 입력-출력 데이터를 쉽게 구할 수 있는 문제에 적용할 수 있다.


Linear Regression로 음성인식과 같은 복잡한 문제를 풀기는 어렵지만, 이것의 기능은 근본적으로 Supervised Machine Learning과 같다. 주어진 training set(입력-출력 데이터)으로부터 함수를 '학습'하는 것이다. 


Perceptron and Neural Network
1957년 Frank Rosenblatt는 기계를 학습시키는 방법으로 Perceptron을 제안했다. 이는 인간 뇌의 뉴런이 어떻게 작동하는지 수학적으로 나타낸 모델로서 인접한 뉴런으로부터 이진 입력값을 받고, 각 입력값에 가중치(시냅스 연결 강도)를 곱해서 모두 더한 값이 일정 값 이상이면 1을 출력하고 그 이하이면 0을 출력한다.



Perceptron은 뉴런 모델이 OR/AND/NOT 함수를 만들어 낼 수 있다는 Mcculoch-Pitts 모델에 기반했기 때문에, 논리 추론을 통해 인공지능을 만들려는 접근이 대세던 당시에는 큰 사건이었다.
그러나 Mcculoch-Pitts 모델은 학습을 위한 메가니즘을 갖고 있지 않았다. Rosenblatt는 인공 뉴런이 학습할 수 있도록 입력값에 가중치를 주는 방법을 제안했다. 예를 들어 4라는 입력 값에는 9를 출력해야 하는 training set 데이터를 갖고 있을 경우. 4를 입력했는데 9보다 작은 값을 출력하면 가중치를 올리고, 9보다 높은 값을 출력하면 가중치를 내리는 식이다. 그리고 출력값에 에러가 없을 때까지 이를 반복하면서 최적의 함수를 찾는다. 이 함수는 두 가지 경우의 결과 0 혹은 1을 갖기 때문에 Classification에 속한다. 
그런데 하나의 Perceptron으로는 카테고리를 여러개로 나누는 문제를 해결할 수 없다. 숫자 인식의 경우 10개의 카테고리로 나눌 수 있어야 한다. 이는 여러개의 Perceptron을 갖는 layer를 사용하면 된다. Perceptron 레이어들이 바로 뉴럴 네트워크이다.




Multilayer Neural Nets
1969년 Marvin Minsky는 Perceptron의 한계를 지적한다. 그 중 중요한 것은 Perceptron으로는 XOR 함수를 학습할 수 없다는 것이다. 그것은 선형적으로 분리되지 않기 때문이다. 1970년대에 첫번째 AI Winter가 도래하는 데 이와 같은 Marvin Minsky의 주장이 크게 영향을 끼친것으로 알려진다.
Marvin Minsky는 Perceptron의 한계를 지적만 한 것이 아니라, 이를 해결하기 위해서는 멀티 레이어의 Perceptron을 사용해야 한다고 주장했다.


문제는 Rosenblatt의 학습 알고리듬이 멀티 레이어에는 작동하지 않는다는 것이다. 이 학습 알고리듬은 아웃풋 결과를 바탕으로 가중치를 조절하는 것이었는데, 레이어가 많아지면 어떤 것을 조절해야 하는지 알기 어렵기 때문이다.
1980년대 backpropagation이 나오면서 이 문제가 해결된다. 1989년 뉴럴 넷은 이론적으로 모든 function을 구현할 수 있다는 것이 수학적으로 증명되었다.
1989년 벨 연구소의 Yann LeCun 등이 뉴럴 넷을 사용해서 우편번호를 인식했다.

Convolutional Neural Network(CNN): 전통적으로 패턴 인식을 할 때 로컬 피처를 추출하면 이점이 있다고 알려져 있는데, 이를 뉴럴 네트워크에 구현할 수 있다. hidden layer로 하여금 전체 정보가 아닌 로컬 정보만 처리하도록 한 후 정보를 합치는 것이다. 그리고 여기서 추출된 피처는 다음 레이어에서 더 복잡한 피처를 찾는 데 이용된다. 따라서 계산량이 줄어든다.

Recurrent Neural Network(RNN): output을 첫번째 레이어의 input으로 줌으로써 메모리 없이도 이전 인풋에 대한 값을 가질 수 있음. 이것은 sequential 데이터 처리가 필요한 음성인식에 사용.

Unsupervised learning: 일반 머신 러닝에는 레이블된 트레이닝 데이터 (input, output pair)가 필요한 반면, 이것이 필요없는 unsupervised learning도 있다. 예를 들어 compression. 인풋만 주고 이를 재구성할 수 있는 layer(인풋보다 적은 수의 뉴런을 가진)를 만드는 것. 또는 clustering.



Deep Learning
Backpropagation은 CNN과RNN에서 문제가 있었다. 이 방식은 결과의 에러를 이전 레이어로 거슬러가며 추적하는 것인데, 레이어가 많을 경우 error가 사라지거나 폭발하는 현상이 일어난 것이다. 보완하는 방법들이 제안되었지만 많은 컴퓨팅을 요했다. 두 번째 AI winter을 맞게 된다. 연구비 지원이 사라지고 뉴럴 네트워크를 주제로 한 논문은 출판도 되지 않았다. 
Neural Net이라는 용어가 Deep Learning으로 리브랜딩 된다.
2006년 Hinton, Simon Osindero, and Yee-Whye Teh는 뉴럴 네트워크 분야의 돌파구가 되는 논문 'A fast learning algorithm for deep belief nets'를 출판한다.
이름보다 더 중요한 것은 아이디어인데, 초기 가중치가 무작위가 아니라 제대로 주어지면 많은 레이어를 가진 뉴럴 네트워크가 실제로 학습이 잘 된다는 것이다. 그 방법은 각 레이어를 unsupervised learning으로 학습을 시켜서 가중치를 설정한 후, 기존 방식으로 supervised learning으로 학습을 시키는 것. 
MNIST에서도 좋은 성능을 보였고, 음성 인식도 향상되었다. 여기에는 알고리듬 영향도 있지만 그간 컴퓨팅 파워가 늘었다는 것도 큰 몫을 차지한다. CPU의 발전에는 한계가 있었는데 GPU를 사용해서 뉴럴 네트워크를 학습시키는 방법 등장(한 논문에서는 cpu보다 70배 빠른 것으로 나타남)한다.  그간 알고리듬 개발에 비해 대량의 데이터를 사용하는 것과 속도 빠른 프로세서를 사용하는 것은 크게 고려가 안되었는데, 특별한 것 없이 큰 뉴럴 네트워크, GPU, 많은 데이터를 사용하는 것만으로도 성능을 향상시킬 수 있다는 것이 드러남. 딥러닝이 머신 러닝의 대세로 자리 잡으며 인공 지능의 새로운 역사를 쓰고 있다.

Deep Learning =
Lots of training data + Parallel Computation + Scalable, smart algorithms


Recent Achievements
2009년 Deep Learning 처음으로 공식적인 국제 패턴 인식 대회에서 우승한다.
2011년 Deep Learning 패턴 인식에서 인간을 넘어서는 성능 발휘 (인간보다 2배).
2012년 Deep Learning 사물인식 대회에서 우승.
2013년 Deep Learning  TIMIT phoneme recognition에 기록 경신, 수기 중국어 문자 인식에서 인간 수준의 능력을 보이며 기록 경신 등


-
다음의 글을 요약 정리했다.
A 'Brief' History of Neural Networks and Deep Learning
http://www.andreykurenkov.com/writing/a-brief-history-of-neural-nets-and-deep-learning/

Recent Achievements는 다음 글을 참고했다.
My First Deep Learning System of 1991 + Deep Learning Timeline 1962-2013
http://arxiv.org/pdf/1312.5548.pdf

No comments:

Post a Comment