Disqus for deduction-theory

완전쉬운 딥러닝 1


이 글과 연결된 과거 글은 여기에 있어요.
이 글은 오늘의 유머 과학 게시판에도 업로드 되었어요.

안녕하세요. 이기준입니다. 제가 어제 오유 과학게시판에 쓴 글이 베오베를 갔어요. 그것도 글 쓴지 세 시간 밖에 되지 않아서요. 제가 베오베 갈 것을 기대하지는 않았거든요. 그런데 베오베를 가고 나니 다른 분들의 댓글 중에 "아, 궁금해서 읽어보았는데 어렵다."하는 댓글이 눈에 들어오더군요.



그걸 보니 마음이 아프더라구요. 그래서 "이걸 좀 더 쉬운 유머처럼 써보면 어떨까?"하는 생각을 하게 되었습니다. 물론 제가 그렇게 하려고 노력을 하더라도 안될 수도 있지만요. 그래도 시도를 해보기로 마음을 먹었어요. 그게 저에게 친절하게 해준 사람들에게 보답을 하는 방법이라는 느낌이 들었기 때문에요.

그래서 수학 포기한 사람도 이해할 수 있고, 전공자 아닌 사람도 이해할 수 있는 이야기를 한 개 구상해 보게 되었습니다.

먼제 이 글을 읽기 전에 제가 말씀드릴 것이 있어요.

이 글은 저의 개인적인 주장이 들어가 있어요. 저의 개인적인 주장이 뭐냐면 과학계에서 "그래, 너 인정!"하는 객관적인 인증을 받은 주장이 아니라는 말이에요.

이 글의 본 게시물이었던 딥러닝과 논리학 연구 글은 과학계에서 인정받는 객관적인 정보성 글이 아니에요. 이 글은 제가 제 동생 이기환님과 연구를 한 과정을 정리한 주관적인 정리입니다. 제가 지금 쓰는 이 글도 본 게시물을 풀이한 내용이기 때문에 똑같이 주관적인 정리에요. 저는 이런 부분을 처음부터 정직하게 밝혔어요. 속인 적 없습니다.

지금 딥러닝 분야가 어떤 상태냐면 알파고 같은 놀라운 결과물이 거의 매 달마다 한 개씩 새롭게 나오고 있는데 아무도 그게 왜 그런지, 어떻게 해서 그런지 완벽하게 알아내서 규명을 못하고 있어요.


딥러닝 관련해서 외국 학자, 외국인 개발자들의 블로그와 칼럼을 읽어보면 위의 그림 같은 딜레마가 계속 반복해서 나와요. "00을 조정했더니 긍정적인 효과가 나왔다. 의미 있는 효과가 발생했다. 그러나 왜 그런 것인지, 어떤 원리로 그렇게 되는 것인지는 알 수가 없다." 논문에서도 이런 표현이 반복해서 나와요.

그래서 연구자들 사이에서는 "딥러닝 진리교"라는 우스개 소리도 있어요.
동료 포닥이여, 딥러닝 진리교는 네 가지 단계로 이루어지네. 포닥은 포스트 닥터(박사 후 연구자 과정)
첫째, 불신하는 단계이네. 이 불신은 주로 재래식 머신러닝을 오래 연구한 사람일 수록 심하다네.
둘째, 의심하는 단계이네. 딥러닝이 주는 엄청난 결과에 놀라면서도 그 원인을 파악할 수 없어 의심하고 방황한다네.
셋째, 받아들이는 단계이네. 모든 것을 체념하고 데이타셋을 돌리면서 딥러닝이 주는 기적같은 결과에 기뻐하고 감사하는 단계이네.
넷째, 딥러닝으로 영생을 얻고 다시 태어나는 단계이네. 과거의 머신러닝을 버리고 딥러닝으로 세례를 받고 새 사람이 되는 것이라네.

혹시 다른 머신러닝을 전공하신 분이 이 글을 읽고 있다면.. (살려주세요..) 위의 농담은 농담일 뿐, 너무 진지하게 받아들이지 마세요. 제가 만들어 낸 농담이 아니에요.

여튼 이게 업계의 현 상황이구요.이 문제가 배우는 사람들에게도 똑같이 적용되고 있어요.
논문 참조하고 그대로 딥러닝 프로그램을 돌려서 재현 결과가 나오긴 나오는데 왜 나오는지는 잘 모르겠고 그래서 헤메는 부분이 있어요. 이게 딥러닝 연구자들의 주요 고충 중에 하나에요. 왜 이게 되는지, 어떻게 되는지는 모르면서 최신 논문이 나오면 계속 재현 실험 해보고 그걸 토대로 옵션을 바꾸어서 결과를 더 나아지게 하는 걸 반복하고 있거든요. 그런 과정에서 알파고, 왓슨 같은 놀라운 결과물이 계속 나오고 있는 것이구요.

그래서 연구자들 중에는 이러다 과학이 망하겠다 하는 걱정을 하는 분도 있습니다. 왜냐하면 과학이라는게 과정을 증명하지 못하고 결과만 보여주면 안되거든요. 그러면 원리를 아는 게 아니니까 연구를 믿을 수가 없잖아요. 이론을 이해하고 증명하지 못하면 과학자들이 필요 없어질 수도 있구요. 과학자 대량 실직 사태?! 아.. 앙대..

거기다가 알파고, 왓슨 등이 놀라운 성과를 내면서 4차 산업혁명이다, 인공지능이 사람 일자리를 다 뺏을 거다 하는 전망이 나오잖아요. 그래서 불안해 하시는 분들이 있어요.

그러나 과학이 망하지는 않겠지요. 제 생각에는 예전에 양자역학 처음 개발되었을 때 동시성, 다차원성 때문에 과학자들이 패러다임을 받아들이는데 힘들었던 것과 비슷한 맥락이라고 봅니다. 시간이 지나면 과학자들의 패러다임, 즉 세계관이 딥러닝을 이해할 수 있는 방식으로 바뀌게 될 거라고 생각해요. 그러니 우리는 지구멸망 같은 걱정은 하지 말도록 합시다.


위의 그림같은 일은 일어나지 않을 것임.


어? 그러면 이기준님과 이기환님은 뭘 아는 거임?

"어? 과학자들이 전부 잘 모른다면서요? 그러면 이기준님은 뭘 아는 거임?" 이런 질문이 나올 수 있겠네요.
그래서 제가 처음 말한 것이 제 개인적인 주장이 들어가 있다는 말이었어요. 그러나 제가 아무것도 모르면서 구라를 하는 것은 아니에요.

저는 딥러닝 공부를 하려고 싱글 퍼센트론과 다중 퍼셉트론 소스를 C++에서 줄리아로 포팅했어요. 포팅이라는 것은 뭐냐면 영어로 된 코드를 중국어로 번역을 한 거랑 같은 거에요. 그러려면 영어도 중국어도 다 이해해야 하죠.  
포팅해서 제대로 동작하면 제가 C++ 소스도 제대로 이해했고, 줄리아 코딩도 제대로 했다는 것을 의미해요. 그리고 줄리아 포팅한 소스에 주석도 달았어요.

주석이라는게 뭐냐면 코드 밑에 이 코드는 이러이렇게 동작한다 하고 설명을 달아 놓는 것이에요. 저는 주석을 코드 한 줄 한 줄 다 달았어요. 이게 무슨 말이냐면 제가 대충대충 흉내만 내서 포팅한 것이 아니라 코드 한 줄 한 줄 다 이해했고 설명이 가능하다는 거죠.

이렇게 잘 쓰여진 소스 한 개를 분석해서 주석을 달면서 다른 언어로 포팅을 하는 연습을 하면 프로그램 실력이 팍팍 늘어요. 앞으로 소프트웨어 분야에서 일하고 싶으신 분들은 명심하시길 바래요. 이런걸 이종포팅, 이종학습이라고 불러요.

이런걸 다른 사람들은 안 하냐구요? 다른 사람들이 안 하는 것은 아닌데요. 저처럼 하는 사람이 적어요. 아예 없는 것은 아닌데 드물다는 거죠.

제가 연구했던 방식을 비유를 해서 설명하면요. 스타크래프트가 있어요. 그런데 대부분의 사람들은 스타의 유저 맵 생성기를 이용해서 새로운 맵을 만들고 유즈맵 게임을 만들고 그랬어요.

그런데 저는 블리자드에서 공개한 오픈소스 스타프래프트 C++ 소스를 보기만 하고 저 스스로 줄리아라는 새로운 언어로 스타크래프트 복제본을 코드로 쳐서 바닥부터 만들어 본 거에요. 그게 바로 포팅이에요. 그렇게 포팅을 하면서 스타크래프트 소스의 코드 한 줄 한 줄 내용을 분석하고 그 의미에 대해서 주석을 달아 본 것이에요. 그러면 그 프로그램이 어떻게 만들어졌는지 잘알 수 있겠죠.

