2016/03/11

딥마인드에 대한 잡상


(2016/3/14 Update)

어젯 밤에 NGC에서 인공지능 특집이라고 된 거 우연히 봤는데 외국에서는 인공 생명체 내지는 Cyborg 관련 과학기술도 꽤나 진전이 있었다. 사람에게 인공 수족을 갖다 붙여도 뇌는 별다른 차이를 못느낀단다. 우주적인 시각에서 보면 Cyborg가 인류가 진화한 모습일 수도 있다나. 어차피 언젠가 인류는 지구를 벗어나야 하니까 거기에 맞게 진화해야 한다는 건데 머 일리 있는 말이긴 하다.

자기 DNA를 확대 재생산하려는게 생명체의 진화 방식이었는데 생명체라는 것이 우주적인 시각에서는 아무 존재 가치도 없게 되나? 네안데르탈인과 호모 사피엔스가 경쟁하다 호모 사피엔스만 남았듯이 미래에 인공지능 로봇만 남게 되더라도 진화의 과정으로 봐야 할지도...

(2016/3/13 Update)

어제와 오늘 3, 4차 이세돌과 알파고의 대국을 지켜봤는데 이세돌의 인간 승리였다. 끝까지 포기하지 않고 고군분투하는 모습... 이세돌 9단에게 존경을 표한다. 마지막까지 최선을 다해주기 바란다.

사실, 더이상 승패는 중요한 것이 아니다. 이세돌 9단이 인간 바둑 대표로서 손색이 없다는 것과 구글 딥마인드가 현존하는 최고의 인공지능이고 새로운 지평을 열었다는 사실에는 변함이 없다.

그리고, 강인공지능이니 약인공지능이니 떠들어 대는 앵무새들은 알파고보다도 못한 인간들이다. 강인공지능이 탄생하는 것을 확인하는 순간 인류는 종말로 접어들 가능성이 무지 높기 때문이다. 그것이 인간에 의해서든 기계에 의해서든 말이다.

이번 대국을 통해 인간의 지능이나 직관, 자아, 감정, 자유의지 등등 인간 만이 갖고 있는 모든 능력들을 컴퓨터의 계산 능력만으로도 극복할 수 있다는 확고한 생각을 갖게 됐다.

----------

이세돌과 알파고의 어제 오늘 대국 결과는 정말 충격적이다. 수많은 CPU와 GPU 연산, Cloud Computing 방식에 의한 분산 처리 방식 등등이 총동원 된다고 하더라도 컴퓨터의 연산 능력만으로 최고수 바둑 기사를 꺽는데는 한계가 있으리라 생각했다. 딥마인드가 단순한 인공신경망이라면 그 모든 연산 능력으로도 이세돌을 이길 수 없었을 것이다. 궁금해서 잠시 구글링을 해보니 평범한 놈은 아니었다. 이걸 만든 데미스 하사비스도 대단한 놈이었다.

흠, 내가 아는 소시적 인공지능은 그래도 뭔가 사람이 최소한의 규칙을 알려 주어야 동작하는 방식이었다. 그런데 이 놈은 아무 규칙을 알려 주지 않아도 스스로 학습할 줄 안다. 1년 전 Nature 지에 스스로 공부해서 벽돌깨기 게임을 마스터 한 것이 실렸는데, 그 후 1년 만에 바둑까지 평정한 것이다. 데미스 하사비스 자신이 어제 표현한대로 인류가 달에 첫발을 내디딘 것에 비견된다는 표현은 절대 과장이 아니다. 고전적인 unsupervised learning 방법이 있긴 했지만 clustering이나 하는 정도였다. 이제, 인공지능 알고리즘이 학습을 통해서 인간 고유의 전문 영역들을 하나씩 정복할 수 있는 가능성이 열린 것이다. 판도라의 상자...

SF 영화 속 얘기들이 현실이 되어 가고 있다. 딥마인드가 터미네이터의 SkyNet으로 진화할 수도 있게 된 것이다. 마이너리티 리포트, 심지어 스타워즈까지 모두 현실이 될 수 있을 것 같다. 양자 컴퓨터가 휴대폰이나 시계 속으로 들어 오는 시대가 되면 인공 지능의 미래는 인간들에게 큰 위협이 될 수도 있을 것이다. 진공관 컴퓨터인 ENIAC이 1946년에 완성되었는데 불과 50~60년 만에 스마트폰 안으로 들어온 걸 생각해 보면 현대 과학기술의 발전속도가 엄청나게 빨라지고 있음을 실감하게 된다. SF 얘기를 한 김에 인공 지능과 함께 경계해야할 과학기술 분야가 유전자 조작 분야가 될 것이다. 쥬라기 공원은 그렇다 치고 가타카, 아일랜드 류들... 지금의 유전자 기술 만으로도 특별한 인간을 만들어 내는 것이 어려운 일은 아닐테니까...

