전문가칼럼

DBMS, DB 구축 절차, 빅데이터 기술 칼럼, 사례연구 및 세미나 자료를 소개합니다.

이병국의 개발자를 위한 DB 이야기: 이세돌과 알파고의 세기의 대결

전문가칼럼
DBMS별 분류
DB일반
작성자
dataonair
작성일
2016-06-20 00:00
조회
10574




◎ 연재기사 ◎


물탱크 구조로 알아본 오라클의 블록 옵션 ‘PCTFREE와 PCTUSED’


이산가족 찾기 생방송을 통해 배우는 DB 원리


개발자에게 맞는 DB 공부방법 찾기: 물리적 분류와 논리적 분류 그리고 인덱스


데이터베이스 인덱스의 오해와 진실


쉬운 것이 올바른 것이다. ‘인덱스 끝장리뷰’ (상)


쉬운 것이 올바른 것이다. ‘인덱스 끝장리뷰’ (하)


누구도 알려주지 않았던 ‘오라클 인덱스 생성도’의 비밀


누구도 알려주지 않았던 ‘오라클 쿼리 작성의 비법’


퀴리 최적화 및 튜닝을 위한 오라클 공정쿼리 작성법


만능 쿼리와 한 방 쿼리


오라클 옵티마이저 ‘CBO와 RBO’ 이해하기


재미있는 DB 이야기 ‘60갑자와 쿼리’


그림으로 배우는 ‘오라클 조인의 방식’ 이야기


반드시 알아야 하는 오라클 힌트절 7가지


오라클 플랜을 보는 법


개발자들의 영원한 숙제 ‘NULL 이야기’


알면 유용한 오라클 기능 ‘GATHER_PLAN_STATISTICS’


알면 유용한 오라클 기능들


오라클 DICTIONARY를 활용한 DB툴 프로그램 ‘FreeSQL’


이제는 말할 수 있다: 주식 자동매매 프로그램(상)


이제는 말할 수 있다: 주식 자동매매 프로그램(하)


개발자들이 자주 접하는 오라클 에러 메세지


재미있는 DB 이야기 ‘사라진 날짜를 찾아라’


오라클 랜덤 함수와 사용자 정의 함수


그림으로 배우는 ‘공정쿼리와 인덱스 생성도’


이병국의 개발자를 위한 DB 이야기: 디폴트 세팅의 함정과 오라클 파라미터


재미있는 DB 이야기 ‘놀라운 마방진의 세계’


오라클 운반 최소 단위 BLOCK


이병국의 개발자를 위한 DB 이야기: 이세돌과 알파고의 세기의 대결


이병국의 개발자를 위한 DB 이야기(30회) : DB 엔지니어의 가볍게 읽는 세상 이야기


이병국의 개발자를 위한 DB 이야기: 튜닝(31회) : 개발자를 위한 DB 튜닝 실전(1편)


이병국의 개발자를 위한 DB 이야기: 튜닝(32회) : 개발자를 위한 튜닝 실전(2편)


이병국의 개발자를 위한 DB 이야기: 튜닝(33회) : 개발자를 위한 튜닝 실전(3편)


이병국의 개발자를 위한 DB 이야기: 튜닝(34회) : 개발자를 위한 DB 튜닝 실전(4편)


이병국의 개발자를 위한 DB 이야기: 튜닝(35회) : 개발자를 위한 튜닝 실전(5편)


이병국의 개발자를 위한 DB 이야기: 페이징 처리에 대한 이해 (36회)


보기 좋은 떡이 먹기도 좋다 - 좋은 쿼리 좋은 성능


테이블의 수직분할과 수평분할에 대한 이해


DB 성능 제고를 위한 채번의 이해와 방식별 장단점 비교


이병국의 개발자를 위한 DB 이야기: 마지막회 : ‘개발자를 위한 DB 이야기’ 연재를 마치며



이병국의 개발자를 위한 DB 이야기: 알파고(29회)

이세돌과 알파고의 세기의 대결



성공과 실패의 경험을 나누자, 용기와 희망을 나누자

