Hierarchical Temporal Memory (階層型時間メモリ)とClojure

機械学習技術 自然言語技術 人工知能技術 デジタルトランスフォーメーション技術 画像処理技術 強化学習技術 確率的生成モデル 深層学習技術 Python Clojure 本ブログのナビ
サマリー

Hierarchical Temporal Memory (HTM) は、新皮質の構造的・アルゴリズム的性質 を捉えることを目指した機械学習技術となる。HTMは現在のスマートフォンの原型となるハンドヘルドコンピュータ(palm Treo)を考案したジェフ・ホーキンスが唱えた「自己連想記憶」理論をベースにしたニューラルネットライクなパターン認織アルゴリズムとなる。

考える脳、考えるコンピューター

HTMはホーキンスが設立した人工知能企業・ヌメンタ(Numenta)により開発が行われているもので、人間の脳は、「SDRs」(稀分散表現=sparse distributed representations)方式で情報を再現し、皮質内のニューロンは、互いに複雑に接続されているが、私たちが何かを表示したり、思い出すとき(脳を使う時)活性化されているのはごく一部となる。

そして、記憶は時系列的なパターンの連続となる。人間は行動しながら学習する。従って、学習は後を絶たず、継続される。ニューロンも時空間的なパターンを覚えている。いくつかのものを捨てて、いくつかのものはすぐに思い浮かべられるようにできるよう位階を置く。

HTMは、時系列的な「ストリーミング」データを学習し、構造を把握、予測を行うことも可能となる人間の脳は、自分の行動と注視対象を観察し、短期記憶を絶えず引き出しながら、これからどのようにすべきかを考える。このような特性をHTMが採用している。

HTMの構造

HTM ネットワークは階層的に配置されたリージョンからなる。リージョンは HTM における記憶と予測の主要構成要素であり、通常、各 HTM リージョンは階層構造の 1 レベルを表す。

階層構造を上がるに伴って、常に集約があ る。子リージョンの複数の要素が親リージョンの一つの要素に集約する。一方、階層構 造を下がるに伴って、フィードバック接続による情報の発散がある。(リージョンと レベルはほとんど同義である。リージョンの内部的な機能について述べるときに「リー ジョン」の用語を用い、特に階層構造の中でのリージョンの役割を指すときに「レベル」 の用語を用いる)

複数の HTM ネットワークを結合することもできる。この様な構造は、1つ以上の 情報源やセンサからのデータがあるときに有意義である。例えば、一つのネットワーク が音声情報を処理し、他のネットワークが映像情報を処理する場合がある。各個別のネ ットワークがトップに向かうにつれて集約される。

階層的な構造の利点は効率にある。階層構造の各レベルで学習されたパターンが上 位のレベルで組み合わせて再利用されることで、それは学習時間とメモリ消費を非常に 節約する。説明のため、視覚について考えてみよう。階層構造の最下位レベルでは、脳 は縁や角などの視覚のごく一部分に関する情報を格納する。縁は世の中の様々な物体 を構成する基本的な構成要素である。これらの下位レベルのパターンは中間レベルで集約されて、例えば曲線や模様などのより複雑な構成要素に集約される。円弧は耳の縁に なりうるし、車のハンドルの上部にも、コーヒーカップの取っ手にもなりうる。これら の中間レベルのパターンはさらに集約されて、頭、車、家などの高レベルな物体の特徴 を表す。高レベルな物体を学習するとき、その構成要素を再度学習する必要がなくなる。

階層構造間で表現を共有することはまた、予期される行動の一般化にもなる。もし 新しい動物を見たとき、口や歯を見れば、その動物がその口で食べることや、あるいは 噛み付く可能性があることを予測できるだろう。階層構造により、世の中の新しい物体 がその構成要素が持つ既に分かっている特徴を引き継いでいることを知ることができる。

一つの HTM 階層構造はいくつの事柄を学習できるだろうか? 言い換えれば、階層 構造にはいくつのレベルが必要だろうか? 各レベルに割り当てるメモリと、必要なレ ベル数の間にはトレードオフがある。幸い、HTM は入力の統計及び割り当てられたリ ソースの量とから、各レベルの最適な表現を自動的に学習する。もしあるレベルにより 多くのメモリを割り当てたなら、そのレベルはより大きくより複雑な表現を構成し、従 って必要となる階層構造のレベルはより尐なくなるだろう。もし尐ないメモリを割り当 てたなら、より小さく単純な表現を構成し、従って必要となる階層構造のレベルはより 多くなるだろう。(深層学習技術も参照のこと)

リージョン

階層構造に連結されたリージョンの表現は、生物学からもたらされた。新皮質は厚さ2mm のニューロンの大きな皮である。生物学では主にそれらが互いにどのように 接続しているかに基づいて、新皮質を異なる領域ないしリージョンに区分けする。ある リージョンはセンサから直接入力を受け取るが、他のリージョンは他のいくつかのリー ジョンを経由してから入力を受け取る。階層構造を決めるのはリージョンからリージョ ンへの接続関係となる。

