메뉴 바로가기 검색 및 카테고리 바로가기

한빛미디어

파이썬 날코딩으로 알고 짜는 딥러닝의 깊이와 재미를 아는 남자 - 윤덕호

저자 인터뷰 - 윤덕호

미리보기

저자님에 대해 소개부탁드려요.

중고등학교 때 수학 문제 풀기를 좋아하는 바람에 고등학교 때와 대학교 때 한 번씩 전국수학경시대회에서 우승한 적도 있다. 수학과에 진학할까 하기도 했으나 당시로서는 생전 구경도 못해 본 컴퓨터라는 장치가 너무 궁금해 1981년 서울대학교 컴퓨터 공학과에 진학했다. 이후 같은 학교에서 석박사를 하면서 인공지능 분야, 그 가운데서도 자연언어처리를 전공으로 공부했다.운 좋게도 박사 공부를 다 마치기 전인 1989년 대전의 한남대학교정보통신공학과 전임 교수 자리를 맡게 되어 이후 10여년간 여러 가지 소프트웨어 과목들을 강의했다. 그러다가 1999년 11월부터 코난테크놀로지라는 소프트웨어 회사에 합류했고 어느덧 20년째 소프트웨어 개발 분야에서 일하고 있다. 1999년 4월 이 회사를 만든 김영섬 사장님과는 1994년부터 전자통신연구원의 인공지능 관련 과제를 수행하면서 알게 되어 함께 일하던 사이였다.

교수 자리를 그만두고 코난으로 옮기면서 딱 한 가지를 사장님에게 요구했는데 바로 인공지능 분야의 일은 절대로 하지 않겠다는 것이었다. 인공지능 연구가 싫어서라기보다는 작은 회사의 사업 아이템으로는 대단히 부적절한 성공하기 어려운 분야라는 생각에서였다. 그래서 코난에서 일하는 동안 대부분 방송, 미디어 분야 등 인공지능과 거리가 먼분야의 소프트웨어 개발 일들을 주로 해 왔다.

한편 아이들을 키우면서 학부모 모임 등을 통해 마을 공동체 운동 등에 관심을 갖게 되었다. 그래서 회사와 집(술집도 집^^)만 오가던 생활 방식이 크게 바뀌어 2010년 무렵부터 많은 모임에서 여러 가지 활동을 경험하고 있다. 이를테면 요즘은 주중에 하루는 문탁네트워크라는 인문학 공부 모임에서 세미나를 하고 또 하루는 커뮤니티 댄스 강습에 나가 막춤을 추면서 시간을 보낸다. 또한 토요일에는 이우FC라는 동아리에서 축구를 하고 일요일에는 극단동동이라는 모임에서 연극 연습을 한다. 축구도 연극도 아직 썩 잘 하지는 못하는 편이지만 오랫동안 수비만 보다가 요즘은 공격수로 나가 골을 넣기도 하고 작년에는 주연급의 꽤 큰 배역을 맡아 연극 무대에 오르기도 했다.

그런데 이처럼 평화롭던 일상이 3년전 열린 인간과 컴퓨터의 바둑 대결로 크게 흔들렸다. 예상과 달리 이세돌을 완파한 알파고에 놀라 딥러닝에 대한 궁금증이 생겼고 그 바람에 이런저런 공부를 하다보니 결국 저자의 반열에 오르게 되었고 서서히 다시 평화롭던 일상을 찾아가는 중이다.


작년 여름 이천에 있는 한 카페를 들렀다가 벽에 걸린 그림, 아니 사진을 보고 깜짝 놀랐다. 턱을 괴고 여유롭게 앉아 있는 노인 분의 모습이나 얼굴이몇 년 전 돌아가신 아버지와 너무나 닮아 보여서였다. 마침 일행 가운데 훌륭한 사진사가 있어서 반가운 마음에 그림 속 포즈를 흉내내고 한 컷을 부탁했다. 나중에 사진 속의 이 분이 예전에 재미있게 읽었던 소설 <제5도살장>을 쓴 작가 커트 보니것이라는 것을 알게 되면서 더욱 기억에 남는 사진이 되었다.

