TMの自己連想記憶

Autoassociative memory of TM

TMは異なるシーケンスを、どのように処理するのでしょうか。いくつかの基本的な特性を確認します。

"ABCDXY"という6つのカテゴリーを用意します。シーケンス"ABCD"とシーケンス"XBCY"を与えることで学習・予測がどの様に変化するかを確認します。

python3
import numpy as np
import random
random.seed(1)

from htm.bindings.sdr import SDR
from htm.algorithms import TemporalMemory as TM
python3
tm = TM(
  columnDimensions = (2048,),
  cellsPerColumn=8,
  initialPermanence=0.21,
  connectedPermanence=0.3,
  minThreshold=15,
  maxNewSynapseCount=40,
  permanenceIncrement=0.1,
  permanenceDecrement=0.1,
  activationThreshold=15,
  predictedSegmentDecrement=0.01,
  )

"ABCDXY"のカテゴリーはSPの出力を想定して、大きさ2048ビットでスパース値0.02%のSDRで表現します。

1)まずは、シーケンス"ABCD"を10回学習させ、"ABCDXY"を1回づつ予測させます。

"X"、"Y"の予測がされていないことを確認してください。

2)つづいてまずは、シーケンス"XBCY"を10回学習させます。tm.reset() で学習結果をリセットしますので注意してください。その後"ABCDXY"を1回づつ予測させます。

"A"、"D"の予測がされていないことを確認してください。

3)最後に、シーケンス"ABCD"とシーケンス"XBCY"をランダムに100回学習させます。そして"ABCDXY"を1回づつ予測させます。

ここではカテゴリー"C"に注目してください。予測したミニカラムは"D"と"Y"を内在した表現になっています。

TMのアクティブセルの抽出は、tm.getActiveCells() メソッドを使用します。

一時記憶の予測セルの抽出は、tm.getPredictiveCells() メソッドを使用します。

TM層は入力次元 × cellsPerColumn (ここでは8)であることに注目してください。"C"入力時のアクティブセルと予測セルを可視化すると以下の様になります。

図5-1
図5-2

予測セルが"D"と"Y"を内在した表現になっていることを確認してください。

最終更新