新皮質のすべてのリージョンの細部は似ているように見える。そのサイズや階層構 造の中のどこに位置するかということについての違いはあるものの、その他は似ている。 厚さ 2mm の新皮質リージョンを縦にスライスしたなら、6 つの層を見ることができる。 5 つはセルの層で、1 つはセルではない層である(尐しの例外はあるが、これが一般的 な規則である)。新皮質リージョンの各層はカラム状に数多くの相互接続されたセルがある。

HTM リージョンもまた、高度に相互接続されたセルがカラム状に配列された皮か らなっている。新皮質の第 3 層はニューロンの主要なフィード・フォワード層である。 HTM リージョンのセルはおおまかに言えば新皮質のリージョンの第 3 層にあるニュー ロンと等価である。

疎分散表現

新皮質のニューロンは高度に相互接続しているが、わずかなパーセンテージのニュ ーロンだけが一度にアクティブになるように抑制ニューロンによって保護されている。 よって脳内の情報は常に、数多く存在するニューロンのうちのわずかなパーセンテージ のアクティブなニューロンによって表されている。この様なコード化は「疎分散表現」 と呼ばれる。「疎」とは、わずかなパーセンテージのニューロンだけが一度にアクティ ブになることを意味している。「分散」とは、何かを表現するためには多くのニューロ ンがアクティブになる必要があることを意味している。一つのアクティブなニューロン は何らかの意味表現に関わっているが、いくつかのニューロンの文脈の中で解釈されて 初めて完全に意味を成すことができる。(スパース性を用いた機械学習も参照のこと)

HTM リージョンもまた、疎分散表現を使用している。実際、HTM リージョンの記 憶の仕組みは疎分散表現に依存しており、それなしには機能しない。HTM リージョン の入力は常に分散表現であるが、必ずしも疎であるとは限らないので、HTM リージョ ンが最初に行うべきことは入力を疎分散表現に変換することである。

例えば、あるリージョンが 20,000 ビットの入力を受け取るとする。入力ビットの 中の10の割合は、時間と共に非常に頻繁に変化するだろう。あるときは 5,000 個 のビットが1であったり、またあるときは 9,000 個のビットが1であったりする。HTM リージョンはこの入力を 10,000 ビットの内部表現に変換して、入力のうちの何ビット が1であろうがその 2%にあたる 200 ビットが一度にアクティブになるようにする。 HTM リージョンの入力が時間と共に変化するに従って、内部表現もまた変化するが、 10,000 ビットのうち約 200 ビットが常にアクティブになる。

時間の役割

時間は、学習推論において極めて重要な役割を果たす。推論から始めよう。時間を用いなければ、我々は触覚や聴覚からほとんど何も推論 できない。例えば仮に読者が目が不自由だとして、誰かが貴方の手の上にりんごを置いたとしよう。ほんの数秒間触ってみることでそれが何かが分かるだろう。りんごの上で 指を動かせば、触覚から得られる情報が常に変化しているにも関わらず、その物体その もの ― そのりんごや貴方が持つ「りんご」という高レベルの認識 ― は変化しない。 しかしながら、もし貴方が手のひらを開いて、その上にりんごが置かれて、しかも手や 指先を動かしてはいけないと言われたなら、それがレモンではなくりんごであると識別 するのは非常に難しいだろう。

同じことは聴覚についても言える。変化しない音はわずかな意味しか持たない。「り んご」という言葉や、誰かがりんごを噛んだときの音などは、時間と共に素早く順序的 に変化する数十から数百の音階の列によってのみ理解しうる。

視覚は対照的に、混在したケースである。触覚や聴覚とは異なり、人は画像が一瞬 だけ目の前をすばやく通り過ぎた場合でも識別可能である。よって視覚の推論では必ず しも時間的な入力の変化を必要としない。しかしながら、通常の視覚では我々は常時、 目や頭や体を動かしており、物体もまた周囲を動き回っている。素早く変化する視覚的 変化の中から推論する我々の能力は、視覚の統計的な特徴と長年の訓練によってもたらされる特別なケースである。視覚・聴覚・触覚における一般的な場合では、推論には時 間的に変化する入力が必要である。

推論の一般的なケースと、静的な画像を推論するときの視覚の特別なケースを押さ えたところで、学習について見てみよう。学習するには、すべての HTM システムは訓 練の間、時間的に変化する入力に触れる必要がある。視覚では静的な画像の推論がとき には可能なものの、物体がどのようなものであるかを学習するためにはその物体が変化 する様子を見る必要がある。例えば、犬が読者に向かって走ってくる様子を想像してみ よう。時間的なそれぞれの瞬間において、犬の画像が貴方の眼の奥の網膜に一連のパタ ーンを形成する。貴方はこれらのパターンを同じ犬の異なる視点を表していると受け止 めるが、数学的に言えばそれらのパターンはほとんど似ても似つかない。脳はこれらの 異なるパターンが同じものを意味しているということを、その順序的な変化を観察する ことによって知る。時間はどの空間的なパターンが一緒に現れるかを教えてくれる「先生」である。

