Hierarchical Temporal Memory

Posted 2012.01.07 03:25

 On Intelligence를 읽고 두근거림을 멈출 수 없었다. 
 내가 생각하던 바로 그 인공지능, 뇌를 black box로 놓고, input과 output만을 맞추려는 시도가 아닌 진정 인간과 같이 생각하는 인공지능에 대한 clue를 얻은 것 같았다.  책의 저자가 설립한 Numenta에 이에 대한 Documentation이 있길래 번역을 시작한다. 이 글은 내 인생을 바꿀 것 같다.  (www.numenta.com)

HTM_CorticalLearningAlgorithms.pdf


Hierarchical Temporal Memory
 including HTM Cortical Learning Algorithms 

Read This First!
 This is a draft version of this document. 슬프다.. There are several things missing that you should be aware of.

What IS in this document
 이 문서는 Numenta에서 개발한 learning과 prediction 알고리즘에 대해서 설명하고 있다. 이 새로운 알고리즘은 프로그래머가 이해하고, 구현할 수 있을 정도로 자세히 묘사되어있다. 이는 introductory chapter부터 시작한다. 만약 당신이 Numenta에 대해서 알고 있고,  이전에 논문들을 읽어봤다면 introductory chapter는 익숙할 것이다. 그 외의 material은 새롭다. 

What is NOT in this document
 early draft에는 포함안되 새로운 알고리즘들의 구현에 관한 몇몇 topic들이 있다.  
 -  알고리즘들의 대부분이 테스트되었지만 그 결과들은 포함되어있지 않다. .. why not? confidential? 
 -  알고리즘들은 on-line learning이 가능하다. 이의 구현에 관련된 몇몇 detail은 포함되어있지 않다. 
 -  예정된 몇몇 추가점들이 있다. (properties of sparse distributed representations, a description of applications and examples, and citations for the appendixes)
 
Preface

 현재 컴퓨터는 할 수 없지만 인간은 쉽게 할 수 있는 일들이 많다. visual pattern recognition, understanding spoken language, recognizing and manipulating objects by touch, navigating in a complex world는 인간들이 훨씬 쉽게 할 수 있다. 수십년에 걸친 연구에도 불구하고, 우리는 인간과 같은 성능을 내는 few viable algorithm만을 가지고 있다. 

 이러한 capabilities는 neocortex에서 대부분 일어난다. Hierarchical Temporal Memory(HTM)은 neocortex에서 이런 일들이 어떻게 일어나는지를 모델로 한 기술이다. HTM은 많은 cognitive task에서 인간과 같은 성능을 내는 machine을 만들 수 있음을 보장한다. 

 이 문서는 HTM 기술을 설명하고 있다. Chapter 1은 HTM에 대한 broad overview, hierarchical organization의 중요성, sparse distributed representations, 그리고 learning time-based transitions에 대해서 설명한다. Chapter 2 는 HTM cortical learning algorithm을 자세히 설명한다. Chapter 3과 4는 HTM learning 알고리즘에 대한 수도 코드를 제시하는데 이는 spatial pooler와 termporal pooler의 두 과정으로 나뉘어있다. Chapter 2-4를 읽은 후에는 숙련된 software engineers는 이 알고리즘을 실험해볼 수 있을 것이다. 몇 독자들은 우리의 연구를 더 이어서 하기를 바란다. 

Intended audience

 이 문서는 technically educated audience를 위해서 작성되었다. 우리는 neuroscience에 대한 사전 지식은 가정하지 않지만, 수학적, 
computer science concept에 대한 이해는 필요로 한다. 우리는 이 문서가 수업의 assigned reading에 쓰일 수 있도록 작성하였다. 우리가 예상하는 주된 독자는 computer science와 cognitive science를 전공하는 학생이고나 인간의 뇌를 기반으로 한 artificial cognitive system을 만드는 software developer이다. 

 [생략]