『파이썬 날코딩으로 알고 짜는 딥러닝』 집필 동기는 무엇인가요?

80년대에 인공지능을 공부했지만 회사로 옮긴 후 줄곧 다른 분야의 일을 하다 보니 딥러닝이라는 용어는 생소했다. 마침 회사에 딥러닝을 공부해온 젊은 직원이 몇 명 있어서 함께 이안 굿펠로, 요슈아 벤지오, 에런 쿠빌이 함께 저술한 『심층학습Deep Learning』(제이펍, 2018) 책을 공부해나가는 방법으로 세미나를 시작했다. 그런데 세미나를 통해 알고 보니 딥러닝이 완전히 낯선 분야는 아니고 80년대에 잠깐 살펴볼 기회가 있었던 퍼셉트론 신경망 이론이 발전한 결과임을 알게 되었다.

세미나를 통해 딥러닝 알고리즘의 원리를 공부하면서 실제 예제를 돌려보기 위해 C++ 프로그램을 짜기도 하고 기존 예제를 찾아 인터넷을 뒤져보기도 했다. 주위의 권유에 따라 텐서플로를 설치하고 이를 이용해 여러 가지 예제를 돌려 보기도 했다. 그런데 텐서플로를 이용한 공부는 딥러닝에 대한 이해의 기쁨보다는 무언가 미진한 갑갑함을 늘릴 뿐이었다.

원래 지나치게 편리한 도구는 원리에 대한 이해 수준을 떨어뜨리고 응용 능력을 앗아가기 쉽다. 텐서플로 같은 프레임워크의 역할도 그렇게 보였다. 이런 편리한 도구를 이용해 이런저런 응용을 쉽게 만들 수는 있지만 그 수준을 넘어서서 딥러닝을 제대로 이해하고 다양하게 활용하기 위해서는 이들 도구를 넘어서는 깊은 공부가 필요하다는 생각이 들었다.

편리한 프레임워크를 무료로 제공해가면서 딥러닝 붐을 일으키는 미국 거대 기업의 움직임이 혹시 어떤 음모가 아닐까 하는 생각까지 들었다. 딥러닝 모델의 성패를 좌우하는 가장 큰 요인은 데이터의 양과 질이다. 그런데 이 데이터의 양과 질 측면에는 자신이 있으니 편리한 도구를 제공해 딥러닝 붐을 일으켜서 인공지능 분야는 물론 IT 분야 전반에서의 대세를 장악하되 막상 자신들을 제외한 다른 나라, 다른 집단에 속한 딥러닝 개발자들의 이해 수준은 적당한 선에만 머무르게 하여 혹시 있을 추격을 미연에 방지하려는 음모 말이다.

수십 년 해 온 일이 소프트웨어 개발인데 이런 유치한 음모론적 생각까지 들다 보니 프레임워크 없이 딥러닝 알고리즘을 직접 구현해 돌리려는 노력을 하게 되었다. 그리고 그 노력의 과정 내지 결과를 우리 사회의 미래를 짊어지고 나갈 젊은 개발자들과 공유하고 싶은 생각도 갖게 되었다.

거기에다가 대화를 통해 비슷한 꿈을 갖게 되었지만 사업에 바빠 당신이 직접 손대기에는 도저히 여력이 없었던 코난의 김영섬 사장님이 교육 경험도 있고 개발 경험도 있는 데다가 인공지능 분야를 두루 공부한 당신이 적임자라며 책을 써 보라고 압박하기 시작했다. 직장 상사의 집요한 감시와 방해에 숨어서 책을 써야 하는 사람도 많을 텐데 사장의 격려와 배려를 받다니 참으로 복 받은 인생 아닌가 스스로를 위로하며 힘든 집필의 과정에 생전 처음 나서게 되었다.


