Disqus for deduction-theory

이기준 이기환의 딥러닝 연구


안녕하세요. 저는 이기준이라고 합니다. 저는 제 친동생 이기환님과 함께 소프트웨어 연구와 개발 사업을 하는데요. 최근 우리가 딥러닝 연구를 시작하게 되었습니다.

우리는 프로그래밍을 잘하는 방법을 이렇게 생각하고 있습니다.
  1. 잘 쓰여진 코드를 읽고 분석한다.
    1. 내 입장에서 분석을 해보고 그 내용을 주석으로 단다.
  2. 분석한 코드를 다른 언어로 포팅해 본다.
    1. 이 과정에서 내가 분석한 것이 정확했는지, 내가 프로그램의 정보처리 과정을 제대로 이해했는지를 검증한다.
  3. 그렇게 배운 것을 바탕으로 해서 내가 원하는 소프트웨어의 목표를 기획하고 그 목표를 달성할 수 있는 정보처리 과정을 코드로 구현한다.



우리는 이것을 "프로그래밍의 왕도(王道)"라고 부릅니다. 우리는 이 방법을 이용해서 그동안 프로그래밍 실력을 꾸준하게 닦았습니다. 이번에 딥러닝을 연구할 때에도 같은 방법으로 접근해서 연구하고 있습니다.

우리는 2016년 11월 초부터 싱글 퍼셉트론과 다중 퍼셉트론 구현 코드를 분석하고 주석을 다는 일을 시작했습니다.
퍼셉트론은 인공신경망의 기본 단위입니다. 우리가 분석한 소스는 C++로 쓰여진 것이었습니다.

우리는 2주 정도 분석하고 주석을 다는 기간을 가졌고 그 후로는 포팅을 했습니다. 우리가 포팅 대상으로 선택한 언어는 “줄리아 Julia”였습니다. 우리는 Golang과 줄리아 중에 무엇을 선택할지 토론하는 시간을 가져 보고 최종적으로 줄리아로 해보기로 선택했습니다. 그 이유는 줄리아가 좀 더 수학적인 표현을 하는데 유리하다고 판단했기 때문이었습니다.

줄리아를 포팅 언어로 선택한 이유
  1. 비교적 최신 언어다.
  2. 퍼포먼스가 빠르다.
  3. 수학 계산을 하는데 편리하다.

그렇게 작업을 시작해서 2016년 12월 둘째 주에 싱글 퍼셉트론과 다중 퍼센트론 코드를 줄리아로 포팅하는 것을 완료했습니다. 우리가 포팅하고 주석을 단 코드를 공유하겠습니다. 깃허브 링크에 C++ 원본 소스 링크도 있습니다.


우리가 프레임워크를 사용한 재현 실험으로 학습을 하지 않고 굳이 포팅을 했던 이유

우리는 2016년 10월부터 몇 주 동안 텐서플로, 카페, 티아노, 케라스 등 프레임워크 툴과 소스를 사용해서 재현 실험을 했었습니다. 딥마인드 DQN 소스 재현도 했었구요. 그런데 그런 것을 해도 딥러닝에 대한 기본적인 원리를 이해하는데 이르지 못했습니다. 그래서 정공법을 택해서 기본 단위부터 분석하는 일을 했던 것입니다.

우리가 분석한 소스의 주석과 포팅한 소스를 공유하는 이유는 우리와 비슷한 입장에서 딥러닝의 기본 원리를 탐구하고자 하는 사람들에게 도움이 되기를 원하기 때문입니다. 그리고 관심 있으신 분들이 리뷰를 하고 의견을 피드백 해주시기를 바랍니다. 우리가 발견하지 못한 실수나 보완할 점이 있으면 언제든지 얘기해 주세요.

우리는 앞으로 CNN, RNN, NLP, DQN, 기타 복합적인 패키지를 포팅해서 재현하고 문서로 정리를 해볼 생각입니다. 관심 있으신 분들과 교류하기를 바랍니다.

이 문서의 아래 부분에는 우리가 연구하면서 작성한 연구 일지의 일부를 첨부합니다.


이기준 이기환의 연구일지

우리는 이 작업을 하면서 벡터, 행렬, 미적분, 위상수학 등 생소했던 수학 분야를 배우고 정리하는 작업을 같이 하게 되었습니다.  

우리는 딥러닝과 인공지능을 연구하기 전부터 논리학과 수학을 연구하고 있었는데요. 그 주제에 "연역론"이라는 이름을 붙였습니다. 이어질 내용에서 "연역론"이라는 단어가 나오면 "아, 이건 이기준 이기환님이 자기가 연구하던 주제에 이름을 붙인 것이구나."라고 생각하면 이해하기 편하실 것입니다.

연역론이란 단어가 생소하여 귀납법의 반대 개념인 연역법과 혼동하는 경우가 있어서 구분하여 설명하겠습니다.
Deduce 추론하다, 연역하다
Deduction 추론, 연역
제가 주장하는 연역론은 정보의 상대적인 기준, 상대성을 추론하는 기법입니다. 그런데도 연역이라는 단어가 들어가 있는 이유는 연역이라는 단어는 보편적으로 추론이라는 뜻을 가지고 있기 때문입니다.

일반적인 철학에서 배우는 귀납법의 반대 개념인 연역법과는 그 의미가 다릅니다. 연역법은 영어로 deductive logic, apriorism 이라고 하고 선험적, 원래부터 알고 있는 것이라는 뜻으로 쓰이는데 제가 만든 연역론은 그런 뜻이 아닙니다. 우리말로 하면 연역법이나 연역론이나 별 차이 없어 보이는데 엄연히 다른 뜻입니다.

참고
apriorism Naver 사전
deductive logic Naver 사전
deductive logic (Deductive reasoning) - Wikipedia
Deductive reasoning links premises with conclusions. If all premises are true, the terms are clear, and the rules of deductive logic are followed, then the conclusion reached is necessarily true.
(번역) 연역적 추론은 전제와 결론을 연결하는 사고방식이다. 모든 전제가 사실이고, 조건이 명확하고, 추론 논리의 규칙을 따른다면 도달하는 결론은 반드시 사실이다.

연역법은 사고방식의 근거를 문장의 절대성을 검증하는 방식으로 합니다. 참과 거짓의 관계가 절대적이라고 가정하고 전제와 결론을 연결하는 사고방식입니다.

연역적 추론에서 연역이라는 말은 사실 절대성 추론과 아무런 관련이 없는 단어입니다. 오히려 따져보면 순수하게 펼치고 풀어서 탐구하다라는 뜻을 가진 단어입니다. 영어의 Deduce, Deduction도 마찬가지입니다.
연역(演繹): 펼 연演, 풀 역繹

우리가 연구하는 연역론을 한 문장으로 정의하면 이렇습니다.
A Theory of Deducing World’s Relativity by Information Coupling and Asymmetry.
정보의 동조관계와 비대칭성을 사용해서 사물의 관계, 즉 상대성을 추론하는 이론
이것이 연역론의 슬로건입니다.


연역론과 Deduction Theory는 이기준이 만든 지식재산입니다. 또한 Deduction Thoery는 미국 회사인 Deduction Theory LLC의 등록상호입니다.

연역론에 대한 자세한 설명은 아래 연구일지에 나옵니다.

우리가 일지에서 서술한 내용은 절대적인 사실이 아니고 우리가 딥러닝을 연구하는데 도움이 되는 세계관을 구상하면서 만들어 낸 가설입니다. 그렇게 이해해 주시고 합리적인 의견이 있으신 분은 피드백을 해주십시오. 감사합니다.


연역론이란 무엇인가?

연역론은 생각을 하는 방법, 사고방식이다.

연역론은 어떻게 이루어지는가? 연역론으로 생각하는 방법은 어떤 과정으로 이루어지는가?
재래식 논리학에는 정보처리가 이루어지는 과정에 대해서 생각하는 방식으로 절대적인 관점, 상대적인 관점이 있다.
관점, 세계관, 사고방식은 정보를 처리하는 방법이라는 뜻으로 셋 다 같은 뜻으로 사용한다.

절대적인 관점에 대해서 알아보자.
절대적인 관점이란 정보처리가 이루어지는 과정의 원인에 절대적인 요소, 절대적인 이유, 절대적인 근거가 있다고 생각하는 것이다. 이것의 예를 들어보자. 논리학, 수학에서는 “공리"가 있다고 가정한다.

그런데 공리가 있다고 “가정"한다는 말 자체가 모순이다. 공리는 근거를 대지 않아도 저절로 참인 절대적인 논리라는 뜻이다. 그런데 공리를 가정한다고 하면 절대적인 논리가 있다고 가상으로 생각해보자는 뜻이다. 그러므로 절대적인 논리가 있다고 가정하자는 말은 절대적인 논리가 없을 수도 있다는 말이다.

이렇게 모순된 말을 쓸 필요 없이 그냥 “앞으로 할 정보처리에 사용할 상위 규칙을 한 개 제시한다.”라고 하면 된다. 그렇게 하면 되는데 괜히 논리학과 수학의 권위를 세우려고 절대적인 공리 가정같은 주장을 하는 것이다.

이렇게 공리에 대해서 모순적인 제안이 나온 이유는 1900년대 초 “버트런드 러셀"이 공리의 허구에 대해서 논증을 했기 때문이다. 논증이라는 말은 논리 증명이라는 뜻이다. 이렇게 버트런드 러셀이 공리가 참이 아니라 허구라는 것을 논증하고 나서부터는 논리학과 수학계에서 더 이상 “공리가 있다.”고는 주장하지 못하고 “공리를 가정해 보자.”고 주장한다.


버트런드 러셀이 공리의 허구와 오류를 논증하기 전에는 논리학과 수학계에서 “공리가 있다.”고 주장을 했었다. 절대적인 논리가 있다고 한 것이다. 절대적이라는 말의 뜻은 더 이상 어떻게 만들어졌는지 과정을 알아내지 않아도 되는 원래부터 그런 것, 당연히 그런 것이라는 뜻이다. 그러나 그런 것은 없다. 버트런드 러셀은 논리학에서 “러셀의 역설” 때문에 공리가 성립하지 않는 것으로 증명했다.
러셀의 역설 위키피디아

그렇다면 연역론의 상대적인 관점은 무엇일까? 연역론에서는 절대적인 공리, 절대적인 정보처리 과정, 절대적인 요소, 절대적인 근거가 없다고 생각한다. 대신에 연역론의 상대적인 관점은 상위에 관계정보가 되는 규칙, 룰을 정하면 하위에서 확률적으로 결과정보를 만들어 내고 정보처리 게임을 운영할 수 있다고 주장한다.


이렇게 연역론에서 주장하는 상대성과 지금까지 역사에서 사람들이 주장한 상대성은 다르다.
지금까지 역사에서 사람들이 주장한 상대성과 상대적인 관점은 절대성과 절대적인 관점의 반대 개념이었다. 그런데 생각을 해보자. 절대성이 허구다. 절대성이 없다. 그런데 그것의 반대 개념이 어떻게 성립할 수 있는가?

옛날 사람들이 생각하던 상대성은 주로 혼돈, 카오스, 무질서 등이었다. 그런데 정말 그런가? 상대성은 혼돈, 카오스, 무질서, 무작위인가? 그렇지 않다. 우리는 빅데이터, 머신러닝, 딥러닝 연구를 하면서 절차지향과 객체지향 정보처리 과정이 무엇이 어떻게 다른지, 결과지향과 확률지향 정보처리 과정이 무엇이 어떻게 다른지 연구를 해보았다.

절차지향보다 객체지향 정보처리 과정이 상대적으로 더 상대성을 띈다. 왜냐하면 절차지향에서는 절대적으로 특정해 놓은 순서대로 정보를 처리하려고 하고, 그 순서에 해당하지 않는 입력이 들어오거나 변수가 발생하면 오류가 생겨서 프로그램이 제대로 동작하지 않기 때문이다. 반면에 객체지향은 다차원 조건과 다차원 사건에 대응해서 작동하도록 프로그램을 설계한다. 객체지향 프로그램이 더 오류를 줄일 확률이 높다. 실제로 객체지향 프로그램은 절차지향 프로그램의 오류를 줄이려는 목적으로 개발한 것이다.

결과지향과 확률지향 정보처리 과정을 비교해보자. 확률지향 정보처리 과정이 더 상대성을 띈다. 결과지향 정보처리를 할 때는 정확하게 특정을 한 결과정보를 필요로 한다. 그 조건이 맞지 않으면 오류가 생긴다. 그러나 확률지향 정보처리 과정에서는 많은 데이터에서 확률패턴을 추론해서 그것을 근거로 정보처리 판단을 해나간다. 참고로 결과지향과 확률지향은 연역론에서 만든 말이다.