Chapter 1: HTM Overview

 Hierarchical Temporal Memory (HTM)은 neocortex의 structural and algorithmic properties를 모방하고자 하는 machine learning 기술이다. 

 neocortex는 영장류의 뇌의 지능적 생각의 중심지이다. High level vision, hearing, touch, movement, language, and planning은 모두 neocortex에서 수행된다. 이러한 수많은 cognitive function을 보고 당신은 아마 각각 specialized neural algorithm을 구현하고 할 수 있을 것이다. 하지만 그렇지 않다. neocortex는 uniform pattern of neural circuitry를 보인다. 이러한 biological evidence는 neocortex가 여러 다른 intelligence function을 가질 수 있는 동일한 알고리즘으로 구현되었음을 알 수 있다. 

 HTM은 neocortex에 대한 이론적 framework와 이해와 이것의 수많은 capabilities를 제공한다. 현재까지 우리는 이 이론적 framework에 대한 small subset을 구현하였다. 이후에는, 더 많은 이론이 구현될 것이다. 현재 우리는 상업적이고 과학저으로 가치가 있는 수준의 neocortex가 하는 일에 대한 subset을 구현하였다고 생각한다. 

 HTM을 프로그래밍하는 것은 기존의 컴퓨터 프로그램과 다르다. 현재의 컴퓨터를 사용하면 프로그래머는 특정 문제를 푸는 특정 프로그램을 만들 수 있다. 이에 반해, HTM은 sensory data의 stream의 exposure를 통해서 train된다. HTM의 capabilities는 이것이 무엇에 노출되었는지에 많이 결정된다. 

 HTM은 neural network의 일종으로 보여질 수 있다. 정의에 의하면 neocortex를 인공적으로 모델링하려는 그 어떤 시도도 neural network이다. 그러나 기존의 neural network는 그렇게 쓸모있지 않았다. HTM model neuron(HTM에서는 cell로 불린다.)은 column, region, hierarchy에 arrange되어있다. detail이 중요하고, 이런 측면에서 봤을 때 HTM은 neural network의 새로운 form이다. 

 이름에서 드러나듯이 HTM은 memory based system이다. HTM 네트워크는 수많은 time varying data로 train되고, 수많은 patterns와 sequences들의 set을 저장하는데 의존(rely)한다. data가 자정되고 접근되는 방식은 현재 프로그래머가 사용하는 모델과는 다르다. 기존의 컴퓨터 메모리는 flat organization을 가지고 있고, 시간에 inherent notion이 없다. 프로그래머는 기존의 flat computer memory를 기본으로 어떤 종류의 data organization과 structure를 이용해서 구현할 수 있다. 이들은 어디에 어떻게 information이 저장되는지에 대한 control을 가지고 있다. 이에 반해서 HTM memory는 더 제한저이다. HTM memory는 hierarchical organization을 갖고, 기본적으로 시간에 기반하고 있다. information은 언제나 distributed fashion으로 저장된다. HTM의 사용자는 hierarchy의 size를 명시하고, 무엇을 이용해서 system을 train할지 정하지만 information이 어디에 어떻게 저장될지는 HTM이 결정한다. 

 HTM network가 기존 computing과는 기본적으로 다르지만, 우리는 일반적 컴퓨터를 사용해서 이러한 hierarchy의 functions의 key와 time and sparse distributed representations를 구현할 수 있다(뒤에서 자세히 다루겠다). 우리는 시간이 지남에 따라 HTM network를 위한 특별한 Hardware가 나올 것으로 기대한다. 

 이 문서에서는 종종 인간의 vision, touch, hearing, language, and behavior에서 얻은 예제를 이용해서 HTM의 properties와 principles를 묘사하였다. 이러한 예제들은 이들이 intuitive하고 쉽게 이해될 수 있기 때문에 유용하다. 하지만, HTM의 capabilities는 범용적이라는 것을 마음에 새겨라. HTM의 learning and prediction machine은 여러 종류의 문제들에 적용가능하다. 