제가 자랑을 하려고 한 것은 아니고요. 당연히 유저 맵 생성기 써서 맵 만들고 유즈맵 만든 것도 의미가 있죠. 훌륭한 결과물도 거기서 많이 나오구요. 절대로 무시하는 것이 아닙니다.

딥러닝 업계에서 유저 맵 생성기 역할을 하는 프로그램이 있어요. 이것을 프레임워크라고 해요.


위의 그림에 나온 것들이 프레임워크에요. 대부분의 연구자들은 이런 프레임워크를 이용해서 여기에 데이터셋이라는 것을 넣어서 돌린 다음 결과물을 얻어요. 왜 그렇게 하냐면 연구 시간이 단축되거든요. 작업하기가 수월해요. 대신 속에서 뭐가 어떻게 돌아가는지는 잘 모르게 되죠. 그렇게 장단점이 있어요.

저와 제 동생 이기환님이 프레임워크로 실험하는 것도 해보았는데요. 그 안에서 일어나는 깊은 원리를 이해하고 싶어서 자기 스스로 이종 언어로 포팅하기를 해본 것이에요. 그러면 프로그래밍 실력이 확 올라가거든요.


위의 짤방은 웃자고 만들어 본 것일 뿐, 이종포팅과 주석달기 외에도 프로그래밍을 배울 수 있는 방법은 많아요. 제 입장에서는 여러가지 해본 결과 이종포팅을 하고 코드를 한 줄 한 줄 해석해서 주석다는 것이 상대적으로 최선이라고 생각한다는 거에요. 그러니 웃자고 만든 짤방을 보고 죽자사자 덤벼드시면 안되요...

자 그래서 제가 분석한 소스를 기준으로 딥러닝이 어떻게 돌아가는지 어느 정도 안다고 주장을 할 수 있는 것입니다. 우리가 이종포팅한 링크를 오픈소스 사이트인 깃허브에 올렸었구요. 깃허브 링크

과학 계열에서는 이런 것을 중요하게 생각하거든요. 그 사람이 말하는 것에 근거가 뭔지, 해 보고 말하는 건지 안 해보고 그냥 상상으로 추측만 하는건지 말이에요.

만약 제가 이종포팅 경험 없이 그냥 "카더라..", "그럴 것 같지 않음?"같은 식으로 글을 쓰면 아마 연구가 의미가 없을 거에요. 상상을 구현해서 검증해 볼 수가 없으니까요.

저는 오유에만 글을 올린 것이 아니라 딥러닝 연구자 그룹에 이 글을 먼저 올렸었어요. 원래 거기만 올리려고 한 것인데 제가 예전부터 오유에 글을 올려왔어서 한 번 과학 게시판에 올려 본 것이었어요. 그러다가 얼떨결에 베오베까지 가게 된 것이었구요.

여튼 저는 딥러닝 이종포팅 경험이 생겼어요. 그런데 저도 딥러닝이 왜 그렇게 돌아가는지, 어떻게 해서 그런 것인지 완벽하게는 모릅니다. 그래서 저는 딥러닝의 정보처리를 풀이할 가설을 세워 보았어요. 그 가설에 사용된 근거가 바로 제가 연구하던 연역론이에요.


읭? 연역론?

저는 연역론이라는 이 가설 이론을 오랫동안 연구했어요. 이 글을 읽으시는 분들은 연역론이라는 이름에는 크게 신경 쓸 필요 없어요. 제가 지은 이름이니까요. 왜 이름을 따로 새롭게 지었냐면 이걸 가르쳐 주는 사람이 없어서 제가 계속 연구를 하다가 다른 학설과 구분하려고 이름을 따로 지어 준 것이에요.

제가 연역론이라는 것을 연구한지는 10년이 넘었어요. 연역론이라는 이름은 2012년에 지어 주었구요. 그 전에는 그냥 이기준의 이론, 이기준의 의견 정도로 정의하고 있었죠. 그러다가 부르는 말이 없으니까 이론을 전개할 때 갑갑하더라구요. 그래서 이름을 한 개 지어준 것이 연역론이라고 하게 되었어요.

그럼 아래에 이어지는 내용에서 천천히 연역론이 무슨 내용으로 되어 있는지 설명을 해볼게요. 그리고 한 번 더 얘기할게요. 제가 연구했다던 논리학 주제인 연역론은 저 개인적인 주장일 뿐 딥러닝계의 다수 이론, 정설이 아닙니다.
제가 이렇게 여러 번 써도 이해를 못하시고 가끔씩 시비를 걸고 뭐라고 하시는 분이 있어서 이렇게 강조해 봅니다.


딥러닝의 비하인드 스토리..

이 내용은 전공자들은 대부분 알고 있는 얘기에요. 그러나 이 글은 완전 쉽게 초보를 위해서 쓰는 것이기 때문에 적어 볼게요.

딥러닝에 사용되는 기술인 DNN을 우리말로 강제번역하면 심층 신경망이라고 하는데요. 인공신경망을 겹겹으로 사용해서 정보처리를 하는 것입니다. 인공신경망은 무엇이고 누가 만들었을까요?

인공신경망의 가설은 1940년대부터 시작되었어요. 몇몇 학자들이 사람의 신경에서 일어나는 정보처리를 컴퓨터에서 구현하면 어떨까? 해서 계산 방법을 만들어 보고 있었어요. 그러다가 1950년대 말부터 그 가설을 퍼셉트론이라는 형태로 구현한 분이 나타났어요. 그분의 이름은 프랑크 로젠블라트에요.


위의 그림에서 왼쪽 사진이 로젠블라트구요. 오른쪽 그림이 퍼셉트론을 간단한 도식으로 만들어 본 것이에요. 이게 무슨 내용인지는 아래에 이어질 글에서 설명해 볼게요. 일단 지금은 역사얘기부터..

1950년대 말부터 1960년대는 미국 경제가 호황기였거든요. 그런 상태에서 "컴퓨터가 사람처럼 생각하게 할 수 있다."는 주장은 큰 인기를 끌었어요. 여기저기서 연구 자금이 많이 들어왔죠.

당시 인공지능 업계에는 두 가지 큰 흐름이 있어어요. 한 개는 프랑크 로젠블라트가 주도하는 인공신경망 계열이었고요. 다른 한 개는 마빈 민스키가 주도하는 기계학습(머신러닝) 계열이었어요.

그런데 이렇게 두 계열이 평화롭게 연구를 하면 좋은데.. 현실은 그렇지 못했어요. 왜냐하면 그때 당시에는 컴퓨터의 계산 능력이 그렇게 강력하지가 않았거든요. 그래서 인공신경망, 기계학습 둘 다 의미 있는 수준 만큼 성과가 나지 못하고 있었어요. 컴퓨터가 계산 능력이 떨어지니까 프로그램의 계산 결과물이 안 나오는 거에요.

그렇게 한 10년 정도 지나는 동안에도 성과가 안 나니까 연구 지원하는 곳에서 "너네들 뭐하는 거냐? 그거 진짜 되기는 되는거냐?"하고 압박이 들어왔어요.

그래서 갑자기 인공지능 업계가 서로를 까고 비방하는 분위기로 바뀌었어요. 양쪽 다 실전으로 증명을 못하는 상태에서는 어느 한 쪽을 까서 찍어 누르는 편이 자기가 살아남는데 유리하거든요. 인터넷에 게시판에서 실제로 증명 못하는 사람들이 주로 키보드 워리어, 주둥이 파이터가 되는 거랑 비슷하죠.


그러던 와중에 마빈 민스키 쪽에서 인공신경망을 호되게 비판하는 논문을 발표해요. 쉽게 말해서 "인공신경망은 아무런 쓸모가 없는 구라다!"하는 정도의 막장 디스를 한 거에요. 민스키 쪽의 기계학습 계열도 그렇다 할 성과는 없었지만 인공신경망보다 조금 더 결과가 좋았거든요.

그래서 인공신경망 쪽에 지원되던 연구자금이 끊어지게 되었어요. 충격 먹은 로젠블라트는 자살을 하게 되었어요. 지못미.. 슬프네요. 로젠블라트의 죽음에 대해서는 자살이냐 사고사냐 의견 차이가 있어요. 객관적인 사실은 로젠블라트가 연구자금 지원이 다 끊어지고 나서 매우 우울해 하던 시기에 혼자 요트를 타고 나갔다가 사망한 상태로 발견되었다는 거에요. 그러나 유서가 없었기 때문에 경찰은 사고사로 결론을 내렸어요. 저는 이 글에서 자살이라는 관점으로 글을 썼어요.