객체지향 정보처리 과정과 확률지향 정보처리 과정은 더욱 상대적이기 때문에 “불확실성"을 증가시키는가? 그렇지 않다. 오히려 반대다. 오류를 줄일 확률을 높인다. 정보처리의 정확도를 높인다. 절대성의 관점으로 프로그램을 만들면 오히려 오류가 확률적으로 더 많이 발생한다.

절대성의 반대 개념으로 상대성을 설명하려고 하면 절대성의 관점으로 상대성을 해석하려고 하게 되어서 오류가 계속 발생한다. 대표적인 오류로 이런 것이 있다. 베르나르 베르베르라는 소설가가 자신의 책에서 이런 질문을 한 적이 있다. “만약 이 세상에 절대적인 진리가 없고 모든 것이 상황에 따라서 달라지는 상대적인 결과 뿐이라면 이 세상에 너와 나, 우리가 존재하는 것 자체가 무의미한 것이 아닐까? 그리고 이 세상이 전부 상대적이라고 생각하는 것도 상대성이라는 이름의 절대적인 규칙을 적용하는 것이지 않을까?”

베르나르 베르베르가 한 질문은 두 가지다.
  1. 만약 이 세상에 절대적인 진리가 없고 모든 것이 상황에 따라서 달라지는 상대적인 결과 뿐이라면 이 세상에 너와 나, 우리가 존재하는 것 자체가 무의미한 것이 아닐까?
  2. 이 세상이 전부 상대적이라고 생각하는 것도 상대성이라는 이름의 절대적인 규칙을 적용하는 것이지 않을까?
이 두가지 질문을 분석해서 대답해보자.

베르베르의 질문1: 만약 이 세상에 절대적인 진리가 없고 모든 것이 상황에 따라서 달라지는 상대적인 결과 뿐이라면 이 세상에 너와 나, 우리가 존재하는 것 자체가 무의미한 것이 아닐까?

이 질문을 보면 절대적인 관점, 절대적인 진리가 없다고 가정을 해놓고 이어지는 문장 뒷부분에서는 다시 절대적인 진리, 절대적인 관점에서 상대성을 논해 보려고 하고 있다. 절대성 없다고 가정해놓고 다시 절대성 관점으로 상대성을 풀이해 보려고 하는 것이다. 그래서 오류다.

그리고 상대성에 대해서 논할 때에 상대성을 관계로 이해하는 것이 아니라 결과로 이해하고, 너라는 존재, 나라는 존재, 우리라는 존재를 예를 들어서 이해하려고 한다. 여기서 절대성 관점 외에 또 다른 것을 찾아낼 수 있다. 바로 결과, 존재에 대한 관점이다.

이 부분이 재미있는 부분이다. 절대성이 없다고 가정하고 진술을 해도 그 사람이 계속 절대성 관점으로 생각을 하기 때문에 오류가 계속 이어진다. 연역론에는 이 절대성 관점, 결과를 근거로 생각하려는 관점, 존재를 근거로 생각하는 관점을 존재규정의 오류라고 부른다.


연역론 관점에서는 절대성이 없다. 존재가 없다. 결과정보는 과정을 거쳐서 만들어진 것이다.
한 번 생각을 해보자. 나라는 사람은 과정을 거쳐서 만들어진 것인가, 아니면 원래부터 이렇게 존재하는 것인가? 우리는 이미 답을 알고 있다. 나는 과정을 거쳐서 만들어졌고 살아가면서 유지하는 것이다. 나의 DNA 정보구조체에서 만들어낸 내 몸의 육체 정보구조체가 있고, 내가 생각을 해서 만들어 낸 의식 정보구조체가 있다. 그것으로 내 인생을 실시간으로 운영하고 있다.

이 우주는 과정을 거쳐서 만들어진 것일까, 아니면 원래부터 이렇게 존재하는 것일까? 이 우주도 과정을 거쳐서 만들어진 것이고 지금도 계속 그 과정을 이어나가고 있다. 그러면 연역론에서는 상대성에 대해서 어떻게 생각하는가? 연역론에서는 상대성을 이렇게 정의한다.

연역론 사고방식, 연역론 세계관
  1. 정보를 조립해서 다른 정보를 만들어 내면 그것을 정보구조체라고 부른다.
  2. 다른 정보를 만들어 내는 정보를 “상위의 정보구조체", “관계정보"라고 부른다. 정보구조체는 관계정보를 사용해서 만든다.
  3. 정보구조체를 통해서 만들어진 정보를 결과정보라고 부른다.
  4. 우리는 이 세계의 절대적인 진실을 모른다. 우리가 이 세계의 하위에서 만들어진 개체이기 때문이다.
  5. 그러나 우리는 관계정보를 만드는 방법, 더 상위의 관계정보를 알아낼 수 있다.
  6. 그래서 이 방향을 추적해서 더욱 상위의 관계정보, 확률적으로 더 잘 들어맞는 관계정보를 알아낼 수 있다.
  7. 상위 관계정보가 확률적으로 하위의 결과정보를 만들어 내는 관계, 영향을 주는 관계를 “동조관계"라고 한다.
  8. 정보를 조립해서 정보구조체를 만드는 방법, 관계정보를 만드는 방법이 있다. 그것들을 기본적인 단순한 패턴으로 정리한 것을 연역원리라고 한다.
    1. 많은 관계정보들이 간단한 연역원리 패턴을 조립해서 이루어진다.
    2. 연역원리가 절대적인 원리인 것은 아니다. 이것은 추론해서 알아낸 것이지 원래부터 존재한 것이 아니기 때문이다.
    3. 연역원리 상위에 더 간단한 조립패턴이 있을 수 있다. 연역론은 그것을 계속 연구해 나갈 것이다.
  9. 관계정보를 조립해서 결과정보를 만들 수 있게 하면 그것을 정보구조체라고 부른다.
  10. 정보구조체 중에 일부 결과정보, 인풋 아웃풋과 조건 등을 재조립해서 다른 분야에서 사용할 수 있게 만들면 그것을 열린정보구조체라고 부른다. 열린정보구조체는 반조립 상태의 모듈이다. 그래서 이것을 예전에는 연역모듈이라고 불렀다.
  11. 정보구조체들을 많이 모아서 대규모 정보구조체를 만들면 그것을 시스템이라고 부른다. 그래서 정보구조체와 시스템은 본질적으로는 같은 뜻이다.




베르베르의 질문2: 이 세상이 전부 상대적이라고 생각하는 것도 상대적이라는 이름의 절대적인 규칙을 적용하는 것이지 않을까?

이 질문을 보자. 이 질문은 이런 내용을 담고 있다. “상대적”인 것은 “절대적인 규칙없음"에 해당하는데 이 세상이 전부 상대적이라는 것은 이 세상에 상대적이라는 이름의 절대적인 규칙이 있다는 말 아니냐?”하는 질문이다. 연역론은 상대적인 관계라도 확률적으로 더 잘 들어맞는 관계, 확률적으로 영향력이 큰 관계가 있고 덜한 관계가 있다고 한다. 상대적인 관계에서도 절대적인 영향력이 발휘되는 것이 아닌 것이다. 위의 질문은 상대적인 관계를 다시 절대적인 관계로 해석을 했기 때문에 저런 질문이 나오는 것이다. 이렇게 아무리 논리 진술을 해도 사고방식과 관점이 바뀌지 않으면 같은 방식의 오류가 계속 일어난다.


과정, 패턴, 알고리즘, 행동, 행위

패턴, Pattern, 알고리즘, Algorithm의 뜻은 둘 다 같다. “정보를 처리하는 과정"이라는 뜻이다. 패턴은 비교적 좀 더 짧고 단순한 과정, 알고리즘은 비교적 좀 더 길고 복잡한 과정을 뜻한다.

연역원리 도식에 보면 “00을 하는 행위"라는 말이 나온다. “정보처리 과정”은 언어로 나타낼 때 행위로 표현한다. 행위와 행동은 같은 뜻이다. 문장에서 명사, 이름, 결과정보를 비우면 행위와 문법 깔맞춤이 남는다. 그러면 이 문장은 다른 결과정보를 끼워 넣어서 정보를 만들어 낼 수 있는 "열린정보구조체”가 된다. 언어에서 행위, 행동을 표현하는 동사와 문장을 깔맞춤하는 문법이 관계정보와 정보구조체 역할을 하는 것이다. 수학식에서도 결과정보를 비우면 행위에 해당하는 수학 문법과 관계정보가 드러난다.


물질적인 현실 세계에서도 정보처리 과정은 행위와 행동으로 표현한다. 예를 들어서 컴퓨터의 경우 오실레이터라고 불리는, 신호정보를 복제하는 반도체를 이용해서 정보를 생성하고, 스위치를 이용해서 반복하는 신호를 특정한 패턴으로 만들어서 정보를 처리하고, 메모리를 이용해서 그 정보를 저장한다. 그리고 저장해 놓은 패턴을 특정한 목적을 달성하도록 조립해서 이어붙이면 그것이 알고리즘이 되고 프로그램이 된다. 이것이 컴퓨터가 정보처리를 하는 방법이고, 어떤 패턴을 어떻게 조립해서 사용할지를 사람이 정해 놓은 것이 바로 컴퓨터 프로그램, 소프트웨어다. 참고로 관계정보와 결과정보는 연역론에서 만든 말이다.


정리를 해보자.
  1. 패턴, 알고리즘, 행동, 행위 전부 "정보처리 과정"을 뜻한다.
    1. 패턴은 비교적 좀 더 짧고 단순한 과정을 뜻한다.
    2. 알고리즘은 비교적 좀 더 길고 복잡한 과정을 뜻한다.
  2. 행동, 행위는 언어 문법과 물질세계에서 정보처리를 하는 과정에 사용하는 말이다.
    1. 언어 문장에서 명사, 이름, 결과정보를 비우면 행위와 문법 깔맞춤이 남는다.
    2. 그러면 이 문장은 다른 결과정보를 끼워 넣어서 새로운 정보를 만들어 낼 수 있는 "열린정보구조체”가 된다.
    3. 언어에서 행위를 표현하는 동사와 문법 깔맞춤이 관계정보와 정보구조체 역할을 한다.
    4. 수학식에서도 결과정보를 비우면 행위에 해당하는 수학 문법과 관계정보가 드러난다.
  3. 물질세계에서도 정보처리 과정을 행위, 행동으로 표현한다.
    1. 예를 들어서 컴퓨터의 경우 오실레이터라고 불리는, 신호정보를 복제하는 반도체를 이용해서 정보를 생성하고, 스위치를 이용해서 반복하는 신호를 특정한 패턴으로 만들어서 정보를 처리하고, 메모리를 이용해서 그 정보를 저장한다.
    2. 그리고 저장해 놓은 패턴을 특정한 목적을 달성하도록 조립해서 이어붙이면 그것이 알고리즘이 되고 프로그램이 된다.
    3. 이것이 컴퓨터가 정보처리를 하는 방법이고, 어떤 패턴을 어떻게 조립해서 사용할지를 사람이 정해 놓은 것이 컴퓨터 프로그램, 소프트웨어다.


연역론을 연구하는 방법

연역론을 연구하는 방법은 이렇다.
이 세상이 모두 정보처리 과정으로 이루어져 있다는 것을 이해한다. 연역론의 상대성을 이해한다. 재래식 절대성과 상대성의 오류, 결과정보 오류, 존재규정 오류를 이해한다.

이 세상을 연역론 관점으로 관찰하고 분석한다. 내가 그냥 평소에 생활을 하면서 관찰한 것, 내가 공부하는 것, 내가 업무로 하는 일에서 관찰한 것들에서 정보처리 과정을 분석한다.

길고 복잡한 정보처리 과정을 좀 더 짧고 단순한 과정으로 분석하고, 이것들이 어떻게 조립되어 있는지 알아내서 정리한다. 길고 복잡한 과정을 짧고 단순한 과정의 조립으로 만들어 본다. 정보처리 과정을 분석할 때는 연역원리의 간단한 패턴을 참고해서 그것을 응용한다.

그러면 지금 이 패턴이 무엇의 복제인지, 무엇의 확장인지, 무엇과 대칭인지 혹은 두 개 이상의 중첩인지 하는 식으로 정보처리 과정을 비교하고 같은 점과 다른 점을 알아낼 수 있다. 지금 이 패턴이 왜 그렇게 만들어졌는지, 어떻게 작동하는지 더 작고 자세한 과정을 알아낼 수 있다.