HTM principles

 이 section에서는 우리는 HTM의 몇 core principle들에 대해서 다룰 것이다. 왜 hierarchical organization이 중요한지, HTM의 region이 어떻게 구성되는지, 왜 data가 sparse distributed representation으로 저장되는지, 그리고 왜 time-based information이 중요한지에 대해서 말할 것이다. 

 Hierarchy 

 HTM 네트워크는 hierarchy로 arrange된 region으로 구성되어있다. region은 HTM에서 저장과 예측에 주요 구성 요소이고, 다음 section에서 더 자세히 다뤄질 것이다. 일반적으로 각 HTM region은 hierarchy에서 하나의 level을 의미한다. hierarchy를 증가시키면 언제나 child region의 여러 element가 하나의 parent region으로 합쳐지는 convergence가 일어난다. 그러나 feedback connection에 의해서 hierarchy가 내려감에 따라 information은 갈라진다. (region과 level은 비슷한 의미를 가진다. 우리는 region이란 단어를 한 region의 내부적 function을 묘사하는데 쓰고, level은 hierarchy 전체에서 한 region의 역할을 설명하는데 쓸 것이다.)


 여러개의 HTM 네트워크를 합치는 것도 가능하다. 이런 구조는 만약 여러개의 source나 sensor로부터 data를 얻을 때 사용될 수 있다. 예를 들어 하나의 네트워크는 음성 정보를 처리하고, 다른 네트워크는 영상 정보를 처리할 수 있다. 각 구별가능한 네트워크 사이에는 convergence가 있고, 개별적 branch들은 오직 위로만 연결되어있다. 


 hierarchical organization의 이점은 efficiency에 있다. 이를 통해서 training time과 memory usage를 줄일 수 있는데 이는 hierarchy의 각 level에서 학습된 pattern은 novel ways로 상위 level에서 합쳐질 때 다시 사용되기 때문이다. 예를 위해서 시각을 고려해보자. hierarchy의 가장 낮은 level에선, 당신의 뇌는 edge와 corner와 같은 visual field의 tiny section들만을 저장한다. edge는 세상의 많은 물체들의 fundamental component이다. 이러한 low-level patterns는 중간 단계에서 recombine되어서 curve와 texture 같은 더 복잡한 component를 형성한다. arc는 귀의 edge가 될 수도, 자동차의 핸들, 혹은 커피잔의 모서리가 될 수도 있다. 이러한 mid-level pattern들은 후에 머리나, 자동차나 집과 같은 high-level object feature로 combine된다. 새로운 high level 물체를 배우기 위해서 이러한 component들을 다시 배울 필요가 없다. 다른 예로는 당신이 새로운 단어를 배울때를 생각해보면, 단어나 음절이나 음소를 새로 배우지 않는다. 

 hierarchy에서 representation들을 공유한다는 것은 예상된 behavior의 일반화로 이끌기도 한다. 만약 당신이 새로운 동물을 본다면 당신은 입과 이빨을 보고 혹시 당신을 이빨로 공격하지는 않을지 생각할 것이다. hierarchy는 세계에 있는 새로운 물체들이 기존에 알고있는 물체들의 속성을 inherit할 수 있게 한다. 

 HTM의 단일 hierarachy level이 얼마나 많이 배울 수 있을까? 다르게 생각해보자면, 몇 개의 hierarchy가 필요할까? 각 level에 얼마나 많은 메모리를 할당할 것인가와 몇 개의 level이 필요로 하는지 사이에는 trade off가 존재한다. 행운이게도, HTM은 자동으로 각 level에서 주어진 input과 할당된 resource에 있어서 최적의 representation을 자동으로 배운다. 만약 당신이 한 level에 더 많은 memory를 할당했다면, 그 level은 더 크고 복잡한 representation을 형성할 것이고, 더 적은 hierarchical 을 필요로 할 것이다. 만약 당신이 더 적은 memory를 할당했다면, 해당 level은 더 적고 간단한 representation을 형성할 것이고, 더 많은 hierarchical level이 필요할 것이다. 

 이때까지 우리는 영상 인식과 같은 어려운 문제들에 대해서 설명하였다. 하지만 많은 가치있는 문제들은 영상보다 간단하고, 단일 HTM region으로도 충분히 해결 가능할 것이다. 예를 들어서 우리는 HTM을 웹사이트를 보고 있는 사람이 다음에 어느 곳을 클릭할 지를 예측하는 데 적용시켰다. 이 문제는 web click data의 stream을 HTM 네트워크에 feeding하는 것이었다. 이 경우 hierarchy가 필요 없었고, solution은 단지 사용자의 pattern을 인식해서 다음에 어디를 click할지 여부에 대한 일시적인 statistics를 푸는데 있었다. HTM의temporal learning algorithm들은 이러한 문제 푸는데 이상적이다. 

 요약하자면, hierarchies는 training time을 줄이고, memory usage를 줄이고, 일반화의 형태를 제시한다. 그러나 많은 간단한 예측 문제들은 단일 HTM region으로 해결 가능하다. 

