하늘높이의 프로그래밍 이야기

알파고 이후의 딥러닝의 시대가 되었다.
부모들에게도 약간 쇼킹한 사건이었는지 아이들에게 소위 말하는 코딩교육을 한다고 한다.

그런데 어떤 전단지를 보면 자바가 써 있기도 하고 어디에는 C언어가 써 있다더라. 헉
개발을 잘 모르는 사람은 코딩이 인기라더라며 웹 코딩/퍼블리셔 직군에게 이게 코딩 아니냐며 코딩 교육을 할생각이 없냐는 이야기도 한다.

물론 Java, C, HTML 좋다. 그들의 원리를 조금 배워보는것 역시 좋다. 하지만 그들의 철학과 원리를 이해하기는 15년이 된 개발자도 어렵다.
(나만 그런가?)

그리하여 나의 생각은 아이들이 배울 것은 그것이 아닌데...
아이들이 당장 자바나 HTML 코딩을 배우면 뭐하겠는가... 나 역시 초3에 컴퓨터가 생기고 4학년때부터 뜯기 시작하고 6학년때 GW베이직을 처음 익히고 이 바닥으로 들어왔지만 사실 중요한것은 그것이 아니었다.

개발자가 된 것을 후회하는 것은 아니지만 컴퓨터에 빠져서 다른 기초학문이나 사상을 혹은 수학을 더더더더더 많이 익히지 못했던것을 후회한다.

또한 개발의 언어 외에도 업무의 언어를 더 많이 있히지 못함이 미안하다.

소위 딥러닝의 시대가 되면 더 그럴지 않을까.

현재도 3.5세대나 4세대 IDE툴 즉 개발환경을 제공해주는 툴 들, 예를들면 비주얼스튜디오나 이클립스등의 툴은 나름의 인텔리전스 기능을 가지고 있다. 코드 몇자를 치면 이 코드 쓰려는 거구나. 다 입력해줄테니 여기서 바꿔봐... 그리고 조금더 쉽게 쓸수 일는 프레임워크나 언어는 계속 나온다.

딥러닝 시대가 되면...이것이 더 발전할텐데...
ide가 (이제는 문법이 아니고) 너가 이 알고리즘을 쓰려는 거구나... 이렇게 짜보는 것이 어때?
너가 짠 코드는 이런 부분이 비 효율적이야. 내가 바꿔도 될까?

현재의 DB처럼 넌 맘데로 니멋대로 짜
코스트 기반의 옵티마이저가 분석해서 똑같은 결과 코드로 대체 할 것이다. 너가 짜려고 하는 코드는 스택오버플로우에 이미 있는거란다. 이것대로 해볼렴!! [사실 지금도 컴파일러가 비슷하게 하고 있지만... ]

정말 아쉽지만 결국 코드를 잘 짜는 개발자와 못 짜는 개발자의 차이가 적어진다. 즉 경력자와 초보자의 코드가 별 차이가 없어진다. 정말 잘짜고 효율적인 그리고 수학적인 개발자는 엔진 개발자, 코어 개발자등 한정 분야에만 존재 할 것이다.

그렇다면 나는 어떤 능력을 늘려야 하고 아이들에게는 무엇을 알려줘야 할까?

개발의 언어인가 사고의 능력인가.







이세돌 2차 전을 보며 드는 생각을 몇 자 적어본다. 개발자가 술먹고 돌아 오면서 간단히 폰으로 적는 알파고와 경기 관전 평 이랄까? 뭐 바둑은 아부지가 그렇게 배우자고 하였지만... 배운적이 없어.. 전혀 모른다.

다만 최근의 기사들을 보면..
"바둑의 수는 우주의 원자수 만큼 많아 직관이 없는 기계는 사람을 이길 수 없다." 라고 하였지만...

다시 생각하면 "그 수가 너무 많아 현재 사람들이 쓰는 수 자체가 모두 최적의 수가 맞는가?"라는 의문이 든다.

아직까지 사람들이 발견하지 못한 새로운 패턴(최적의 수)이 있는 것은 아닐까? 사람들이 그렇게 두면 절대 안된다고 생각하는 수가 있는 것은 아닐까? 그리고 그것을 슈퍼 컴퓨터 속도로 시뮬레이션(자가 경기 기계 학습 한달에 100만건? 하루에 3만건?) 해보고 찾아낸다면.... 사람은 듣지도 보지도 못한 수에 당하게 되며 사실상 이기기 어렵다.
2차 전 결과 역시 비슷해 보인다. 나머지 경기도 비슷할 듯하다.

이 정도 경기와 시간이 지났으니.. 알파고는 이미 최적의 수로 발전할 수 있을 만큼 발전한 것으로 보인다.
저 정도 속도면 바둑이라는 게임이 만들어진 이후 전세계에서 치룬 경기 수보다 알파고 자기 학습의 경기가 우월하게 많아 질것으로 보인다.