그런데 이 치킨 게임의 승자는 없었어요. 아까 말했지만 민스키 쪽의 기계학습도 뚜렷한 성과를 못 내었거든요. 그래서 인공지능 업계 전체가 망하고 약 20년 동안 펀딩이 끊어지게 되었어요. 이것을 두고 업계 사람들은 인공지능의 겨울이라고 불러요.


이 핵겨울 기간 동안 기계학습 계열에서는 철저하게 인공신경망 계열을 따돌리고 괴롭히게 되었어요. 어떻게 괴롭혔냐면 기계학습 계열이 주류를 이루어서 인공신경망 계열의 논문이 저널에 신청되면 리젝트(거절)해버리는 거에요. 기계학습 연구자들이 몰려들어서 다구리를 놓아서 논문 발표가 안되게 했다는 거죠. 비열하죠? 그러나 이게 현실이었어요.

논문을 리젝트 시키니까 인공신경망 계열에서 박사가 점점 안 나오게 되고 박사학위를 못 받으니까 취직도 안되구요. 취직자리도 기계학습 계열이 다수인 곳에서는 인공신경망 전공한 사람이 들어오지 못하게 막았어요. 그래서 한 때 업계에서는 인공신경망은 내용을 읽어 보지도 않고 리젝트 시킨다는 우스개 소리도 있었어요.


제프리 힌튼이라고 2000년대에 와서 유명해지신 이분도 이 박해를 피해서 캐나다의 대학교로 떠났어요. 미국에서는 자리가 안 나서요.

기계학습은 1980년대부터 차차 의미있는 결과가 나오기 시작했어요. 그런데 인간의 인식능력, 인간의 판단능력에는 미치지 못했어요. 그래서 이 시기 동안에는 주로 인간만큼의 능력을 내는 것을 목표로 해서 연구를 했어요.

그리고 이 암흑기 동안 인공신경망 계열에서는 몰래 숨어서 비공을 연마하고 있었어요. 1990년대 즈음부터 인공신경망의 생존자였던 제프리 힌튼과 얀 르쿤은 최초 아이디어였던 퍼셉트론을 개량해서 다중 레이어 퍼셉트론을 개발하게 되었어요. 이게 딥러닝으로 발전하게 된 것이구요.

그러나 이분들의 아이디어는 실제 현실에서 구현을 해서 검증을 하지 못했어요. 이 아이디어를 구현 실험하려면 컴퓨터 자원이 많이 필요했거든요. 쉽게 말해서 슈퍼 컴퓨터가 필요했는데요. 이분들에게 그만한 지원이 이루어지지 않았어요. 그래서 힌튼은 자주 이런 말을 했다고 해요. "나한테 펀딩만 좀 더 빵빵하게 해주기만 하면 놀라운 결과물을 보여줄 수 있다고!"


그런데! 2000년대에 구글이라는 회사가 등장해요. 이 회사는 회사 초창기부터 인공지능에 관심이 있었어요. 그래서 자기 회사 서비스에 기계학습을 도입해서 이득을 얻었어요. 구글의 검색서비스, 이메일의 스팸필터, 기타 구글 서비스들에는 다양한 기계학습과 기타 자동화 기술이 많이 사용되었어요.

구글에서는 세상에서 정파와 사파로 구분하는 것에 연연하지 않고 기술이 있으면 검증을 해보고 자기 회사에 도움이 되면 다 가져다 쓰자 하는 모토를 가지고 있었는데요. 그래서 인공신경망을 개량한 딥러닝 기술을 가져다가 실험을 해보게 되었어요.

그랬더니?! 의미있는 성과가 나온 거에요. 그리고 비슷한 시기에 사진을 보고 구별하는 이미지넷이라는 대회에서 제프리 힌튼 연구실 팀이 우승하게 되었어요. 갑자기 인공신경망 계열에 봄이 찾아온 거죠! 이제 2000년대 이후 인공신경망 계열을 딥러닝 계열이라고 할게요.


특히 이미지넷 대회에서 딥러닝 계열은 2012년부터 기계학습 계열을 다 이겨버렸어요. 위에 그래프를 보면 딥러닝 계열 녹색이 비 딥러닝 계열들 파란색을 다 재껴버린 것을 볼 수 있죠. 돌아가신 로젠블라트가 이걸 보면 기뻐서 눈물이 나겠네요.

기계학습 계열에서는 그동안 엄청 노력했는데도 사진 인식률이 80%를 넘지 못했어요. 85% 정도가 사람 인식 능력이라고 하거든요. 그런데 딥러닝 계열은 85%를 뛰어넘고 90%를 뛰어넘게 된 거에요. 사람보다 더 사진을 알아보는 능력이 낫게 된 거에요. 이제 인간을 닮은 인공지능이라는 말이 무색하게 된 거죠.

그래서 기계학습 계열에서는 멘붕.. 그리고 처음에는 딥러닝을 은근하게 까려고 했어요. 아까 위에 제가 인용했던 "딥러닝 진리교" 농담처럼 기계학습(머신러닝)을 하던 사람들은 부러워서 배가 아프기도 하고, 이게 뭔가 의심스럽기도 하고, 화가 나기도 하고 복잡한 심경을 겪었어요.

특히 학계에서 나이가 많은 사람(일명 꼰데)들일 수록 기계학습 위주로 배웠고 인공신경망은 쓸모없다고 배운 경우가 많았거든요. 그런데 딥러닝 계열 실력이 월등히 좋으니까 예전처럼 까고 무시하려고 해도 그럴 수가 없었죠. 그래서 비교적 젊은 연구자들 중심으로 현실을 받아들이고 딥러닝 진리교로 넘어가는 사람들이 생겨났습니다.

그리고 더 많은 딥러닝 실력자들이 강호에 나타나기 시작했어요.


알파고로 유명해진 구글 딥마인드를 만든 하사비스가 그런 사람인데요. 사람 중에 그 분야에서 최고 능력자에 해당하는 이세돌 같은 사람도 이길 수 있다는 이 놀라운 결과 때문에 전세계의 이목이 딥러닝 분야에 쏠리게 되었어요. 그게 현재 상황이네요. 이제 딥러닝 분야에 투자도 많이 이루어지구요.

놀라운 반전이 있었죠?
그리고 여기에 숨은 사실이 하나 더 있어요. 딥러닝을 흥하게 한 요소 중에는 게이머들이 사용하던 그래픽카드의 공이 있었어요. 딥러닝을 연구하던 연구자 한 명이 시험삼아서 CPU가 아니라 수십 개에서 수백 개의 코어를 가진 그래픽카드의 GPU로 딥러닝 프로그램을 돌려보면 어떨까.. 해서 해보았더니 딥러닝 계산 시간이 수십 배로 단축되었다네요. 그래서 딥러닝 연구하는 사람들은 거의다 GPU를 사용해서 프로그램을 돌려요.


게이머를 위해서 개발한 그래픽카드가 이런 곳에 쓰이게 되었다니 신기하네요. 나는 그저 지난 수십 년 동안 게임을 열심히 했을 뿐인데 그게 그래픽카드 산업을 흥하게 하고 나비효과로 딥러닝에 영향을 미쳐서.. 원기옥에 에너지를 보탠 느낌이네요.

자 이것으로 딥러닝의 비하인드 스토리를 마치고요. 더 궁금한 것은 구글 검색 해보시면 잘 나올거에요.


절대성과 상대성

이제 제가 딥러닝 프로그램에서 어떤 정보처리가 일어나는지 가르쳐 드리려고 하는데요. 이걸 이해하려면 먼저 절대성과 상대성에 대해서 이해를 하면 편해요.

절대성이라는건 뭘까요?
쉽게 말해서 "무조건 그렇게 되는거임."하고 말하는 것은 절대적이라고 주장하는 진술이에요.

예를 들어서 종교 믿는 사람 중에 좀 꽉 막힌 사람을 보면 "그냥 무조건 그런 거임. 믿숨니다!”하는 경우가 있잖아요 이게 절대적인 주장, 절대성인거죠.

그런데 이 세상에는 절대적인 것이 있나요? 없거든요. 절대적인 믿음이나 절대성에 대한 생각은 생각하는 그 사람의 머리속에만 있어요. 자기 상상으로만 할 수 있다는 거죠.

그러면 상대성은 뭘까요? 상대성은 기준을 정하고 비교를 해서 그 기준으로 판단을 했더니 더 나은게 있고, 덜 나은게 있다는 생각이에요.

