인공지능 혹은 머신러닝이라는 이름으로 우리가 하는 행위들을 큰 틀에서 살펴보면 결국 "주어진 상황에 맞는 적절한 대답"을 구하는 것입니다.
예를 들어, 얼굴인식같은 인공지능 문제라면 주어진 상황은 '이미지' 일 것이고, 적절한 대답은 얼굴인식 후보중 하나가 되겠지요
자연어 처리도 마찬가지입니다. 번역같은 복잡한 문제도, 결국 '주어진 문장'을 적절히 가공해서 '번역된 문장'으로 바꾸는 일일 뿐입니다.
다시 말해 우리가 하는 일은 가장 높은 수준으로 추상화해보면 "데이터의 변형" 이라고 할 수 있습니다. 제가 바라보는 인공지능 또는 머신러닝은 "Data Transformation" 입니다. 이를 잘 할 수 있고, 풀고자 하는 문제에 적합한 도구를 찾는 것이 중요한 문제입니다.
그리고 현재 시점에서는 Deep Neural Network 이 가장 직관적이면서도 범용적인 도구입니다.
직관적이라는 것은 데이터의 변형과정이 모델의 설계 과정과 거의 동일하게 설계될 수 있습니다. 아래 그림으로 예를 들어보겠습니다.
위 그림 처럼 이미지 인식 문제는
입력 : 100 x 100 pixel data
출력 : 100 image class
의 데이터 변형을 다루는 문제입니다. DNN 에서는 이를 아주 직관적으로 다룹니다. 입력에서의 pixel 하나 하나를 실수값 하나로 모델링 합니다. 즉 입력의 차원수 혹은 데이터 사이즈가 10000개가 되게 됩니다. 출력은 100개가 되게되죠. 이것을 다루는 네트웍을 추상화하면 아래 그림처럼됩니다.
정말 직관적이죠? 앞으로 다루게 될 DNN 의 주요 network 들(RNN, CNN, Attention, ....)도 먼가 대단하거나 엄청난 것들이 아니라, 데이터 변형을 하는데 있어서 자주 사용되거나 효과적인 변형 Pattern을 naming 한 것들입니다.
범용적이라는 것은 DNN 의 방법론이 결국 Tensor (숫자의 나열) 에 기반하기 때문에, 어떤 영역의 문제든지 '숫자'로만 바뀌어서 입력/출력이 모델링되게 되면, 그 풀이방법은 동일하다는 것입니다. 즉 이미지든, 자연어든, 음성문제든, 혹은 공장데이터 처리 문제든, 바둑문제든 어떤 문제에도 사용할 수 있는 범용성을 DNN 이 가지고 있다는 것입니다.
앞으로 제가 올릴 글들은 데이터변형으로서의 인공지능을 어떻게 풀어나갈 것인가의 관점에서 다루겠습니다.
다시한번 강조하자면, 딥러닝은 결국 아래의 2가지를 하는 것입니다.
표현학습
데이터 변형
Graphical Notation for Data: 9차원의 데이터 x를 표현상의 편의를 위해 3x3형태로 표현 (3x3 Matrix가 아님)
- V to 1
9차원의 데이터를 1차원으로 줄이는 방법은? (정답은 따로 있는게 아니다.)
ex) Max, Average 등
방법은 많지만, Weighted Sum을 사용하자.
single layer perceptron은 데이터를 요약=추상화 하는 것과 똑같음
- Convolution Neural Network (해당 부분은 영상을 직접 볼 것)
CNN이 하는 일: sliding, filter 등
- V to V'
그렇다면 9차원을 어떻게하면 2차원으로 줄일 수 있을까?
간단한 방법은 판을 2개 두는 것.
Q. 단순정보 말고, 부가적인 데이터가 있을 때 어떻게 변형 시킬 수 있을까?
9차원 -> 2차원으로 변형하는 과정 중, 또다른 4차원의 데이터가 있다면?
단순히 x, y 좌표 말고, 그 사람의 직업 혹은 나이 등을 주었을 때, 위치를 특정 지을 수 있는 알고리즘을 만들까?
간단하게 푸는 방법은 원래 W는 그대로 놔두고, 부가정보를 변형하는 판을 W^C라고 하자.
결과적으로는 다 정보가 반영이 됨
결국 Data transform 관점에서 몇단계를 더 거치냐의 차이일 뿐, 둘 다 같음
Sequence Encoding
Data Transformation: neural network
Temporal Summarization: Recurrent Neural Network
Global Summarization: Attention Mechanism, Convolutional Sequence Encoding