친한 후배가 미국에서 안식년을 마치고 돌아오면서 무려 32,256피스짜리 직소 퍼즐을 선물했다. 평소 퍼즐 맞추기를 좋아하기는 했지만 이 나쁜 후배 덕분에 8개의 봉지에 나누어 담긴 키스 헤링 그림 32점을 맞추느라 2년 동안 고통의 밤이 이어졌다. 이렇게 완성된 퍼즐을 마루에 펼쳐놓고 인증샷을 찍어 보았다. 안타깝게도 마루가 좁아 8줄 가운데 마지막 한 줄의 그림 4점은 따로 떼어두는 바람에 인증샷에 들어가지 못했다.

다른 딥러닝 도서와 비교했을 때 이 책의 장점은 무엇인가요?

지인들 가운데는 책이 두툼해서 베고 자기 좋다는 장점을 말하는 분도 있다. 해석을 달리 하여 단점을 장점으로 둔갑시키는 초긍정 마인드를 가진 훌륭하신 분이다.

쉽게 쓰려 애썼지만 필자의 『파이썬 날코딩으로 알고 짜는 딥러닝(이하 알짜 딥러닝)』은 결국 쉽지 않은 책으로 낙인찍히게 되었다. 그래도 이 책에서 가장 내세울 만한 부분, 혹은 필자로서 가장 뿌듯한 부분은 이 책이 현업에 이용 가능한 수준의 실전적인 프로그램 예제를 듬뿍 담고 있다는 점일 것이다. 열 다섯 개의 장에는 저마다 해당 단원의 주제를 반영한 예제 프로그램이 프레임워크나 별다른 라이브러리를 사용하지 않고 파이썬의 기본 모듈들만을 이용한 날코딩으로 작성되어 있다. 또한 이들 예제는 각각 흩어진 내용의 산발적 구조가 아니고 함수 차원 혹은 클래스 차원의 코드 재활용을 통해 체계적으로 엮어져 있다. 사실 이들 예제의 프로그램 구조는 일종의 작고 간단한 프레임워크에 해당한다고도 볼 수 있다. 각각의 예제는 다양한 실험 내용을 담고 있으며 독자는 일단 교재에 수록된 실험 내용이 올바로 재현되는지 확인해본 후 실험 방법을 달리 한다든지 나아가 코드를 수정해 본다든지 하는 다양한 접근을 통해 이해의 깊이를 더해갈 수 있을 것이다.

캐글 사이트 등에서 선별해 구한 다양한 데이터셋을 통해 여러 가지 유형의 문제를 풀어 나가는 것도 이 책의 큰 장점이 될 것이다. 여기에는 딥러닝 모델의 실험에 널리 이용되어온 엠니스트 데이터 셋이나 사이파 데이터셋 따위에 안주하면서 코드 내용에만 집착하려 드는 필자를 구박해 넓은 세상으로 내몬 편집자의 공이 크다. 이 자리를 빌어 집필 기간 내내 필자를 구박하면서 함께 고생한 한빛 미디어의 최현우 편집자에게 감사드린다.

책의 초반부에는 딥러닝의 수학적 토대에 대한 이해를 돕기 위해 애썼고 재미있는 예제와 삽화를 통해 독자에게 가까이 다가가려는 시도도 해 보았다. 하지만 중반부를 넘어서면서 다루는 내용의 무게감 때문에 그런 노력이 충분히 지속되지 못한 점은 집필을 끝낸 지금의 시점에서 보면 다소 아쉬운 부분이기는 하다. 그래도 이런 노력 등을 통해 예제 소개에 앞서 펼쳐지는 본문 내용의 전개를 독자 친화적으로 끌고 가려 애쓴 점도 이 책의 작은 장점은 될 것이다.