Regions

 hierarchy에서 wired된 region이란 개념은 biology에서 유래했다. neocortex는 2mm 두께의 넓은 neural tissue이다. 생물학자들은 neocortex를 region들이 어떻게 새로 연결되는지에 따라 다른 영역들이나 region 으로 나눈다. 몇몇 regions는 감각으로부터 직접 신호를 받고, 다른 region들은 몇몇 다른 region을 통해서 입력을 받는다. 이 region에서 region으로 연결되는 연결되는 방식이 hierarchy를 결정한다. 

 모든 neocortical regions는 detail에서 비슷하다. 그들은 size와 hierarchy에 어디에 속해 있는지에 있어서 다르지만, 그 외는 모두 비슷하다. 만약 당신이 2mm 두께로 neocortical region을 자른다면 당신은 5개의 cell로 이뤄진 layer와 한개의 non-cellular layer의 총 6개의 layer들 볼 수 있을 것이다(예외가 있지만 이것이 일반적이다). neocortical region의 각 layer는 column에 arrange되어있는 서로 연결된 cell로 이뤄진다. HTM regions는 또한 columns에 arrange되어있는 서로 연결된cell의 sheet로도 이루어져 있다. neocortex의 "Layer 3"는 뉴론에서 주요 feed-forward layer이다. 하나의 HTM region의 cells는 neocortex의 layer 3에 있는 뉴론들과 비슷하다. 


 하나의 HTM region이 neocotical region의 한 부분과 비슷하지만, 이것은 복잡한 data stream에 대한 inference와 prediction이 가능하므로 여러 문제에 유용하게 쓰일 수 있다. 

Sparse Distributed Representations

 neocortex의 뉴론들이 highly interconnected 되어있지만, inhibitory neurons이 한번에 소수의 neuron들만이 active되도록 한다. 그러므로 뇌의 information은 항상 수많은 neuron들 중에서 소수의 active neuron들로만 나타내진다. 이런 종류의 encoding은 "sparse distributed representation"이라고 부른다. "sparse" 라는 뜻은 한번에 소수의 neuron들만이 한번에 active됨을 의미한다. "distributed"는 어떤 것을 나타내기 위해서 여러 neuron들이 active되야함을 의미한다. 하나의 neuron이 active되는 것도 어떤 의미가 있지만 전체 의미를 나타내기 위해서는 여러개의 neuron들이 필요하다. 

 HTM regions 역시 sparse distributed representations를 사용한다. 사실, HTM region에서 memory representation은 sparse distributed representation에 의존하고, 긔 외는 동작하지 않는다. HTM region의 input은 항상 distributed representation이지만 항상 sparse일 필요는 없기에, HTM region이 처음 하는 것은 input을 sparse distributed representation으로 바꾸는 것이다. 예를 들어서, 하나의 region이 20,000 input bits를 받았다고 하자. input bits가 "1" 또는 "0" 일 확률은 시간에 따라 많이 변한다. 어떤 시간에는 "1" bits가 5000 개가 있고, 다른 시간에는 "1" bits가 9000 개가 있을 수 있다. HTM region은 input bits 중 "1"이 몇 개 이던 상관없이 이 input을 200개 혹은 10000 bits의 2%가 한번에 active한  internal representation 으로 나타낼 수 있다. HTM region의 input이 사간에 따라 변하므로, internal representation 역시 변하지만, 10000개 중 200 개의 bits만 active일 것이다. 

 이 방법은 한 region의 가능한 representation보다 input에 들어올 수 있는 pattern의 수가 훨씬 더 많을 경우 information loss가 생길 것이라고 생각할 수 있다. 하지만, 이 두 수는 모두 매우 크다. region에 실제로 들어오는 input은 모든 가능한 input에 비하면 작은 부분에 해당한다. 나중에 우리는 input으로부터 region이 어떻게 sparse representation을 나타낼 수 있는지 설명할 것이다. 이런 이론상의 information loss는 실제적으로 영향을 미치지는 않을 것이다. 


 sparse distributed representation은 몇 가지 desirable properties를 갖고 있고, HTM의 동작에 필수적이다. 이는 나중에 다시 다뤄질 것이다. 