개발업무를 시작으로 IT계에 입문했던 필자가 10년 가까이 DB엔지니어로서 활동하면서 얻은 경험과 지식을 나누고자 한다. DB를 자주 접하는 SW 개발자뿐 아니라, DB 전문가를 꿈꾸는 대학생에서DB 분야에 입문한지 1~2년 된 기입문자가 쉽게 이해할 수 있도록 비유를 통해 쉽게 접근해볼 계획이다. 물론 전문가들이라도 다시 한번 개념을 정립하는 의미에서 필요한 내용이 될 수 있다.

전체적으로 DB의 기본 원리와 개념을 이해하고 테이블, 인덱스, 쿼리, 튜닝, 플랜 등 개발자들이 알아야 하는 DB 전분야에 대해 쉽게 이해하도록 설명하겠다. DB 기술서적이나 번역서보다는 조금 더 부드럽게 접근할 계획이다. 그렇다고 흔히 서점에서 만날 수 있는 개발자 위주의 SQL 소개서도 아니다. 이 연재는 시리즈로 나갈 것이다. 연재를 끝까지 읽는 독자라면 준전문가 수준의 DB 원리를 아는 것을 목표로 한다.



‘개발자를 위한 DB 이야기’ 연재에서 웬 인공지능 알파고 이야기! 이번 회의 내용은 그동안의 연재와는 조금 다른 내용이다. 하지만 바둑 이야기가 나와서 그냥 넘어갈 수 없었다. 앞선 연재에서 ‘컴퓨터 바둑이 사람을 이기기는 당분간 어려울 것’이라는 말을 무턱대고() 해버렸는데, 그 글이 나가고 얼마 되지 않아 알파고 인공지능의 충격이 밀려왔기 때문이다. 한번 쉬어가는 의미에서 인공지능과 바둑 이야기를 해볼까 한다.



이세돌과 알파고의 세기의 대결

지난 3월 알파고와 이세돌 9단의 세계 최정상 바둑 대결이 있었다. 상금 100만 달러를 두고 벌어지는 구글의 인공지능 ‘알파고’와 세계 최고의 바둑기사 ‘이세돌’ 간의 자존심을 건 세기적 대결이었다. 지금까지 인공지능은 많은 분야에서 좋은 성과를 내었으나 바둑에서는 그렇지 못했다. 바둑은 수많은 경우의 수로 인공지능 컴퓨터 분야의 난공불락으로 여겨졌었다.

바둑은 4,000여 년 전 중국에서 시작했으며 15세기 이후 일본에서 체계화되었다. 그리고 한중일이 바둑을 겨루기 시작한 1980년대 말 이후 세계 챔피언은 대부분 우리나라에서 나왔다. 조훈현-이창호-이세돌로 이어지는 한국의 바둑은 세계 최강이라 자부할 만하다. 그래서 인류를 대표해서 인공지능 알파고와 시합할 프로 기사로 우리나라의 이세돌 9단이 결정되었을 때 당연하다고 생각했다.

처음 이 세기적 대결이 성사 되었을 때 사람들의 반응은 대부분 인간의 승리를 점쳤다. 일부 과학자나 구글 관계자는 알파고의 승리를 예상하기도 했으나 바둑계에서는 알파고의 실력으로는 이세돌 9단을 이길 수 없다고 단언했었다. 이세돌 9단 조차도 압도적인 승리를 예고 했었다. 바둑은 인간이 발명한 가장 복잡한 보드 게임이다. 바둑에서 경우의 수는 우주에 존재하는 원자의 수보다 많다고 한다. 체스와는 비교도 안 된다. 이러한 이유로 알파고의 패배는 기정 사실화된 것처럼 보였다. 하지만 경기 결과는 우리의 기대와는 전혀 다르게 나타났다.

column_img_2427.jpg

[그림 1] 이세돌과 알파고의 대국 결과

인간 대표 이세돌 9단이 인공지능 알파고에 1국을 패한 뒤에 어떤 이는 엄청난 충격을 받았다고 했고, 어떤 이는 방심해서 패했다고 했다. 아직까지는 인간의 패배를 인정하기 싫은 분위기였다. 인간이 컴퓨터에게 패한다는 것을 상상할 수 없었을 것이다. 그러나 2국, 3국 마저 패한 후에는 모든 사람들이 인공지능의 능력을 인정할 수 밖에 없었다. 처음으로 이긴 4국에서 그나마 인간 능력에 대한 존엄을 다시금 살려 놓았지만 결국 최종적으로 “1승 4패” 인간의 충격적인 패배로 경기는 끝났다.

