딥러닝의 기본 개념, 역사
딥러닝은 사람의 뇌를 흉내내기 위해 분석하면서부터 만들어지기 시작했다.
뇌를 관찰한 결과, 주요한 특징은 다음과 같았다.
1) 매우 복잡하게 연결되어 있다.
2) 연결되는 사이 뉴런이라는 unit이 굉장히 단순하게 동작한다.
뉴런이 동작하는 순서는 다음과 같았다.
1) input이 있고, input의 길이에 따라 신호의 양이 달라진다. x * w(weight) 비율로 나타낼 수 있다.
2) 모든 input이 다 합쳐지고 bias가 더해져서 어떤 값이 만들어진다.
3) 이 값이 일정 기준 이상이 되면 뇌가 활성화되고, 기준 이하일 때는 활성화되지 않는다.
사람들이 이 과정을 이해하고 비슷하게 만든 것이 Activation function이다.
Activation 함수는 뉴런의 동작 과정과 유사하게 신호가 들어오면 x * w를 모두 더하고 bias를 합한다.
그 값에 activation 함수를 적용한 최종 값이 어떤 기준을 넘으면 1, 넘지 않으면 0을 출력한다.
이것을 1957년 Frank Rosenblatt가 하드웨어로 이것을 구현했고,
1960년 Adaline/Madaline이 bias를 조정하기 위한 버튼이 있는 하드웨어를 구현했다.
58년도 뉴욕 타임즈에 Frank는 이것이 곧 스스로 걷고, 말하고, 듣고, 쓰고, 심지어 자기 생산, 자기 존재 인식을 할 수 있게 될 것이라고 예언하면서 Neural Network에 대한 관심이 높아졌다.
그러나 이 기계를 통해 AND/OR 을 예측할 수 있었지만, XOR 형태의 로직을 예측하지 못했다.
그 이유는 위처럼 그래프에 리니어한 선을 그어서 값을 예측할 수 없기 때문이었다.
많은 시도들이 실패했으며, Marvin Minsky가 69년도에 XOR을 풀 수 없다고 수학적으로 증명했다.
구체적으로 MLP(Multi Layer Perceptron)를 이용하면 할 수 있긴 하지만, weight과 bias를 학습시킬 수 없다는 내용이었다.
이 증명을 계기로 딥러닝이 10~20년 후퇴하게 된다.
74년도에 Paul Werbos가 이것을 해결한다.
출력이 실제 값과 다를 경우 Weight와 bias를 수정할 때, Backpropagation을 이용해 할 수 있다고 주장했다.
86년도에 Hinton이 같은 방법을 독자적으로 만들어 냈고, 조금 더 복잡한 형태의 망을 구축할 수 있게 되었다.
한편으로 Lecun 교수는 고양이가 그림을 볼 때 시신경을 통해 뉴런의 동작 과정을 살펴보았다.
각 그림에 따라 다른 뉴런이 활성화되는 것을 확인했다.
신경망 전체가 동시에 한 가지를 학습하는 것이 아니라, 각각 학습된 일부분의 신경망들이 조합진다는 새로운 시각을 소개했다.
이는 그림을 부분적으로 잘라서 다중 레이어로 학습을 시키고, 추후에 합치는 방법이었다.
알파고가 이 방법을 사용하였고, 90% 이상의 정확도를 만들 수 있었다.
다시 딥러닝의 인기가 높아졌고, 84년부터 94년 사이에 자율주행차가 만들어져서 어느 정도의 성공을 거두었다.
터미네이터 2에도 자신의 CPU가 neural-net으로 이루어졌다고 하는 대사가 있을 정도였다.
그러나, Backpropagation 알고리즘에 치명적 단점이 발견된다.
W과 b를 수정하기 위해 뒤에서 앞으로 오류를 전달할수록 의미가 약해져서 앞쪽까지 전달이 잘 되지 않는다는 문제가 있었다.
따라서 많이 진행될 수록 오히려 성능이 떨어지는 결과를 낳았다.
게다가 95년도에 Lecun 교수가 어떻게 보면 Neural Network보다 단순한 알고리즘인 SVM, RandomForest가 더 잘 동작한다는 말을 남겼고, 딥러닝은 또 다른 침체기를 겪게 된다.
이러한 시기에도 CIFAR라는 단체를 통해 연구가 지속되었다. (이 단체는 돈이 되지 않는 연구도 진행할 수 있도록 장려했다.)
따라서, 10년 정도의 시간이 지나고 2007년 Hinton, Bengio가 큰 Breakthrough(돌파구)가 되는 논문을 발표한다.
2006년 논문에서는 굉장히 딥한 신경망은 학습할 수 없다고 했는데, 처음에 weight을 설정할 때 초기값을 잘 선택하면 학습이 잘 일어난다는 것을 발표했다.
2007년에는 이러한 신경망을 통해 복잡한 문제를 풀 수 있다는 것을 발표했다.
또한, 새로운 연구처럼 보이기 위해 Neural Network -> Deep Learning 이라는 용어를 사용한다.
비슷한 시기에 IMAGENET이라는 Challenge에서 주목할만한 성과가 나타난다.
Image Recognition이 매년 에러율이 줄어들다가 2012년에 Convolutional Neural Nets을 이용해 26.2% -> 15.3%로 에러가 줄어들게 된다.
2015년에는 3%의 에러율을 구현하게 되었고, 그림이 무엇인지 맞추는 것 뿐만 아니라 무엇인지 설명할 수 있게 되었다.
이 시기에 Deep API Learning이라는 주목할만한 기술도 소개되었다.
예를 들어, 'file을 copy해서 원하는 곳에 저장하고 싶다'는 것을 자연어로 얘기하면, 어떤 API를 어떤 순서로 써야하는지를 자동으로 판단하여 프로그램이 완성된다.
이 기술도 초반엔 20%에서 60% 정도의 정확도를 구축할 수 있게 되었다.
Why should I care?
유튜브 자막은 사람이 입력해서 나오는게 아니라 소리를 듣고 자동으로 나오는 것이다.
Facebook은 관심이 있는 feed만 학습해서 보여준다.
구글은 키워드와 함께 클릭할만한 문서를 학습을 통해 예측해서 보여준다.
아마존, Netflix는 추천 시스템을 이용해 성장한 회사 중 하나이다.
=> 비즈니스에 딥러닝을 적용하면 매출을 올릴 수 있다.
Why now?
지금 시작해도 세계적인 전문가가 되기에는 늦지 않았다.
수학적으로 복잡하지 않아서 누구나 시작해볼 수 있다.
현재 딥러닝은 90% 정도의 정확도를 구현하므로 실용적으로 사용할 수 있다.
파이썬, Tensorflow와 같은 쉬운 도구가 있다.