The role of time

 시간은 learning, inference, prediction에 중요한 역할을 한다. 

 inference로 부터 시작하자. 시간을사용하지 않고는, 우리는 우리의 tactile과 auditory senses로부터 거의 정보를 유추하지 못한다. 예를 들어서 당신이 눈이 가려져 있고, 당신 손에 사과를 놓았다고 할 때, 당신은 그것이 무엇인지 수 초안에 알아낼 수 있다. 당신이 사과 위에 손가락을 움직이면서, 촉감은 지속적으로 변하면서, 사과라는 물체와 우리가 인지하는 "사과"는 변하지 않는다. 그러나, 사과가 당신의 손바닥에 있고, 손을 움직일 수 없는 상황이라면 그것이 사과인지 레몬인지 구별하는 것은 매우 어려운 일일 것이다.

 듣기 역시 동일하다. 정적인 소리는 적은 의미만을 전달한다. "사과"라는 단어나 사과를 베어무는 소리는 수십에서 수백의 빠르고, 연속적으로 시간에 따라 변하는 sound spectrum을 통해서만 인식될 수 있다. 

 이에 반해서 시각은 혼합된 경우이다. 촉각과 청각과는 다르게, 인간은 이미지가 눈 앞에 있거나 빠르게 움직여도 인식할 수 있다. 그러므로 visual inference는 항상 시간에 따라 변하는 입력을 필요로 하지 않는다. 

 ... 

 Learning과 recognizing sequences는 prediction의 basis이다. HTM이 어떤 pattern 이후에 다른 pattern이 나올 것이라는 것을 배웠다면 HTM은 현재와 바로 이전의 input을 바탕으로 다음에 무엇이 들어올지를 predict할 것이다. 

 이제 우리는 HTM의 기본 네 가지 기능들에 대해서 알아볼 것이다: Learning, inference, prediction, behavior이다. 모든 HTM region은 learning, inference, prediction을 수행하지만 모두 behavior를 수행하는 것은 아니다. 모든 신경 구조에서 behavior를 사용하는 것은 아니기에 우리는 이 기능을 생략하였다. 이는 completeness에서 다룰 것이다. 

Learning

 HTM region은 sensor에서 입력받은 data의 pattern을 찾고, 이 pattern의 sequence를 찾음으로서 학습을 한다. region은 이 pattern이 무엇을 의미하는지는 모른다. HTM region은 동시에 발생하는 입력들의 combination을 찾는다. 이 combination은 spatial pattern이라고 불른다. 그리고 나서는 이 spatial pattern이 시간 순서로 발생되는 것을 찾는다. 이는 temporal pattern이나 sequence라고 불린다. 

