Hierarchical Temporal Memory

この記事は、

Aizu Advent Calendar 2016 - Qiita 21日目の記事です。

前日は @ababup1192 さん、次は @yopio さんです。

 

ブログ初投稿が Aizu Advent Calendar で緊張しています!

記念すべき第一回目の記事は、私が夏から勉強をしている Hierarchical Temporal Memiry (以下 HTM と略します) について書かせていただきます!

 

 HTM について書こうと思った経緯


研究室見学の際に、 HTM をやっていますか? と尋ねた所、 え?こいつ何言ってんの??? みたいな目で見られて悲しかったからです。結構、認識度は低いようで残念です。。。

かなり面白い理論ですので、是非皆さんに知ってもらいたいです!!!

 

 HTMって何?


HTM は機械学習の手法の一つで、人間の大脳新皮質に焦点を当てた理論のことです。(この理論はまだ未完成であるため、失敗に終わる可能性があります。)

他の機械学習との大きな違いは、時系列データを学習の際に使用するところです。(HTM 以外にも時系列データを扱う手法はありますが、あまりないと思います。)

ここで大脳新皮質について簡単に説明させていただきます。

 

大脳新皮質について


  • 人間の大脳を覆っているシート状の組織
  • 厚さは約 2 mm 程度
  • 大きく 4 つの領野に分けることができる  (細かく分けると 52 の領野に分けられる)
  • 階層構造を成している  (6 層で構成されている)
  • 大脳の広範囲を覆っているため、視覚・聴覚・触覚・運動・言語等の処理は大脳新皮質を経由される
  • 視覚・聴覚・触覚等の処理はほとんど同じアルゴリズムで行われていると言われている

ここで NFL (No Free Lunch) 定理が比較?として出されます。 NFL 定理を一言で表すと、"あらゆる問題で性能の良い汎用最適化戦略は理論上不可能である" となります。

そこで、大脳新皮質アルゴリズムを解き明かしていくことは、知性ある機械を作るということに対し重要な意味があるかも ? という可能性が挙げられます。

 

大脳新皮質の構成


ニューロンには刺激選択性という、面白い特性があります。 (これは後で説明します)

 

大脳新皮質の階層構造


1 層から 6 層は以下のように構成されています

f:id:nbawofp:20161221010641p:plain

このまま大脳新皮質について深く掘り下げて書いていきたいところですが、そろそろ HTM の方に戻りたいと思います。

 

HTM が時系列データを扱う理由


私たちが日常的に触れている情報は、絶えず時間とともに変化しています。視覚情報の例として、犬との戯れを想像してみてください。

例1:犬との戯れ

f:id:nbawofp:20161221014438p:plain

犬は時間とともに表情やシルエットが変わっていきます。この一連の変化を画像にして数学的に見ると、どの画像も全く異なっていることが分かります。

このとき私達の脳は、この常に変化している生き物を全て同じ犬だと認識しています。あっ、この犬は t = n のときとは違う犬だ! おい、t = n - 1 のときの犬はどこに行った??? のように思う人はいないと思います。 変わらず同じ犬だと認識することができています。

 

次に何か曲をランダムに聴いてみてください。音楽は時間とともに変化していくものの中でイメージしやすい例だと思います。

例2: Listen to music

f:id:nbawofp:20161221020126p:plain

曲を流して、一瞬で止めてください。たった一音聴いただけでは、それが何の曲か判断することは難しいと思います。もう少し流すと、聴き慣れた曲なら曲名を当てることができると思います。

音楽は、その瞬間その瞬間の一音の情報だけでは理解できず、各時刻における音の情報を連続して受けることによって、初めて認識することができます。

これらの時系列データの処理が大脳新皮質で行われていると言われているので、HTM が扱うデータは時系列データとなっているのです!

 

HTM 理論


 ここからは HTM の理論の方に話をシフトしていきます。 HTM を直訳すると、階層的時間的記憶となります。 HTM は階層構造を持ち、発生パターンを時間情報と結びつけて記憶しています。

そんな HTM にはいくつか種類があります。

 

HTM の種類


現在、私が知っている HTM は Zeta 1 と CLA がそれぞれベースになっている 2 種類です。

Zeta 1 ベースの HTM

Zeta 1 理論がベースの HTM は、 2008 年に Dileep George 氏が書いた論文*1

で述べられています。 私が初めて読んだ HTM に関する論文で、凄く思い入れがありますw

ホワイトペーパー(論文)の方を読んでいただけると分かると思いますが、 数式で表現されているところが結構出てきており、私は現在この論文をもとに実装を行っています。(現時点で実装は一応終わっているが、精度が低いため冬休みを使って精度向上に励む予定)

 

Zeta 1 ベースの HTM の実装の流れ


以下の解説は Dileep George 氏が書いた論文の内容を使わせていただきます。