정보처리 과정을 분석하면서 그것을 열린정보구조체로 만들어 본다. 정보처리 과정을 언어로 만들어 보고 결과정보를 해제해서 열린정보구조체로 만들어 본다. 수학식을 서술과 도식으로 풀이하고 열린정보구조체로 만들어 본다. 컴퓨터 프로그램 소스를 분석해서 열린정보구조체로 만들고 다른 일에 응용해 본다. 정보처리과정을 알아내고 열린정보구조체로 만들면 다른 분야와 다른 일에 응용할 수 있다. 그것이 그 사람의 창조적인 능력과 노하우가 된다.

그렇게 해서 알아낸 것들을 사용해서 내가 하려고 하는 일에 정보처리 시스템을 만든다. 정보처리 성공확률이 높은 시스템, 자동대량 정보처리가 잘 되는 시스템을 만든다.

정리를 해보자.
  1. 이 세상이 정보처리 과정으로 이루어져 있다는 것을 이해한다.
    1. 연역론의 상대성을 이해한다.  
    2. 재래식 절대성과 상대성의 오류, 결과정보 오류, 존재규정 오류를 이해한다.
  2. 이 세상을 연역론 관점으로 정보처리 과정을 관찰하고 분석한다.
    1. 내가 그냥 평소에 생활을 하면서 관찰한 것
    2. 내가 공부하는 것
    3. 내가 업무로 일하는 일 하는 것
  3. 길고 복잡한 정보처리 과정을 좀 더 짧고 단순한 과정으로 분석하고, 이것들이 어떻게 조립되어 있는지 알아내서 정리한다
    1. 길고 복잡한 과정을 짧고 단순한 과정의 조립으로 만들어 본다.
    2. 정보처리 과정을 분석할 때는 연역원리의 간단한 패턴을 참고해서 그것을 응용한다.
      1. 이 패턴이 무엇의 복제인지, 무엇의 확장인지, 무엇과 대칭인지 혹은 두 개 이상의 중첩인지 하는 식으로 정보처리 과정을 비교하면 차이점, 같은 점을 알아낼 수 있다.
      2. 이 패턴이 왜 그렇게 만들어졌는지, 어떻게 작동하는지 더 작고 자세한 과정을 알아낼 수 있다.
  4. 정보처리 과정을 분석하면서 그것을 열린정보구조체로 만들어 본다.
    1. 정보처리 과정을 언어로 표현하고 결과정보를 해제해서 열린정보구조체로 만들어 본다.
    2. 수학식을 서술과 도식으로 풀이하고 열린정보구조체로 만들어 본다.
    3. 컴퓨터 프로그램 소스를 분석해서 열린정보구조체로 만들고 다른 일에 응용해 본다.
    4. 정보처리과정을 알아내고 열린정보구조체로 만들면 다른 분야, 다른 일에 응용할 수 있다.
    5. 그것이 나의 창조적인 능력, 나의 노하우가 된다.
  5. 그렇게 해서 알아낸 것들을 사용해서 내가 하려고 하는 일에 정보처리 시스템을 만든다.
    1. 정보처리 성공확률이 높은 시스템, 자동대량 정보처리가 잘되는 시스템을 만든다.


공리주의 연구

공리주의는 '공리계라는 게임의 룰 안에서 절대적인 관계가 성립한다.'를 주장하는 사고방식이다.

공리주의란 비유클리드 기하학을 맞닥뜨린 수학자들이 수학이 현실세계와 1:1 매칭되지 않는다는 것을 깨달은 후 그러면 '현실세계와 별개의 게임을 만들고 그 게임을 절대적이라고 생각해보자'라고 주장한 것이다.

공리주의의 판정 기준
1. 모든 정리가 그 공리계에서 얻어질 것
2. 그 공리계에서 임의로 1개의 명제를 제외시킨 경우 이미 증명불가능하게 되는 정리가 존재할 것
3. 그 공리계로부터 서로 모순되는 여러 정리를 증명하는 것이 불가능할 것

공리주의를 연역론 용어로 변환해본다. 공리계를 상부 규칙이라고 바꿔 부른다.
1. 모든 하부 규칙은 예외처리 없이 상부 규칙을 조립해서 만들어야 한다.
2. 상부 규칙은 다른 상부 규칙과 겹치거나 서로가 서로를 참조하는 경우가 없어야 한다.
3. 상부 규칙을 사용해서 만든 하부 규칙들이 서로 모순되지 않아야 한다.

괴델의 '불완정성 정리'는 공리계 규칙을 사용해서 공리계의 판정 기준 '3. 하부 규칙 사이의 무모순 관계'에 모순되는 경우를 만들어서 공리주의가 주장하는 '절대적인 게임'을 만들 수 없다고 증명한 것이다.

연역론 관점에서 공리주의를 보면 어떤 것을 알수있는가?
게임을 만들어서 그 게임이 현실에서 성립하는지 알 수 있는 방법은 그 게임을 현실에서 직접 실천하는 방법 뿐이다.
가상의 규칙만 만들고 그 규칙이 절대적으로 맞기를 기대하면 실패한다.
현대 과학의 사고방식은 이전에 정의한 게임과 다른 결과가 발견되면 끊임없이 예외처리하고 예외를 포함하는 상위의 규칙을 탐구하는 것이다.


연역론은 게임을 어떻게 정의하는가?

연역론은 완벽한 게임을 정의하려고 하지 않는다.

연역론에서 이 세계는 정보로 이루어진다. 이 세계가 지속하는 방법을 정보처리라고 부른다.
'개체'는 정보처리 방법을 조립하여 만든 정보구조체이다.
정보구조체 '개체'는 자신을 지속하려고 하기 때문에 더 나은 정보처리 방법을 탐구한다.
개체가 자신의 내부에서 하는 정보처리는 외부에서 일어나는 정보처리와 분리된 별개이다.
개체는 이 세계가 하는 정보처리를 개체 내부에 유사복제한다.
개체는 정보처리 방법을 조립해서 상위 규칙을 만든다. 이 규칙은 개체의 내부에서는 비교적 확실하지만 이 세계의 정보처리와는 별개이다.
개체가 자신의 내부에서 만든 정보처리 방법을 사용해서 자신을 지속할 수 있는지 아는 방법은 오로지 그 개체가 그 정보처리 방법을 실천하는 것 뿐이다.

우리가 컴퓨터를 사용하고 프로그래밍을 하는 것은 자동대량 시스템을 운영하려고 하는 것이다.
컴퓨터 프로그램은 정보처리 과정의 관점에서는 절차지향과 객체지향으로 구분하고, 정보를 처리하는 근거의 관점으로는 결과지향과 확률지향으로 구분한다.
절차지향 방식은 닫힌 시퀀셜로 정해진 행위를 데이터를 사용해서 처리한다.
객체지향 방식은 비교적 열린 시퀀셜로 된 객체를 사용해서 테이터를 처리한다.
결과지향 방식은 결과데이터를 정보 처리의 근거로 사용하여 정보처리 판정을 한다.
확률지향 방식은 결과정보 데이터에서 확률패턴을 만들어서 그 확률패턴으로 정보처리 판정을 한다.


절차지향 방식과 결과지향 방식은 과정 중에 빈공간이 생기고 판정 근거가 정확한 결과데이터가 아닐 때 오류가 생긴다.
객체지향 방식과 확률지향 방식은 과정을 유연하게 조정하여 빈공간을 처리하고 판정 근거가 되는 데이터가 정확하지 않아도 확률 어림짐작을 하여 정보처리 정확도를 유지하면서 정보처리를 할 수 있다. 그래서 자동대량 정보처리를 효과적으로 할 수 있다.


빅데이터는 대량의 데이터를 사용한 자동대량 정보처리 시스템을 통틀어서 말하는 것이다. 머신러닝과 딥러닝은 대량의 데이터를 사용하면서 객체지향, 확률지향 방식을 사용하는 것이다. 이 두 개의 관점을 다차원으로 적용할 수 있기 때문에 빅데이터이면서 머신러닝인 경우가 있고 빅데이터이면서 머신러닝이 아닌 경우가 있다. 예를 들어서 대량의 정보를 자동으로 처리하면서도 엑셀, VBA, SQL처럼 정형 데이터 처리를 하고 머신러닝을 안 하는 경우가 있다.

그러나 대부분의 빅데이터 시스템은 정형 데이터와 비정형 데이터를 모두 사용하고 머신러닝으로 확률지향 정보처리를 한다. 왜냐하면 대량 데이터를 결과지향 프로그램으로 정보처리하려고 하면 데이터를 결과정보로 가공하고 특정하는데 시간과 컴퓨팅 자원이 많이 소모되고 도중에 에러가 나면 처음부터 다시 검증을 해야 하는 등 비용이 너무 많이 들기 때문이다. 관련정보 링크 빅데이터란 무엇인가?

비지도학습은 프로그래머가 기본 알고리즘을 덜 정해 주어도 프로그램이 동조관계와 정보비대칭성을 스스로 추론해서 알고리즘을 만들어 나가는 것이다. 반면에 지도학습은 프로그래머가 기본 알고리즘을 더 많이 제시해 주고 프로그램은 그것을 중심으로 해서 학습하는 것이다. 딥러닝은 “딥 뉴럴 네트워크, DNN”에서 이름을 따온 것이다. 딥러닝은 주어진 과제를 해결하는 과정에서 일부 지도학습을 받지만 상대적으로 비지도학습의 비중을 높여 프로그램이이 스스로 확률지향적인 정보처리를 하게 만든다.


비지도학습은 프로그래머가 아웃풋으로 원하는 것만 제시해주고 거기까지 정보를 처리해 나가는 과정을 프로그램이 자기 스스로 데이터셋에서 동조관계와 정보비대칭성을 추론해서 해나가도록 한다. 정보의 동조관계와 비대칭성이란 정보가 가진 관계정보의 닮은 점과 다른 점을 말한다.

여기에 비해서 지도학습은 아웃풋까지 가는 과정 단계를 프로그래머가 좀 더 많이 제시해주고 그것을 중심으로 학습을 하도록 한다. 이것은 상대적인 차이다. 상대적으로 더 비지도학습인 경우가 있고, 덜 비지도학습인 경우가 있다.

인공지능이란 용어는 머신러닝과 딥러닝을 포함한 정보구조체가 물리적인 결과로 드러나는 행위를 하는 경우 그것을 부르는 말로 사용한다. 그러나 연역론에서는 인공지능이라는 말을 사용하지 않고 관계정보지능이라는 말을 사용한다.

왜냐하면 인공지능이라는 말에는 두 가지 의미가 담겨 있기 때문이다.
  1. 인간이 만들어 낸 정보처리 시스템(지능)
  2. 인간을 닮은 정보처리 시스템(지능)

그런데 한 번 생각해 보자. 첫째, 인간이 만든 도구 중에 인공이 아닌 것이 있는가? 인간이 손을 대면 다 인공이다. 그래서 이 분류는 적합하지 않다.
둘째, 인간을 닮아서 인공지능이라면 만약 나중에 이 정보처리 시스템이 인간의 능력보다 월등히 더 나아지거나 혹은 다른 차원으로 진화할 경우 뭐라고 부를 것인가? 그래서 인간을 닮았다는 뜻으로 쓰기에도 적합하지 않다.
그래서 연역론을 연구하는 우리는 이 정보처리 시스템이 관계정보 정보처리를 하는데 적합하다는 의미로 관계정보지능이라고 부른다.

우리가 머신러닝, 딥러닝 연구를 하는 이유는 우리가 하는 일에서 확률적인 정보처리, 관계정보 정보처리, 그렇게 해서 자동대량 정보처리를 효과적으로 하려고 하기 때문이다.

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

우리가 기존의 머신러닝 연구자들이 이런 사고방식을 가졌을 것이라고 말하는 이유는 "머신러닝이란 제시된 데이터와 판정결과 페어를 사용해서 같은 유형의 문제를 해결하는 근사 함수 F를 찾는 행위이다."라는 일반적으로 업계에서 통용되는 정의가 있기 때문이다.

위의 사고방식은 현재까지 업계와 과학계에서 통용되는 사고방식이다. 우리가 그것을 폄하할 생각은 없다. 그러나 우리는 연역론이라는 다른 사고방식을 가지고 있다.
'문제를 해결하는 일반화된 함수를 찾는다.'라는 말은 쉽게 말하면 절대적인 기준을 찾는 것이다. 그러나 연역론의 세계관에서 절대성은 없다. 연역론의 관점에서는 저 방향으로 가면 오류가 더 증가한다.
우리는 '상대적으로 문제를 해결할 확률이 높은 방법을 찾고 그 방법을 지속해서 개선한다.'를 기준으로 가지고 있고 앞으로 이 기준에 더 가까운 프로그램을 연구하고 개발할 것이다.


관계정보지능

