開発
HTM (ぼくの夏休み)
Shota Oikawa
会津大学学部2年の及川と申します。
10月に近づくにつれて気温が低下していく中、皆様はいかかがお過ごしでしょうか?
私は HTM の勉強に日々を費やしております。
近年、シンギュラリティという言葉をよく耳にするようになりました。
シンギュラリティとは技術的特異点のことで、人工知能が人の能力を超えることで起こる出来事で云々…と、要は “最近、人工知能がアツいんだぜ!” ということです。シンギュラリティに関する記事はたくさんありますので、ここでは割愛させていただきます。
そんな人工知能ブームの中、私は HTM というものを知りました。
HTM とは “Hierarchical Temporal Memory” のことで、直訳すると “階層的時間的記憶” となります。今回はこの HTM についてのお話です。
HTM ってなんですか?
HTM は人間の脳にある大脳新皮質に焦点を当て、それを人工知能として再現するための理論です。
大脳新皮質について簡単に触れます
大脳新皮質は脳を覆っている皮のようなものです。下の画像で見えている部分がそれにあたります。すごくブヨブヨしてそうですね!
大脳新皮質の厚さは 2mm 程度で、6層構造を持っています。厚さ 2mm なのに6層に別れているなんて…なんて繊細なんだ!!!
大脳新皮質が脳を覆っていることから視覚、聴覚、味覚などの様々な機能に関係していることが分かります。
そしてこの大脳新皮質にはとても面白い特徴があります。
なんと…ほとんどの機能が共通のアルゴリズムで動いているのです!!!
視覚や嗅覚などまったく異なる機能が、ひとつのアルゴリズムで動いていることを知った時の衝撃は今でも忘れられません。
これを人工知能に用いるための理論が HTM です!!! 興味が沸かないわけがありませんね!!!!!!
話は HTM に戻ります
私達が日常的に触れている情報は、時間とともに常に変化しています。
風になびくススキも、好きなあの子の笑顔も…
キャッチボールを想像してみてください。ボールを投げると、視覚が捉えるボールの大きさはどんどん小さくなっていきます。瞬きをする前とした後の視覚が得る情報は全く異なりますが、私達はそれを同じボールだと認識することができます。
猫が自分の方へ歩いてきた場合も同様、視覚が受け取る猫の大きさは時間とともに大きくなり、シルエットも変化していきます。ですが、常時変化を続ける猫に対し、 “あっ、全く違う猫だ!” と思うことはありません。目の前にいる猫が変化している様子を連続して記憶しているので、変化の前後でこれらの猫は同一な猫である認識することができています。
つまり、変化の前後を記憶することによって物体を認識しているわけです。
大脳新皮質を参考にしつつ、時間の経過を連続的に記憶することによって物体の認識を行うため、
Hierarchical Temporal Memory -HTM- ということです。
HTM の構造
四角をノード、矢印を識別対象の情報とします。 ※ 説明しやすくするため、層の数を3つにさせていただきます。
level 1 ノードは level 2 ノードに、level2 ノードは level 3 ノードにそれぞれ図のように接続しています。HTM を識別可能な状態にするためには、各ノードに対し学習フェーズと推論フェーズを行いますが、以下のプロセスに沿う必要があります。
- level 1 学習フェーズ
- level 1 推論フェーズ
- level 2 学習フェーズ
- level 2 推論フェーズ
- level 3 学習フェーズ
- level 3 推論フェーズ
レベル間のノードの接続は現在、上に位置している最も近いノードと接続する形になっていますが、今後は相互情報量などをもとに接続先を決めるような実装なども考えております。
学習フェーズ
学習フェーズで行うことは主に3 あります。学習フェーズでは出力はしません。
- 受け取る情報(パターン)の記憶
- マルコフ連鎖の作成
- 時間グループの作成
記憶した情報をもとにマルコフ連鎖をつくることにより、次に発生するパターンの確率を得ることができます。それにより、次に発生するパターンを予測することができます。
時間グループの作成は、マルコフ連鎖によって得られた確率をもとにパターンがどのように変化していくのかを知るために必要となります。
推論フェーズ
推論フェーズでは、パターンがどの時間グループに属す確率が高いのかという確率を出力します。まず、受け取った確率に対し、以下のように計算を行います。
その後、時間グループが与えられた時のエビデンス(パターン)が発生する条件付き確率を求め、この値を推論フェーズでの出力としています。
推論フェーズでは時間グループをもとに計算を進めていくので、時間に関する情報は重要ではなくなります。ですから、学習フェーズでは一次のマルコフ連鎖を使用し、推論フェーズでは0次のマルコフ連鎖を使用する形なります。
最後に
今回は HTM の概要について軽く触れさせていただきました。私は、松田 卓也先生を始めとした外部の方々が行っている HTM 研究会に参加させていただいております。その研究会で読み進めた論文や得られた知識をもとに Python の方で実装を行っていますが、一ヶ月かけてようやく7割といった状態ですのでもっと効率よく進めていきたいです。
推論フェーズ中の計算のうち、フィードバックの計算のところがまだよく理解が出来ていないのでこれからも継続して勉強していきます。もっと理解を深めていきたいので、ここの解釈の仕方が違っているぞ等ございましたら指摘していただけると大変助かります。
詳しく知りたい方は以下に参考にした論文を添付していますので、是非目を通してみてください!
参考文献
HOW THE BRAIN MIGHT WORK:
A HIERARCHICAL AND TEMPORAL MODEL FOR LEARNING AND RECOGNITION
Dileep George
http://alpha.tmit.bme.hu/speech/docs/education/02_DileepThesis.pdf
Towards a Mathematical Theory of Cortical Micro-circuits
Dileep George, Jeff Hawkins
http://alpha.tmit.bme.hu/speech/docs/education/03_CorticalMicroCircuits.pdf
Pattern Recognition by Hierarchical Temporal Memory
Maltoni, Prof. Davide
http://cogprints.org/9187/