예를 들어서 인텔과 암드(AMD)가 있어요. 둘 다 CPU를 만들어요. 그런데 멍구는 인텔이라는 브랜드를 좋아해서 인텔 제품을 구입했어요. 웅이는 가격대 성능비, 즉 가성비를 기준으로 해서 골랐는데 그렇게 해서 암드 제품을 구입했어요.


멍구는 인텔이라는 브랜드에 대한 개인 취향, 주관적인 느낌으로 구입을 했어요. 그건 나쁜게 아니에요. 그럴 수도 있죠. 그런데 멍구가 웅이에게 "야 임마, 인텔이 짱이야. 그냥 무조건 인텔 사."이러면 이게 절대성을 주장하는 것이 되요.

웅이는 가성비를 기준으로 구입을 했는데요. 웅이가 절대적으로 나은 것이 아니에요. 그러나 웅이는 자기가 기준을 정하고 상대적인 비교를 해서 선택을 했죠. 이런 차이가 있어요. 웅이도 만약 멍구에게 "쨔샤, 가성비를 봐야지. 무조건 가성비로 사야돼."이렇게 주장하면 상대적인 영역에서 절대적인 주장으로 이동하게 되요.

이 관계를 논리학으로 정리해서 이해해 보아요.
  1. 멍구가 인텔 브랜드가 좋아서 인텔 CPU를 샀다.
    1. 이거슨 개인의 자유
    2. 그리고 이거슨 멍구의 주관적인 생각과 느낌
  2. 웅이가 가성비를 기준으로 제시한 다음 그 기준대로 판단을 해서 가성비가 상대적으로 제일 나은 것을 골랐다. 그랬더니 암드였다.
    1. 이것도 개인의 자유
    2. 그리고 이거슨 웅이가 가성비라는 상대적인 기준을 만들어 내서 판단을 한 거임
  3. 멍구가 웅이에게 "암드 왜사 임마, 인텔이 무조건 짱이야!" 이러면 멍구가 자신이 가진 개인적인 생각, 주관적인 생각으로 웅이를 괴롭히는 것이 됨.
    1. 이것이 바로 고정관념임
      1. 고정관념은 자기가 주관적으로 생각한 것, 상상한 것, 느낀 것이 이 세상에 절대적으로 적용된다고 착각을 하는 것임
    2. 자신이 가진 고정관념을 다른 사람에게 강제로 적용하려고 하면 오지랖을 부리는 일, 꼰데짓이 됨.
  4. 반대로 웅이가 멍구에게 "가성비로 구입해야지, 무조건 가성비가 짱이야."이러면 웅이 역시 자기가 생각한 것이 이 세상에 절대적으로 적용된다는 착각을 하는 것임. 즉, 똑같은 고정관념이 됨.
  5. 자신의 주관적인 생각이 주관적인 생각이라는 것을 인정하고 다른 사람의 주관적인 생각을 있는 그대로 인정하면 그거슨 피스(Peace), 다원주의, 다차원주의가 됨.
    1. 쉽게 말해서 서로 각자 다른 관점을 가지고 있다는 것을 기본적으로 이해한다는 것임
  6. 그렇게 개인이 서로 다른 관점을 가지고 있다는 것을 인정하고 나서도 여전히 객관적인 사실은 있음.
    1. 멍구는 30만원짜리 인텔 CPU를 사고 웅이는 10만원짜리 암드 CPU를 샀다는 것. 이거슨 변함없는 객관적인 사실
    2. 과학에서는 이 객관적인 사실을 가지고 최종 판단함.

일부 여자분들은 인텔 암드가 잘 이해가 안되시겠죠? 똑같은 버전으로 명품 브랜드랑 저가 인터넷쇼핑몰 가방을 얘기해볼게요.
쑤니는 브랜드인 샤넬백을 구입했구요. 여니는 가성비가 좋은 저가 인터넷쇼핑몰 가방을 구입했는데요.


논리 설명은 똑같아요.
  1. 쑤니가 샤넬 브랜드가 좋아서 샤넬백을 샀다.
    1. 이거슨 개인의 자유
    2. 그리고 이거슨 쑤니의 주관적인 생각과 느낌
  2. 여니가 가성비를 기준으로 제시한 다음 그 기준대로 판단을 해서 가성비가 상대적으로 제일 나은 것을 골랐다. 그랬더니 저가 인터넷쇼핑몰 가방이였다.
    1. 이것도 개인의 자유
    2. 그리고 이거슨 여니가 가성비라는 상대적인 기준을 만들어 내서 판단을 한 거임
  3. 쑤니가 여니에게 "저가 가방 왜사? 샤넬이 무조건 짱이야!" 이러면 쑤니가 자신이 가진 개인적인 생각, 주관적인 생각으로 여니를 괴롭히는 것이 됨.
    1. 이것이 바로 고정관념임
    2. 고정관념은 자기가 주관적으로 생각한 것, 상상한 것, 느낀 것이 이 세상에 절대적으로 적용된다고 착각을 하는 것임
    3. 자신이 가진 고정관념을 다른 사람에게 강제로 적용하려고 하면 오지랖을 부리는 일, 꼰데짓이 됨.
  4. 반대로 여니가 쑤니에게 "가성비로 구입해야지, 무조건 가성비가 짱이야."이러면 여니 역시 자기가 생각한 것이 이 세상에 절대적으로 적용된다는 착각을 하는 것임. 즉, 똑같은 고정관념이 됨.
  5. 자신의 주관적인 생각이 주관적인 생각이라는 것을 인정하고 다른 사람의 주관적인 생각을 있는 그대로 인정하면 그거슨 피스(Peace), 다원주의, 다차원주의가 됨.
    1. 쉽게 말해서 서로 각자 다른 관점을 가지고 있다는 것을 기본적으로 이해한다는 것임
  6. 그렇게 개인이 서로 다른 관점을 가지고 있다는 것을 인정하고 나서도 여전히 객관적인 사실은 있음.
    1. 쑤니는 200만원짜리 샤넬백을 사고 여니는 10만원짜리 저가 가방을 샀다는 것.
    2. 과학에서는 이 객관적인 사실을 가지고 최종 판단함.


예시를 들어서 정리를 해보았네요. 이렇게 이 세상에는 두 가지 계열의 사고방식이 있어요.
  1. 고정관념
    1. 내가 생각한 것이 이 세상에도 당연하게 통용될꺼라고 착각하는 생각, 혹은 그랬으면 좋겠다는 믿음.
    2. 내가 생각한 것과 다른 생각을 하는 사람을 만나면 공격하고 싶은 마음. 깔보고 싶고, 욕하고 싶고, 비아냥거리고 싶은 마음.
    3. 상대적인 기준, 상대적인 조건 없이 어떤 일이 절대적으로 일어날 거라고 착각하는 생각, 혹은 그랬으면 좋겠다는 믿음.
  2. 상대주의
    1. 내가 뭔 생각을 하던지 그게 최초에는 내 개인적인 상상, 내 개인적인 생각, 내 개인적인 느낌인 것을 아는 것
    2. 그리고 내가 그 생각을 실천하면, 실행하면 그게 이 세상에 객관적인 증거로 남는다는 것을 아는 것

그래서 결론은 버킹검, 아니 결론은 뭐다? "절대성 실존하지 않는다."에요.
객관적인 사실, 객관적인 데이터는 있지만 절대적인 인과관계, 절대적인 데이터는 없는거에요. 왜냐하면 객관적인 사실이라는 것도 처음에는 주관적인 생각, 상대적인 기준을 거쳐서 판단을 하고 행동을 해서 이 세상에 일어난 결과물이거든요. 그래서 객관성 또한 절대적이지 않습니다. 그러나 우리는 객관적인 사실로 무슨 일이 일어났는지, 뭐가 다른지 알아낼 수 있어요.

이기환님 코멘트

그럼 상대성을 인정하면 서로 비판 같은 것은 없고 그냥 각자 자기 원하는 대로 살면 되는 것일까요?
그렇습니다. 싸울 필요 없고 개인 취향 존중하면서 자신이 원하는 방향을 선택해서 살면 됩니다.
그러나 둘 사이에 행동을 비교하고 더 나은 방향을 상대적인 기준으로 정하는 것은 할 수 있습니다. 과학 연구는 여전히 할 수 있습니다.

