본문 바로가기

[ 프로그래밍 ]/신경망(Neural Network)

딥러닝

딥 러닝[각주:1](Deep learning)은 여러 비선형 변환기법의 조합을 통해 높은 수준의 추상화(abstractions, 다량의 데이터나 복잡한 자료들 속에서 핵심적인 내용 또는 기능을 요약하는 작업)를 시도하는 기계학습(machine learning) 알고리즘의 집합[각주:2]으로 정의 되며, 큰틀에서 사람의 사고방식을 컴퓨터에게 가르치는 기계학습의 한 분야라고 이야기 할 수 있다. 


어떠한 데이터가 있을 때 이를 컴퓨터가 알아 들을 수 있는 형태(예를 들어 이미지의 경우는 픽셀정보를 열벡터로 표현하는 등)로 표현(representation)하고 이를 학습에 적용하기 위해 많은 연구(어떻게 하면 더 좋은 표현기법을 만들고 또 어떻게 이것들을 학습할 모델을 만들지에 대한)가 진행되고 있으며, 이러한 노력의 결과로 deep neural networks, convolutional deep neural networks, deep believe networks와 같은 다양한 딥러닝 기법들이 컴퓨터비젼, 음성인식, 자연어처리, 음성/신호처리 등의 분야에 적용되어 최첨단의 결과들을 보여주고 있다.


최근 이슈는 아무래도 스탠포드대학의 Andrew Ng과 Google이 함께한 딥러닝 프로젝트인데, 2012년 16,000개의 컴퓨터 프로세스와 10억 개 이상의 neural networks 그리고 DNN(deep neural networks)을 이용하여 유튜브에 업로드 되어 있는 천만 개 넘는  비디오 중 고양이 인식에 성공한 내용[각주:3]으로 이 소프트웨어 프레임워크를 논문에서는 DistBelief로 언급하고 있다[각주:4]. 이뿐만 아니라 Microsoft, Facebook[각주:5] 등도 연구팀을 인수하거나 자체 개발팀을 운영하면서 인상적인 업적들을 만들어 내고 있다.


(본 글은 '위키백과, 우리 모두의 백과사전'의 '딥러닝'과 함께 업데이트 합니다. by 마틴)



1. 딥러닝의 역사


MIT가 2013년을 빛낼 10대 혁신기술 중 하나로 선정[각주:6]하고 가트너(Gartner, Inc.)가 2014 세계 IT 시장 10대 주요 예측[각주:7]에 포함시키는 등 최근들어 딥러닝에 대한 관심이 높아지고 있지만 사실 딥러닝 구조는 인공신경망(ANN, artificial neural networks)에 기반하여 설계된 개념으로 역사를 따지자면 최소 1980년 Kunihiko Fukushima에 의해 소개 된 Neocognitron[각주:8]까지 거슬러 올라가야 한다.


1989년에 Yann LeCun과 그의 동료들은 오류역전파 알고리즘[각주:9] [각주:10](backpropagation algorithm)에 기반하여 우편물에 손으로 쓰여진 우편번호를 인식하는 deep neural networks를 소개[각주:11]했다. 알고리즘이 성공적으로 동작했음에도 불구하고, 신경망 학습에 소요되는 시간(10 개의 숫자를 인식하기 위해 학습하는 시간)이 거의 3일이 걸렸고 이것은 다른분야에 일반적으로 적용되기에는 비현실적인 것으로 여겨졌다. 


많은 요소들이 느린 속도에 원인을 제공했는데, 그 중 하나는 1991년  Jürgen Schmidhuber의 제자였던 Sepp Hochreiter에 의해 분석된 vanishing gradient problem(지역최소값에 머무르게 되는 원인)이었다[각주:12] [각주:13]. 또한 불연속 시뮬레이션에서 초기 상태를 어떻게 선택하느냐에 따라 수렴이 안되고 진동 또는 발산하는 문제, 트레이닝셋에 너무 가깝게 맞추어 학습되는 Overfitting 문제, 원론적으로 생물학적 신경망과는 다르다는 이슈들이 끊임 없이 제기되면서 인공신경망은 관심에서 멀어졌고 90년대와 2000년대에는 SVM(support vector machine) 같은 조금은 단순한 기법(shallow learning이라 표현)들이 각광받게 된다.


본격적으로 딥러닝이란 용어를 사용한 것은 2000년대 중반 딥러닝의 중흥기를 이끌어간다고 평가할 수 있는 Geoffrey Hinton[각주:14]과 Ruslan Salakhutdinov에 의해서이며, 기존 신경망의 Overfitting 문제를 해결하기 위해 이들은 unsupervised RBM(restricted Boltzmann machine)을 통해 학습시킬 feedforward neural network의 각 층을 효과적으로 사전훈련(pre-trainning)하여 overfitting을 방지할 수 있는 수준의 initialize point를 잡았고, 이를 다시 supervised backpropagation를 사용[각주:15]하는 형태로 학습을 진행한다.


또한 가장 최근인 2013년, 신호처리학회인 ICASSP에서 RBM을 대체하여 overfitting을 방지할 수 있는 Drop-out[각주:16]이라는 개념이 소개되면서 사전훈련 보다 훨씬 더 간단하고 강력한 형태로 overfitting을 방지할 수 있게 되었다.



2. 왜 다시 딥러닝인가?


딥러닝이 부활하게 된 이유는 크게 세 가지로 꼽힌다. 

첫 번 째는 앞서 딥러닝의 역사에서 언급한 바 있는 기존 인공신경망 모델의 단점이 극복되었다는 점이다. 그러나 overfitting 문제만 해결되었다고 해서 느린 학습시간이 줄어드는 것은 아니다. 

