分類アルゴリズムの実装方法

Classifier algorithms Tutori

分類アルゴリズムを実装します。分類アルゴリズムを使うためには、ラベルとデータのセットが必要になります。ここでは "cat", "dog", "monkey", "slow loris" の4つのラベルを用意します。

python3
import numpy as np
from htm.bindings.encoders import ScalarEncoder, ScalarEncoderParameters
from htm.bindings.sdr import SDR
from htm.algorithms import SpatialPooler as SP
from htm.bindings.algorithms import Classifier

categories = {"cat":0, "dog":1, "monkey":2, "slow loris":3}

スカラエンコーダーを定義します。4カテゴリーでカテゴリーあたり4ビットで指定しました。

python3
scalarEncoderParams = ScalarEncoderParameters()
scalarEncoderParams.minimum = 0
scalarEncoderParams.maximum = 3
scalarEncoderParams.activeBits = 4
scalarEncoderParams.category = True

enc = ScalarEncoder(scalarEncoderParams)

SPのパラメーターを設定します。

python3
inputSDR  = SDR( dimensions = (15, ) )
activeSDR = SDR( dimensions = (256, ) )
sp = SP(inputDimensions  = inputSDR.dimensions,
        columnDimensions = activeSDR.dimensions,
        localAreaDensity = 0.02,
        globalInhibition = True,
        seed             = 1,
        synPermActiveInc   = 0.01,
        synPermInactiveDec = 0.008)

分類アルゴリズムを定義します。

バッジサイズを3で指定します。SP層の学習・推論とあわせて、分類器も学習します。

"cat"カテゴリーから一部アクティブセルが欠落し、"dog"の要素を含んだSDRを作成してテストしてみます。

分類器で分類します。

"cat"と分類されました。PDFを可視化してみます。

図4-6

"dog"を表す"1"の部分が反応しているのが分かります。バッジサイズ3で学習したのでこの結果になっていますが、学習回数が進み、シナプスの結合が強化されると"dog"への反応はなくなりますので注意してください。

最終更新