センサから得られる入力が変化するだけでは十分ではない点に注意されたい。無関 係な入力パターンが続けて現れるても混乱するだけである。時間的に変化する入力は、 世界のある固定した情報源からもたらされなければならない。また、我々が人の感覚器 官を例として取り上げているものの、非人間的なセンサもまた一般に適用できる点にも 注意されたい。もし発電所の温度・振動・雑音のパターンを認識するように HTM を訓 練したいのなら、HTM はこれらのセンサの時間的な変化からもたらされるデータで訓 練する必要がある。(時系列データ解析も参照のこと)

学習

HTM リージョンはセンサから得られるデータのパターンとパターンのシーケンス を見つけることで、その世界を学習する。リージョンはその入力が何を表しているのか を「知って」はいない。それは純粋に統計的な世界でのみ機能する。それは入力ビット の組み合わせのうち、頻繁に同時に起こる組み合わせを見ている。我々はこれを空間的 パターンと呼んでいる。そしてこれらの空間的パターンが時間と共にどのような順で現 れるかを見ている。我々はこれを時間的パターンないしシーケンスと呼んでいる。

もしリージョンへの入力が建物の環境に関するセンサであるなら、リージョンは建 物の北側や南側において、ある温度と湿度の組み合わせがしばしば起こることを見つけ るだろう。そしてこれらの組み合わせが毎日移り変わる様子を学習するだろう。

もしリージョンへの入力があるお店の購入に関する情報であれば、週末にある種の 雑誌が購入されることや、天候が寒いときはある種の価格帯のものが夕方頃に好まれる ことを見つけるだろう。そして異なる人の購入パターンが類似の時系列のパターンに従 うことを学習するだろう。

一つの HTM リージョンは学習の能力が限定されている。リージョンはそれがどれ だけのメモリを利用可能で、それが受け取った入力がどのくらい複雑であるかに応じて 何を学習するかを自動的に調整する。リージョンに割り当てられたメモリが削減された ら、リージョンが学習する空間的パターンはより単純なものとなる。割り当てられたメ モリが増加すると、学習する空間的パターンは複雑になりうる。学習した空間的パター ンが単純であれば、複雑な画像を理解するにはリージョンの階層構造が必要となりうる。 我々はこの特徴を、人の視覚システムに見ることができる。網膜から情報を受け取る新 皮質のリージョンは、視覚的な小さな領域についてだけ、空間的なパターンを学習する。 階層構造のいくつかのレベルを経由した後にだけ、視覚の全体像を認識する。

生物的システムと同様に、HTM リージョンの学習アルゴリズムは「オンライン学 習」ができる。即ち、新しい入力を受け取るごとに継続的に学習する。学習した後の方 が推論が改善されるが、学習フェーズと推論フェーズとを分ける必要はない。入力のパ ターンが変化するに従い、HTM リージョンもまた段階的に変化する。

推論

HTM が周囲の世界のパターンを学習すると、新しい入力について推論ができるようになる。HTM が入力を受け取ると、以前に学習した空間的ないし時間的パターンと 照合する。新しい入力が以前に格納したシーケンスとうまく適合することが、推論とパ ターンマッチングの本質である。

メロディをどうやって理解するかを考えてみよう。メロディの最初の音を聞いただ けでは良く分からない。次の音を聞けば可能性がかなり狭まるが、まだ十分ではないだ ろう。メロディを理解するためには普通は3,4,ないしそれ以上の音を聞く必要があ る。HTM リージョンの推論も似ている。それは継続的に入力列を見て、以前学習した シーケンと照合を試みる。HTM リージョンはシーケンスの最初からの照合を見つける こともできるが普通はもっと流動的で、それはちょうどメロディがどこから始まっても 貴方が理解できることと似ている。HTM リージョンは分散表現を用いるので、リージ ョンがシーケンスを記憶ないし推論することは上記のメロディの例よりも複雑である。 しかしこの例は、HTM が働く様子を示すものとなる。

予測

HTM の各リージョンはパターンのシーケンスを格納する。格納されたシーケンス を現在の入力とマッチングすることで、次に到着すると思われる入力の予測をする。 HTM リージョンは実際には疎分散表現の間の変遷を記録する。あるときはその変遷は メロディの中の音に見られるように線形のシーケンスであるが、一般的な場合は将来入 力される可能性があるものが同時に多数予測される。HTM リージョンはときには長期 間に及ぶ過去の文脈に基づいて異なる予測をする。HTM の記憶の多くはシーケンスの 記憶と空間的パターンの変遷を記憶することに使われる。

HTMの実装

HTMはnupiccomportexとして実装されている。nupicはClojureでの実装でありpyhtonに実装されたhtm.coreもある。Clojure環境の立ち上げに関しては”Clojureを始めよう“や”SublimeText4とVS code、LightTableでのClojureの開発環境立ち上げ“等を参照のこと

コメント

  1. […] Hierarchical Temporal Memory (階層型時間メモリ)とClojure […]

モバイルバージョンを終了
タイトルとURLをコピーしました