두 번 째 이유로, 여기에는 하드웨어의 발전이라는 또다른 요인이 존재 한다. 특히 강력한 GPU(graphics processing unit)들은 복잡한 매트릭스와 벡터 계산이 혼재해 있는 경우 몇 주 걸리던 작업을 몇 일 사이로 줄이는 등 최고의 성능(GeForce GTX Titan의 경우 계산이 가능한 CUDA core가 무려 2688개 존재[각주:17])을 발휘하고 있다. 

마지막으로 언급하지만 가장 중요한 세 번 째 이유로 Big Data를 들 수 있다. 대량으로 쏟아져 나오는 데이터들, 그리고 그것들을 수집하기 위한 노력 특히 SNS 사용자들에 의해 생산되는 다량의 자료와 태그정보들 모두가 종합되고 분석 되어 학습에 이용될 수 있다.

- 인공신경망의 학습에 사용되는 트레이닝벡터는 이름이 붙어 있는(labeled) 데이터여야 하는데(supervised learning의 경우) 대량의 트레이닝셋 모두에 label을 달아주는 일은 불가능한 일이다. 이런 이유로 초기 학습에 사용되는 일부 데이터에 대해서만 지도학습(supervised learning)을 수행하고 나머지 트레이닝셋에 대해서는 비지도학습(unsupervised learning)을 진행하며, 학습된 결과는 기존 학습의 결과와 앞서 분석된 메타태그 정보들을 종합하여 인식기가 완성 된다.


딥러닝의 부활 이후 다양한 분야, 특히 자동 음성 인식(ASR, automatic speech recognition)과 컴퓨터비전 분야에서 최고수준의 성능을 보여주고 있으며 이들은 보통 딥러닝의 새로운 응용들의 지속적인 성능 향상을 위해 만들어진 TIMIT(Texas Instruments와 MIT가 제작한 음성 Database), MNIST(이미지 클러스터링을 위한 hand-written 숫자 이미지 database로 National Institute of Standards and Technology가 제작) 등의 데이터베이스를 사용했다. 최근에는 convolution neural networks 기반의 딥러닝 알고리즘이 가장 뛰어난 성능을 발휘하고 있으나, 안타깝게도 컴퓨터비전 쪽 과제보다는 음성인식 쪽에서 많은 발전을 이루고 있다.



3. 딥러닝 구현




주요 링크 


  • http://neuralnetworksanddeeplearning.com/
  • http://www.deeplearning.net/tutorial/
  • http://theanalyticsstore.com/deep-learning/
  • http://deview.kr/2013/detail.nhn?topicSeq=39
  • http://www.toptal.com/machine-learning/an-introduction-to-deep-learning-from-perceptrons-to-deep-networks



각주


  1. deep을 한국어로 표현할 때 '깊은' 보다는 '심층' 또는 '심화'라는 표현이 적절해 보인다. [본문으로]
  2. Y. Bengio, A. Courville, and P. Vincent., "Representation Learning: A Review and New Perspectives," IEEE Trans. PAMI, special issue Learning Deep Architectures, 2013 [본문으로]
  3. How Many Computers to Identify a Cat? 16,000 http://www.nytimes.com/2012/06/26/technology/in-a-big-network-of-computers-evidence-of-machine-learning.html?_r=2&& [본문으로]
  4. http://cs.stanford.edu/people/ang/?portfolio=deep-learning-and-unsupervised-feature-learning [본문으로]
  5. http://techcrunch.com/2013/12/09/facebook-artificial-intelligence-lab-lecun/ [본문으로]
  6. MIT, 올해의 10대 혁신기술 선정 http://news.donga.com/3/all/20130426/54713529/1 [본문으로]
  7. 가트너, 2014 세계 IT 시장 10대 주요 예측 발표 http://www.acrofan.com/ko-kr/commerce/news/20131013/00000015 [본문으로]
  8. Neocognitron: A Self-organizing Neural Network Model for a Mechanism of Pattern Recognition Unaffected by Shift in Position http://www.cs.princeton.edu/courses/archive/spr08/cos598B/Readings/Fukushima1980.pdf [본문으로]
  9. https://ko.wikipedia.org/wiki/오류역전파_알고리즘 [본문으로]
  10. P. Werbos., "Beyond Regression: New Tools for Prediction and Analysis in the Behavioral Sciences," PhD thesis, Harvard University, 1974. [본문으로]
  11. LeCun et al., "Backpropagation Applied to Handwritten Zip Code Recognition," Neural Computation, 1, pp. 541–551, 1989. https://www.ics.uci.edu/~welling/teaching/273ASpring09/lecun-89e.pdf [본문으로]
  12. S. Hochreiter., "Untersuchungen zu dynamischen neuronalen Netzen," Diploma thesis. Institut f. Informatik, Technische Univ. Munich. Advisor: J. Schmidhuber, 1991. [본문으로]
  13. S. Hochreiter et al., "Gradient flow in recurrent nets: the difficulty of learning long-term dependencies," In S. C. Kremer and J. F. Kolen, editors, A Field Guide to Dynamical Recurrent Neural Networks. IEEE Press, 2001 [본문으로]
  14. http://www.wired.com/2013/03/google_hinton/ [본문으로]
  15. G. E. Hinton., "Learning multiple layers of representation," Trends in Cognitive Sciences, 11, pp. 428–434, 2007. [본문으로]
  16. G. Dahl et al., "Improving DNNs for LVCSR using rectified linear units and dropout," ICASSP', 2013. [본문으로]
  17. http://www.hardwarecanucks.com/forum/hardware-canucks-reviews/59785-nvidia-geforce-gtx-titan-6gb-performance-review.html [본문으로]