딥러닝이란?
기계는 판단하는 기준이 명확히 정해져 있다.
하지만 사람은 대상을 판단하는 경계가 느슨하다. (추상적)
딥러닝의 신경망은 선형모델끼리 뉴런처럼 이루어져 있다.
선형모델을 전문가로 예시를 들어 보자면, 많은 모델(전문가)들의 의견이 종합적으로 판단되어 학습하고 예측한다는 것으로 생각을 하면 좀 더 이해가 쉬울 것이다.
그렇기 때문에 대량의 데이터에서 복잡한 패턴이나 규칙을 찾아내는 능력이 뛰어나다!
딥러닝의 활용 사례로는 아래에 보이는 사진처럼 대표적으로 3가지를 들수 있다.
역사로는 아래에 보이는 것과 같다.
생성적 적대 신경망 (Generative Adversarial Network) :
2014년에 이안 굿펠로우에 의해 발표된 이론으로 서로 경쟁하는 두 개의 신경 네트워크 시스템으로 구현하는 학습방법이 대표적이다.
대표적인 예시로는 지폐위조범(Generator)
은 경찰을 최대한 열심히 속이려고하고 다른 한편에서는 경찰(Discriminator)
이 이렇게 위조된 지폐를 진짜와 감별하려고 (Classify)
노력하는 것으로 들 수 있다.
학습 할 수 있는 로드맵은 많으니 아래 사진을 참고 하자.
사람이 정한 모델과 특징 추출 방법을 이용하여 데이터를 기반으로 학습해서 추론할 수 있게 하는 기술을 공통적으로 보고 있다.
머신러닝은 주어진 데이터를 인간이 먼저 처리한다.
사람이 먼저 컴퓨터에 특정 패턴을 추출하는 방법을 지시하고, 그 이후 컴퓨터가 스스로 데이터의 특징을 분석하고 축적한다. 이렇게 축적된 데이터를 바탕으로 문제를 해결하도록 하는 것이다.
반면에 딥러닝은 머신러닝에서 사람이 하던 패턴 추출 작업이 생략된다.
컴퓨터가 스스로 데이터를 기반으로 학습할 수 있도록 정해진 신경망을 컴퓨터에게 주고, 어린아이가 학습하는 것처럼 경험 중심으로 학습을 수행한다.
- Theano
- Tensorflow
- Caffe
- Keras
- pyTorch
- DeepLearning4J
- Mxnet
등 여러가지가 있다.
대표적으로 자주사용하는 Keras
의 특징을 말해주자면,
사용자들이 어떻게 하면 코딩을 하기 더 쉬울까에 기반하여 만들어진 라이브러리이다.
실제로 Keras
에서는 다양한 뉴럴 네트워크 모델을 미리 지원해주고 있으므로, 그냥 블록을 조립하듯이 네트워크를 만들면 되는 식이라, 전반적인 네트워크 구조를 생각하고 작성한다면 빠른 시간내에 코딩을 할 수 있는 엄청난 장점을 가지고 있다.
하지만 현재는 tensorflow
위에서 keras
가 동작하도록 설계되어 있고, keras
를 tensorflow
안에 포함시켜 표준 라이브러리로 지원하고 있다.
딥러닝은 컴퓨터비젼, 음성인식, 자연어처리, 신호처리, 등의 분야에 적용되고 있고,
모든 문제를 딥러닝으로 해결하지 않으며, 기존 머신러닝 모델이 잘 동작하는 경우도 있다.
머신러닝을 배운지 얼마 되지 않아 딥러닝을 바로 배운다는 것은 정말 어려운 일이라고 생각한다. 하지만 내가 전부터 해보고 싶었던 YOLO
등을 할 수 있는 기휘가 가까워 졌다고 생각 하니 조금 기대가 되기도 한다.
동시에 요즘 떠오르는 분야라 대학에서도 새로 신설하고 있는 전망이 밝은 전공이니만큼 열심히 공부해야겠다고 생각이 든다.