예를 들어 멍구, 웅이의 행동을 관찰한 철이가 있다고 상상합시다.
철이는 멍구와 웅이가 어떤 CPU를 사용하는지 보았고 각 CPU 사용해서 어떤 작업을 하고 어떤 애로사항을 겪는지 다 관찰을 해보았다고 합시다.
이 과정에서 철이는 '나는 컴퓨터를 오래 사용하고 중요한 작업을 많이 하니까 우선 안정성이 중요하고 그 다음으로는 가격대비 성능이 중요하다."라고 상대적인 기준을 정했습니다.
그러면 철이는 이제 자신이 만든 상대적인 기준을 사용해서 멍구와 웅이의 행동을 평가할 수 있습니다.
철이가 인텔 CPU를 선택하든 암드 CPU를 선택하든 그것은 철이가 선택 과정에서 자신이 정한 상대적인 기준을 잘 지켰느냐로 잘 했는지 못했는지 평가할 수 있습니다.
만약 철이가 고민한 결과 인텔 CPU를 선택했다고 합시다. 그렇다고 해서 암드 CPU를 구입한 웅이가 어리석은 사람이 되는 것일까요? 아닙니다. 웅이는 웅이의 상대적인 기준에서 최선의 선택을 한 것이고 철이는 철이의 상대적인 기준에서 최선의 선택을 한 것입니다.
만약 저라면 어떻게 할까요? 저도 CPU를 구입할 때 지난 경험을 돌아보면서 "내가 최근에 컴퓨터를 사용해서 oo작업을 많이 한다. 그러나 나는 게임은 거의 하지 않는다. 나는 컴퓨터가 사용도중 꺼지는 것을 원하지 않는다." 등의 생각을 하고 시장에 나온 제품을 관찰해서 상대적인 기준을 정합니다.

과학에서도 마찬가지 입니다.
정론과 마이너 이론이 있다고 했을 때 마이너 이론이라서 잘못된 것이 아닙니다.
옳고 그름, 효율성을 따지기 전에 자신이 정한 상대적인 기준이 무엇인지 먼저 밝혀야 건설적인 토론을 할 수 있습니다.
저는 글을 쓸때 제가 어떤 과정을 거쳐서 현재 판단 기준을 세우게 되었는지 밝히고 그것을 사용해서 이하의 정보를 판단하고 실제 행위로 실천을 합니다.


꼰데들의 착각, 양비론과 허무주의

님들 나이 많은 노인 분들에게서 이런 말 들어본 적 있을거에요.
"여당이나 야당이나 다 비자금 만들고 뇌물 받아 먹은 것은 똑같다. 이놈이나 저놈이나 똑같다."


그런데 실제로 그런가요? 다르죠. 작정하고 수천억 원을 해먹은 놈하고, 가족 빚 갚아 주느라고 수천 만원 받은 사람은 엄연히 달라요. 상대적으로 차이 나잖아요. 그러면 어떻게 해야겠어요? 상대적으로 조금이라도 덜 받아먹고 덜 부패할 사람을 뽑으면 되잖아요. 그게 상대적으로 나라가 깨끗해지고 발전하는 길이거든요.

그런데 절대성의 관점으로 상대성을 바라보면 상대성이 그렇게 보여요. 양비론과 허무주의로 보입니다. 꼰데들이 그런 말을 하는 이유는 그 사람들의 뇌에 절대성 관점, 고정관념이 OS로 깔려 있기 때문에 그래요. 그래서 이 세상이 그렇게 보이고 그렇게 해석되는 거에요.

절대성 관점이 뇌에 박혀 있는 사람은 차분히 알아보고 비교하지 않고 무턱대고 믿으려고 하거나 무턱대고 비난하려고 합니다. 그래서 대화를 하면 답답하고 불편하잖아요. 그냥 무조건 밀어 붙이려고 하니까. 그래서 꼰데인거구요.

게다가 절대성 관점을 가진 사람들은 자기들이 믿고 있던 고정관념이 무너지면 불안해 합니다. 예를 들어서 꼰데들 이런 얘기 하잖아요. 여당이 선거에서 지면 나라가 망한다. 북한이 쳐들어오고 내부에서 분란이 일어나서 망한다 이렇게요.

참 웃기잖아요. 위에 예로 들었던 멍구가 "인텔 망하면 컴퓨터 업계 다 망한다."고 말하면서 벌벌 떠는 걸 상상해보세요. 그렇게 되지 않죠. 인텔 망해도 컴퓨터 업계에 아무 일 안 일어납니다. 다른 회사가 CPU 만들겠지요. 소비자는 또 자기 입장에서 상대적으로 최선인 선택을 하면 되는 거구요.

정치도 마찬가지에요 선거 할 때마다 덜 부패한 사람, 나쁜짓 덜 하는 사람, 공약 더 잘 지키는 사람으로 상대적으로 계속 나은 선택을 하면 되는거에요. 그렇게 한다고 해서 나라 망하는 일 없어요. 겨우 그정도 했다고 망하는 허약한 나라면 망하고 나서 새로 나라 만들면 되구요. 거기서 살아가는 우리는 우리 입장에서 최선의 선택을 해나가면 되는 거에요.

논리학에서도 절대성을 믿고 연구하는 사람들이 있었어요. 그 사람들은 수학 원리, 과학 원리 등에 절대적인 원리가 있다고 믿었습니다. 무슨 말이냐면 근거 없이 무조건 그렇게 되는 원리가 똭! 있다고 믿었던 거에요. 참고로 논리학은 수학의 기초가 되는 학문이에요.


그래서 버틀런트 러셀이라는 논리학자 한 명이 그 절대적인 원리, 공리가 있는지, 있으면 어떻게 돌아가는지 탐구를 해보기로 했습니다. 그런데 띠로링! 이럴수가? 이분의 연구에서 공리가 없다고 최종 결론이 났어요.

원래 이분도 공리가 있을거라고 믿는 쪽이었는데요. 연구를 10년 넘게 해서 그런 결론이 나오는 바람에 이분도 무척 상심했어요. 그러나 러셀은 과학자답게 그 결과를 숨기지 않고 발표했고요. 그래서 전세계 논리학 수학계에 핵폭풍이 밀어닥치게 되었어요. 다른 학자들이 개떼처럼 몰려들어서 반박을 해보려고 했는데 못했어요.

그러나 이 아수라장 중에 폰 노이만이라는 분이 이런 아이디어를 생각해내게 되었어요.
"그래, 절대적인 논리는 없다고 치자. 그러면 내가 상대적인 규칙을 만들고 그것으로 가상의 논리세계를 만들어서 그 안에서 정보처리를 할 수는 있지 않을까?"
이게 바로 컴퓨터의 시작이 되었어요.


아까 제가 상대적인 기준을 만들어서 그것으로 판단을 하고 실천을 할 수 있다고 그랬잖아요. 사람은 이미 그렇게 생각하고 살아가는 것이 가능하구요. 그걸 기계로 실현한 것이 바로 컴퓨터인거죠.

그런데 이렇게 논리학이 개발이 되어서 발전을 해도 사람들의 사고방식은 절대성에 대한 착각, 고정관념을 가지고 있었어요. 그게 얼마나 심했냐면 리처드 파인만이라는 물리학자는 대학원생 연구자들을 위해서 이런 칼럼을 썼어요.


대학원생이 되어서 연구 생활을 시작하는 여러분들께
님들아, 제가 앞으로 연구 생활을 하실 님들에게 도움이 될 조언을 한 개 해주려고 해요.
연구 생활을 시작하면 님들 스스로 사고하는 방법을 배워야 해요.
지금까지 알고 있던 것을 전부 다시 돌이켜보고 과학적으로 의심해보세요.
님 실험실에서 재현 실험을 해보세요. 한 번만 하지 말고 여러 번 해보세요. 그렇게 해서 재현이 되면 님 입장에서는 이제 그게 의미있는 가설이 되는 거에요. 그러나 그걸 했다고 해서 그게 절대적인 사실이 된 것은 아니에요.
그러면 겨우 님이 남에게 들어서 알고 있었던 주관적인 사실에서, 님이 재현 실험을 해본 주관적인 사실이 되는 거에요.
이게 과학자의 자세에요.
이렇게 내가 재현 실험을 해보고 데이터를 쌓고 또 다른 사람들이 재현 실험을 해보고 데이터를 쌓고 그러면 그 데이터가 모여서 좀 더 믿을만한 객관적인 사실이 되고 그게 과학을 상대적으로 발전시켜요.
절대, 맹목적으로 뭘 믿으면서 생각을 이어나가지 마세요.
특히 지도교수님이 연구한 것은 재현 실험도 안 해보고 사실이라고 믿고 그걸 바탕으로 추가 연구를 하려고 하는 경우가 많은데 그러지 마세요.
지도교수님이 연구한 내용도 내가 내 실험실에서 재현하지 못하면 재현 불가능한 가설일 뿐이에요.
이점을 명심하시길 바라며…

