안녕하세요. 문범우입니다.
이번 포스팅에서는 딥러닝의 기본 개념으로써 딥러닝의 시작과 XOR문제, 그리고 '딥'의 출현에 대해서 이야기 해보도록 하겠습니다.
* 해당 포스트의 모든 내용은 김성훈 교수님의 '모두를 위한 딥러닝'을 바탕으로 제작되었습니다.
관련한 상세 내용은 아래 링크를 참고해주세요.
1. 딥러닝의 시작
많은 과학자들은 인간이 고민하고 어려워 하는 문제들에 대해서 기계가 해결시켜주기를 바랬습니다.
그리고 그 시작으로 먼저 인간의 뇌를 분석하기 시작했습니다.
그리고 분석된 뇌에 대해서 수학적으로 식을 세우고, 풀어냈습니다.
이를 간단히 하여 위와 같은 그림으로 나타내게 되었습니다.
지난 포스팅들에서도 확인했던 그림들입니다.
그리고 이러한 구조를 직접 하드웨어를 통해 만들기도 하였습니다.
57년도에 Frank 박사님께서 하드웨어로써 이를 구성하기도 하면서 많은 사람들이 이에 대한 꿈을 꾸기 시작했습니다.
그리고 58년도에 NewYork Times에는 이러한 기계들이 스스로 학습하며 보고, 듣고, 말하고, 심지어 스스로를 인지한다는 말까지 하게 되었습니다.
이러한 상황은 역시나 많은 사람들의 관심을 갖게되는 시작이 되었습니다.
그 시작으로 x1과 x2에 대해서 AND와 OR에 대한 답을 내는 문제를 풀기 시작했습니다.
그리고 그 문제들을 풀면서 굉장한 희망을 갖게되었지만,
다시 한번 좌절을 겪게 되는 문제가 있었습니다.
그 문제는, 매우 간단하지만 이전과 다른 XOR문제 이었습니다.
즉, 그전의 AND와 OR문제에 대해서는 linear하게 선을 그어서 문제를 해결할 수 있었지만 XOR문제에 있어서는 어떤 linear한 선을 그어도 그 정확도가 매우 낮을 수 밖에 없었습니다.
그리고 69년도에 MIT AI lab에 있었던 Minsky교수는 이를 수학적으로 풀 수 없는 문제임을 증명합니다. 동시에 MLP(Multilayer perceptrons, Multilayer neural nets) 이 필요하지만 각각의 layer에 대해서 아무도 학습시킬 수 없다고 이야기합니다.
그리고 74년도, Paul Werbos 박사님과 86년도 Hinton 박사님에 의해서Backpropagation 이라는 개념이 등장면서 XOR을 포함한 더 복잡한 문제들을 해결할 수 있게 되었습니다.
또한 LeKun 박사님에 의해서 Convolution Neural Networks 라는 알고리즘이 개발되기도 하였습니다.
기존에는 forward 방식으로 학습을 진행하는 방식이었는데 이러한 방법에서는 앞에서 부터 에러를 수정하는 등의 방법이 어려웠지만 Backpropagation 에서는 에러를 검출하고 그곳에서 부터, 즉 backward 방식으로 에러를 수정하는 알고리즘입니다.
그리고 Convolutional Neural Networks 란 어떤 이미지에 대해서 한번에 인식하게끔 하는 것이 아니라, 부분부분으로 나눠서 이를 학습하고 나중에 합치는 방법입니다.
우리가 흔히 알고있는 '알파고' 또한 이러한 방식의 AI입니다.
그렇지만, 95년도에 다시 한번 큰 문제에 부딪히게 됩니다.
그 동안 진행했던 Backpropagation 은 간단한 문제들을 해결 할 수 있었지만, 우리가 실질적으로 해결하고자 하는 복잡한 문제들에 대해서는 앞에서 발생한 에러를 뒤로 보내다 보니 이 에러의 신호가 너무 약해져 뒤에 가서는 무의미해지게 됩니다. 즉, 복잡한 문제에 대한 훈련을 할 수록 성능이 더 떨어지게 됩니다.
또한 LeKun 교수님께서도 오히려 다른, 랜덤 방식의 알고리즘들이 더 성능이 좋다고 하면서 다시한번 AI분야에 대한 열기가 식게 되었습니다.
2. CIFAR 와 '딥'의 출현
이러한 찬바람 속에서 등장한 단체가 있었습니다.
바로 CIFAR 라는 캐나다에 위치한 단체인데, 이 단체는 당장 지금 돈이 되지 않아도 연구를 하라는 등의 지원을 했습니다.
그리고 Hinton 교수님은 이 단체가 위치한 캐나다로 이주하게 됩니다.
그리고 마침내 2006년, 2007년에 Hinton 교수님과 Bengio 교수님의 논문들을 통해 큰 돌파구가 생기게 됩니다.
그 전에는 우리가 매우 '딥'한 문제들에 대해서 학습을 시키는데 문제가 발생했는데 2006년 논문에서, 우리가 이러한 문제들이 생기는 이유는 초기값을 제대로 설정하지 못해서라고 이야기를 합니다.
그리고 2007년에는 그 초기값문제가 맞으며 한걸음 더 나아가 깊은 '딥'한 문제를 풀수 있음을 보여주게 됩니다.
그리고 이때, Neural Nets 가 아닌, 새로운 이름 Deep Nets, Deep Learning 으로 새로운 시작을 하게 됩니다.
그리고 실제로 더 주목을 받게되는 계기는 ImageNET이라는, 이미지를 보고 컴퓨터가 무엇인지 맞추는 문제에서 입니다.
그 전에는 매년 1~2%의 오차율을 감소시키며 2011년 기준으로 약 26%의 오류를 가지고 있었지만 2012년 Hinton 교수님의 연구실에 있는 박사과정 학생이 오류를 15%로 떨어뜨리게 됩니다.
이는 2015년, Deep Learning 기술을 기반으로 해서 약 3%대의 오류를 가지게 됬는데, 이때 사람의 오류는 약 5%였다고 합니다.
그리고 이후에는 컴퓨터가 단순히 이미지를 맞추는 것이 아니라 이미지에 대해 설명을 하는 기술까지 개발이 되었습니다.
그리고 이후 Hinton 교수님은 우리가 왜 그전에는 잘 하지 못했을까에 대해 4가지 문제를 이야기합니다.
이제 이러한 것들에 대해서 천천히 이야기를 해보도록 하겠습니다.
그리고 다음 포스팅에서는 우리가 직접 XOR문제를 딥러닝으로 해결해보도록 하겠습니다.
'AI & BigData > 모두를 위한 딥러닝(정리)' 카테고리의 다른 글
딥러닝(DeepLearning) #2_ XOR using Neural Nets(NN) (0) | 2018.04.12 |
---|---|
텐서플로우(Tensor Flow) #11_ TensorFlow Manipulation (0) | 2018.04.11 |
텐서플로우(Tensor Flow) #10_ MNIST data (0) | 2018.04.10 |
텐서플로우(Tensor Flow) #9_ Learning rate, Evaluation (0) | 2018.04.09 |
머신러닝(ML) #10_ Learning and test data sets (0) | 2018.04.07 |