관계정보지능은 이런 것이다.
  1. 상대적으로 더 객체지향으로 정보처리를 하는 것
  2. 상대적으로 더 확률지향으로 정보처리를 하는 것
  3. 상대적으로 더 비지도학습으로 정보처리를 하는 것
  4. 상대적으로 더 관계정보 정보처리를 하는 것
  5. 그렇게 해서 자동대량 정보처리를 하는 것

관계정보지능은 절대적으로 정해진 결과가 아니다. 위에 말한 것처럼 상대적으로 더 객채지향으로, 더 확률지향으로, 더 비지도학습으로 관계정보 정보처리를 하는 시스템을 말한다. 이것의 수준을 일정 이상으로 높이면 그 어떤 주제에 대해서도 한결같은 상대적인 관점으로 관계정보를 처리하는 봇 시스템을 만들 수 있는데 그것을 연역론에서는 관계정보지능이라고 부른다.


20161127 Julia Lang 공부

C++로 공부한 퍼셉트론 코드를 julia로 포팅하려고 한다.

Julia 언어는 수학자와 데이터 공학자의 입장에서 프로그래밍을 쉽게 하려고 기존 프로그래밍 언어의 문법 중 수학 표기방식과 충돌하거나 혼동되는 부분에서 수학 문법을 우선으로 사용하도록 만든 프로그래밍 언어이다.

배열의 시작 번호가 1부터 시작하는 점, x^2로 제곱을 연산할 수 있다는 점, 다른 객체지향 프로그래밍 언어에는 있는 객체 클래스가 없고 함수를 중심으로 사용하는 점, Python이나 Javascript처럼 동적 변수(형식을 인터프리터가 자동으로 정하는 것) 방식을 사용하는 점 등이 줄리아의 특징이다.

줄리아에는 객체 클래스가 없는 대신에 Type이라는 것이 있는데 C언어의 Construct와 비슷하게 여러 개의 변수를 모아서 하나의 변수 타입에 넣은 것이다. 객체 클래스와 다른 점은 상속 개념이 없는 점, 생정자 함수 말고 다른 함수를 넣으려면 변수로 만들어서 넣어야 하는 점이다. Julia에서는 Type을 객체처럼 사용한다.
그래서 억지로 끼워 넣으면 이전 방식의 객체지향 언어와 유사한 구조로 만들 수는 있다.

기존 객체지향 언어는 객체가 속성과 함수를 내장하고 있다. Julia에서 사용하는 Type은 속성은 내장하고 있는데 함수를 Type 외부에 작성하기 때문에 다른 Type과 함수를 공유해서 사용할 수 있다.

어떤 방식이 더 열려있는 정보처리 방식인가?
관계정보 정보처리 방법을 중심으로 하고 필요한 경우 정보처리 방법 여러 개를 동적으로 묶어서 객체로 사용하고 재조립할 수 있는 것이 더 열려 있는 방식이다. 그러나 아직 완전히 이 관점으로 만든 프로그래밍 언어는 없다. 줄리아 언어는 다른 Type과 함수를 공유해서 사용할 수 있다는 점에서 이 개념에 조금 더 근접했다.

보다 더 열린 관점으로 프로그래밍을 하려면 어떻게 해야 하는가?
연역론에는 이런 말이 있다. '어떻게'를 실행해서 '왜'와 '무엇'을 생성한다.
함수 역시 정보처리 과정을 블럭으로 묶은 것이다.
객체를 하나의 딕셔너리 타입으로 보고 정보처리 방법을 넣어서 연결되게 만든다.

확률 정보처리를 프로그래밍 언어에서 구현하려면 어떻게 정보처리를 해야 할까?
변수를 미리 선언하지 않는다. 정보를 먼저 두고 유사한 정보인지 다른 정보인지 구별해서 연산하게 한다.
이름이 필요하면 후처리로 붙여 준다. 혹은 컴퓨터가 적절한 이름을 만들어 내서 붙여 준다.
변수 이름을 정확하게 입력하지 않고 유사한 이름을 써도, 고정된 수치값을 입력하지 않고 확률적인 수치값을 입력해도 정보처리가 가능하게 한다.
외부환경이 달라지면 내부의 정보처리 방식이 재조립 되게 한다. 개발자가 정보처리 구조를 변경하면 프로그램이 관련 세부내용을 자동으로 조정한다.


20161128 Convolutional Neural Network 이론 연구



Overfitting 현상이란 Neural Network의 레이어를 많이 늘리고 샘플 데이터를 많이 입력할 때 Neural Network가 특정 이벤트에 지나치게 집착하여 정보처리 성공률이 낮아지는 경우이다.

CNN 기술은 Overfitting을 최대한 피할 수 있는 자체적인 optimization mehtod를 가지고 있다.
CNN은 Overfitting issue를 모델 complexity를 줄이는 것으로 해결한다. 출처 SanghyukChun - Machine Learning Study  

Convolutional Neural Network, Convnet 혹은 CNN은 인간의 시신경 구조를 모방하여 입력 데이터를 처리한다. 첫째, 특징을 가진 작은 구역들의 모임으로 분류하고(Convolutional layer) 둘째, 데이터를 뭉뚱그려 데이터들 간에 동조관계와 정보비대칭성을 쉽게 찾을 수 있게(Pooling layer, SubSampling) 만든다.

UFLDL Tutorial - Stanford Deep Learning Tutorial
RBM, DBN, CNN study - 한글 요약 블로그
CNN이 pre-training 단계에서는 Convolution Layer와 Subsampling을 하기 위해 비지도 작업을 하지만 최종적으로 정보를 판정하는 부분에서는 라벨링된 데이터를 사용해서 지도학습을 한다.


20161203 Perceptron과 Back-Propagation 공부

Gradient Desent Method는 단계적 내림 방법이라고 번역한다. 이것은 딥러닝 뉴런이 목표로 한 값을 출력하도록 가중값을 분포시키는 Back-Propagation 방법의 내부 정보처리 과정으로 사용한다.

뉴런이 입력을 받아서 출력을 하는 과정은 아래와 같다.
output = activation function (sigma(input) = weight * input + bias)

가중값과 인풋값을 곱한 뒤 바이어스를 더한다. 그것을 activation 함수로 조정한다.
가중값과 인풋값을 곱한 뒤 더하는 수식은 Vector 수학에서 dot product와 같은 방식이다.
Vector 수학에서 두 Vector 간에 dot product를 해서 얻는 상수를 scaler라고 부르는데 이 scaler는 두 Vector 사이의 방향과 거리관계를 하나의 상수로 표현하는 특징이 있다.
뉴런 프로그래밍에서는 페어가 되는 가중값 배열과 인풋값 배열을 각각의 Vector로 보는 것이다.

아래는 Back-Propagation의 과정이다.
weight = old weight - learning rate * (currunt output - disired ouput) * gradient desent function on activation function(current output) * old input


gradient desent method를 하는 이유는 뉴런이 내부에서 특정 activation함수를 사용할 경우 해당 activation 함수가 목표 출력값을 내려면 가중값이 얼마가 입력되어야 하는지 추적해야 하기 때문이다.

위 과정을 더 단순하게 설명하면 어떻게 할 수 있는가?
  1. 학습이라는 개념을 제외하고 뉴럴넷이 하는 액티베이션 과정만 보면 이것은
    연결된 여러 개의 데이터에서 형식을 제거하고 데이터 간의 연결된 관계를 확률적인 결과정보 수치로 만드는 행위이다.
    1. 형식을 제거했기 때문에 출력값과 가중값으로 입력값을 복원할 수 없다. 수학의 역연산이 불성립한다.
  2. back-propagation을 학습이라고 했을 때 뉴럴넷이 하는 학습이라는 정보처리는
    데이터 간의 관계를 인간이 보고(혹은 인간이 점수 매기는 규칙을 넣어서) 더 중요하다고 생각한 정도를 확률 점수로 매기는 행위이다.


이것을 보면 무엇을 알 수 있는가?
입력에 반응해서 출력을 한다. 출력하는 정보는 형식을 제거한 관계를 나타내서 더 열려 있지만 입력을 받아 출력을 하는 과정은 닫혀 있고 고정되어 있다.
인간의 정보처리 과정과 비교하면 FNN, CNN, DQN까지는 파충류 뇌와 유사하다.


20161217 다중 퍼셉트론 예제코드의 처리과정 풀이

Acts, Grads는 백터 변수이고 Weights는 매트릭스 변수 이다.

Acts, Grads 백터와 Weights 매트릭스 변수의 내부 구성 요소이다.

위 과정의 공식은 아래와 같다. 도식에서 bias는 생략했다. * 뉴런 레이어 관점에서 Acts[P]는 input,  Acts[N]은 output과 같다.
output = activation function ( sigma(input) ) <= sigma(input) = weight * input + bias

위 과정의 공식: weight = old weight - learning rate * (current output - desired output) * gradient descent function on activation function(current output) * old input

예제에서는 (current output - desired output)을 (desired output - current output)으로 고쳐서 weight에 적용하는 단계에서 old weight에 계산한 학습값을 빼는 대신 더하는 것으로 처리했다.
Grad배열의 요소는 (current output - desired output) * gradient descent function on activation function(current output) 을 계산한 값이다.


Reinforcement Learning을 연구한다

1. DeepMind DQN 논문 읽고 메모한다.
DQN의 과정을 요약하여 아래와 같이 표현했다. 아래는 논문 내용 중에서 발췌했다.

"""
we use a deep convolutional neural network to approximate the optimal action-value function
which is the maximum sum of rewards rt discounted by y at each timestep t, achievable by a behaviour policy pi = P(a|s), after making an observation (s) and taking an action (a).
"""

위 식에 나오는 기호와 용어가 생소하여 알아보았다. 위키를 참고했다. List_of_mathematical_symbols - Wikipedia  
max는 함수에서 나올 수 있는 최대값을 출력한다. max 밑에는 조건을 입력한다. pi는 이 논문에서 policy 함수라는 의미로 사용했다.
E는 expected value라고 하는데 Probability theory에서 사용한다. 뜻은 랜덤 프로세스에서 예상할 수 있는 평균값이다.
| 는 "such that”의 뜻으로 쓰인다. | 뒤의 정보는 | 앞의 정보가 참조하는 정보이다.

2. 딥마인드 아타리 논문에 공개된 소스코드를 설치해서 실행한다.
실제로 DQN이 작동하는 과정을 보려고 공개된 소스코드를 설치해서 실행해 보았다.

강화학습 방법은 DQN이 있고 또다른 방법으로 Policy gradient(PG)가 있다고 한다.

3. 쉬운 강의를 보고 강화학습 공부한 내용 정리
같은 내용을 설명한 한글 강좌를 보고 정리하였다. 딥러닝강좌 - 강화학습 블로그 링크


위 도식에서 AI는 뉴럴넷을 말한다.
Input은 미리 정의된 게임 상태값(위치, 점수, 캐릭터 상태 등)을 받는 경우와 화면데이터를 CNN으로 처리한 CNN 출력값을 받는 경우가 있다.
Q values는 취할 수 있는 각 액션에 대해서 예상하는 보상값(기대보상값)을 기록한 배열이다.
E-greedy란 현재 얻을 수 있는 보상이 적더라도 큰 보상을 받을 가능성이 있는 행위를 랜덤 선택하는 "맨땅에 박치기(brute force)" 규칙이다.
Max(Qi)는 비교적 현재와 미래를 종합해서 보상의 총값이 최대인 경우를 예상하고 해당 행위를 실행하는 것이다.


출력행위 Q는 old values + learning rate * (reward + discount factor * estimate of optimal future value) 를 실행하여 만든다.
  1. Q(st , att)는 '에이전트의 상태', '실행하려고 하는 행위'를 수치로 입력했을 때 얻는 Q values 배열이다. (기대보상값 배열)
  2. old value는 이전 행위를 실행해서 상태가 변경되었을 때 변경된 상태에서 얻을 수 있는 보상이다.
  3. estimate of optimal future value: 현재 상태에서 다음 턴에 할 수 있는 행위를 나열하고 그 중에서 보상을 얻을 확률이 높은 행위를 찾는다.
  4. discount factor: 보상이 발생하지 않은 상태에서 의미 없는 행위를 반복하는 것을 방지하려고 행위를 할 때마다 보상을 감소시킨다.
  5. 목표 학습값에서 learning rate 수치만큼 가중값을 조정(back-propagation)해서 확률정보처리가 되도록 가중값을 펴바른다.