암튼, 혹자들은 인공지능이 사람들에게 유익하게 사용될 수 있다고 얘기하지만, 80~90%의 지구인들에게는 불행의 시작이 될 것이다. 결국은 구글과 같이 대규모 자본을 가진 조직들에 의해 인공지능이 활용되고 수익을 창출하게 될 것이고, 자본과 마찬가지로 정보의 불균등한 분배를 겪을 것이다. 시너지 효과에 의해 빈익빈 부익부는 심화될 것이다. 국가 대 국가 또는 자본 대 자본 간의 경쟁이 치열해 질 것이고, 결국은 SkyNet이 탄생... 누군가 좋은 의도로 인공 지능에게 지구의 환경 문제를 해결하라고 하면 인간들을 몰살시킬 방법을 찾아 낼지도 모른다.

물론, 아직까지의 인공지능 기술 수준이 걱정할 수준이 아닌 것은 분명하지만 과학 기술 발전 속도가 엄청 빠르기 때문에 누구도 미래를 예단해선 안된다는 얘기다. 딥 마인드 개발자가 특이점 내지는 임계점을 얘기하던데 인공 지능이 그걸 돌파하는 순간 스스로 목표를 설정할 확률도 높아질 것이다. 인간의 자아라는 것이 알고 보니 복잡함의 결과였다는 것이 밝혀질 날이 올지 모른다. 지구 상의 생명체 들이 단순한 유기체로부터 진화한 것이라면 인간과 같은 의식이 생겨난 원리가 단순히 유기체가 복잡해졌기 때문이라고도 생각할 수 있을 것이다. 동물들이 지능이나 감정을 갖기 시작한 것도 유기체들의 복잡도가 임계점을 돌파한 순간 발생한 것이라고 볼 수도 있을 것이다. 사회 과학에서 얘기하는 양질전화의 법칙도 비슷한 맥락이다.

특이점이니 양질 전화의 법칙이니 하는 것들은 사실은 우리의 과학 기술 수준이 그것들의 정확한 메카니즘을 규명하지 못했기 때문에 겉으로 드러난 현상들을 가지고 우리가 판단하는 것일 수 밖에 없다. 하지만 그렇다고 그것이 전혀 비과학적인 것도 아니다. Big Bang 이론도 마찬가지다. 태초의 빛과 에너지가 이 세상의 물질을 만들었다는 것에도 특이점이 존재하니까... 인공 지능이란 학문 자체도 그런 것들을 내재하고 있기 때문에 하는 얘기다. 인공 신경망의 노드들의 상태가 무엇을 의미하는지 과학적으로 설명할 수 있는 단계인지 모르겠다. 하지만, 딥마인드는 신경/인지 과학의 힘을 빌어 인간의 기억을 저장하고 꿈을 꾸는 방식을 모방해서 만들었다고 한다. 이와 유사하게 유전자 알고리즘은 미생물의 진화과정을 모사해서 만들어진 것이다. 이들을 수학적으로나 물리적으로 의미있게 분석해 내기가 쉽지는 않다는 야그다. 하지만, 생명 현상 자체가 밝혀지지 않은 게 많지만 유용하게 생명체들을 진화시키고 있듯이 생명 현상을 응용한 인공 지능 기술들도 매우 유용하게 동작하고, 심지어 사람의 생각하는 방식을 따라하기에 이르렀다는 것이다.

그니까, 결론적으로 하고 싶은 말은 딥마인드가 어디로 튈지 아무도 모르니까 조심하라는 야그다. 미래 세대를 위해서...

2016/03/05

Zapary Chart의 시작


이전 글에서 잠깐 언급했던 내 장난감 차트인 Zapary Chart(zapChart)에 대해 역사 관리 차원에서 지금까지 진행된 것들을 정리해 보기로 했다. 시작은 이 글을 올릴 때 즈음이니까 아직은 1년이 안됐다.

하지만 호랑이 담배피던 시절까지 거슬러 올라가면 Chart 프로그램에 대한 나의 역사는 꽤 오래다. DOS 창에 c++로 그래프를 그렸던 시절이 있었기 때문이다. 마침 그 때 Windows 3.1이 나오는 바람에 DOS 창에서 돌아가는 프로그램은 의미를 상실했다. 머 전문 개발자도 아니고 실험실에서 모니터링을 위해서 만든 것이었는데 공부하기도 바빠서 그 프로그램은 당시에 모니터링 프로그램이 필요하다던 중소기업 부장 아자씨에게 주어 버렸다. 그리고, 그 즈음에 더 재미있는 장난감이 나왔는데, 그게 바로 리눅스였다. 초창기 리눅스 시절, 리눅스 가지고 별의별 장난을 하면서 잘 놀았다. 하지만 직장 생활을 하면서부터 리눅스나 프로그램 개발과는 멀어지게 돼 버렸다. 그런데 웃기는 건 세월이 지날 수록 리눅스를 쓰는 회사들이 많아졌다는 것이다. 물론, 대부분은 서버용이었다. 언제부터인가 Window는 VirtualBox에서 쓰고 우분투가 내 메인 데스크탑이 된 지도 오래다.

