新しく発言する EXIT インデックスへ
カオス・ニューラル・ネットの連想記憶

  カオス・ニューラル・ネットの連想記憶 SECOND 2006/12/03 06:57:10 
  !続き SECOND 2006/12/03 06:58:22 
  説明 SECOND 2006/12/03 18:42:04 

  カオス・ニューラル・ネットの連想記憶 SECOND 2006/12/03 06:57:10  ツリーへ

カオス・ニューラル・ネットの連想記憶 返事を書く
SECOND 2006/12/03 06:57:10
!カオス・ニューラル・ネットの連想記憶
!----
OPTION ARITHMETIC NATIVE
OPTION BASE 0
DIM E(99)
DIM F(99),ema0(99,99)
DIM R(99),Y(99),X(99),Shita(99)
DIM S_(5),P_(99,5)

LET S_(0)=1

LET Kr=0.95
LET Kf=0.4
LET Ke=0.5
LET Af=1
LET Th=0
LET Ei=-100

FOR I=0 TO 99
LET F(I)=I/99-0.5
NEXT I

SET WINDOW -10,10, 20,0
SET LINE COLOR 2

MAT Shita=ZER !Th
CALL Mat_W2
PLOT TEXT,AT -9, 9:"マウス、右クリックで 終了。"
PLOT TEXT,AT -9,10:"左クリック STOP/START"
DO
DO
SET TEXT COLOR 0
PLOT TEXT,AT -9,8:"t="&STR$(T)
LET T=T+1
SET TEXT COLOR 1
PLOT TEXT,AT -9,8:"t="&STR$(T)
CALL DispX
CALL Compare
CALL Xi00
MOUSE POLL mx,my,mlb,mrb !マウスの状態取得
WAIT DELAY 0.05
LOOP UNTIL mlb=1 OR mrb=1
IF mlb=1 THEN
DO
WAIT DELAY 0.02
MOUSE POLL mx,my,mlb,mrb
LOOP UNTIL mlb=0
DO
WAIT DELAY 0.02
MOUSE POLL mx,my,mlb,mrb
LOOP UNTIL mlb=1 OR mrb=1
WAIT DELAY 0.1
END IF
LOOP UNTIL mrb=1

!画面表示。各ニューロン(0~99) の発火状態
SUB DispX
SET DRAW mode hidden
SET AREA COLOR 0
PLOT AREA:-10,10; 0,10; 0,0; 10,0; 10,20;-10,20
SET AREA COLOR 4
FOR V=0 TO 9
FOR H=0 TO 9
LET i=V*10+H
IF 0.5=<X(i) THEN
PLOT AREA: H,V; H+1,V; H+1,V+1; H,V+1
SET TEXT COLOR 4
LET P_(i,0)=1
ELSE
PLOT LINES: H,V; H,V+1; H+1,V+1
SET TEXT COLOR 2
LET P_(i,0)=0
END IF
!---- ニューロンの内部(-~0~+) 0=< は発火
PLOT TEXT,AT H*2-10, V*0.8+12, USING"###.###":Y(i)
NEXT H
NEXT V
SET DRAW mode explicit
END SUB

!カオス・ニューラル・ネットの計算本体部分
SUB Xi00
FOR i=0 TO 99
LET w=0
FOR j=0 TO 99
LET w=w+ema0(i,j)*X(j)
NEXT J
LET F(i)=Kf*F(i)+w
LET R(i)=Kr*(R(i)+Shita(i))-Af*X(i)-Shita(i)
LET Y(i)=E(i)+R(i)+F(i)
NEXT I
FOR i=0 TO 99
WHEN EXCEPTION IN
LET X(i)=1/(1+EXP(Ei*Y(i)) )
USE
LET X(i)=1/(1+EXP(-10*Y(i)) ) !overflow( about!)
END WHEN
NEXT I
END SUB

!連想記憶サンプル読み込み
SUB Mat_W2
RESTORE 70000
SET POINT COLOR 1
SET POINT STYLE 1
MAT ema0=ZER
LET n_=0
DO
READ w
IF 1<w THEN EXIT DO
LET n_=n_+1
LET P_(0,n_)=w
FOR i=1 TO 99
READ P_(i,n_)
LET w=w+P_(i,n_)
NEXT i
LET DC=w/100
! 連想記憶サンプル一覧表示
FOR j=0 TO 9
FOR i=0 TO 9
IF P_(j*10+i,n_)>0 THEN PLOT POINTS: (i/14)-9,(j/14)+n_-.1
NEXT i
NEXT j
SET TEXT COLOR 1
PLOT TEXT,AT -6,n_+.5:"DC="&STR$(w)&"/100"
PLOT TEXT,AT -8,n_+.5:":"&STR$(S_(n_))
! 相互結合係数作成
FOR i=0 TO 99
FOR j=0 TO 99
LET ema0(i,j)=ema0(i,j)+(P_(i,n_)-DC)*(P_(j,n_)-DC)
NEXT j
NEXT i
LOOP
LET P9=n_
END SUB

  !続き SECOND 2006/12/03 06:58:22  ツリーへ