이 사람 훌륭하죠? 그런데 많은 과학자들, 혹은 과학을 배우는 사람들이 이렇지 않은 경우가 많았어요.

제가 어제 올렸던 본 게시물을 봐요. 딥러닝과 논리학 연구
여기서 객관적인 사실은 제가 딥러닝 소스를 이종포팅하고 주석을 자세하게 달아 놓았다는 것이에요. 이것은 제가 소스를 공개했으니까 이것은 객관적인 사실이구요.

그리고 연구 일지는 제 개인적인 생각이죠. 제가 주관적인 가설이라고 했었구요.

그러면 제가 쓴 이 문서에서 주관적인 생각은 그냥 있는 그대로 주관적인 생각이구나 하고 받아들이고 객관적인 사실 검증을 하면 되요. 진짜 포팅이 제대로 되었는지 실행을 시켜 보고, 코드가 제대로 작동하는지 보고, 코드에 달린 주석이 제대로 설명이 되었는지 보면 되죠. 그게 과학자가 해야 할 일의 전부에요.

그런데 제가 쓴 본 게시물을 보면 이런 댓글이 달려 있더군요.
"이기준님이 뭘 잘 모르시는 것 같은데 딥러닝 논문에서는 그렇게 나오지 않습니다."
잉? 제 주관적인 가설이 다른 딥러닝 논문 내용과 일치해야 할 이유가 있나요? 그럴 필요 없거든요. 제가 올린 객관적인 소스가 제대로 동작하는지 보는 것이 중요하죠.


"이기준님의 주관적인 가설을 정설인 것처럼 게시물로 쓰면 딥러닝에 대해서 잘 모르는 일반인들이 잘못된 정보를 접할 수가 있습니다. 일지는 일기처럼 써야지 논문체로 논문처럼 보이게 쓰면 안됩니다"
헐, 저런 댓글 보니까 좀 웃기더라구요. 저 사람은 자기가 무슨 딥러닝 계의 사이버 검열관이라고 착각하는 것이 아닐까요? 저 사람은 일반인들은 판단 능력이 떨어지기 때문에 제가 조심해서 글을 써야 한다고 하더라구요.


그런데 봅시다. 제가 제 생각을 다른 사람에게 강요하지 않는 이상, 제가 무슨 주장을 하던지 그것은 제 자유거든요. 그리고 과학의 관점에서 저는 재현 실험을 한 소스 코드를 올리고 객관적인 사실을 제시했구요. 주관적인 가설은 주관적인 가설이라고 밝혔습니다. 그러면 누가 저의 자유를 침해한 것이 되나요? 누가 자신의 고정관념을 다른 사람에게 강요한 것일까요?

과학계에 이렇게 절대성의 착각을 하는 사람이 되게 많아요. 주로 자기가 주입식으로 배운 내용이 절대적이라고 착각하는 거죠. 자기 스스로 검증하는 절차도 안 해보고요. 과학자가 고정관념을 가진 경우가 많은 거에요. 위에 제가 얘기했던 기계학습 계열 사람들이 인공신경망 계열을 괴롭힌 것도 과학자로서 참 부끄러운 일이었어요.

과학자는 자기 입장에서 재현 실험을 해보고, 재현 계산을 해보고 그러면서 새로운 주관적인 가설을 상상해보고, 그걸 다시 테스트해서 검증해보고 하는 작업을 하는 것이 전부입니다. 니가 옳다 내가 옳다 구질구질하게 싸울 필요 없어요. 그냥 덤덤하게 자기 입장에서 구현한 것, 재현한 것, 반박한 것 올리면 됩니다. 저는 제가 포팅해서 구현한 것 올렸구요. 그게 다인 거죠.


여튼 이게 딥러닝과 무슨 상관임?

자 이제 지금까지 얘기한 논리 얘기가 딥러닝과 무슨 상관인지 설명을 해볼게요.

컴퓨터를 처음 만들게 된 계기는 제가 위에 말한 것처럼 "상대적인 기준으로 규칙을 만들어서 그 안에서 작동하는 정보처리 기계를 만들어 보자."라는 아이디어였어요.

그런데 초기의 컴퓨터는 이랬습니다. 공포의 커맨드 화면 기억하실 거에요. 아재들에게는 공포가 아니라 추억의 커맨드 화면이겠네요.


이 화면에서는 반드시 올바른 명령을 입력해야만 했어요. 한 글자라도 틀리면 안되요. 그렇지 않으면 에러 메세지가 나왔습니다. "잘못된 커맨드 혹은 파일 이름입니다."하는 지긋지긋한 메세지가 나왔어요.

그런데 딥러닝은 어때요? 그냥 사진을 입력해주면 "지가 알아서" 그게 뭔지 분석하려고 합니다. 이게 무슨 말일까요? 이 상황을 논리적으로 말하면 이래요.

"딥러닝은 상대적인 기준, 상대적인 규칙을 자신이 스스로 만들어 내려고 한다."라는 뜻입니다.

저는 딥러닝이 유명해지기 전부터 이렇게 논리학으로 절대성이 왜 허구인지 증명하고 절대성으로 상대성을 잘못 해석하면 어떻게 되는지, 상대성의 원리가 뭔지 정리하고 있었어요. 그러다가 딥러닝을 만나서 제가 가진 이 논리학 관점으로 딥러닝을 처음부터 다시 분석하게 되었던 거에요.

그리고 딥러닝에는 또다른 특징이 있어요.

"딥러닝은 절대적인 결과정보가 들어오지 않아도 에러가 안 나고 딥러닝 자신이 만든 상대적인 규칙으로 처리한다."는 것이에요.

이걸 논리 개념으로 확률적인 정보처리라고 합니다. 절대적인 결과정보 없이 제각각 결과가 다른 정보가 들어와도 확률적으로 그걸 처리할 수 있다는 말이죠.

그래서 제가 쓴 본문에 보면 이런 도식이 나오는 것이구요.


위에 절대성 위에 빨간색으로 엑스 표시 했잖아요. 절대성 없다 이 말이에요. 관계정보라고 쓴 것은 뭐냐면 다른 정보를 만들어 낼 수 있는 상대적인 기준, 상대적인 규칙이라는 말입니다. 위에 웅이가 상대적인 기준으로 가성비를 정한 것처럼요. 다른 판단을 할 수 있는 근거를 이렇게 상대적으로 만드는 것에 이름을 붙여서 관계정보라고 해보았어요.


이렇게 사물을 보고 생각하는 사고방식에 제가 연역론이라고 이름을 붙인 것이에요. 위 그림에 나오는 존재규정이라는 말은 절대성을 근거로 한 착각을 뜻하는 말이에요. "이 세상이 원래 존재가 그렇다."하면서 오류가 생기거든요. 거기서 따온 거죠.  




이 논리라는 것이 솔직히 딥러닝하는데 도움이 됨?

네 도움 되더라구요.
이런 개념을 정리하고 나서 저는 딥러닝 소스 내에서 코드가 어떤 기능을 하는지 정의하는데 도움이 되었어요. 제가 포팅한 소스에 주석을 이 개념을 사용해서 달았구요.

"이종포팅하는 것은 프로그래밍 실력과 상관없다."라고 말한 댓글을 한 개 봤는데 거기에 대해서 더 이상 할 말은 없구요. 그분이 자기가 구현한 것이나 재현한 것의 소스를 올리면 되겠죠. 과학자라면 그렇게 하면 됩니다. 오럴 파이팅은 의미 없어요. 시간 낭비에요. 보통 자기가 구현과 재현을 할 능력이 안되는 사람들이 말로만 어떻게 해보려고 하더라구요.


으잉? 그러면 이걸 왜 다른 과학자들은 안 했지?

아 그러게요. 저도 딥러닝 머신러닝 공부하면서 답답하더라구요. 저는 당연히 논리적인 개념이 정리가 되어 있을 줄 알았어요. 그런데 "딥러닝은 사람의 신경망에서 일어나는 정보처리를 모방해서 코드를 구현한 것이다."말 외에는 논리적인 설명이 없었어요. 그래서 제가 그때까지 연구하던 논리로 딥러닝을 풀이할 수 있게 만든 것이에요. 제가 일하는데 도움되라고 도입한 도구인거죠.



좀 더 자세히 딥러닝 설명을..

이제 좀 더 깊이 들어가서 설명해 볼게요.


이 도식이 전공자에게는 도움이 되는 쉽게 풀이한 도식인데요. 비전공자에게는 암호처럼 보이나봐요. 그래서 이 내용을 유머처럼 제가 꾸며서 설명을 해볼게요.

먼저 사진이 한 개 있어요. 멍멍이 사진을 예로 들어 볼게요.