아무튼 각설하고... 몇 년 전부터 다시 Chart 프로그램을 완성하고 싶은 마음이 불현듯 솟아났다. 그리고 소시적 오픈 소스 갖고 놀던 기억들이 되살아 났다. 그래서 소일 거리로 Chart부터 만들자고 결심하게 됐다. 사실, 요즘은 Web에서도 Chart API 들이 많이 공개돼 있고, 속도도 문제가 되지 않으며, 모바일 차트 앱들도 꽤 있다. 더구나 오픈 소스 차트 프로그램도 많더라. 내 스스로도 머에 써 먹을려고 이걸 이제서야 만들겠다는 거냐고 물어 볼 때가 있다. 지금의 내 대답은 이거다. "의미없다. 걍 내 소중한 장난감일 뿐이다. My precious~!!!"

한 가지 위안을 삼고 싶은게 있다면 내 맘대로 지지고 볶고 할 수 있다는 것이다. 그래서 Zapary Chart에는 내 기본적인 생각들을 담아낼 수 있다. 내가 전문 개발자가 아니다 보니 프로그램을 잘 만들지는 못할 것이다. 하지만, 최소한 c++로 만들어진 기존의 오픈 소스 차트 프로그램들과는 다르게 동작할 것이다. 무엇보다 중요한 것은 장난감에 살을 붙여가는 재미가 꽤 쏠쏠하다는 것이다.

오픈소스로 개발해 볼까하는 맘도 없지 않았는데 당분간은 나 혼자 갖고 놀 것이다. 왜냐하면 더 훌륭한 오픈 소스 차트 프로그램도 많기 때문이다. 기본적으로 예전에는 wxWidgets 기반의 freechart를 개선해 보려고 했던 적도 있었는데 해 보다가 구조적으로 막히는 부분이 생겨 버려서 접었다. 새로 시작하는 김에 아예 Qt5를 배울 겸해서 Qt5로 만들고 있다. Qt 기반의 오픈 소스 차트 프로그램인 QCustomPlot도 훌륭한 편이다. 하지만 남들이 짠 프로그램을 소화해 내면서 내 생각을 집어 넣는 일은 생각보다 어려운 일이다. 더구나 나이를 먹을 수록 그게 힘들더라. 그래서 맘 편히 나만의 장난감을 만들기로 한 것이다.

zapChart는 사각형에서 시작했다. 마우스 이벤트 처리 부분이 생소했기 때문에 사각형에서 마우스 이벤트 처리 방식을 이해할 필요가 있었다. 이제 저 사각형들 안에 차트를 꾸겨 넣을 수 있게 되었다. 아직도 마우스 이벤트 처리부분이 깔끔하진 않다. 아무튼 ZapChart는 장난감이기 때문에 마우스로 장난칠 수 있어야 한다. 마우스가 되면 언젠가는 Touch도 당연히 될 것이다.

기본적인 Chart 골격을 만들었다. Grid 방식의 Layout과 다중 축을 지원한다. 한 화면에 무한대까지는 아니더라도 제한없이 Chart를 꾸겨 넣을 수 있다. 하지만 이제 시작일 뿐이다. 머리 속에는 집어 넣어야 할 기능들이 너무 많아서 어느 세월에 만들까하는 생각도 든다. 티끌모아 태산이다. 하나씩 살을 붙이다 보면 태산이 될 것이다.

그래서 Zapary Chart의 실체가 뭐냐... c++/Qt5 기반의 Chart Widget이다. Qt가 Multi-Platform을 지원하니까 이론상 OS나 기기에 상관없이 동작해야 할 것이다. Qt의 QGraphicsView / QGraphicsScene / QGraphicsItem Framework을 사용할까 하다가 그 자체도 복잡하단 생각이 들어서 내가 보기에 가능한 단순하게 만들고 있다. 우분투 환경에서 개발하고 있는데, 차트를 여러개 그려도 컴퓨터가 빨라서 그런지 금방금방 차트를 그려 낸다. 틈틈이 Chart에 대한 내 기본적인 생각들도 기억관리 차원에서 올릴 예정이다.