강화학습을 배우기 전에 했던 질문을 다시 해보자.
강화학습에서 뉴럴넷은 가중값을 어떻게 스스로 조정하는가?
게임이라는 외부환경에서 리워드를 받는 규칙에 반응해서 가중값을 조정한다.
강화학습 이전에는 가중값을 어떻게 조정하였는가? 입력값에 대응하는 학습값을 일일이 개발자가 입력하거나 매칭 학습값이 미리 입력된 데이터를 사용했다.

4. 아타리 논문에 나왔던 공식을 다시 분석한다.
"""
we use a deep convolutional neural network to approximate the optimal action-value function
which is the maximum sum of rewards rt discounted by y at each timestep t, achievable by a behaviour policy pi = P(a|s), after making an observation (s) and taking an action (a).
"""

정보처리 과정이 결과적으로 닫혀있는가? 아니면 과정이 열려있는가?
규칙 pi를 만드는 과정은 열려있다. 실제과정에서는 E-greedy라고 하는 랜덤함수로 "맨땅에 박치기(brute force)"를 해서 리워드를 더 많이 받는 경우를 찾는다.

시스템의 규칙은 실시간으로 업데이트하는 것인가? 아니면 고정된 것인가?
실시간으로 경험하면서 업데이트한다.

DQN은 비교적 절대적인 게임 규칙을 제시하고 신경망이 시도를 반복하면서 게임 규칙에 벗어나지 않는 정보구조체를 만들게 유도한다.
개체 내부에서 정보처리 과정을 비교하지 않고 입력에 대응하여 즉시 출력을 한다. 이것은 파충류 뇌의 정보처리와 유사하다.


연역론으로 딥러닝 풀이하기

연역론에서는 딥러닝, 머신러닝을 전부 상대적인 확률지향 정보처리 유형으로 본다.
딥러닝과 머신러닝의 모든 정보처리 유형을 상대적으로 더 확률 정보처리에 가까워지게 하려는 시도로 본다는 말이다.


확률 정보처리의 중요한 개념은 결과정보에서 상대적으로 더 관계정보에 가까운 정보를 만든다는 것이다.
더 쉬운 말로 하면 결과, 즉 "무엇"이 아니라 과정, 즉 "어떻게"를 아웃풋으로 만든다는 것이다.

그러면 왜 확률 정보처리를 해야 하는가? 왜 그것이 필요한가?

결과정보를 사용해도 그것으로 정보처리를 할 수는 있다. 지금까지 컴퓨터가 그렇게 해왔다. 결과정보는 데이터다. 그러나 이 경우 정해 놓은 결과정보에 맞지 않는 인풋이 들어오면 정보처리에 오류가 생겼다. 콘솔 커맨드 화면을 사용해 본 사람은 명령어를 치면서 "잘못된 커맨드, 혹은 파일이름입니다."라는 말을 많이 보았을 것이다.


컴퓨터가 결과정보 위주로 정보처리를 할 수록, 즉 절대적인 정보처리를 할 수록 컴퓨터가 현실에서 문제해결을 하는 능력은 떨어진다. 문제해결 능력이 제한된다.

왜냐하면 실존하지 않는 절대적인 관점으로 현실을 데이터화해서 결과정보로 만들면, 그 데이터는 현실과 동떨어지기 때문이다. 절대성 관점으로 정보처리를 하면 할 수록 그 정보처리는 현실과의 관계가 상대적으로 더 멀어진다. 즉 현실에서 문제해결을 하는 능력이 떨어진다.


도가 사상에서 유명한 노자가 쓴 도덕경이라는 책에 이런 구절이 나온다. "도(道)를 도라고 이름 지어서 부르면 그 도는 더 이상 도가 아니다. 이름을 지어서 부를 수는 있지만 항상 그 이름인 것은 아니다."

도가도, 비상도; 道可道, 非常道
명가명, 비상명; 名可名, 非常名

참고로 컴퓨터에서 사용하는 이진수는 라이프니츠가 주역을 읽고 음양의 원리에 대해서 참고한 다음 만들어 냈다고 한다. 음과 양은 도가 사상에서 유래한 개념이다.

이렇게 "본질에 해당하는 현실"과 그 현실을 인지하여 사유하는 방식으로 정보처리를 할 때 그것을 "현실의 모방"으로 여기는 관계는 서양에서도 고대부터 유명한 주제다. 서양에서는 이데아와 그림자라는 개념으로 알려져 있다. 플라톤은 이데아를 만물의 본질이라고 여기고 우리가 인지하고 사유하는 것은 그것의 모방인 그림자로 보았다. 나는 플라톤의 이 생각을 약간 변형해서 상대적인 정보처리의 원리를 설명하겠다.

참고로 이데아설을 만든 플라톤은 동굴 밖에 절대적인 본질에 해당하는 이데아가 있다고 생각했다. 그러나 연역론에서는 그렇게 생각하지 않는다. 연역론에서는 절대적인 본질이 없다고 생각한다. 우리는 이데아설을 설명하는 그림만을 참고자료로 이용하겠다.


현실이 있고 그 현실을 각종 입력장치를 이용해서 데이터로 만드는 컴퓨터 프로그램이 있다고 가정해 보자.
예를 들어서 디지털 카메라가 있다. 디지털 카메라의 CCD 센서(혹은 CMOS)는 렌즈를 통해서 입수한 빛 정보를 디지털로 변환해서 데이터로 만든다. 이 데이터가 바로 연역론에서 말하는 결과정보다.


이렇게 디지털 카메라로 만들어 낸 데이터는 사람이 정보처리 과정을 조직해서 만들어 낸 결과정보다. 그런데 디지털 카메라로 찍은 이 사진 데이터는 현실인가? 아니다. 현실이 아니다. 현실을 모방한 것이다. 만약 이 데이터가 현실이라고 간주해서 정보처리를 하거나, 이 데이터를 절대적인 근거로 간주해서 정보처리를 해나가면 오류가 가중된다.

그러면 어떻게 해야 이 오류가 누적되는 굴레를 벗어날 수 있을까? 한 번 이렇게 생각해 보자.
  1. 덤덤하게 우리가 만들어 내는 결과정보가 현실의 전부가 아니라는 것을 인정한다. 절대성이 아니라 연역론에서 말하는 상대성의 관점으로 이 세상을 본다.
    1. 모든 데이터, 모든 진술을 한정된 결과정보로 간주하고 절대적으로 믿지 않는다.
  2. 결과정보를 만들어 내는 방법, "정보처리 과정"이 있다는 것을 깨닫는다.
    1. 이것을 연역론에서는 관계정보를 사용한 정보구조체라고 한다.
    2. 관계정보는 과정, 원리, 패턴, 알고리즘 등을 부르는 말이다.
    3. 정보구조체는 관계정보로 이루어진 “정보를 만들어 내는 구조체”라는 말이다.  
  3. 결과정보 데이터를 분석해서 "정보처리 과정"을 추론한다.
  4. 나아가서 자기 스스로 정보처리 과정을 만들어 낸다. 이것이 지능이다.
    1. 컴퓨터가 정보처리 과정을 스스로 창조해 낼 수 있으면 컴퓨터 지능이 된다.
      1. 이것을 현재까지는 업계에서 인공지능이라고 부르고 있다.


사실 우리가 과학과 탐구라고 부르는 분야가 이렇게 현실에서 데이터를 수집해서 그 이면에 숨겨져 있는 정보처리 과정인 원리를 추론하는 모든 활동을 부르는 말이다. 이제 이 특별한 정보처리 활동을 컴퓨터도 할 수 있게 하는 것이다.

머신러닝, 딥러닝 이전의 재래식 프로그램은 데이터를 입력받아서 데이터를 출력했다. 결과정보를 입력받아서 결과정보를 출력했다. 그러나 딥러닝은 결과정보를 입력받아서 결과정보를 출력하는 것이 아니라 "확률적인 결과정보"를 출력한다. 아래 그림은 딥러닝 퍼셉트론의 정보처리 과정 도식이다.


확률적 결과정보는 무엇인가? 이것은 다른 결과정보를 확률적으로 판단하는 근거로 사용하는 결과정보다. 딥러닝에서 확률적 결과정보는 상수 형태다. 이 확률적 결과정보는 쉽게 말해서 "80% 확률로 고양이를 의미하는 피쳐"같은 것이다.

재래식 컴퓨터 프로그램에서는 정해진 결과정보로서 고양이면 고양이고, 강아지면 강아지였다. 그리고 미리 정해 놓은 절대적인 결과정보에 맞지 않는 결과정보가 입력되면 에러가 발생했다. 그런데 딥러닝에서는 아웃풋으로 나오는 데이터는 "70%확률로 고양이를 닮은 패턴 데이터(피쳐)", "80% 확률로 강아지를 닮은 패턴 데이터"인 것이다. 그리고 이 패턴(피쳐)을 중첩해서 확률을 더 높여 나간다.

도식참조 : wildml blog(영문)

CNN은 딥러닝 분야의 기술 중 하나이다. Convolution은 큰 데이터를 작은 구역들의 모임으로 나누고 각 구역 단위 안에서 데이터 간의 연결된 관계를 확률적인 결과정보로 유사복제하여 피쳐, 즉 패턴을 만든다.


CNN에서 말하는 피쳐는 Convolution 단계마다 생성된다. CNN은 여러 개의 Convolution 단계를 거치는데 각 단계를 거칠 때마다 확률적인 결과정보를 중첩시켜서 더 넗은 범위의 정보를 판정한다.

연결관계 결과정보, Convolution 데이터, 풀링 데이터는 모두 확률적인 결과정보이다.
각 단계에서 생성한 확률적인 결과정보를 중첩하여 확률적인 출력 결과정보를 만든다.

이 피쳐, 패턴에 "확률적 결과정보"라는 이름을 붙인 이유는 이것이 함수나 알고리즘 형태가 아니라 결과정보인 상수 형태를 띄고 있기 때문이다. 이 "확률적 결과정보"는 결과정보와 관계정보 사이에서 상대적으로 더 관계정보에 가깝다.


머신러닝을 딥러닝과 비교해보자. 머신러닝은 결과정보를 입력받아서 확률적인 결과정보를 내어 놓는 것은 같은데, 그 과정에서 사용하는 알고리즘을 비교적 더 사람이 강제적으로 프로그램 외부에서 입력한다. 즉 반강제적인 지도를 한다. 딥러닝은 그 지도를 덜 하거나 하지 않는다. 딥러닝은 더 상대적으로 프로그램이 스스로 하도록 그 작업을 맡긴다. 딥러닝에서 사람이 하는 지도는 주로 라벨링이다.

자, 이렇게 프로그램이 결과정보가 아니라 관계정보에 가까운 아웃풋을 만들면 무슨 이점이 생기는가?
  1. 프로그램이 절대적인 결과정보 데이터를 근거로 판단을 하지 않기 때문에 관련된 오류가 줄어든다.
  2. 절대성 정보처리 세계에서는 맞거나, 틀리거나로 선택지가 두 개 밖에 없었는데 상대성 정보처리 세계에서는 설령 틀리더라도 학습을 해서 계속 정보처리 성공 확률을 높여 나갈 수 있다.
    1. 물론 오류도 확률적으로 나타난다.
    2. 그러나 확률을 계속 중첩해서 높여 나가면 의미 있는 신뢰 수준의 정보처리를 할 수 있다.
  3. 프로그램이 정보를 처리하는 과정, 즉 관계정보를 만들어 내면 이전까지는 인간만이 했었던 창조적인 정보처리 활동을 할 수 있다.


정보의 유사복제 행위가 주는 이점

딥러닝의 다층 퍼셉트론, CNN, RNN 등의 기술을 연역론의 정보 유사복제 개념으로 설명하고 그것이 주는 이점에 대해서 논해보자.


아까 예로 들었던 플라톤의 동굴을 다시 한 번 살펴보자. 이 그림에서 우리는 정확한 현실, 혹은 진실, 정보처리 과정을 알지 못하고 있다. 그리고 우리는 관찰자로서 현실의 그림자인 데이터, 결과정보를 수집하고 있다.

여기에 대해서 기존 통계학은 이런 견해를 가지고 있었다.
  1. 충분히 많은 수의 데이터를 모아서 그것을 특정한 기준으로 분류하면 의미 있는 경향(trend), 상관관계(correlation)를 알아낼 수 있을 것이다.
  2. 여기서 "충분히 많은 수의 데이터"를 테라 바이트, 페타 바이트 급의 "막대한 양의 데이터"로 바꾼 것이 바로 "빅데이터" 개념이다.