column_img_2428.jpg

[그림 2] 이세돌과 알파고의 대국 소감

이세돌과 알파고의 바둑 대국 전에 구글딥마인드 공동 창업자인 ‘데미스 하사비스(Demis Hassabis)'는 대국 승리의 확률을 50 대 50으로 생각한다며 자신감을 피력했었다. 한술 더 떠서 대국 이후 이세돌 9단이 어떤 소감을 말해줄지 기대한다고 했었다. 이에 반해 이세돌 9단은 “바둑 역사에 의미 있는 대결로 내가 이길 것”이라고 자신 있게 말했었다. 하지만 대국은 인공지능 알파고의 승리로 끝났다. 이세돌이 말한 다음과 같은 말이 귓가에 맴돈다. “이세돌이 패배한 것이지 인간이 패배한 것이 아니다.”

column_img_2429.jpg

[그림 3] 인공지능 vs. 인간 대결

인간과 인공지능과의 대결은 이번이 처음은 아니다. 첫 대결은 1967년 MIT 출신 해커가 만든 체스 프로그램 ‘맥핵'이다. 아마추어 체스 고수를 이기면서 인간과 인공지능과의 첫 대결로 기록되었다. 그 후 딥블루((Deep Blue)를 제작하여 카스파로프에게 재도전하였다. 가 인간과의 체스 대결에서 승리 하였고, 왓슨(Watson)이 인간과의 퀴즈 대결에서 승리하였다. 마지막 성역이라고 불리는 바둑에서는 구글에서 개발한 '알파고‘가 유럽 챔피언인 중국계 바둑기사 판후이 2단에게 5대 0으로 완승했다. 인류 최고의 바둑기사라 불리는 이세돌 9단까지 무릎 꿇린 인공지능은 인간과 컴퓨터 간 대결 역사를 새롭게 쓰고 있다.

구글의 알파고는 인공지능 바둑 프로그램이지만 이세돌과의 바둑 승리로 인하여 인공지능의 대명사로 기억될 것이다. 예전 인간과의 체스 대결에서 이긴 초기의 인공지능도 있으나, 그때와는 상황이 많이 다르다. 체스는 바둑과는 다른 방식의 보드 게임이다. 체스는 분석에 근거하여 경기를 해야 하지만, 바둑은 직관적으로 경기를 해야 한다.

바둑에서 경우의 수는 10의 170 제곱으로 우주의 원자 수보다도 많다고 한다. 이러한 수많은 경우의 수를 모두 분석할 수는 없으므로 인간은 직관적으로 바둑을 두었다. 그리고 지금까지는 직관적인 능력을 가진 기계는 없었으므로 바둑은 영원히 인간의 영역이라고 생각되었지만 이제는 아니다. 알파고의 승리로 인하여 인간의 분석 능력뿐만 아니라 직관 능력까지도 위협 받게 되었다. 직관력은 더 이상 인간의 고유한 능력이 아님을 알게 되었다. 도대체 알파고는 어떠한 방법으로 직관력을 갖게 되었을까



구글의 인공지능 알파고

알파고(AlphaGo)는 구글딥마인드(DeepMind)에서 개발한 인공지능 바둑 프로그램이다. 최초 또는 최고의 뜻을 가진 Alpha와 영어 단어 Go를 합쳐서 만든 이름이다. 알파(Alpha)는 그리스어 자모의 첫째 글자로 영어의 A에 해당한다. 이 때문에 최초 또는 최고의 의미를 지니고 있다. 고(Go)는 바둑을 뜻하는 한자 ‘기(碁)’의 일본식 발음이다. 일본이 서양으로 바둑을 전파했기 때문에 영어권에서는 바둑을 ‘The game Go’라고 부른다. 결국 알파고는 최고의 바둑 프로그램을 의미한다.

column_img_2430.jpg

