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

https://www.netflix.com/kr/title/80190844



일단 개인적인 배경 설명은 ...

나는 방송사 뉴스 관련된 부서에서 인터넷 뉴스사이트 프로그래밍 개발 업무를 주로 하는 개발자이며 바둑은 아버지가 너무 좋아셔서 어린 사춘기 반항심과 세대 차이라는 명목아래 전혀 배우지 못했고 현재도 전혀 알지 못한다.

비슷한 예로 초등학교 때 감사히도 컴퓨터가 있었고 가장 큰 친구이자 행복이었기에 주판이나 암산등이 관심이 없었다.

본론으로 들어가서 알파고 사실 몇년되지 않은 일이었고 그 당시에는 머신러닝을 구현할 수는 없어도 나름 이론을 이해한다는 어설픈 개발자 생각과 당시 방송사에서는 이 대국을 유튜브 생중계로 어떻게 해볼까라는 고민이 커서 화재의 중심에서 일했지만 본질에서는 조금 벗어나 일에 관심이 더 있었던 듯 하다.

저녁에 잠시 뭔가를 보려고 넷플릭스를 켰고 그들의 추천시스템에 의해 추천되는 동영상 중 해당 영상을 발견하고... 그땐 그랬지라는 마음으로 잠시 봤는데 늦은 시간임에도 끝까지 멈출수가 없었다.

알파고는 거울 같다는 판후이의 말과 알파고를 만든 것도 인류이기에 인류의 승리라는 설립자의 이야기 또한 바둑을 두길 잘 했고 바둑이 뭔지 더 공부하게 되었다는 이세돌 기사의 인터뷰 역시 단순히 분야의 천재들만의 이야기로 치부하기에는 너무나도 크게 마음에 울림을 남긴다.

자신을 돌아보게 하는 많은 말들
30대의 마지막 나태하지는 않았지만 열심히 살았다고 생각했는데 조금더 열심히 더 도전해보지 못했음이 아쉽다. 도전거리를 찾아야 겠다. 지금처럼 육아에 도전하고 아이들과 시간을 보내는것도 좋지만 조금더 효율을 높이는 방법을 고민하고 찾아봐야겠다.



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

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

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

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

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

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

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

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

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

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

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

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

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





Software-development

과거 하드웨어 반도체의 축이던 인텔
그리고 2년 아니 18개월 마다 반도체의 집적도는 전에 비해 2배가 된다는 무어의 법칙

무어의 법칙의 세 가지 조건은 다음과 같다.
출처: 위키피디아

  1. 반도체 메모리칩의 성능 즉, 메모리의 용량이나 CPU의 속도가 18개월에서 24개월마다 2배씩 향상된다는 '기술 개발 속도에 관한 법칙'이다.
  2. 컴퓨팅 성능은 18개월마다 2배씩 향상된다.
  3. 컴퓨팅 가격은 18개월마다 반으로 떨어진다.


어느덧 무어의 법칙은 하드웨어 세상에만 존재하는 법칙이 아닌 비트의 세상, 즉 소프트웨어 세상에도 존재하는듯 하다.

소프트웨어의 세상 역시 제곱, 즉 기하급수적으로 팽창하고 있다.

자고 일어나면 새로운 오픈소스, 개념, 철학
AI, 딥러닝, 클라우드, 아마존, 페이스북, 구글, 마이크로소프트 업체들마다 다들 새로운 계획과 구성을 필요로 한다.

어느 정도 완성되어 마지막 부분만 학습하여도 구현 되는 부분이 있긴하나 제대로 알고 발전시키며 남들에 비해 우위에 있으려면 기초 학습인 수학이나 통계 역시 알아야 좋다.(어느 정도 능력도 요함) 게다가 사상의 패러다임의 변화까지 변화를 주어 신 개념 혹은 철학까지 필요로 한다.

나 혼자 아무리 똑똑하려 해봐야 양적으로 할 수 없는 시기가 도래 하였다.
(모두 이해하려면 아이언맨이나 베트맨 정도 되어야지 나같은 일반인은 잘 모르겠다.)

사람들과 더 함께 일하고 그들은 발전 시키고 함께 성장하는 방법을 찾아야 한다. 그렇게 하면 변화의 양을 감당할 수 있을까?




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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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