요즈음 알파고만큼 화제가 되는 프로그램도 없습니다.
여러 해 전만해도 인공지능(AI)은 한계가 있다고 느꼈었지만, 이세돌 그리고 커제와의 바둑 대국 후 사회적 인식이 급변했습니다.
여러 매체를 통해서 알게된 AI(인공지능)에 대해 그리고 제가 느끼는 단순한 것들에 대해 이야기해보고자 합니다.
소프트웨어 업그레이드만으로 걸음마 떼기
한 개발사가 로봇을 제작해 걸을 수 있도록 프로그래밍합니다.
그리고, 대회 때 시연을 하죠. 하지만, 제대로 걷지도 못하고 넘어지기 일쑤입니다.
이제 구글에서 이 로봇의 구동 엔진을 업데이트합니다.
이 엔진을 알파고와 같은 AI로 학습시킵니다.
그 후, 발전된 성과는 엄청납니다.
로봇이 걸을 수 있을 뿐 아니라, 고의로 발을 걸어도 이내 중심을 잡습니다.
단지 소프트웨어를 통해 학습시킨 결과였죠.
기존의 프로그램
기존에는 프로그램 개발 시, 경우의 수마다 어떻게 작동해야 하는지 일일이 코딩하였습니다.
어떤 경우는 통계적인 기법으로 프로그래밍하였습니다. 번역의 경우가 이에 해당합니다.
따라서, 양질의 데이터가 많이 제공되어야 했습니다.
이러한 프로그램에는 늘 한계가 있었습니다.
발전이 더디고 계속 관리가 필요했습니다.
AI 그리고 앞으로의 프로그램
하지만, 지금은 딥러닝 및 자기 학습을 통한 인공지능이 개발되고 있습니다.
프로그램 스스로 빅데이터를 통해 학습해 나가는거죠.
이전보다 강력한 하드웨어의 지원으로 학습이 더 수월해졌습니다.
엔진은 시간이 지날수록.... 학습 데이터가 많을 수록 점점 강력해집니다.
바둑의 경우는 세계 최고 바둑 기사를 뛰어 넘었죠.
불과 몇 년 전에 빅데이터가 화제가 되었습니다.
그런데 이보다 더 큰 임팩트를 AI가 우리에게 던지고 있습니다.
어떤 알고리즘
알파고 같은 AI 프로그램은 어떤 알고리즘을 사용할까요?
뇌과학에 기반을 둔 딥러닝 기법을 쓰는 것으로 알려져 있습니다.
사람의 뇌가 작동하는 방식을 배운 후 급속히 발전하게 된 거죠.
저 역시 프로그래머로 이 알고리즘이 무척 궁금합니다.
이론적인 설명만으로 구현이 떠오르지는 않습니다.
아마 구현을 위해서는 뇌과학에 대한 지식과 딥러닝이 기반을 둔 논문들을 살펴보아야 어느 정도 답이 보일 듯 합니다.
유투브에서 단순한 AI 개발 프로그램이 작동되는 과정을 본 적이 있습니다.
그 동영상으로 느낀 알고리즘은 다음과 같습니다.
1. 엔진이 작동하는 방식을 숫자화시킵니다.
2. 숫자화된 데이터에 물리 법칙을 더하여 시물레이션을 반복적으로 돌립니다.
3. 원하는 목표에 말한다면 해당 숫자 데이터는 유용한(쓸모 있는) 데이터가 됩니다.
4. 그리고, 유용한 데이터와 비슷한 숫자 데이터를 대입합니다. (엔진이 자동화 방식으로 처리합니다.)
5. 4번을 통해 대입된 데이터 외에도 랜덤한 데이터를 대입합니다.
6. 이와 같은 루틴을 무한 반복하면 엔진은 서서히 원하는 결과에 쉽게 도달하는 법을 스스로 배우게 됩니다.
그리고 결국은 뛰어난 작업자가 됩니다.
한 가지 흥미로운 점은 이러한 인공지능 기법이 아기가 세상을 배우는 것과 유사하다는 점입니다.
보통 아기는 한 가지 단순한 사실을 알기 위해 끊임 없이 실험을 합니다. (같은 또는 유사한 동작을 반복해 나가는거죠.)
AI의 무한한 유용성
인공지능이 적용될 수 있는 범위에는 제한이 없습니다.
그리고, 도덕적 쟁점의 대상이 되기도 합니다.
프로그래머인 저 역시 인공지능으로 인해 직업의 상당 부분을 빼앗길 수 있죠.
프로그래밍을 스스로 짜는 인공지능이 연구 개발되고 있으니 말입니다.