ヘッブの法則& ホップフィールドネットワーク

中間発表
ヘッブの法則&
ホップフィールドネットワーク
15K0008 門木斗夢
15K0039 山下航
ヘッブの法則 – hebb.py
メンバ変数 – memory & memory_size
メンバ変数 – memory & memory_size
memory = [ ] : 二次元配列
memory_size = 0 : memoryの大きさ
メンバ変数 – memory & memory_size
メンバ変数 – memory & memory_size
オブジェクト生成の際に、
要素がすべて「0」の二次元配列を作成、
その大きさを保存する。
メンバ関数 – learn & remember
メンバ関数 – learn & remember
学習データの形式が 無効(sizeが一致しない)の場合、行わない
有効である場合、学習データに基づいて結びつきを学習させる
メンバ関数 – learn & remember
メンバ関数 – learn & remember
学習データの形式が無効(sizeが一致しない)の場合、行わない
有効である場合、 memory と学習データの内積を求めて
正規化することで現在の memory の状態で
学習データから何を思い出せたかを判別する。
関数 – learn & remember
この2つの関数 learn と remember は
同じ名前のメンバ関数の動作を視覚できるようにするもの
ホップフィールド – hopfield.py
関数 – learn_event
関数 – learn_event
引数 event は結びつきを変化させたい2つのニューロン
引数 links は今までの学習内容を保存した行列を表す
関数 – learn_event
関数 – learn_event
ネットワークのすべてのニューロンの結びつきについて、
結びつきを強めたいニューロン同士なら +1 をして強める
強めたい要素とそうでないニューロンの時は -1 をして弱める
そうでないニューロン同士の場合、 +1 をして強める
関数 – run_hopfield
関数 – run_hopfield
刺激を与えたいニューロンが neurons
今までの学習内容を保存した行列 links
行列 links に ベクトル neurons を掛け、
それを正規することで思い出せた結びつきを保存する
関数 – test
関数 – test
関数 test はホップフィールドネットワークの実行を
実際に行なうプログラム
print を活用し、視覚化している