요즘 개발자들이 AI에 많이들 관심을 가지는것 같습니다만 "perceptron"을 물어보면 모르는 경우가 대부분입니다. AI = tensorflow라는 개념을 가지고 있지요. 사실 요즘은 오픈소스 생태계가 너무도 잘되어 있어서 SRE적으로 접근해도 됩니다. 그런데 개념을 잡지 못하면 오래가지 못해서 한계에 부딧칠겁니다. 근데 요즘 나오는 Deep Learning 기법들부터 이해하려하면 .... 또 역시 포기하게 되겠지요. Neural Network개념은 1960년대에 나온 개념입니다. 8비트 컴터도 없던 시절이지요. 이때 개념들부터 이해해 나가면 종국에는 Deep Learning의 영역까지 확장할수있을꺼라 확신합니다.
AI (Artificial Intelligence)의 역사
1980년대 부터 개발을 하고 AI에 관심을 가져온 사람으로써 경험과 느낌들을 기반으로 기술한 역사로 "역사학" 공부하시는분들하고는 의견이 다를 수 있음을 밝힙니다.
perceptron은 1950년대에 "Frank Rosenblatt"이 수학적으로 제안한 AI의 초기 모델로 다들 기본적으로 알고 있는 뉴런이라는 인간의 뇌의 구조에 기반한 아이디어로 정립된 이론입니다. 8비트 컴퓨터가 나오기도 전에 이미 수학적으로 AI를 설계했다는 얘기지요.
이때 BPNN ( Back Propagation Neural Nework ), SOM (Self-Organizing Map)등을 부각되고 "지도학습", "비지도학습", "강화학습"등의 연구와 실제 응용 세례들이 등장합니다. finally는 "전문가 시스템" 즉 특정분야에서는 인간의 판단을 일부 대신할수있는 시스템을 만들수있지 않을까 하는 개념들이 등장합니다.
이때 활발히 상용화 되었던 것들이 "음성인식", "얼굴인식", "번호판인식"등의 제품들이 마구마구 나왔던것이 기억이 납니다.
그런데 이때 나왔던 제품들 정말 쓰레기에 가까웠습니다. 사실 정확한 판단을 위해서는 수많은 히든레이어가 필요하고 더많은 계층의 히든레이어가 필요했는데 그당시 장비들의 컴퓨팅파워는 그 계산량을 감당할수없었지요. ㅠ.ㅠ
이러한 상용화의 실패는 "제2의 AI 암흑기"를 불러옵니다.
시장은 더이상 AI에 대한 기대를 버리고 "시스템"과 "알고리즘"에 의존한 상용제품들을 내 놓고 IT산업을 발전 시킴니다.
클라우드의 등장
그디어 클라우드의 시대가 열립니다. 지금 신세대 개발자들에게는 당연한 환경이겠지만 10년~20년전 클라우드, 클러스터같은 개념이 소개되었을때 정말 적응하는데 힘들었던 기억이 납니다.
각설하고 클라우드의 등장은 "무한한" 컴퓨팅 파워을 제공했고 이 무한한 컴퓨팅 파워를 바탕으로 Neural Network는 심각하게 복잡한 계산을 가능하게 했고 두둥~~~ "알파고"가 등장합니다.
Deep Learning의 등장
"무제한"의 컴퓨팅파워를 바탕으로 NN은 NN자체를 시간에 따라 복제하기 시작하고 히든레이어를 복제하고 이전 레이어로 역전파하기 시작했습니다. 과거의 컴퓨팅 파워로는 상상도 못하지만 지금은 가능한 시대가 되었습니다.
DNN ( Deep Neural Network ) 입니다. 그냥 딱봐도 어마어마한 계산량이지요.. 단순히 그린거지.. 상용화를 위해서는 하나의 히든레이에 수백 수천개의 노드가 필요합니다.
RNN ( recurrent neural network ) 입니다. 아싸리 입력에 따른 히든레이어를 복사해 나가고 가중치도 전파해 나갑니다. 계산량을 감히 상상도 할 수 없습니다.
마치면서
1편 부터 2편까지 모두 읽었다면 딥러닝이란것이 갑자기 어디서 툭 튀어 나온것도 아니고 굉장히 획기적인 신기술도 아니라는것을 알 수 있을것입니다. 시대의 흐름을 잘 읽은 사람들의 작품이라 하겠습니다. 그런데 개인적으로 AI분야에 많은 개발자들이 진입하려하는것에 좀 우려감이 있습니다. 왜냐하면 거기에는 여러분의 intelligence가 필요하지 않기 때문입니다.
요즘 개발자들이 AI에 많이들 관심을 가지는것 같습니다만 "perceptron"을 물어보면 모르는 경우가 대부분입니다. AI = tensorflow라는 개념을 가지고 있지요. 사실 요즘은 오픈소스 생태계가 너무도 잘되어 있어서 SRE적으로 접근해도 됩니다. 그런데 개념을 잡지 못하면 오래가지 못해서 한계에 부딧칠겁니다. 근데 요즘 나오는 Deep Learning 기법들부터 이해하려하면 .... 또 역시 포기하게 되겠지요. Neural Network개념은 1960년대에 나온 개념입니다. 8비트 컴터도 없던 시절이지요. 이때 개념들부터 이해해 나가면 종국에는 Deep Learning의 영역까지 확장할수있을꺼라 확신합니다.
AI (Artificial Intelligence)의 역사
1980년대 부터 개발을 하고 AI에 관심을 가져온 사람으로써 경험과 느낌들을 기반으로 기술한 역사로 "역사학" 공부하시는분들하고는 의견이 다를 수 있음을 밝힙니다.
perceptron은 1950년대에 "Frank Rosenblatt"이 수학적으로 제안한 AI의 초기 모델로 다들 기본적으로 알고 있는 뉴런이라는 인간의 뇌의 구조에 기반한 아이디어로 정립된 이론입니다. 8비트 컴퓨터가 나오기도 전에 이미 수학적으로 AI를 설계했다는 얘기지요.
Neural Network (단층 percentron)
Neural Network의 가장 단순한 단층 percent 의 원리부터 이해해 볼께요.
Neural Network는 몇개의 입력을 Node와 연결하고 원하는 결과가 나올때 까지 연결강도를 조정하면서 결과값을 찾아 갑니다.
여러가지 수학적인것들이 나오는데 우리는 SRE적으로 이해하고 가져다 씁시다. ( 수학적으로 이해 하려고 하면 ... 흥미가 떨어져요 )
초심풀한 2개의 입력과 1개의 출력을 가지는 percentron을 만들었습니다.
class neural{
private:
const float lr = 0.1;
public:
float wx;
float wy;
float bias;
public:
neural(){
bias = -1;;
wx = 0.5;
wy = 0.5;
}
void train(int x, int y, int result){
auto output = recall(x, y);
auto error = result - output;
wx += error * x * lr;
wy += error * y * lr;
bias += lr * error;
}
int recall(int x, int y){
double sum = 0.0;
sum += wx * x;
sum += wy * y;
return 1 / (1 + std::exp(-(sum + bias)));
}
};
당시 열악한 컴퓨팅환경에서 단층퍼셉트도 입력층이 많아지게되면 상당한 부담이었고 AI연구는 침체기에 빠집니다. 그런데 16비트가 PC가 나오고 서버시장은 더욱 더 빠르게 발전하고 가성비 높은 컴퓨팅 환경이 갖춰지게 되고 "다중 퍼센트론"이 주목받게 되고 속속 연구가 이루어 지며 "전문가시스템"이라는 개념이 등장하는등 제2의 AI이 붐이 일어 납니다.