이렇게 해서 통계학은 많은 성과를 거두었다. 많은 경향과 상관관계를 알아냈다. 그런데 기존 통계학이 넘지 못한 한계가 있었다.
  1. 경향과 상관관계는 상대적으로 판단의 보조지표는 될 수 있었지만 언제나 들어맞지 않는 예외 영역이 있었다.
    1. 이 예외를 없애는 것은 불가능했다.
    2. 이 예외를 무시할 수 있을 수준으로 줄이는 것도 매우 힘들었다.  
  2. 분류에 사용한 특정한 기준이 잘못된 것인 경우가 있었다.
    1. 통계의 경향과 상관관계가 그럴듯하게 잘 맞아 들어갔었는데 나중에 시간이 지나서 그게 아니었다는 사실이 밝혀지는 경우가 있었다.
    2. 그래서 통계에서는 통계를 통해서 알아내는 지식을 절대성을 의미하는 인과관계라고 하지 않고 상대성을 의미하는 상관관계라고 한다. 통계학자들은 자신이 절대적인 진실을 다루지 않는다는 것을 기본적으로 알고 작업에 임한다. 이것은 좋은 태도다.
  3. 통계의 정확도를 높이려고 특정한 기준을 추가하거나 조정하면 오히려 반대로 경향과 상관관계의 정확도가 떨어지는 경우가 있었다.  

아뿔싸, 뭐가 문제였던 것일까? 연역론에서는 이렇게 설명한다.
"특정한 기준”이 있다고 생각한 것이 문제의 원인이었다. 사람이 "특정한 기준”을 정해서 입력해 준 것이 문제의 원인이었다.

재래식 통계는 사람이 특정한 기준을 만들어 낸 다음 그 기준에 따라서 모든 데이터를 분류한다. 그런데 이 특정한 기준은 절대성과 상대성을 놓고 보면 어느 쪽에 더 가까울까? 절대성에 더 가깝다.
재래식 통계에서 사용하는 이 특정한 기준은 상대적으로 결과정보를 근거로 한 기준에 가까울까 아니면 관계정보를 근거로 한 기준에 가까울까? 보다 더 결과정보에 가깝다.


그러다가 빅데이터 분야에서 비정형 데이터 분석 개념이 등장했다. 비정형 데이터는 그림, 영상, 음성, 문서처럼 구조화되지 않은 데이터다. 데이터를 분류하는 특정한 기준이 절대적이지 않다. 비정형 데이터 분석은 데이터에 절대적인 기준을 적용해서 분류하지 않고 데이터를 수집하면서 태그, 노드, 그외 데이터 마이닝 같은 상대적인 기준을 찾아내서 처리한다. 그러나 사람이 이 기준을 정해서 외부에서 입력해 준다는 점에서는 똑같다.


머신러닝을 보자. 머신러닝에는 여러가지 방법이 있다. 이것을 딥러닝과 비교해 보면 크게 두드러지는 상대적인 차이점을 알아낼 수 있다. 머신러닝 중에 일부는 딥러닝과 동일하게 데이터를 벡터화해서 확률 정보처리를 한다. 그러나 딥러닝과의 큰 차이점이 있다. 머신러닝은 데이터를 벡터화 한 다음에 정보들 간의 닮은 점과 다른 점을 찾아내는 정보처리 방법을 사람이 정해서 입력해 준다. 외부에서 특정한 기준이 주어지는 것이다. 그에 비해서 딥러닝은 그 부분을 딥러닝 프로그램에게 스스로 하도록 맡긴다.


딥러닝은 어떻게 다른가? 딥러닝은 사람이 외부에서 정해 준 특정한 기준 한두 개로 모든 데이터를 분류하지 않는다. 딥러닝은 모든 데이터를 프로그램 자신이 스스로 만든 상대적인 기준으로 분석한다. 딥러닝은 각 데이터들이 가진 비슷한 점과 차이점을 찾아내고 그것을 모은다.
  1. 재래식 통계학에서 사람은 특정한 기준을 만들고 그 기준을 절대적으로 적용해서 모든 데이터를 분류한다.
    1. 외부에서 결과정보를 근거로 한 기준을 프로그램에 강제한다.
    2. 이 기준은 절대성과 상대성 구분에서 상대적으로 절대성에 가깝다.
    3. 그래서 절대성에서 기인한 오류가 발생한다. 왜? 절대성은 실존하지 않는데 특정한 기준 때문에 절대성을 가정하게 되었으니까.
  2. 빅데이터에서 비정형 데이터 분석 기법은 정형 데이터 분석 기법에 비해서는 더 확률지향 정보처리 방법이다.
    1. 비정형 데이터에 비해서 느슨하고 다차원인 태그, 노드, 그외 데이터 마이닝 같은 비교적 상대적인 기준을 사용한다.
    2. 그러나 사람이 프로그램 밖에서 정보처리를 하는 특정한 기준을 정해서 프로그램에게 일방향으로 시킨다는 점에서는 기존 통계학이 가지고 있었던 문제를 그대로 가지고 있다.
  3. 일부 머신러닝은 딥러닝과 비교하면 딥러닝과 유사한 데이터 벡터화를 사용해서 데이터 간의 닮은 점과 다른 점을 추론하는 행위를 한다.
    1. 그러나 사람이 프로그램 밖에서 그 정보처리를 하는 특정한 기준(알고리즘)을 정해서 프로그램에게 일방향으로 시킨다는 점에서는 기존 통계학이 가지고 있었던 문제를 그대로 가지고 있다.
  4. 딥러닝은 데이터들을 분석해서 데이터들 간에 상대적으로 닮은 점, 다른 점을 프로그램 스스로 찾아내게 한다. 그런 상대적인 기준을 모은다.
    1. 딥러닝은 프로그램 내부에서 데이터들 간의 닮은 점과 다른 점을 추론한다. 그리고 외부에서 프로그래머가 특정한 알고리즘을 강제하지 않는다.
    2. 이것이 논리적으로 큰 차이다.
      1. 외부에서 특정한 기준을 정해서 프로그램에게 일방향(절대적)으로 시키느냐
      2. 프로그램이 자기 스스로 내부에서부터 상대적인 기준을 만들어 내느냐


연역론에서는 정보를 분석해서 정보들 간에 닮은 점과 다른 점을 찾아내는 활동을 "동조관계와 정보비대칭성을 추론한다."고 한다. 정보들 간의 닮은 점과 다른 점은 그 자체로 상대적으로 관계정보에 가까운 정보가 된다. 그래서 동조관계 정보와 정보비대칭성 정보는 상대적으로 관계정보에 더 가까운 정보다.

동조관계: 정보들 간의 닮은 점
정보비대칭성: 정보들 간의 다른 점

그런데 만약 이 작업을 할 때 데이터를 유사복제 형태로 재생산한 다음 유사복제 데이터들 간의 닮은 점과 다른 점을 찾아내면 어떻게 되겠는가? 그러면 이런 효과가 생긴다.
  1. 데이터를 유사복제 하면서 닮은 점과 다른 점의 차이가 과장되어서 더 커지게 된다. 그래서 이전에는 디테일이 미미해서 찾아내지 못했을 동조관계와 정보비대칭성을 더 많이 찾아내게 된다. 상대적인 기준을 더 많이 확보하게 된다.
  2. 데이터를 유사복제 하면서 데이터 전체 개수와 크기가 이전보다 더욱 커져서 대량 데이터를 분석하는 효과가 생긴다.

딥러닝의 퍼셉트론, CNN, RNN 등의 기술은 이렇게 정보를 유사복제해서 상대적인 기준을 분석하는 것을 도와주는 역할을 한다. 딥러닝의 기술을 정보의 유사복제와 동조관계, 정보비대칭성 추론으로 설명하는 것은 연역론이 최초다.

우리가 연구일지에 오버피팅과 CNN을 분석하면서 쓴 코멘트를 보고 일부 한국의 업계 종사자들이 "오버피팅은 머신러닝 Regression에서 유래한 개념이고 CNN과는 관련이 없다."고 하면서 고쳐야 한다고 지적했다. 주로 머신러닝을 오랫동안 연구했던 사람들이 그런 관점을 가진 것으로 보인다.

그러나 우리에게는 아무런 의미가 없는 지적이다. 우리는 어떻게 하면 확률적 정보처리가 이루어지는지 분석하고 어떻게 하면 확률적 정보처리를 더 잘할 수 있는지 생각하는 관점에서만 기술을 보기 때문이다. 우리가 쓴 내용은 CNN에서 사용한 방법이 정보를 유사복제하고 상대적인 기준을 만들어 내서 재래식 머신러닝 방법에서 발생하던 문제인 오버피팅을 줄이는데 도움이 된다고 정리했을 뿐이다. 그리고 우리는 CNN이 오버피팅을 줄이는 목적으로 개발된 기술이라고 주장하지 않았다. 즉, 일부 한국 업계 종사자들은 지적할 필요가 없는 부분을 물고 늘어진 것이다.

자, 이렇게 정보를 유사복제해서 닮은 점과 다른 점을 찾아내면 상대적인 판단 기준을 얻을 수 있다. 상대적인 판단 기준은 관계정보 역할을 한다. 그런데 이런 활동이 뇌에서도 일어나고 있었다.


인지, 기억, 상상에 대한 연역론의 견해

Denis Hassabis의 The Future of Memory 논문을 읽어보자. 그는 딥마인드의 설립자다.


Schacter D, Addis D, Hassabis D, Martin V, Spreng N, Szpunar K (2012) "The Future of Memory: Remembering, Imagining, and the Brain". Neuron. 76, 677 – 694

"""
The tight linkage between remembering the past and imagining the future has led several investigators to propose that a key function of memory is to provide a basis for predicting the future via imagined scenarios and that the ability to flexibly
recombine elements of past experience into simulations of novel future events is therefore an adaptive process.
...
It has been established that the ability to generate specific and detailed simulations of future events is associated with effective coping by enhancing the ability of individuals to engage in emotional regulation and appropriate problem-solving activities Numerous studies have also established that views of the future are associated with a prevalent positivity or optimism bias Another promising domain centers on the phenomenon of temporal discounting: people typically devalue a future reward according to the extent of delay before the reward is delivered.-
...
Studies of remembering the past and imagining the future should benefit from establishing closer connections with work
on narrative processing and the representation of nonpersonal fictional information.
"""

논문의 핵심 내용을 요약하면 아래와 같다.
  1. 과거를 기억하는 것과 미래를 상상하는 것은 정보처리 과정에서 유사한 관계가 있다.
  2. 기억의 주요 기능은 과거 경험의 요소를 재결합하여 허구의 사건을 시뮬레이션하고 미래 시나리오를 만드는 것이다.
  3. 과거 경험 요소를 재조립할 때는 이런 평가 방법이 사용되는 것으로 보인다.
    1. 감정적인 규정
    2. 문제 해결 가능성
    3. 보상 시점이 멀어질 때의 보상 평가 절하 등

연역론은 인지, 기억, 상상에 대해서 이런 견해가 있다.
  1. 기억과 상상은 뇌에서 같은 정보처리 방식으로 생성된다. 둘 다 정보의 유사복제 행위다.
  2. 기억은 현실을 관찰해서 인지한 유사복제 정보를 저장한 것이다.
    1. 이 기억은 현실이 아니다. 현실을 복제한 것이지만 완전한 복제가 아니라 유사한 복제이기 때문이다.
      1. 디지털카메라가 만든 데이터가 현실의 유사복제인 것과 같다.
    2. 사람이 인지한 것도 현실이 아닌 결과정보이고 정보 유사복제 활동이다.  
      1. 인지는 사람이 가진 감각기관을 사용해서 현실의 정보를 변환해서 유사복제한 것이다.
  3. 상상은 인지하고 기억한 정보를 다시 유사복제 한 것이다.
    1. 이 상상은 기억과 완전히 일치하지 않는다. 그래서 완전한 복제가 아니라 유사한 복제다.
  4. 기억과 상상은 항상 기억이 먼저 일어나고 상상이 뒤에 일어나는 것은 아니다. 현실을 인지하면서 바로 상상을 하는 경우도 많이 있다. 이런 것을 백일몽(day dream)과 몽상(fancy)이라고 한다.


우리가 지능이라고 부르는 정보구조체는 외부 현실의 정보를 인지라는 형태로 유사복제하고, 기억이라는 형태로 유사복제한다. 그리고 인지한 정보와 기억한 정보를 다시 상상이라는 형태로 유사복제한다.
  1. 인지 유사복제
  2. 기억 유사복제
  3. 상상 유사복제

유사복제를 하는 이유는 이 유사복제한 정보에서 닮은 점과 다른 점을 찾아내고 판단의 근거로 사용하려고 하기 때문이다.