[그림 4] 알파고(AlphaGo)의 의미

구글의 인공지능 알파고는 바둑을 학습한 시간만 인간의 시간으로 환산 시 약 1,000년이라고 한다. 알파고의 하루는 인간의 35.7년에 해당되며 하루 3만 번의 바둑을 연습했으며 지금까지 3억 4,000만 번의 복기와 128만 번의 셀프 대국을 했다고 한다.

인공지능 알파고가 어떤 원리로 바둑을 두는지 구체적으로 알아 보자. 바둑은 경우의 수가 10의 170제곱으로 우주의 원자 수를 합친 10의 80제곱보다 월등히 많기 때문에 모든 경우의 수를 시뮬레이션하여 경기를 두는 것이 아니라, 사람의 직관처럼 패턴 인식을 통해 확률적으로 최선의 수를 찾아내는 방식을 사용했다고 한다.

이를 위해 알파고는 기사들의 경험이 들어간 바둑 기보 16만 건과 3000만 가지의 바둑판 상황을 이미지 인식방법으로 학습했다. 또한 우리 뇌와 비슷한 신경망 알고리즘인 딥러닝의 정책망과 가치망 알고리즘 활용했다.

정책망은 일반적으로 바둑기사들이 많이 사용하는 경우 수를 찾는 역할을 하고, 가치망은 승리할 확률은 높은 수를 찾는 역할을 한다. 그리고 쌍둥이 알파고 프로그램과 128만 번 이상 대국을 펼치면서 실력을 쌓았다. 뿐만 아니라 알파고는 최고급 컴퓨터 5,000대를 한꺼번에 돌려 초당 경우의 수 10만 개를 검색할 수 있다. 프로 바둑기사는 다음 수를 놓기 위해 보통 초당 100개의 경우 수를 고려 한다고 하니 1,000배가 넘는 능력을 가지고 경기를 한 셈이다.

column_img_2431.jpg

[그림 5] 알파고의 패턴인식을 통한 학습원리

구글딥마인드 공동 창업자 데미스 하사비스는 알파고에 대해 다음과 같이 설명하였다.

‘알파고는 단순히 숙련된 시스템이 아니다. 딥블루처럼 바둑 규칙을 일일이 입력해서 개발된 시스템이 아니라 범용 머신러닝 기법을 활용해 알파고 스스로가 어떻게 이기는지를 학습하는 방식으로 진화 되었다는 것에 의미가 있다. 기존의 바둑 프로그램은 방대한 경우의 수를 무작위로 입력하고 검색하는데 그쳐서 한계가 있었다. 이런 바둑에서 알파고가 승리할 수 있었던 기술은 바로 컴퓨터 스스로 학습하는 머신러닝 기술 중 하나인 딥러닝 기술을 채택했기 때문이다.’



인공지능 - 머신러닝 - 딥러닝

알파고를 검색하면 자주 등장하는 단어 중에 인공지능, 머신러닝, 딥러닝이 있다. 인공지능은 로봇으로 비유되며 사고나 학습 등 인간이 가진 지적 능력을 컴퓨터를 통해 구현하는 기술이다. 인공지능의 한 분야인 머신러닝은 컴퓨터가 사람처럼 학습하는 것을 말하며 데이터를 통해 학습을 시키거나 컴퓨터가 스스로 학습하여 인공지능의 성능을 향상시키는 기술 방법이다. 머신러닝의 한 분야인 딥러닝은 사람의 뇌가 사물을 구분하는 것처럼 사물을 분류하도록 훈련시킨다. 인공신경망과 유사하며 사람의 뉴런과 비슷한 방식으로 정보를 처리한다.

column_img_2432.jpg

[그림 6] 인공지능 &머신러닝&딥러닝



머신러닝

머신러닝(Machine Learning)은 앞서 설명한 것처럼 인공지능의 한 분야로, 기계학습이라고도 한다. 기계의 머신과 학습의 러닝의 합성어로 컴퓨터가 학습할 수 있도록 하는 알고리즘 기술 분야를 말한다. 1956년 아서 사무엘(Arthur Samuel)은 컴퓨터에게 배울 수 있는 능력, 즉 코드로 정의하지 않은 동작을 실행하는 능력에 대한 연구 분야로 정의했다. 데이터에 내재된 패턴, 규칙, 의미 등을 컴퓨터에게 알고리즘을 기반으로 스스로 학습하게 하여 새롭게 입력되는 데이터에 대한 결과를 예측할 수 있도록 하는 기술이다.

