[Tensorflow] 2-1 DNN 기초

DNN
가장 기본이되는 Nerual Network에 대해 공부해보자

Simple AND/OR problem



AND/OR 연산을 구현하기는 위에 보기와 같이 굉장히 쉽다. 

하지만 XOR 연산을 구현하는 것은 어떨까? 눈으로 보기에도 그래프에 선 하나를 그어 연산을 구현하기에는 어려워보인다. 인공지능에 대한 관심이 커져감에 따라 개발자들은 XOR연산을 구현하는 모델을 만드는데 주력했으나, Marvin Minsky (MIT AI lab 창시자) 교수는 이것이 구현 불가능하다는 것을 수학적으로 증명하였고, 대신 MLP 개념을 제시한다. MLP:Multilayer Neural Nets. 판단을 수행하는 단계가 하나가 아닌 여러개가 된다면 연산이 가능하다는 말이다.

하지만 Minsky 교수가 발표한 책에서 그는 'No one on earth had found a viable way to train.'이라고 한다. MLP의 문제점은 각 layer에서의 Weight와 bias를 학습시킬 방법을 찾지 못한다는 것이다. 이 책은 발표되어 엄청난 파장을 불러일으켰고 엄청나게 많은 사람들이 MLP는 구현 불가능하다는 것을 믿게된다. 이는 결국 AI의 발전에 있어서 짧게는 10년 길게는 20년의 발전을 늦췄다고들한다.

그리고 1982년 이 문제가 해결된다. 사실상 1974년도에 Paul Werbos가 자신의 논문에서 'Backpropagation'이라는 개념에 대해 이야기 하지만, 당시 사람들이 크게 관심을 가지지 않았다. 이후 1982년에 이 개념에 관한 논문을 다시 발표하지만 이번에도 큰 관심은 끌지 못한다. 1986년 Hinton은 Backpropagation에 대해 독자적으로 이 방법을 발표하고 사람들은 그가 엄청난 re-discovery를 해냈다고 한다. 이번에는 사람들이 엄청난 관심을 가졌고 Hinton이 ai 분야에 있어 큰 발전을 이뤄냈다고 할 수 있다.

Backpropagation은 생각보다 단순하다. 예측이 틀릴 경우 W,b 를 조정해야하는데 이를 학습을 수행하면서(forward) 하기 힘들다면 측정된 error값 만큼 backward 방향으로 고쳐가는 것이다.

CNN ( Convolutional Neural Networks)
사람의 신경망을 연구해본 결과, 우리는 한번에 무언가에 대한 인식이 일어나는 것이 아니라, 부분부분을 각 레이어에 보내면 그것이 합쳐져서 최종 결정이 정해진다. Backpropagation을 이용하여 책의 문자를 인식하여 음성으로 읽어주는 책 등 여러가지가 발명되었지만 ai 연구는 또다른 큰 문제에 봉착하게된다.
더 복잡한 문제들을 해결하기 위해서는 더 많은 레이어를 의사결정에 사용하게 되는데 Backpropagation알고리즘은 에러값을 뒤에서 앞 레이어로 보내는 과정에서 레이어를 지나갈수록 그 의미를 잃게 되어 첫 레이어로 가면 거의 힘을 잃게된다.


그리하여 주목받은 것이 더 단순한 알고리즘들인, SVM, RandomForest 등이다. 몇 연구자들이 단순한 알고리즘이 CNN보다 정확한 결과를 가져온다고 발표함에 따라 CNN은 또다른 침체기에 접어들게된다.

CIFAR : Canadian Institue for Advanced Research
CIFAR 단체는 CNN 연구에 많은 기여를 했다. Neural Netowrk 연구에 진전이 없더라도 연구의 지원을 멈추지 않았다. 현재 많은 AI 연구자들이 Canada 출신인 것도 이 단체의 덕분이 아닐까 생각한다. 
2006년과 2007년 AI계에 엄청난 Breathrough를 가져온 Hinton과 Bengio의논문이 발표된다. 2006년도 논문에서 말하고자 하는 것은, 불가능 하다고 생각했던 각 layer의 W,b의 학습이 초기값만 잘 선택한다면 학습이 가능하다는 것이다. 2007년 논문에서는 이 내용을 확인하고 여기서 더 나아가 더 많은 layer를 통해 deep 한 학습을 시키면 더 복잡한 의사결정이 가능하다고 말한다. 여기서 또한번 주목을 받으면서 Neural Network는 Deep Learning이라는 이름으로 바뀌어 세상에 널리 퍼지게된다.

Deep learning 을 이용해 만들 application중 하나는 Deep API이다. 예를 들어 사용자가 '이 파일을 복사해서 이 경로에 저장해줘' 라고 명령한다면 이 작업을 위해 필요한 API를 컴퓨터가 직접 알아내 작업을 수행하는 프로그램이다. 기존에도 존재했지만 딥러닝이 나오기 이전에는 그 정확도가 20퍼센트 정도에 머무르면서 그리 유용하게 쓰일 수 없었지만, 딥러닝을 이용한 해당 application은 그 정확도가 80 퍼센트에 육박하게되어 유용하게 쓰이고 있다.


No comments:

Powered by Blogger.