저는 고양이 좋아하는데.. 하시는 분이 있으시면.. 참아주세요. 참고로 저는 개 두 마리, 고양이 세 마리 키워요.

자 이렇게 멍멍이 사진을 한 개 입력하면요 딥러닝은 원본 한 장을 카피 떠놓구요. 복제본을 여러 개 만들어서 "특수처리"를 해요. 이 특수처리는 쉽게 설명하면 저 멍멍이 사진을 벡터 공간에 넣는 것인데요. 님들 머리에 쥐가 나기 전에 제가 쉬운 설명으로 바꾸어 볼게요.


이런거 기억나시죠? 텍스트로 도트를 찍어서 그림을 표현하는거요. 이런거 해주는 프로그램도 있는데요. 사진을 벡터화 한다는 개념이 저것과 완전히 같지는 않은데 비슷해요. 또 비슷한 개념이 이런게 있죠.


영화 매트릭스 다 아시죠?

자 여기서 잠깐, 실제 딥러닝에서 일어나는 데이터 벡터화는 위의 그림들과 완전히 똑같지 않습니다. 이 설명은 오로지 비전공자가 딥러닝 정보처리 개념을 쉽게 이해하게 도와드리려는 차원에서 제가 지어낸 이야기일 뿐입니다.

다시 돌아가서 딥러닝의 퍼셉트론은 이렇게 데이터를 벡터화 하고 나서 그 데이터가 다른 데이터와 무엇이 다른지 비교를 하기 시작해요.


이런 식으로 벡터화 한 데이터에서 딥러닝 자기 입장에서 상대적인 비교 꺼리가 되는 정보를 모으기 시작합니다. 딥러닝을 많이 돌리면 저런 상대적인 기준이 되는 정보를 많이 모으구요. 딥러닝을 적게 돌리면 덜 모으게 되요. 많이 모으는 것이 나중에 딥러닝이 판단할 때 더 도움이 되겠죠?


딥러닝 프로그램에 따라서는 이미지를 조각조각 타일로 잘라서 이 작업을 하기도 해요. 위의 그림은 논문에서 가져온 이미지인데요. 원본을 유사복제해서 여러 개로 만든 다음 그것을 벡터화하고 거기서 상대적인 판단 기준이 되는 패턴을 긁어모읍니다.

여기서 원본을 유사복제하는 것이 어떤 의미가 있을까요? 한 번 생각해보아요.
제가 위에 웅이가 암드 CPU를 사려고 할 때 가성비를 상대적인 기준으로 했다고 했잖아요. 이렇게 한 번에 정해지면 좋은데 상대적인 판단 기준이 가성비 뿐만 아니라 전성비도 있고, 내가 자주 사용하는 프로그램과의 호환성도 있고 해서 상대적인 판단 기준이 여러 개 다차원으로 중첩해서 겹칠 수가 있어요. (전성비는 전기 사용량 대비 성능)

여니 이야기로 설명하면 가방을 살 때 가격을 상대적인 기준으로 할 수도 있지만 품질, 디자인, 재질, 색깔 이런 상대적인 기준들을 다차원으로 중첩해서 판단을 해야 할 수도 있거든요.

이렇게 원본을 딱 한 번만 복제해서 벡터화하고 상대적인 판단 기준이 되는 패턴을 뽑아내는 것보다. 원본을 유사복제해서 여러 개 만드는 것이 다차원으로, 다각도로 상대적인 기준을 많이 만들어 낼 수 있어서 유리하거든요. 그래서 딥러닝은 이런 느낌으로 원본을 다양한 버전으로 유사복제합니다.


잠깐, 딥러닝이 데이터를 벡터화 하면 사실 전부 숫자가 되거든요. 매트릭스 영화처럼요. 그래서 위의 그림처럼 저렇게 색깔을 주는 것은 아니에요. 그런데 원본을 일부러 다양하게 왜곡시킨다는 점에서는 맥락이 같아요. 그렇게 해서 더 상대적인 기준을 부각시키는 거죠. 우리가 어두운 사진이 있을 때 포토샵으로 화벨을 밝게 주면 안 보이던 암부의 형태가 보일 때가 있잖아요. 그런 대비 효과를 노리는 거죠.


그렇게 원본 유사복제, 상대적인 기준이 되는 패턴 뽑아내기를 수백만 장의 멍멍이 사진이 포함된 사진의 묶음에서 합니다. 그 사진 묶음을 데이터셋이라고 하고요.

그러면 이런 일이 생겨요. 딥러닝 프로그램이 그게 멍멍이인지 모르지만 멍멍이 사진들을 모으기 시작합니다. 상대적인 기준을 중첩해서 계속 판단 기준을 다듬었더니 안 가르쳐줘도 멍멍이를 모으기 시작하게 되요. 그걸 비지도 학습이라고 합니다.

그런 다음 분석이 후반기에 들어가면 딥러닝 연구자가 라벨링을 해줘요. "니가 분석하던 이거.. 사실 멍멍이다?" 이렇게 부르는 이름을 가르쳐 줍니다. 이걸 “지도한다.”라고 해요. 그래서 딥러닝에는 초반부가 비지도고 후반부에 지도가 들어가고요. 다른 기계학습과 비교해서 지도를 덜 하는 편이에요.

이기환님 코멘트

현재 딥러닝이라고 부르는 CNN, DNN, RNN 모두 학습 과정 중 일부 혹은 대부분이 데이터 제공자의 지도로 이루어 집니다. 지도를 하는 순서는 글에서 표현한 것처럼 비지도를 먼저하고 지도를 나중에 하는 경우도 있고 그때 그때 효율적인 결과를 출력하기 위해 조정할 수 있습니다.

그러면 그 후로는 딥러닝 프로그램이 아무 사진이나 입력해도 멍멍이를 알아보기 시작하는 거에요. 판단력이 생기는 거죠. 대량의 데이터를 많이 돌릴 수록 이 능력이 더 발달합니다. 그러다가 사람을 뛰어 넘는 거구요.

지금까지는 사진을 가지고 얘기했는데요. 이 개념을 사진이 아니라 오디오(소리), 글자(번역), 그래프, 기타 다른 데이터에도 적용할 수 있어요. 원리는 같습니다. 논리로 정리해 볼까요?

  1. 데이터를 입력 받으면 원본을 남겨두고 유사복제본을 만든다.
    1. 원본은 나중에 라벨링 받아야 되니까.
  2. 유사복제본을 벡터화한다.
    1. 쉽게 말하면 매트릭스 영화에 나온 것처럼 숫자로 된 공간에 넣어버린다.
    2. 물론 영화처럼 대단한 일은 일어나지 않는다.
  3. 유사복제본에서 딥러닝 프로그램 자기 입장에서 특이한 점, 다른 데이터와 구분할 수 있는 상대적인 기준을 숫자로 알아내서 정리한다.
    1. 이것들이 나중에 데이터를 판단하는 상대적인 기준이 된다.
    2. 이런 상대적인 기준을 많이 모을 수록 유리하다.
  4. 지도라는 것은 주로 라벨링, 부르는 이름을 정해주거나 그걸로 뭘 어떻게 해달라는 주문이다.
  5. 충분히 많이, 예를 들어서 수백만 개의 상대적인 기준이 정리가 되면 딥러닝이 스스로 판단을 하기 시작한다.
    1. 대량 데이터를 많이 돌릴 수록 능력이 더 발달한다.


딥러닝과 다른 머신러닝의 차이점

다른 머신러닝은요. 연구자가 상대적인 판단 기준을 머신러닝 프로그램에게 제시를 해주고 그걸로 비교하고 정리하라고 시켜요.

이게 무슨 차이가 생기냐면요 사람은 끽 해봤자 그런 상대적인 기준을 몇 개, 많으면 수십 개 만들거든요. 그런데 딥러닝은 기본적으로 수만 개, 수백만 개까지 만들어요. 사람 눈에는 안 보이는 사소한 차이를 딥러닝은 벡터 공간에서 찾아 내려고 하거든요.

그리고 제가 위에서 설명한 논리로 비교를 해봐요.
  1. 사람이 프로그램에게 꼭 이걸로 하라고 절대적인 기준을 제시하는거
  2. 사람이 프로그램에게 자율권을 주고 자기 스스로 데이터에서 비슷한점 차이점을 찾아보라고 하는거

어떤 것이 제가 가르쳐 드린 상대성에 더 가까운가요? 2번이죠?

머신러닝도 확률적인 정보처리를 하기는 하거든요. 벡터 연산도 해요. 그러나 이렇게 딥러닝과 비교를 하면 상대적인 차이가 있다는 거에요.

이기환님 코멘트