인지는 현실과 일치하지 않는다. 기억은 현실과 일치하지 않는다. 상상도 현실과 일치하지 않는다. 즉 인지, 기억, 상상은 유사복제한 정보라는 본질에서 크게 다르지 않다. 그래서 인지와 기억이라는 것은 우리가 그것을 현실에서 일어난 것이라고 믿기 때문에 인지와 기억이다. 이런 이유 때문에 상상을 인지와 기억이라고 착각하는 일이 많이 일어난다. 지능 정보구조체에서 정보처리를 할 때 인지와 기억에 대해서는 그것이 "현실에서 일어났다."라는 라벨링을 하는 것으로 보인다. 이렇게 인지, 기억, 상상을 상대적인 차이로 이해할 수 있다.

  1. 기억과 상상은 둘 다 현실 정보를 관찰해서 인지한 것을 유사복제 한 것이다.
  2. 인지, 기억, 상상은 본질에서 같은 활동이다. 셋 다 정보의 유사복제에 해당한다.
  3. 인지와 기억, 상상의 다른 점은 지능 정보구조체가 인지와 기억에 대해서는 그 정보가 "현실에서 일어났다."는 라벨링을 한다는 것이다.
    1. 이것은 사람이 인지와 기억에 대해서 그 정보가 현실에서 일어났다고 믿는 것에 해당한다.
  4. 상상에 대해서는 다른 라벨링을 한다. 상상은 "현실에서 일어나지 않았다."는 라벨링이 들어간다.
  5. 그래서 이 라벨링 차이 때문에 기억이 상상으로 간주되기도 하고, 상상이 기억으로 간주되기도 한다. 인지가 상상으로 간주되기도 하고, 상상이 인지로 간주되기도 한다.
    1. 이 정보처리의 특징이 최면과 자기암시 활동의 근거가 된다.
    2. 광고, 설득, 선동, 속임수, 프로파간다의 근거가 된다.
    3. 인지 편향, 인지 부조화, 고정관념의 근거가 된다.


사람의 인지 능력을 속이는 것을 우리는 흔히 마술쇼에서 볼 수 있다. 마술은 사람이 가진 인지 편향, 즉 인지 능력의 왜곡을 이용한 활동이다. 이런 트릭이 성립하는 이유는 사람이 인지하는 것이 현실이 아니라 현실의 유사복제이기 때문이다. 그러나 대부분의 사람들은 자신이 인지한 것이 현실에 매우 가깝다고 착각한다. 사람들은 자신의 기억에 대해서도 매우 관대하다. 자신이 기억한 것이 거의 대부분 객관적인 사실이라고 착각한다. 그래서 인지 부조화, 인지 편향, 고정관념 등이 일어나는 것이다.


그러나 이 정보의 유사복제 개념을 이해하고 나면 그것이 주는 이점에 대해서도 알아낼 수 있다. 위에서 이미 우리가 반복해서 설명한 것처럼 정보의 상대성과 유사복제 개념을 있는 그대로 받아들이고 나면 이점이 생긴다. 즉, 유사복제한 정보들을 비교해서 닮은 점과 다른 점을 찾아내고 의사결정을 하는 상대적인 근거로 사용할 수 있기 때문이다.

인지, 기억, 상상의 한계에서 벗어나는 방법
  1. 인지, 기억, 상상 모두 정보 유사복제인 것을 깨닫는다.
    1. 어떤 정보도 절대적으로 믿지 않는다.
  2. 인지, 기억, 상상한 정보를 관찰해서 관계정보의 닮은 점과 다른 점을 찾는다.
    1. 거기에서 얻어진 상대적인 기준을 사용해서 의사결정을 해나간다.
    2. 이것이 지능이 가진 통찰력이다.
  3. 인지, 기억, 상상을 절대적인 것으로 여기고 맹목적으로 믿으면 오류가 생긴다. 시간이 갈수록 오류가 가중된다.
    1. 이 한계와 오류를 연역론에서는 절대성에 대한 착각, 존재규정의 오류라고 부른다.

이렇게 분석하고 나면 다층 퍼셉트론과 심층 레이어를 사용하고 나서 인공신경망 계열의 연구가 왜 그렇게 성장했는지 설명할 수 있다. 이것은 정보를 유사복제해서 관계정보의 닮은 점과 다른 점을 추론하는 인간의 정보처리 방식을 컴퓨터로 구현한 것이기 때문이다.


딥러닝의 미래, 시나리오 정보처리

우리가 다층 퍼셉트론을 연구하면서 풀이한 정보처리 과정을 "자동반응 정보구조체"라고 부르겠다. 이것을 자동반응 정보구조체라고 하는 이유는 이 정보구조체가 정보를 처리할 때 확률적인 결과정보를 근거로 자동반응하도록 설계되었기 때문이다. 이것은 사람이 가진 뇌의 정보처리 기능 중에 파충류 뇌와 상당히 유사하다.


이것과 대비되는 개념으로 "행위와 행위의 순서, 정보처리 과정", 즉 시나리오를 판단의 근거로 하는 정보처리가 있다. 시나리오를 여러 개 상상하고 그것들을 비교해서 더 나은 시나리오를 만들어 내고 그것을 실행(실천)하는 정보처리 방법이 있다. 이것은 확률적인 결과정보에 자동반응하는 것과 비교해서 차이가 있다. 우리는 이것을 시나리오 정보구조체라고 부르겠다.

시나리오 정보처리는 과정을 비교해서 더 나은 과정을 만들고 선택하는 정보처리다. 시나리오 정보구조체는 과정을 비교해서 더 나은 과정을 만들고 선택하는 정보처리를 하는 정보구조체다.


현재까지 개발된 딥러닝 기술은 상대적으로 자동반응 정보구조체에 가깝다. 아직까지는 "시나리오 정보처리", "시나리오 정보구조체"에 이르지 못하고 있다. 앞으로 이 방향이 딥러닝의 미래가 될것이다.


DQN과 시나리오 정보구조체 비교

맨땅에 박치기(혹은 맨땅에 헤딩)이라는 말이 있다. 이 말은 과정을 어떻게 할지 생각을 해보지 않고 일단 실행을 해서 경험을 해본다는 뜻이다. DQN은 가상의 시뮬레이션 공간에서 맨땅에 박치기를 수백만 번 한다. 그렇게 해서 경험을 쌓고 보상이라는 형태로 더 나은 의사결정을 배운다.

이런 맨땅에 박치기 방식 학습은 생명체의 DNA에서도 일어난다. 생명체는 적자생존 방식으로 맨땅에 박치기를 해서 살아남은 개체들의 DNA를 자손을 만들 때 반영한다. 그래서 DQN과 DNA의 유전 알고리즘은 유사한 부분이 있다. DNA에게는 적자생존 게임의 생존이 곧 보상이 된다.  

유전 알고리즘과 DQN의 다른 점은 DQN이 실제 현실 공간이 아니라 시뮬레이션 공간에서 다차원 경험을 한다는 것이다.
유전 알고리즘과 DQN의 다른 점을 도식으로 그려서 비교해 보자.


영화 "엣지 오브 투모로우"를 보자. 이 영화의 컨셉이 된 개념은 DQN과 같다. 주인공(톰 크루즈)이 외계인의 초능력 때문에 시간을 다차원으로 만들어서 현실을 시뮬레이션으로 만들게 된 다음, 맨땅에 박치기를 수백만 번 해서 학습을 하고 문제해결 능력을 높였다는 것이다. 여기서 외계인의 초능력 부분을 제외하고, 시간의 다차원 부분과 현실의 시뮬레이션화 부분에 초점을 맞추어 보자. 이것이 DQN의 핵심이다.


  1. DQN은 시뮬레이션 공간에서 시간, 즉 경험을 다차원으로 만든 다음 그것을 중첩해서 통계적인 학습을 한다.
  2. 보상이라는 형태로 의사결정의 나아갈 방향을 정한다. 이것이 보상을 통한 학습이다.
  3. DQN은 DNA가 자손을 남기는 유전 알고리즘과 유사하다.
    1. 차이점은 DQN이 가상의 시뮬레이션 공간에서 시간의 다차원성을 이용해서 학습을 한다는 것이다.
    2. 이에 반해서 DNA의 유전 알고리즘 행위는 시뮬레이션 공간이 아니라 일방향인 실제 현실 공간에서 일어난다. 유전 알고리즘은 개체를 많이 만들어서, 개체들의 개별 경험을 다차원 경험으로 간주해서 학습을 한다.
      1. DNA의 학습에서 보상은 적자생존이다.

DQN과 DNA의 유전 알고리즘은 자동반응 정보구조체에 속한다. 왜냐하면 정보구조체 내부에 과정들을 비교해서 더 나은 과정을 선택하는 절차가 없기 때문이다. 이것이 시나리오 정보구조체와 다른 점이다.


현실은 일방향이다. 인생은 한 번이다. 물론 DNA는 여러 개체의 경험을 적자생존 방식으로 조합해서 확률적인 다차원 정보처리를 할 수 있다. 그러나 개체 입장에서는 죽으면 끝이다. 시뮬레이션 게임처럼 반복해서 여러 번 도전할 수 없다. 그래서 고등동물들은 종 차원의 진화 외에 개체 자체의 생존력을 높이기 위해서 새로운 정보처리 방식을 개발했다. 그것이 바로 과정을 비교하는 시나리오 정보처리 방식이다. 이것이 생명체 진화에서 일어난 지능의 특이점이다.


시나리오 정보처리의 특징
  1. 개체가 지금까지 쌓은 경험을 바탕으로 현실에서 실천할 수 있는 정보처리 과정들, 즉 시나리오들을 자기 스스로 상상한다.
    1. 여기에 기억과 상상의 매커니즘을 사용한다.
  2. 이 시나리오 상상은 DQN에서 시뮬레이션 공간이 했던 것과 같은 역할을 한다. 즉, 시간과 경험의 다차원성을 만들어 낸다.
    1. DQN과의 차이점은 DQN의 시뮬레이션 공간은 연구자(사람)가 외부에서 절대적으로 만들어서 넣어 준 것이라는 점이다.
    2. 그러나 시나리오 정보처리는 외부에서 주입된 시뮬레이션 공간이 아니라 개체가 자기 스스로 만들어 낸 시뮬레이션 공간이라는 차이점이 있다.
    3. 여기서 개체가 자기 스스로 시뮬레이션 공간을 만들어 낸다는 부분이 연역론에서 말하는 상대적으로 관계정보에 더 가까운 정보처리 방식이 된다.
  3. 개체는 시나리오를 상상하고 그 시나리오들 간에 닮은 점과 다른 점을 찾아낸다.
    1. 시나리오가 실제 현실에서 어떤 결과로 이어질지는 알 수 없다.
      1. 왜냐하면 이 세계에 절대성은 실존하지 않기 때문이다. 절대성을 가정하고 시나리오를 맹목적으로 믿으면서 선택하면 예기치 않은 오류를 만나게 된다. 시간이 갈수록 오류가 가중된다.
        1. 하드웨어적으로는 이미 시나리오 정보처리가 가능한 인류도 아직까지 이 실수를 계속 반복해서 하고 있다.
        2. 이 실수를 연역론에서는 절대성에 대한 착각, 존재규정이라고 부른다.
    2. 그러나 시나리오가 현실에서 어떤 결과로 이어질지는 모르더라도 시나리오들 간의 닮은 점과 다른 점을 찾아내는 것은 할 수 있다.
    3. 나아가서 시나리오들을 유사복제해서 이 동조관계와 정보비대칭성 추론을 가속할 수 있다.
  4. 그러면 각 시나리오가 가진 확률적인 특징을 알아낼 수 있다.
    1. 그리고 그 확률을 중첩해서 쌓아 나갈 수 있다.
  5. 그렇게 해서 더 나은 시나리오를 만들어 내고 그것을 실행(실천)해서 문제 해결 능력을 높여 나간다.
    1. 이것이 생을 단 한 번만 사는 개체의 입장에서 가상 시뮬레이션 공간을 자기 스스로 만들고 시간을 다차원으로 만들어서 문제 해결 능력을 높이는 방법이다.
    2. 고대 종교와 철학의 관점에서 말하면 시나리오 정보처리는 생을 한 번만 사는 개체의 입장에서 생을 여러 번 사는 것과 같은 효과가 생긴다. 즉 "영생(eternality)"을 실현하는 것이 된다.
      1. 그러나 이것은 물리적인 영생이 아니다. 형이상 논리 정보처리 개념에서 영생이다.  

하등동물일수록 자동반응에 가까운 정보처리를 한다. 이것은 상대적인 비교다. 하등동물에 가까울수록 자동반응 정보처리 방식으로 살아간다. 하등동물은 "멸종위기 후 진화 패턴"을 보이는 경우가 많다. 멸종위기 후 진화 패턴이란 환경의 변화 때문에 종의 개체 대부분이 죽어서 급 감소하고 나면 DNA 차원에서 환경에 적응하려는 시도로 대규모 진화가 이루어지는 것이다. 외부 환경이란 물리적인 환경 외에 다른 종과 다른 개체들과의 경쟁도 포함한다.