Re: カオス・ニューラル・ネットの連想記憶 返事を書く
SECOND 2006/12/03 06:58:22
!続き

!画面表示。想起パターンの分別 計数
SUB Compare
FOR n_=1 TO P9
FOR i=0 TO 99
IF P_(i,n_)<>P_(i,0) THEN EXIT FOR
NEXT i
IF 99<i THEN
! ---- 一致
LET PC_=10
IF PB_=n_ THEN EXIT SUB
SET TEXT COLOR 1
PLOT TEXT,AT -8,S_(0)+.5:":"&STR$(S_(S_(0)))
LET PB_=n_ !(控え)
LET S_(0)=n_ !パターン番号
LET S_(n_)=S_(n_)+1 !計数
CALL Prt(4,-8,n_+.5,":"&STR$(S_(n_)))
EXIT SUB
END IF
NEXT n_
!---- 不一致
IF PB_=0 THEN EXIT SUB
IF PC_>1 THEN
LET PC_=PC_-1
EXIT SUB
END IF
CALL Prt(4,-8,PB_+.5,":"&STR$(S_(PB_)))
LET PB_=0
END SUB

SUB Prt(c,x,y,w$)
SET AREA COLOR 0
PLOT AREA:x,y;x+2,y;x+2,y-.6;x,y-.6
SET TEXT COLOR c
PLOT TEXT,AT x,y:w$
END SUB

!Kr=0.95 :Kf=0.4 :Ke=0.5 :Af=1 :Th=0 :Ei=-100
70000 DATA 1,1,0,0,0,0,0,0,1,1
DATA 1,1,1,0,0,0,0,1,1,1
DATA 0,1,1,1,0,0,1,1,1,0
DATA 0,0,1,1,1,1,1,1,0,0
DATA 0,0,0,1,1,1,0,0,0,0
DATA 0,0,0,0,1,1,1,0,0,0
DATA 0,0,1,1,1,1,1,1,0,0
DATA 0,1,1,1,0,0,1,1,1,0
DATA 1,1,1,0,0,0,0,1,1,1
DATA 1,1,0,0,0,0,0,0,1,1

DATA 0,0,0,0,0,1,0,0,0,0
DATA 0,0,0,0,1,1,1,0,0,0
DATA 0,0,0,0,1,1,1,0,0,0
DATA 0,0,0,1,1,1,1,1,0,0
DATA 0,0,0,1,1,0,1,1,0,0
DATA 0,0,1,1,1,0,1,1,1,0
DATA 0,0,1,1,0,0,0,1,1,0
DATA 0,1,1,1,0,0,0,1,1,1
DATA 0,1,1,1,1,1,1,1,1,1
DATA 0,1,1,1,1,1,1,1,1,1

DATA 0,0,1,1,1,0,0,0,1,1
DATA 0,1,1,1,1,1,1,1,1,1
DATA 1,1,1,0,1,1,1,1,0,0
DATA 1,1,0,0,0,1,1,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,1,1,0,0,0,1,1
DATA 0,0,1,1,1,1,0,1,1,1
DATA 1,1,1,1,1,1,1,1,1,0
DATA 1,1,0,0,0,1,1,1,0,0
DATA 0,0,0,0,0,0,0,0,0,0

DATA 0,0,1,0,0,0,0,1,0,0
DATA 0,0,1,1,0,0,1,1,0,0
DATA 0,0,1,1,1,1,1,1,0,0
DATA 0,0,1,1,1,1,1,1,0,0
DATA 0,0,1,1,1,1,1,1,0,0
DATA 0,1,1,1,1,1,1,1,1,0
DATA 1,1,1,1,1,1,1,1,1,1
DATA 0,0,0,1,1,1,1,0,0,0
DATA 0,0,0,0,1,1,1,0,0,0
DATA 0,0,0,0,0,1,0,0,0,0

DATA 0,0,0,0,1,1,0,0,0,0
DATA 0,1,1,0,1,1,0,1,1,0
DATA 0,1,0,0,1,1,0,0,1,0
DATA 0,0,0,0,1,1,0,0,0,0
DATA 1,1,1,1,1,1,1,1,1,1
DATA 1,1,1,1,1,1,1,1,1,1
DATA 0,0,0,0,1,1,0,0,0,0
DATA 0,1,1,0,1,1,0,1,1,0
DATA 0,1,1,0,1,1,0,1,1,0
DATA 0,0,0,0,1,1,0,0,0,0