딥러닝 이전의 머신러닝에서는 확률 정보를 통제가능하고 절대적인 예상이 가능한 대상으로 보는 사고방식이 있었습니다.
예를 들어 영화 장르와 영화 시청자가 있다고 했을 때 '남자 시청자가 액션 장르를 많이 보는 관계를 나타내는 방정식이 성립할 것이다'라고 가설을 세우고 그 가설을 신경망 모델, 혹은 이와 유사한 수학식을 사용해서 계산해보고 컴퓨터에 실제 데이터를 넣어서 예상한 그 결과가 오차범위 안에 나오는지 확인하여 성공여부를 결정하는 사고방식입니다.
위의 예는 예일 뿐 실제 머신러닝 연구자들이 그렇게 했다는 것은 아닙니다.

제가 기존의 머신러닝 연구자들이 이런 사고방식을 가졌을 것이라고 말하는 이유는 제가 리서치를 하는 과정에서 "머신러닝이란 제시된 데이터와 판정결과 페어를 사용해서 같은 유형의 문제를 해결하는 근사 함수 F를 찾는 행위이다."라는 정의를 보았기 때문입니다.

위의 사고방식은 현재까지 과학계에서 통용되는 사고방식입니다. 제가 그것을 폄하할 생각은 없습니다.
그러나 저는 다른 사고방식을 가지고 있습니다.
저는 '문제를 해결하는 일반화된 함수를 찾는다.'란 말은 더 절대적인 기준을 찾는 방향으로 가는 것이라고 생각합니다.
저는 '상대적으로 문제를 해결할 확률이 높은 방법을 찾고 그 방법을 지속해서 개선한다.'를 기준으로 가지고 있고 앞으로 이 기준에 더 가까운 프로그램을 연구하고 개발할 것입니다.


앞으로 이기준 이기환님은 뭐 할 거에요?

저와 이기환님은 앞으로 좀 더 복잡한 딥러닝 프로그램을 분석하고 포팅해볼 거에요. 제가 말한 것처럼 그러면 실력이 쑥쑥 늘어나거든요.

그런 다음에는 우리가 만들고 싶은 프로그램을 만들 거에요. 그것을 사업에 활용해서 돈도 벌 생각이구요.

우리가 딥러닝 프로그램 코드를 분석할 실력이 되기 때문에, 그리고 이렇게 쉬운 이치로 딥러닝에서 일어나는 정보처리를 설명할 능력이 있기 때문에 앞으로 연구가 잘 될거라고 생각해요. 앞으로 진행되는 것이 있으면 한 번씩 글을 써볼게요.

오늘 쓴 이 "완전쉬운 딥러닝"을 읽어보신 분은 제가 어제 처음 썼던 본 게시물도 한 번 읽어보세요. 이해가 좀 더 잘 될거에요. 딥러닝과 논리학 연구


마무리하며..

제가 마무리를 하면서 간략히 제 인생 얘기를 해드릴게요.
저는 어릴때부터 이런 논리학, 수학, 과학 관련 질문하는 것을 좋아했어요. 책도 많이 읽고요.
그런데 한국 문화는 엉뚱한 질문을 하는 것을 안 좋아하더라구요. 학교 다니면서 왕따를 받았어요.
그냥 왕따 정도에만 그치는 게 아니라 괴롭힘이 심해져서 학교를 두 번이나 중퇴했어요. 중학교 다니다가 중퇴, 고등학교 다니다가 중퇴하게 되었어요.

대학교는 눈높이를 낮추어서 지방대에 전액장학금 받고 입학했는데요. 글쎄, 거기서도 왕따 당하고 매를 맞았어요. 제가 정신병이 오더라구요. 그래서 학교를 제대로 다니지를 못하고 대학교까지 중퇴하게 되었어요.
이유는 제가 남들이 안 하는 생각이나 질문을 하면서 나댄다는 것이었어요. 참 서글프더군요.

그러나 저는 그 후로도 제가 관심있는 분야를 꾸준히 연구했어요. 저는 나중에 서른 넘어서 미국에 유학을 갔어요. 미국에서는 저보고 아무도 나댄다고 안 하더라구요. 반대로 저보고 대단하다고 칭찬해주었어요. 그때 깨달았어요. 아, 나보고 나댄다고 미워하던 사람들이 고정관념에 사로잡혀 있었구나. 내 인생은 내가 결정하는 거구나. 누가 뭐라고 해서 막을 수 없는 거구나.

저는 미국인 아내랑 결혼을 하고 이제는 애가 있어요. 제가 하고 싶은 연구는 한 번도 멈춘 적이 없구요. 그게 계속 이어져서 이런 글을 쓰는 능력에 보탬이 되었어요.

제가 이런 얘기를 하는 이유는 만약 이 글을 읽으시는 분들 중에 자기가 관심있는 분야, 연구하고 싶은 분야가 있다면 그것을 꾸준히 해보라는 것이에요. 그게 뭐든지 간에요.

나는 흙수저니까 안돼.. 하는 생각은 절대적인 관점으로 안된다고 생각하고 포기하는 고정관념이거든요.
그리고 여기는 헬조선이니까 안돼.. 이런 생각도 마찬가지고요.
우리는 언제나 상대적인 기준을 우리 스스로 만들어서 인생을 살아 나갈 수 있어요.

어디서 살아도 나는 내가 하고 싶은 것을 매일 실천하면서 살겠다. 이렇게 생각해 보아요.
읽어주셔서 고맙습니다. 아래 사진은 제 딸이에요.

좋은 하루 되세요.


관련된 글 목록



연락처




Facebook Comments

Disqus Comments

About Author

안녕하세요. 제 이름은 이기준이에요.  저는 Deduction Theory, LLC라는 소프트웨어 회사에서 CEO로 일하고 있어요.
저는 제 동생 이기환님과 함께 일을 하구요. 연구와 공부도 하고 있어요. 우리가 연구하는 주제는 논리학, 수학, 과학, 그리고 컴퓨터 정보공학이에요. 이 블로그는 우리가 연구하고 공부하는 주제를 설명하는 곳이에요.
그리고 저는 최근 오픈소스 공개 스터디 릴랏 프로젝트의 내용을 번역해 주실 자원봉사자를 모집하고 있어요. 제 생각에는 이 프로젝트가 전세계에 사는 어린이, 학생, 어른에게 도움이 될 거에요. 특히 저소득층에게요. 이 프로젝트는 무료에요. 사람들에게 도움을 주려고 기획했어요. 저는 나중에 저소득 국가에 학교와 고아원을 짓고 사람들에게 이 프로젝트 방식으로 컴퓨터 프로그래밍을 가르쳐 주고 싶어요. 그렇게 해서 나중에 그 사람들이 더 나은 직업을 가질 수 있게 돕고 싶어요.
아래에 링크한 릴랏 소개 페이지를 읽어 본 다음 이것이 도울 만한 가치가 있다고 생각되시면 저에게 말해주세요.
오픈소스 공개 스터디 프로젝트 Rellat을 소개합니다
원문 컨텐츠는 한글로 전부 제가 쓴 것이에요. 우리는 세계 모든 언어로 번역할 계획을 가지고 있어요. 감사합니다.
안녕하세요. 이기준님과 함께 Rellat 프로젝트를 진행하고 있는 이기환입니다.
제가 프로그래밍을 처음 시작한 것은 어린 시절 어도비 플래시 프로그램에서 애니메이션을 만들다가 게임을 만들고 싶어서 액션스크립트를 사용한 것입니다.
Rellat 프로젝트의 방법론은 제가 평소에 일을 하는 방법과 같습니다.
저는 사실 500줄 이상 넘어가는 코드를 보면 정신이 없고 잘 기억도 안됩니다. 지금도 간단한 코드 문법이 기억이 안나서 구글을 뒤지는 경우가 허다합니다.
대신 저는 이 코드가 어떤 사고방식을 사용해서 만들어졌는지, 어떤 관계정보를 사용했는지를 추적합니다. 이것이 연역론의 코딩 방법론, 코딩 스타일, 컴퓨팅 세계관입니다.
이 사고방식을 갖추면 더 나은 정보처리 방식이 무엇인지 비교할 수가 있습니다. 이것이 프로그래밍의 본질이고, 가장 중요한 것입니다.
나머지 프로그램의 빈공간은 구글과 스택오버플로우의 힘을 빌려서 채워넣습니다.
저는 여러분도 그렇게 하면 끊임없이 만들어지는 새로운 기술, 수만 줄의 코드 속에서 허우적거리지 않으면서 대규모의 질 높은 정보처리를 더 효과적으로 할 수 있다고 생각합니다. 

Popular Posts

Visitor Map

Flag Counter