DNA는 멸종위기라는 상황, 즉 개체의 급 감소를 어떻게 인지하는가? DNA는 개체의 급 감소를 생식에서 이루어지는 유전자 다양성의 부족으로 감지한다. 쉽게 말하면 유전자 다양성이 줄어들어서 근친교배화 되는 것을 감지한다. 그러면 그 방향으로 진화를 가속한다. 또한 돌연변이 형태로 새로운 정보를 추가한다. 이 DNA의 알고리즘을 응용해서 가축과 작물의 품종 개량이 이루어진다.


생명체는 외부 환경에 반응해서 진화해 나간다. 이것을 반대로 말하면 환경의 도전이 없는 경우, 생존의 위협을 받지 않는 경우에는 진화가 이루어지지 않는다. 이것이 지금까지 알려진 진화의 기본 원리다. 그래서 수백만 년 전부터 현재에 이르기까지 큰 변화 없이 이어져 온 생물이 있다.


하등동물의 지능은 상대적으로 환경에 대한 자동반응 정보처리 방식으로 이루어지고, DNA의 진화 방식도 상대적으로 자동반응 정보처리에 가깝다. 그러나 고등동물일수록 상대적으로 과정을 비교하는 시나리오 정보처리를 한다. 인간은 생명체 중에서 이 능력이 가장 많이 발달해 있다.


이 방법을 사용하면 각 개체가 외부 환경의 위험에 대항해서 버티는 능력이 커진다. 외부 환경을 자신에게 유리한 쪽으로 바꾸어 나가는 능력이 생긴다. 정보구조체를 자기 스스로 만들어 내서 도구로 사용하는 능력이 생긴다. 이렇게 정보를 조직해서 도구로 사용하는 능력을 학습과 모방 등으로 전수하는 것을 진화 인류학에서는 밈이라고 부른다.

왜 시나리오 정보처리를 하면 외부 환경의 위험에 대항하는 능력이 커지는가? 그 이유는 간단하다. 두 가지 경우를 만들어서 비교를 해보자.
  1. 환경의 변화가 닥치자 그제서야 개체가 거기에 대응(반응)하는 경우
  2. 개체가 자기 스스로 좋은 상황으로 가는 시나리오와 나쁜 상황으로 가는 시나리오를 생각하고, 그 시나리오들을 비교해 보고, 가능한 모든 위험과 기회에 다차원으로 대응하는 시나리오를 만들어 내는 경우
    1. 어떻게 하면 나쁜 상황으로 가는 것을 예방할지 생각해 본다.
    2. 어떻게 하면 좋은 상황으로 더 갈 수 있을지 생각해 본다.
    3. 시나리오들의 닮은 점과 다른 점을 찾아내서 각 시나리오가 가진 확률적인 특징을 알아낸다.
    4. 시나리오의 과정을 조립해서 장기적인 목표, 장기적인 로드맵을 만든다.  
    5. 시나리오를 실행해 보고 실제 현실과 얼마나 일치하는지 동조관계와 정보비대칭성을 피드백한다.

이렇게 비교를 하면 시나리오 정보처리가 상대적으로 훨씬 더 환경의 변화에 대항하는 능력이 크다는 것을 알 수 있다. 생명체가 아니라 사람들이 모여서 일하는 기업체를 봐도 비슷한 현상을 볼 수 있다. 어떤 기업은 시장 환경의 상황이 바뀌어서 실질적인 손해를 입고 나서야 그때부터 대응에 나선다. 그러나 더 현명한 기업은 미리 상대적인 위험, 상대적인 기회를 시나리오로 만들어 보고 거기에 대비한다. 위험을 관리할 방법을 만들고 기회를 발굴할 방법을 만든다. 그것을 경영학에서는 시나리오 경영(scenario planning)이라고 한다.


재미있는 사실은 시나리오 경영을 가르칠 때 지도자가 학생들에게 강조하는 것이 있는데, "시나리오는 맹목적인 미래 예측을 위한 도구가 아니라 가능한 위험과 기회를 관리하는 확률적인 도구"라는 것이다. 이게 무슨 뜻인가? 특정한 시나리오를 한두 개 정해서 그것이 미래에 일어날 것이라고 절대적으로, 결과적으로 믿지 말라는 말이다. 그렇게 시나리오를 믿으면 그 시나리오에 맞지 않는 일이 실제 현실에서 일어났을 때 제대로 된 대응을 할 수 없게 된다.


그러나 사실적으로 발생할 수 있는 최악의 경우와 가능한 위험을 시나리오로 만들고 거기에 대비할 방법을 미리 만들어 두면 위험이 실제로 발생했을 때 피해를 크게 줄일 수 있다. 마찬가지로 사실적으로 발생할 수 있는 기회를 시나리오로 만들고 그 기회를 효과적으로 이용할 방법을 미리 만들어 두면 기회가 왔을 때 흘려 보내지 않고 기회를 살릴 수 있다. 이것이 큰 차이다.


  1. 시나리오 정보처리는 특정 시나리오가 미래에 일어날 것이라고 맹목적으로 믿는 것이 아니다.
    1. 특정 시나리오 한두 개를 결과정보로 간주하고 절대적으로 믿으면 맹목적인 기대와 예측이 된다.
    2. 미래는 본질적으로 어떻게 될지 개체 입장에서는 알 수 없다. 연역론에서 말하는 정보의 상대성 때문이다.
    3. 특정 시나리오를 맹목적으로 믿으면 시나리오에 맞지 않는 일이 실제 현실에서 일어났을 때 제대로 된 대응을 할 수 없게 된다.
    4. 절대성 세계관, 결과정보 세계관을 사용해서 억지로 시나리오 정보처리를 하려고 하면 이 실수에 빠진다.
    5. 이 실수는 연역론에서 절대성에 대한 착각, 존재규정의 오류에 해당한다.
  2. 시나리오 정보처리는 가능한 위험과 가능한 기회를 관리하는 확률적인 도구로 사용해야 한다.
    1. 사실적으로 발생할 수 있는 최악의 경우, 가능한 위험을 시나리오로 만들고 대비할 방법을 미리 만들어 두면 위험이 실제로 발생했을 때 피해를 크게 줄일 수 있다.
      1. 더 나아가서 위험이 발생하는 것을 예방할 수 있다.
    2. 사실적으로 발생할 수 있는 기회를 시나리오로 만들고 그 기회를 효과적으로 이용할 방법을 미리 만들어 두면 기회가 왔을 때 흘려 보내지 않고 기회를 살릴 수 있다.
  3. 그래서 시나리오 정보처리는 과정을 비교해서 미래에 발생할 수 있는 다양한 사건에 대비하는 다차원 확률 중첩 시나리오를 만드는 것이다.
    1. 확률적 도구, 다차원 확률 중첩 시나리오가 연역론에서 관계정보 정보처리에 해당한다.

시나리오 경영의 특징은 이미 수학의 게임이론과 경영학의 하부 주제로 수십 년 전부터 개발되어 있었다. 그러나 그것이 왜 그런지, 어떻게 해서 그런지 정보처리의 근거와 본질을 설명하는 것은 연역론이 최초다.

정리를 해보자.
  1. 하등동물에 가까울수록 상대적으로 자동반응 정보처리를 한다.
  2. 생명체의 DNA는 환경의 도전에 대항해서 자동반응 정보처리를 한다.
  3. 고등동물에 가까울수록 상대적으로 과정을 비교하는 시나리오 정보처리를 한다.
    1. 인간은 생명체 중에 이 능력이 가장 많이 발달했다.
  4. 시나리오 정보처리 능력을 사용하면 각 개체가 외부 환경의 위험에 대항해서 버티는 능력이 커진다.
    1. 외부 환경을 자신에게 유리한 쪽으로 바꾸어 나간다.
    2. 정보구조체를 자기 스스로 만들어 내서 도구로 사용한다.
      1. 정보구조체란 일을 하는 방법, 일을 하는 과정, 노하우 등을 말한다.
      2. 이 능력을 학습, 모방 등으로 전수하는 것을 진화 인류학에서 밈이라고 한다.
  5. 시나리오 정보처리는 과정을 비교해서 미래에 발생할 수 있는 다양한 사건에 대비하는 다차원 확률 중첩 시나리오를 만드는 것이다. 특정 시나리오를 선택해서 맹목적으로 믿는 것이 아니다.


앞으로 연구할 과제

우리는 앞으로 기존 딥러닝 기술을 분석해서 연역론으로 정리하고, 더 발전된 방향으로 지능 정보구조체를 만들어 낼 것이다. 우리가 쓴 대로 연역론은 지금까지 이루어진 딥러닝의 성과를 이론적으로 정확하게 설명한다. 그리고 연역론은 앞으로 어느 부분을 개선해서 더 나은 지능 정보구조체를 만들 수 있는지 이론적인 아이디어를 제공한다. 이 시도는 연역론이 최초다.

다시 노자 도덕경의 구절을 인용해 보자.
"도(道)를 도라고 이름 붙여서 부르면 그 도는 더 이상 도가 아니다. 이름을 지어서 부를 수는 있지만 항상 그 이름인 것은 아니다."

도가도, 비상도; 道可道, 非常道
명가명, 비상명; 名可名, 非常名

지금으로부터 2500여년 전에 쓰여진 것으로 추정되는 이 경전을 연역론으로 다시 써서 풀이하면 이렇다.
현실(진실)에 이름을 붙여서 결과정보로 만들면 그것은 더 이상 현실(진실)이 아니다. 이것이 우리가 사는 세계의 상대성이다. 그러나 우리는 이 결과정보들에서 닮은 점과 다른 점을 찾아내고 그 관계정보를 통해 진실에 접근할 수 있다. 만물의 근원을 알아낼 수 있고, 만물을 창조할 수 있다.


참고문헌

[1] Bertrand Russell (1919) "Introduction to Mathematical Philosophy". London: George Allen & Unwin. (ISBN 0-415-09604-9 for Routledge paperback)
[2] Gottlob Frege (1879) Begriffsschrift: eine der arithmetischen nachgebildete Formelsprache des reinen Denkens. Halle.
[3] Gödel, Kurt (1931). “Über formal unentscheidbare Sätze der Principia Mathematica und verwandter Systeme I”. 《Monatshefte für Mathematik und Physik》
[4] Aizerman, M. A. and Braverman, E. M. and Lev I. Rozonoer. Theoretical foundations of the potential function method in pattern recognition learning. Automation and Remote Control, 25:821–837, 1964.
[5] Frank Rosenblatt (1958), The Perceptron: A Probabilistic Model for Information Storage and Organization in the Brain, Cornell Aeronautical Laboratory, Psychological Review, v65, No. 6, pp. 386–408. doi 10.1037/h0042519.
[6] David Chalmers, Robert M. French & Douglas R. Hofstadter (1990) High-Level Perception, Representation, and Analogy: A Critique of Artificial Intelligence Methodology. Journal of Experimental and Theoretical Artificial Intelligence 4:185-211, 1992. Reprinted in (D. R. Hofstadter) Fluid Concepts and Creative Analogies. Basic Books.
[7] Klaus Greff, Rupesh Kumar Srivastava, Jan Koutník, Bas R. Steunebrink, Jürgen Schmidhuber (2015) “LSTM: A Search Space Odyssey
[8]  Kim, Y. (2014). Convolutional Neural Networks for Sentence Classification. Proceedings of the 2014 Conference on Empirical Methods in Natural Language Processing (EMNLP 2014), 1746–1751.
[9] Volodymyr Mnih, Koray Kavukcuoglu, David Silver, Andrei A. Rusu, Joel Veness, Marc G. Bellemare, Alex Graves, Martin Riedmiller, Andreas K. Fidjeland, Georg Ostrovski, Stig Petersen, Charles Beattie, Amir Sadik, Ioannis Antonoglou, Helen King, Dharshan Kumaran, Daan Wierstra, Shane Legg & Demis Hassabis (2015) "Human-Level Control through Deep Reinforcement Learning". Nature. 529 – 533
[10] Schacter D, Addis D, Hassabis D, Martin V, Spreng N, Szpunar K (2012) "The Future of Memory: Remembering, Imagining, and the Brain". Neuron. 76, 677 – 694


To Be Continued..

여기까지 읽어 주셔서 감사하고요. 우리는 이 문서를 연역론 블로그에서 계속 업데이트하고 있습니다.


관련된 글 목록



연락처




Facebook Comments

Disqus Comments

About Author

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

Popular Posts

Visitor Map

Flag Counter