이 책과 함께(또는 미리) 보면 좋을 책이나 온라인 자료가 있다면 추천해주세요.

새로운 분야를 공부하기 위해 여러 책을 읽었을 때 가장 좋은 책은 최근에 읽은 책이라는 말이 있다. 새로운 분야가 주는 어려움 가운데 가장 큰 부분은 낯선 용어가 주는 어려움이고 그 다음은 역시 낯선 개념이 주는 어려움이다. 이전에 읽은 책들이 그런 낯설음을 덜어준 상태에서 읽기 때문에 대개의 경우 최근에 읽은 책이 가장 정리에 도움이 되는 것이다. 그러니 딥러닝에 대한 낯설음을 덜어주는 데 도움이 된다면 어떤 책이나 자료도 도움이 될 것 같다.

이 책이 파이썬 날코딩으로 작성되어 있기 때문에 파이썬에 낯선 독자라면 먼저 파이썬 언어를 공부하는 것도 좋을 것이다. 하지만 프로그래밍 언어를 공부하는 가장 좋은 방법은 해당 언어로 작성된 프로그램을 살펴보고 뜯어 고쳐가며 여러 가지 실험을 해 보는 것이라고 생각한다. 따라서 파이썬 언어에 대한 예습은 너무 열심히 하지 말고 그냥 이 책으로 파이썬까지 함께 공부해도 좋을 것이다. 참고로 필자도 파이썬으로 무언가 돌아가는 프로그램을 짜본 것은 이번이 처음이다. (물론 1979년 고등학교 때 포트란을 처음 접한 후 40년 동안 수십 가지 프로그래밍 언어를 써 보기는 했지만… ㅋ)

한편 앞서 언급한 『심층학습Deep Learning』(제이펍, 2018) 책이 최근 번역이 되어 나왔다니 딥러닝 알고리즘을 깊이 이해하고 싶다면 권해보고 싶다. 필자는 영어로 된 원서를 읽어가며 세미나를 했지만 번역서가 아무래도 읽기 편하기는 할 것이다. 굳이 원서를 마다하지 않는다면 인터넷에 PDF 파일이 공개되어 있으니 웹 화면을 통해 공부할 수도 있을 것이다.

필자가 집필을 시작한 뒤에 접하게 된 『밑바닥부터 시작하는 딥러닝』도 좋은 책이다. 스타일이 조금 다르기는 하지만 파이썬으로 직접 구현한다는 점에서 필자의 『알짜 딥러닝』과 비슷한 점이 적지 않아 깜짝 놀랐었다. 특히 『알짜 딥러닝』에서 막상 필자의 전공 분야였던 자연어 처리 부분을 제대로 다루지 못해 아쉬웠고 그래서 개정판이나 후속 작품으로 다루어볼까 생각하고 있었는데 얼마 전 출간된 『밑바닥부터 시작하는 딥러닝 2』에서 이 부분을 다루고 있어서 반가우면서도 내심 좀 당황하고 있는 중이다.

과거 박사학위를 따시던 시절과 지금의 인공지능 기술이 어떻게 다른지요?

인공지능은 사람의 지능과 비슷한 역할을 수행하는 소프트웨어를 말한다. 인공지능을 만들려는 시도는 크게 ‘지식 기반 접근’과 ‘데이터 기반 접근’으로 나뉜다. 필자가 공부했던 80년대식 인공지능은‘지식 기반 접근’에 해당하는 데 반해 최근 유행하며 『알짜 딥러닝』에서 다루고 있는 딥러닝 기법은 ‘데이터 기반 접근’으로 확연히 구별된다.