컴퓨터는 어려운 수학 문제는 척척 풀지만 계단을 오르내리거나 문을 여는 것은 어려워한다. 또한 고양이와 개 등 사물도 구별하지 못한다. 사람은 학습을 통해 사물을 인지하고 학습된 정보들이 신경망을 거치면서 이를 설명하지 않아도 구별하게 되는 것이다. 컴퓨터에게도 이런 능력을 가지고 학습하기 위해 고안된 방법이 머신러닝이다.

머신러닝은 축적된 데이터를 분석해 미래를 예측하는 기술이다. 입력된 적 없는 단어나 사진이 데이터에 들어올 때 머신러닝이 해당 단어나 문장과 유사한 의미를 찾아 검색 결과로 내보내는 원리다. 머신러닝은 우선 데이터를 모으고, 패턴을 분석하고, 패턴 안에서 알고리즘을 파악하고, 미래를 예측한다. 정보를 수집해 소비 패턴을 찾고 필요한 자료를 주는데 그치지 않고 새로 들어오는 정보를 스스로 학습해 예측하는 것이다. 머신러닝은 빅데이터보다 한 단계 더 진화한 기술이다.

구글의 검색 알고리즘이 바로 이 머신러닝 기술을 담고 있다. 구글은 앞으로 머신러닝의 예측 분석이 더 널리 쓰일 것으로 기대해 머신러닝 기술을 오픈 소스 버전으로 내놓았으며 향후 더욱 다양한 서비스를 소개할 예정이라고 한다. 페이스북도 이미 사람의 얼굴을 97.25%의 정확도로 알아내는 딥페이스란 인공지능 기술을 개발하였다.

마이크로소프트도 애저 머신러닝 시험판을 이미 공개하였고, 세계 많은 기업에 관련 솔루션으로 제공하였다. 사실 머신러닝은 이미 1959년 등장한 오래된 기술이다. 머신러닝이 지금 더욱 이슈가 되고 기술이 가속화되는 이유는 크게 세가지가 있다.

첫째, 인터넷의 등장과 IT 기기의 폭발적인 발전에 따라 다양한 데이터를 쉽게 많이 확보 가능
둘째, 기존 인공신경망의 한계를 극복할 수 있는 멋진 알고리즘의 개발, 즉 딥러닝의 등장
셋째, 데이터와 알고리즘을 빠르게 처리하고 학습할 수 있는 고성능 컴퓨터 기술 출현

column_img_2433.jpg

[그림 7] 머신러닝 기술의 가속화 조건

머신러닝은 자연어 처리, 로봇, 패턴인식, 전문가시스템 등 인공지능의 모든 분야와 관련되어 발전되었다. 글로벌 소통을 구현하는 통역 분야, 작은 의사결정을 보조하는 개인비서 분야, 수요를 빠르게 예측하는 예측분석 분야, 의사 치료계획 보조 역할을 수행하는 의료 분야 등으로 다양하다. 음성인식 분야에는 애플의 시리(siri)가 대표적인 솔루션이다. 사용자의 음성 명령을 받아 적절한 대답이나 기능을 구현해주는 시리는 지능형 음성인식 기능을 가지고 있으며 사용자들의 뜨거운 호응을 얻었었다.

머신러닝은 데이터가 많아질수록 성능이 향상된다. 그 이유는 컴퓨터는 사람처럼 타고난 재능을 가지고 있지 않기 때문이다. 따라서 사람이 후천적인 노력으로 지식 및 다른 능력을 보유하듯 컴퓨터 역시 많은 데이터를 통한 후천적인 학습으로 능력을 향상 시키기 때문이다. 이런 능력은 많은 데이터를 통해 가능하면 확률을 높이는 역할을 수행한다.



딥러닝