만약 이 기사가 다음 경기에서 알파고가 승리하기 어려운 패턴을 찾아내서 그 패턴을 계속 쓰지 않는 한 승리는 어렵다.
(내가 알기로는 딥러닝은 한 두 경기의 패턴으로 전체의 패턴을 바꾸지는 못한다. 말로는 일차전 이차전 경기가 학습되어 다른 놈일 것이라 하지만... 딥러닝이란 태생이 로직이 아니고 빅데이터 이다 보니 작은 한두 경기로는 패턴이 바뀌지 않는다. 말그대로 결과를 테스트하고 홍보하는 이벤트로 보인다. 만약 이 기사가 그래도 알파고의 허점을 하나 찾는다면 남은 경기에서는 모두 다 써 먹을 수도 있을 것 같다.

하지만 위에도 말했듯이 컴퓨터는 멀티태스킹이 된다. 이세돌 기사와의 경기를 두는 도중에도 다른 프로세서들의 알파고들은 서로 경기를 하며 시뮬레이션하여 한달에 100만 건씩 자기 반복 학습을 하여 새로운 패턴을 찾을 수 있다. 한달에 만들어지는 100만건의 데이터는 패턴을 바꾸기에도 충분한 큰 데이터가 될 수 있을 것 같다. 사실 이기사와 경기에서 얻는 패턴 보다 자가 학습의 패턴이 더 무섭다.)

외부 요소가 적은 룰안에서 벌어지는 게임들은....사실 무슨 게임이 되건 현재의 클라우드 슈퍼 컴퓨팅 파워를 이기기는 쉽지 않다. 구글, 아마존 등 클라우드 컴퓨팅 파워는 돈만 있다면 누구나 병렬 처리 슈퍼컴퓨터를 만들 수 있다.
슈퍼 컴퓨터와 머신 러닝등의 추론을 도구로 쓰는 시대가 오는 것이다.

다만 이것이 모든 기업과 모든 사람들이 쓸 수 있는 가는 조금 더 생각해 봐야하지만....
(결국 더 큰 자본력과 더 많은 데이터를 갖은 기업이 승리하기 유리해진다. 페이스북의 타임 라인 알고리즘을 전세계에 쓰는 것을 보지만 우리 대형 포털 업체들이 비슷하거나 더 효과적인 것을 못 만들어 내는 것을 보면 가지고 있는 데이터 양과 컴퓨팅 파워가 무시 못할 자산이 되는 듯 하다.)

사람들은 영화에서 처럼 AI가 인간을 지배하는 날이 오는구나... 라고 걱정하지만...

그렇다면...
암산으로 계산기를 이길 수 있는가?
중장비보다 더 무거운 것을 들 수 있는가?
자동차보다 더 빨리 달릴 수 있는가?

그럼 수학이 없어지고 역도나 체력이 무의미 하고 달리기라는 스포츠는 필요 없는가?
누구나 다 알 듯이 그렇지는 않다.

이미 인간은 특정 분야에서 많은 부분 기계에게 지고 있다.

그리고 인간의 세계는 게임과 달리 훨씬 더 복잡하다. 어느 정도 추상적인 부분이 현재 알고리즘으로 정량화 되어지기는 하겠지만... 아직까지 모든 것을 인식하거나 통찰 하는 Ai는 없다. 바둑이라는 게임 안에서 승부일 뿐이다.
만약 모든 것을 통찰 하는 인공지능 자기 자신을 인식하는 스카이넷 그런 것이 나온다면...또 모르겠지만...

아직까지 인공지능 역시 도구는 도구일 뿐이다.
세상의 모든 도구는 잘쓰면 약 잘못쓰면 독이된다.
(칼을 요리를 할수도 있지만 남을 다치게 할수도 있고 핵은 발전에 쓸 수도 있지만 폭탄이 될 수도 있다.)


이 세상의 예외를 기계가 모두 알 수 있을까?
이 기사가 만약 발로 바둑판을 걷어찬다면? 알파고는 뭐라 해야 하는가? 승부는 true/false이지만? 

이런 상황은 정답인가 오답인가? 인간의 자유 의지는 정답이 없다. 세상 다양한 외부 요소로 정답이 다양한데 이 모든 상황을 예외 처리가 가능한 인공지능이 나올 수 있을까? 모든 상황의 통찰력을 갖을 수 있을까? 이런 것까지 모두 판단할 수 있을까?  

글쎄 아직까지 도구는 도구라 생각하는 개발자 1인이.. 

약간 씁쓸해하며 기술에 감탄하는 어느날 밤에...