인공지능 연구 초기에 주류였던 ‘지식 기반 접근’은 문제 영역의 지식을 기호로 표현해 풀어내는 방식이다. 초창기 열악한 컴퓨팅 환경을 고려할 때 핵심 지식을 추출하여 문제를 해결하려는 시도가 주를 이룬 것은 당연하다. 한정된 저장 공간과 계산 속도를 감안할 때 데이터 자동 분석은 사치일 뿐 모든 지식은 인간 전문가가 고심을 거듭하면서 추출하고 정리해야 했다. 이런 접근은 전문가가 갖는 풍부하고 섬세하며 때로 추상적이거나 막연하기까지 한 전문지식을 모순 없이 기호로 표현하는 일에서 큰 난관에 봉착했고, 기호로 표현된 지식을 자동 처리해 문제를 풀어내는 일에서도 많은 어려움을 겪었다.

머신러닝으로 통칭되는 ‘데이터 기반 접근 방식’에서는 프로그램이 직접 데이터를 분석하여 숨어 있는 규칙이나 패턴을 포착해 문제를 해결한다. 데이터로부터 규칙이나 패턴을 획득하는 과정을 학습이라고 하는데 이 학습 과정을 프로그램이 직접 수행하기 때문에 기계학습, 즉 머신러닝이라고 부른다. 머신러닝이 제대로 작동하려면 통계나 확률을 기초로 한 학습 알고리즘과 대량의 데이터, 막대한 컴퓨팅 파워가 필요하다. 하지만 전문가로부터 지식을 추출하는 어려운 과정 없이도 인공지능을 실현할 수 있다는 장점이 있다.

딥러닝은 머신러닝의 한 방법이다. 동물의 신경세포를 흉내 낸 퍼셉트론을 단위로 삼아 구성한 신경망 구조를 이용해 학습을 수행하고 문제를 풀어낸다. 인공지능 초창기인 1950년대부터 퍼셉트론에 대한 연구가 시작되었지만 머신러닝 분야 안에서조차 변방에 머물다가 2000년대 들어 연구에 여러 가지 돌파구가 만들어지고 2010년 무렵부터 딥러닝이라는 이름으로 널리 알려지게 되었다.

필자의 경우 사실 1980년대의 ‘지식 기반 접근’을 공부하면서 과연 인공지능을 연구용 장난감 수준이 아닌 실용적 목적에 맞게 상용화시킬 수 있을지에 대해 많은 회의감이 들었었다. 회사를 시작할 때 사장에게 인공지능 분야를 피하도록 간곡히 이야기한 것도 이런 연유에서였다. 하지만 딥러닝에 대해서는 느낌이 다르다. 모든 문제를 척척 풀어내며 사람들과 재치있는 대화를 하다가 뒤퉁수를 치기도 하는 영화 속의 인공지능까지는 아니더라도 산업계 여기저기에 이용되어 생산성을 향상시키고 세상에 유익하게 이용되는 크고 작은 딥러닝 응용들이 만들어지기 시작하고 있다.

딥러닝의 최신 동향이나 신기술에 대한 정보가 있다면 소개해주세요.

『알짜 딥러닝』의 마지막 단원에서 다룬 생성적 적대 신경망은 콘텐츠 분석이 아닌 콘텐츠 생성을 위한 방법론이라는 점에서 계속 관심이 커져갈 분야임이 분명하다.

한 도메인에서 학습된 내용을 이용해 다른 도메인에서의 학습 부담을 줄이는 방법을 연구하는 전이학습 분야 또한 딥러닝에서 앞으로 중요하게 여겨질 부분이다. 미리 수행되는 학습 과정 뿐만아니라 실전에 활용되는 과정 중에도 지속적으로 파라미터들을 수정해가면서 새로운 팁을 배우고 성능을 향상시키도록 하기 위한 강화 학습 또한 중요한 주제이다.

자연어 처리 등 시계열 데이터를 처리할 때 어떤 성분에 주목할지를 추적해 함께 학습함으로써 딥러닝 모델의 성능을 크게 높이는 어텐션 기법 역시 앞으로 큰 기대를 모으고 있는 새로운 학습 기법이다.지식 기반 접근과 크게 다른 딥러닝의 특징은 문제를 풀어내되 왜 그렇게 풀었는지를 설명 못한다는 점이다. 이는 때로 치명적인 약점일 수 있기 때문에 설명 가능한 인공지능으로 딥러닝 모델을 업그레이드시키기 위한 방법 역시 딥러닝의 매우 중요한 연구 주제로 부각되고 있다.