가트너가 2014년 주목해야 할 기술로 딥러닝을 뽑았다. 딥러닝(Deep Learning)은 인공지능 및 머신러닝 발전의 획기적인 전환의 계기를 만들었다. 딥러닝은 사람의 뇌가 사물을 구분하는 것처럼 사물을 분류하도록 훈련시킨다. 인공신경망과 유사하며 사람의 뉴런과 비슷한 방식으로 정보를 처리한다.

딥러닝은 다량의 데이터나 복잡한 자료들 속에서 핵심적이고 의미 있는 내용을 요약하는 머신러닝(기계학습)의 큰 틀에서 사람의 사고 방식을 컴퓨터에게 가르치는 머신러닝 한 분야이다. 딥러닝은 2010년 이후 각광 받고 있는 연구 분야로서 딥러닝 프로그램은 인간 신경 세포를 모방해 컴퓨터가 마치 사람처럼 스스로 자기 학습을 할 수 있도록 한 기술이다.

최근 논란을 일으킨 로봇 저널리즘은 딥러닝을 활용한 좋은 예이다. 알고리즘이 기사를 대신 써 주는 로봇 저널리즘의 탄생은 우리를 놀라게 했다. 논평 기사는 어렵지만 사실 위주의 간단한 기사는 충분한 경쟁력이 있는 걸로 생각된다. 비록 아직까지는 로봇 저널리즘의 한계가 있겠지만 그 극복할 날도 멀지 않음을 우리는 알 수 있다.

신석기 시대의 종말은 돌이 없 의지와는 무관하게 진행 되기도 한다.

인간의 뇌를 닮은 딥러닝이 사람만이 가진 마음과 사회성까지 대체하는 날은 오지 않을까

보고 듣고 말하고 생각하고 움직이는 본격적인 기계의 시대는 오지 않을까 인간의 능력을 훨씬 뛰어 넘는 기계가 출현하지 않을까 스스로 학습하는 기계, 스스로 판단하는 기계, 그 날이 오고 있음을 우리는 안다. 이세돌의 패배의 충격은 시작일 뿐이다. 앞으로 더 큰 충격이 다가 올 것이다.

이번 연재는 이세돌과 인공지능 알파고의 대결의 의미에 대해서 살펴 보았다. 또한 이와 관련해서 인공지능, 머신러닝, 딥러닝에 대한 내용들도 알아 보았다. 비록 오라클 DB 연재의 주제와는 직접적인 관련은 없지만, 언젠가는 우리의 직무 환경에 영향을 미칠 것이다. 스스로 미래를 예측하는 기계의 등장과 함께 더욱 숨가쁘게 진보하는 정보통신 환경에서 우리는 위험에 노출되었을 수도 있고, 새로운 도전에 직면해 있을 수도 있다. 우리 앞에 놓여진 그 길을 우리는 비켜갈 수 없음을 안다. 지금 필자의 처지와도 무관하지 않다. 이 글을 쓰는 동안 고민이 많아졌다. 쓸데없는 고민이었으면 좋겠다.

다음 연재의 내용은 DB와 관련된 잡다한 이야기에 관한 것이다. 중요 할 수도 있고 중요하지 않을 수도 있다. 다음 연재는 좀 쉽고 편하게 쓰고 싶다.



[지난 문제의 정답과 풀이]원리를 이해하고 논리로 풀어가는, 쉬어가는 DB 문제

지난 연재에 출제한 ‘원리를 이해하고 논리로 풀어가는, 쉬어가는 DB 문제’에 대한 정답과 해설은 아래와 같다. 문제를 풀면서 DB 원리를 하나씩 배우고 이해할 수 있다.



column_img_2434.jpg

column_img_2435.jpg

[이번 호 문제]원리를 이해하고 논리로 풀어가는, 쉬어가는 DB 문제

각 연재의 말미에 간단하면서도 재미있고 생각해 보는 문제를 출제하려 한다. 모든 문제는 DB의 원리를 이해할 수 있는 문제로 출제할 예정이다. 문제를 풀면서 DB 원리를 하나씩 배우고 이해할 수 있다. 정답과 그에 대한 설명은 다음 연재에서 한다.

column_img_2436.jpg