DATA 9 !end mark
END

  説明 SECOND 2006/12/03 18:42:04  ツリーへ

Re: カオス・ニューラル・ネットの連想記憶 返事を書く
SECOND 2006/12/03 18:42:04
説明
カオス・ニューラル・ネット。我われ自身の脳神経細胞の模型です

一つ器に詰め込まれて合算され、一緒くた、にされた映像が、
きれいに分離して、入れ替わったり 崩れたり 漂流して行くカオス。

0~t 時刻のm個の外部入力と、n個のニューロン出力から
t+1 時刻のi番ニューロンの出力 Xi(t+1)を求める

<基本式>

Ei(t+1)=Σj=1~m Vij・Σd=0~t Ke^d・Aj(t-d)
Fi(t+1)=Σj=1~n Wij・Σd=0~t Kf^d・Hij( Xj(t-d) )
Ri(t+1)= -SHITAi -ALFA・Σd=0~t Kr^d・Gi( Xi(t-d) )
Yi(t+1)=Ei(t+1)+Fi(t+1)+Ri(t+1)

Xi(t+1)=sigmoid( Yi(t+1) ) .... (0~0.5~1) ← (-~0~+)

<各記号の説明>

X = sigmoid( Y )
  = 1/( 1+exp(-Y/EPSILON) ) .... 0< EPSILON (微小な正の数)

Ei(t) i番ニューロン が特別に受ける 外部の入力成分 (EXTERNAL)
Vij  i番ニューロン が受けるj番 外部信号からの結合係数 (2次元の配列)
Ke   0<値<1 の減衰定数
Aj(t) m個の内のj番目の外部信号源

Fi(t) i番ニューロン がj番から受ける 内部の相互入力成分 (FEED BACK)
Wij  i番ニューロン が受けるj番ニューロンからの相互結合係数 (2次元の配列)
Kf   0<値<1 の減衰定数
Hij() 接続線路が非直線だった時の伝達関数、リニア なら不要
Xj(t) n個の内のj番目のニューロン からの出力 0〜1の値。(0.5=<発火)

Ri(t) i番ニューロン 自身の感度を不応にする負性の入力成分 (REJECTION)
SHITAi i番ニューロン 不応の固定成分 (しきい値) 各i別々に。(1次元の配列)
ALFA  i番ニューロン 自身の感度を不応にする負性の自己帰還結合係数
Kr   0< 値<1 の減衰定数
Gi()  i番自身への接続線路が非直線だった時の伝達関数、リニア なら不要

Yi(t) i番ニューロン の総合入力 −〜0〜+ ( 0=<発火)
Xi(t) i番ニューロン の最終出力 0〜1の値。(0.5=<発火)


t 時刻の各出力だけで、t+1 時刻のi番が求まる様に、代数変形(同一)

<等価式>

Ei(t+1)=Ke・Ei(t)    +Σj=1~m Vij・Aj(t)
Fi(t+1)=Kf・Fi(t)    +Σj=1~n Wij・Hij( Xj(t) )
Ri(t+1)=Kr・( Ri(t)+SHITAi ) -SHITAi -ALFA・Gi( Xi(t) )
Yi(t+1)=Ei(t+1)+Fi(t+1)+Ri(t+1)

Xi(t+1)=sigmoid( Yi(t+1) ) .... (0~0.5~1) ← (-~0~+)

文献:放送大学教材 56259-1-9711 カオスの数理と技術 著者:合原一幸


プログラムで使用した計算式は、Hij(),Gi()を省略、-1/EPSILONを定数に

Ei(t+1)=Ke・Ei(t)    +Σj=1~m Vij・Aj(t)
Fi(t+1)=Kf・Fi(t)    +Σj=1~n Wij・Xj(t)
Ri(t+1)=Kr・( Ri(t)+SHITAi ) -SHITAi -ALFA・Xi(t)
Yi(t+1)=Ei(t+1)+Fi(t+1)+Ri(t+1)

Xi(t+1)=1/( 1+exp(定数・Yi(t+1)) ) .... 定数<0


さらに、t、t+1 は、計算前と後に割り当てる為、分離せず.
配列変数は、i番j番だけで広げ、最終的に次の様になっています

E(i)=Ke・E(i)    +Σj=1~m V(i,j)・A(j)
F(i)=Kf・F(i)    +Σj=1~n W(i,j)・X(j)
R(i)=Kr・( R(i)+SHITA(i) ) -SHITA(i) -ALFA・X(i)
Y(i)=E(i)+F(i)+R(i)

X(i)=1/( 1+exp( ei・Y(i)) ) .... ei<0


インデックスへ EXIT
新規発言を反映させるにはブラウザの更新ボタンを押してください。