이 밖에 딥러닝이 재기에 성공해 돌풍을 일으키는 과정에서 가장 큰 공로를 세우며 활약했던 제프리 힌튼 교수가 2017년 CNN의 처리 방식을 변형시킨 캡슐망이라는 아이디어를 제안했는데 이 역시 꼭 한 번 살펴볼만한 분야라고 하겠다.

신경망 입문자나 개발자에게 전하고 싶은 말씀이 있으신가요? 마지막으로 한 마디 부탁드립니다.

프레임워크에 갇혀 딥러닝 알고리즘의 깊은 원리를 이해하지 못한 채 간단한 예제 프로그램만 짜다가 문제 해결 능력을 제대로 기르지 못하는 상황에서 벗어나자는 것이 『알짜 딥러닝』을 쓴 취지이기는 하지만 좋은 프레임워크를 잘 사용하면 많은 문제들을 해결하는 데 유용할 것이다. 『알짜 딥러닝』을 공부해 내공을 쌓았다면 그 내공으로 프레임워크가 무슨 짓을 하는지 꿰뚫어보면서 그 기능을 백프로 활용할 수 있도록 노력하는 것도 좋을 것이다.

딥러닝에서 중요한 것은 학습용 데이터셋의 양과질이라는 점도 항상 잊지 말자. 아마도 앞으로 딥러닝을 이용한 문제 해결 과정에서 대부분의 시간과 비용은 데이터셋을 만들어내는 부분에 소모될 것이다. 기회가 생긴다면 데이터셋 구축 과정에참여해보는 것도 딥러닝을 공부하고 활용하는 데 매우 유익한 경험이 될 것이다.

딥러닝이 여기저기 이용되면서 세상이 돌아가는 모습이 많이 바뀔 것이다. 개발자는 돈 받고 개발만 할뿐 개발된 모델을 좋은 데 쓰든 나쁜 데 쓰든 돈 내고 사간 사람이 알아서 할 일이라는 식의 생각은 스스로를 기계의 부품 수준으로 전락시키는 일이다. 사람들에게 유익하고 사회를 건강한 방향으로 바꾸는 데 딥러닝이 이용될 수 있도록 세상에 대한 관심을 게을리 하지 않았으면 좋겠다. 열린 커뮤니티 속에서 열린 마음을 유지하는 것은 스스로의 자존감을 높이고 사회의 변화를 이웃과 함께 느낄 수 있는 좋은 자세라 생각한다.

나아가 딥러닝 개발자뿐만 아니라 모든 전문가들이 눈 앞의 일에만 매몰되어 자신을 좁은 영역에 가두어버리지 않기를 권한다. 지나치게 한 가지에만 빠져들다 보면 몸과 마음을 상하게 되면서 일의 성과도 오히려 떨어지는 법이다. 필자의 경우에도 마을에서의 여러 활동을 곁들인 바쁜 생활은 딥러닝을 공부하고 책을 쓰는 데 오히려 큰 힘이 되었다. 잘 놀고 잘 쉬는 것. 때로는 멍 때리고 푹 자는 게 필요할 때도 있겠지만 낯설고 어색해서 힘든 그런 새로운 일을 경험해보는 것이 스스로의 새로운 능력을 발견하면서 삶의 재미를 찾는 기회가 될 것이다. 나아가 아무리 전념해도 꽉 막힌 채로 괴로움만 안겨주는 일의 돌파구는 잠시 눈을 딴 곳으로 돌려 잘 쉬고 잘 놀면서 찾아지는 법이다.

댓글 입력
자료실