Inference

 HTM이 세상의 pattern들을 학습했다면, 이는 novel input에 대해 inference를 수행한다. HTM이 입력을 받았다면, 이는 이전에 학습한 spatial, temporal pattern들과 맞춰본다. 성공적으로 새로운 입력을 맞춰보는 것이 inference와 pattern matching의 essence이다. 

 하지만 세상의 모든 입력들이 같은 경우는 거의 없다. 심지어 같은 단어를 발음해도 매번 소리는 조금씩 다르다. 이는 sparse distributed representation을 통해서 해결될 수 있다. sparse distributed representation의 key property는 입력 중에 일부분만 맞춰봐도 그 match가 맞다고 확신할 수 있는 것이다. 

Prediction

 HTM의 각 region은 pattern의 sequence를 저장한다. 현재 입력과 이전에 저장된 sequence를 맞춰봄으로서 region은 다음에 도착할 input이 무엇일지 예측을 한다. HTM region은 실제로 sparse distributed representation 사이에 있는 transition들을 저장한다. ... HTM에 사용되는 대부분의 memory는 spatial patterns 사이에 일어나는 transition을 저장하는데 사용된다. 

1) Prediction is continuous

2) Prediction occurs in every region at every level of the hierarchy

3) Prediction are context sensitive

 HTM region은 필요한 만큼의 이전 context 정보를 사용하고, context를 짧은 시간에서 긴 시간에 까지 유지시킬 수 있다. 이러한 ability는 variable order memory라고 불린다. 
 
4) Prediction leads to stability

5) Prediction tells us if a new input is expected or unexpected

6) Prediction helps make the system more robust to noise

Behavior
 
 현재 밝혀진 것으로는 대부분의 sensory function은 motor function과 연결되어있다. 이러한 motor function은 prediction과 매우 유사하므로 쉽게 연결할 수 있을거라고 생각한다. 하지만 HTM은 순수 sensory data를 처리하는 것에만 집중한다. 

Progress toward the implementation of HTM

 - 현재 구현안된 것: 집중, region 사이에 feedback, specific timing, behavior/sensory-motor integration. 
 

'Enginius > Machine Learning' 카테고리의 다른 글

Hierarchical Temporal Memory related Papers and Books  (0) 2012.01.12
  (0) 2012.01.11
Hierarchical Temporal Memory  (5) 2012.01.07
Haar-like Face Detection  (0) 2011.12.06
Papers studied in Pattern Recognition Class  (0) 2011.12.06
MCMC  (0) 2011.11.15
  1. 신만선

    | 2013.08.16 19:32 | PERMALINK | EDIT | REPLY |

    누멘타는 매우 흥미롭군요.
    관련 문서를 번역하셧다니,
    그내용에 대해서 잘알고 계시겠군요.

  2. 신만선

    | 2013.08.16 19:41 | PERMALINK | EDIT | REPLY |

    누멘타는 매우 흥미롭군요.
    관련 문서를 번역하셧다니,
    그내용에 대해서 잘알고 계시겠군요.

  3. SJ 해리s

    | 2013.08.17 18:37 신고 | PERMALINK | EDIT |

    누멘타는 흥미로운 회사죠.

    내용은 잘 알고 있어요 ㅎㅎ 구현도 한번 해봤었구요.

  4. 오란셀로

    | 2014.07.17 14:00 | PERMALINK | EDIT | REPLY |

    안녕하십니까 뉴픽을 공부하려고하는 대학생 입니다.
    기본적인 사용을 위하여 환경을 구현하는데 어려움을 겪고 있어 도움을 얻을수 있을까 해서 댓글 남겨봅니다

  5. SJ 해리s

    | 2014.07.18 10:48 신고 | PERMALINK | EDIT |

    뉴픽이 혹시 HTM을 구현한 라이브러리 말씀하시는건가요? ㅎㅎ
    저도 그건 안써봐서 잘 모르겠어요. 죄송합니다 ㅠ 전 그냥 C랑 매트랩으로 구현을 했었거든요. HTM에 관심이 있으신건가요

Write your message and submit
« PREV : 1 : ··· : 124 : 125 : 126 : 127 : 128 : 129 : 130 : 131 : 132 : ··· : 142 : NEXT »