まず、階層構造を定義していきます。今回は説明を簡単にするために 3 層構造を用います。

f:id:nbawofp:20161221151258p:plain

各層のつながりは以下のようになっています。

f:id:nbawofp:20161221152422p:plain

各ノードは下位の層からのインプットを、その時刻におけるパターンとして記憶していきます。

HTM の各ノードは学習と推論の二つのフェーズがあります。実際に学習させていく際は以下の順序で進めていきます。

  1. 第一層の学習フェーズ
  2. 第一層の推論フェーズ
  3. 第二層の学習フェーズ
  4. 第二層の推論フェーズ
  5. 第三層の学習フェーズ
  6. 第三層の推論フェーズ

 

学習フェーズ


学習フェーズは以下のように処理していきます。なお、学習フェーズでは出力は行いません。

  1.  入力パターンを記憶
  2. パターンの遷移情報を記憶
  3. パターンの時間的なグループ分け
  4. 推論フェーズへ移行

パターンの遷移情報を記憶することで、パターンが時刻とともにどのように変化したのかが分かります。

パターンの時間的なグループ分けですが、これは以下の画像を見ると分かりやすいと思います。

第一層のあるノードへ送る情報です。

f:id:nbawofp:20161221154936p:plain

まず、情報を受け取ったノードは、そのパターンを時間情報とともに記憶し、パターン間の遷移情報も記憶していきます。

f:id:nbawofp:20161221155224p:plain

ここで一次のマルコフグラフが作成されていきます。

そして全てのパターンを記憶した後に、そのノードにおけるパターン間の遷移情報をもとに時間グループを作ります。

f:id:nbawofp:20161221155436p:plain

ここで時間グループを作成することによって、あるパターンを受け取った際に、次にくるパターンを予想することができるようになります。

私は、学習フェーズの目的が時間グループを作成することだと解釈しています。

この時間グループが作成されてから、ようやく推論フェーズに移ることができます。

 

推論フェーズ


  • ノードは全てのパターンに対して出力を行う

上の層への出力は、時間グループが与えらた時のエビデンス(パターン)が発生しうる確率となります。

f:id:nbawofp:20161221164152p:plain

 上の層では、この確率をパターンとして記憶していきます(上の層は学習フェーズなので、下の層の推論フェーズが終わるまでパターンを記憶し続けていく)。

このときの上の層での処理は以下のようになっています。

f:id:nbawofp:20161221164204p:plain

この辺りの処理が何をしたいのかはなんとなくは分かるのですが、数式のほうがまだ良く理解できていないです。。。(精度が低くなっている原因がここにありそうです)

そして最後の第三層で、そのパターンが何を表しているかの確率(識別結果)が出力されます。

Zeta 1 理論はパターンを記憶していくので、相対的に容量が大きくなってしまいます。もうひとつの理論である CLA では、疎分散表現を用いていたり、シナプスに永続値を設けていたりしているので、全てのパターンを記憶してしまうということが少なくなっています。

 

CLA ベースの HTM


CLA は 現在、 Numenta さんの方で研究が進んでおり、動画や音声データなどで既に応用されています。 CLA は SDR (Sparse Distributed Representations) - 疎分散表現 - をベースとして組み立てられています。ニューロンの抑制性などを利用していると思います。

ホワイトペーパーはこちら Numenta さんの公式ページからダウンロードできます。

numenta.com

Numenta の論文は George の論文に比べると、脳の仕組みについての記述が多く、数式が出てこないため、曖昧な表現が多いなと感じました。

一通りは目を通し、実装も少し行っていますが、脳の神経細胞の知識が乏しいので苦戦しております。

 

最後に


大脳新皮質は未だに解明されていない部分も多く、また今なされている主張が数年後には全く違っていた!という可能性を孕んでいるので非常に不安定だなと感じております。Numenta さんの論文を読んで神経科学に強い関心を持ったので、ちょっと真面目に神経科学の勉強をしていきます。

ここで述べた内容が間違っていることもありますので、ご指摘していただけると大変助かります!これからもっと知見を深めていきたいので何卒よろしくお願いします!!!

ここまで読んでいただき、ありがとうございます!!!

 

参考文献


参考にした論文です。

HOW THE BRAIN MIGHT WORK:
A HIERARCHICAL AND TEMPORAL MODEL FOR LEARNING AND RECOGNITION

H IERARCHICAL T EMPORAL M EMORY including HTM Cortical Learning Algorithms

Towards a Mathematical Theory of Cortical Micro-circuits

Pattern Recognition by Hierarchical Temporal Memory - Cogprints

 

イラストや画像は 

かわいいフリー素材集 いらすとや 

HOW THE BRAIN MIGHT WORK:
A HIERARCHICAL AND TEMPORAL MODEL FOR LEARNING AND RECOGNITION
 です