ゲート行列 (Gate Matrix)
C1 U1
X1 X2
U2 C2
略記
C1 U1
X1 X2
U2 C2
gateMatrix(
list(C1,C2), list(U1,U2), list(X1,X2) ));
制御ノード
下流ノード
上流ノード
U1 ->X1
U1 ->X2
U2 ->X1
U2 ->X2
QBC は等価な疑似ベイジアンネッ トに変換可能
C1 U1
X1 X2
U2 C2
C1 U1
X1 X2
U2 C2
¬U1 ¬U2
AND
OR
NOT
QBC
ベイジアンネット真のベイジアンネットにおける ゲート行列
C1 U1
X
U2 C2
P(X|C1,C2,U1,U2)=
Σ G1,G2 P(X|G1,G2)P(G1|C1,C2,U1)P(G2|C1,C2,U2)
ただしP(X=0|g1,g2) = (1-w1)^g1 x (1-w2)^g2 P(X=1|g1,g2) = 1-P(X=0|g1,g2)
P(G1=0|c1,c2,u1) = 1-P(G1=1|c1,c2,u1)
P(G1=1|c1,c2,u1) = (1-w_c1u1)^c1 x (1-w_c2u1)^c2 x (1-u1)
P(G2=0|c1,c2,u2) = 1-P(G2=1|c1,c2,u2)
P(G2=1|c1,c2,u2) = (1-w_c1u2)^c1 x (1-w_c2u2)^c2 x (1-u2)
このネットワークの場合、パラメタは6個。
パラメタ数は少ないが計算式は非常に複雑。
→
単純な活性化関数と大量のパラメタを持つ DNNとは対照的。QBCの実装
QBCの実装
•
QBCからQBNに変換した後、全解探索をす る。•
スケーラビリティに関する注意点:–
QBNのCPTサイズは親ノード数に対して最悪指 数オーダーで増える。–
QBNの全解探索はQBNのノード数に対して最 悪指数時間かかる。•
なお、真のベイジアンネット上で近似推論す る場合はこれらスケーラビリティの問題は起 きないと見込んでいる。SAT ソルバの利用
• Java
のSATソルバSAT4J
を使ったQBN
の全解探索が実装済み。非常に速い。現状の実装の問題点
•
この資料で説明した仕様と、現状の実装が食い違っ ている可能性がまだある。制限付きベイジアンネットの
スケーラビリティ
脳のモデルのスケーラビリティに ついて
•
モデルのパラメタ数が爆発しないことに加え、脳のモデルは下記の要件を満たすべき:
1.認識・学習の反復アルゴリズムの1ステップが 並列処理により実時間実行可能
2.認識・学習が多くの場合現実的なステップ数で 収束
3.認識・学習が多くの場合現実的な精度で収束
•
1を満たすかどうかはアルゴリズムが決まれ ば判定可能。2,3はタスク依存。将来、実験 で検証。制限付きベイジアンネットの スケーラビリティ
•
制限付きベイジアンネットの非常に重要な性 質:– noisy-OR, noisy-AND,
排他性制約ノードはいず れも親ノード数m
のときサイズO(m)
の二分木 のネットワークに変換できる。•
並列実行によって、多くの反復アルゴリズム の反復の1ステップがおそらく実時間で動作:–
推論:loopy BP
、平均場近似、MCMC–
学習:勾配降下法、stepwise EM
通常のベイジアンネットの問題点
X
Y1 Y2 Y3 Y4 ... Ym
X1 X2 X3 X4 ... Xm Y
多くの推論・学習アルゴリズムにおいて 親ノードの数に対し
指数関数的な計算量が必要
𝑂𝑂(𝑚𝑚)
𝑂𝑂(2 𝑚𝑚 )
推論・学習1ステップの 実行に必要な計算量
解決策:定数個の親ノードを持つ 等価なネットワークに変換
X
U1 U2 ... Um
このような変換が可能な条件付確率表モデルであれば、
推論・学習の1ステップの実行が
O(2^m)
からO(m)
に高速化X
Um U m-1
U1 T1
T2
Tm ...
親ノードの数
m
個 親ノードの数は高々2個で深さがO(m)
[Heckerman 1993]
noisy-OR モデルは等価な2分木のネ ットワークに変換可能
X
U0 U1 U2 U3
X
U3 U2
U1 U0
T0 T1
T2
T3 𝑃𝑃 𝑋𝑋 = 0 𝑢𝑢 0 , … , 𝑢𝑢 𝑚𝑚−1 = Π 𝑘𝑘=0 𝑚𝑚−1 1 − 𝑤𝑤 𝑘𝑘 𝑢𝑢 𝑘𝑘
𝑃𝑃(𝑇𝑇 0 = 0) = 1
𝑃𝑃 𝑇𝑇 𝑘𝑘+1 = 0 𝑇𝑇 𝑘𝑘 = 0, 𝑈𝑈 𝑘𝑘 = 𝑢𝑢 𝑘𝑘 = 1 − 𝑤𝑤 𝑘𝑘 𝑢𝑢 𝑘𝑘 𝑃𝑃 𝑇𝑇 𝑘𝑘+1 = 0 𝑇𝑇 𝑘𝑘 = 1, 𝑈𝑈 𝑘𝑘 = 𝑢𝑢 𝑘𝑘 = 0
𝑋𝑋 = 𝑇𝑇 𝑚𝑚
noisy-AND
も同様排他性制約ノードも等価な2分木 のネットワークに変換可能
Tm
X m-1
X 1
X 0 T0
T1 T2
Tk ∈ {0,1,2}
0:
活性ノード数01:
活性ノード数12:
活性ノード数2以上𝑃𝑃 𝑇𝑇 0 = 0 = 1
𝑃𝑃 𝑇𝑇 𝑘𝑘+1 = 0 𝑇𝑇 𝑘𝑘 = 0, 𝑋𝑋 𝑘𝑘 = 0 = 1 𝑃𝑃 𝑇𝑇 𝑘𝑘+1 = 1 𝑇𝑇 𝑘𝑘 = 1, 𝑋𝑋 𝑘𝑘 = 0 = 1 𝑃𝑃 𝑇𝑇 𝑘𝑘+1 = 1 𝑇𝑇 𝑘𝑘 = 0, 𝑋𝑋 𝑘𝑘 = 1 = 1 𝑃𝑃 𝑇𝑇 𝑘𝑘+1 = 2 𝑇𝑇 𝑘𝑘 = 1, 𝑋𝑋 𝑘𝑘 = 1 = 1 𝑃𝑃 𝑇𝑇 𝑘𝑘+1 = 2 𝑇𝑇 𝑘𝑘 = 2, 𝑋𝑋 𝑘𝑘 = ∗ = 1 𝑃𝑃 𝑅𝑅 = 1 𝑇𝑇 𝑚𝑚 = 0 = 1
𝑃𝑃 𝑅𝑅 = 1 𝑇𝑇 𝑚𝑚 = 1 = 1 𝑃𝑃 𝑅𝑅 = 1 𝑇𝑇 𝑚𝑚 = 2 = 0
R=1
...
QBCを使った
認知機能モデルの
プロトタイピング
認知機能モデルの
プロトタイピングの目的
•
制限付きベイジアンネットでさまざまな認知機 能が実現できることを示したい。•
モデルのパラメタがデータから学習できそうな ことを確認したい。•
制限付きベイジアンネットの仕様に問題がな いか確認し、問題があれば適宜改良したい。•
神経科学的知見との対応も確認したい。QBCが対象とする認知機能
1.
当面、カーネマンのいう「システム1」が対象(
カーネマン 「ファースト&スロー」2014)
–
システム1:直感的、無意識的、高速、不正確–
システム2:論理的、意識的、低速、正確2.
当面、大脳皮質の領野のみが対象–
特に、視覚野、言語野、前頭葉に注力3.
推論・認識のみが対象、学習は対象外4.
本資料では短期記憶・時系列処理は対象外 だが、今後は扱うベイジアンネットの 推論アルゴリズムと脳
•
2種類の推論アルゴリズム:–
短時間で解が求まるが不正確な近似アルゴリズ ム: 確率伝搬、平均場近似、etc.
–
時間をかければいくらでも精度を上げられるアル ゴリズム: MCMC•
前者が脳のシステム1、後者がシステム2に 近いと考えている。後者はおそらく前頭前野 やメタ認知が深く関与。単純なMCMCではな い。–
前述のとおりシステム2は本資料では扱わない。パラメタを学習可能な
モデルが満たすべき条件?
•
同一階層内のノードはすべて独立。•
ユニットの発火は一様かつスパース。•
生成モデルになっている。(root
ノードの任意 の値の組み合わせに対し解が必ず存在。)•
親ノードは子ノードの値の組を抽象化。•
問題のサイズに対してパラメタ数が爆発しな い。いまのところ、実装ずみのすべてのモデルは
これらの条件をだいたい満たしているように見える。
視覚野モデル
背側経路とグリッド細胞
Where1 Where0 What
L8 ... L1 L0
net.tableNodeList.add(tableNode(Where1, table(
row(V0,I,I,I,I,I,I,O,O,O), row(V1,I,I,I,O,O,O,I,I,I), row(V2,O,O,O,I,I,I,I,I,I) )));
net.tableNodeList.add(tableNode(Where0, table(
row(V0,I,I,O,I,I,O,I,I,O), row(V1,I,O,I,I,O,I,I,O,I), row(V2,O,I,I,O,I,I,O,I,I) )));
net.tableNodeList.add(tableNode(What, table(
row(A,A,A,A,A,A,A,A,A,A), row(B,B,B,B,B,B,B,B,B,B) )));
net.tableNodeList.add(tableNode(L8, table(row(A),row(B))));
net.tableNodeList.add(tableNode(L7, table(row(A),row(B))));
net.tableNodeList.add(tableNode(L6, table(row(A),row(B))));
net.tableNodeList.add(tableNode(L5, table(row(A),row(B))));
net.tableNodeList.add(tableNode(L4, table(row(A),row(B))));
net.tableNodeList.add(tableNode(L3, table(row(A),row(B))));
net.tableNodeList.add(tableNode(L2, table(row(A),row(B))));
net.tableNodeList.add(tableNode(L1, table(row(A),row(B))));
net.tableNodeList.add(tableNode(L0, table(row(A),row(B))));
net.gateMatrixes.add(new GateMatrix(
list(Where1,Where0), list(What), list(L8,L7,L6,L5,L4,L3,L2,L1,L0) ));
Where1, Where0, What, L8, L7, L6, L5, L4, L3, L2, L1, L0, V0, V0, A, 0, 0, 0, 0, 0, 0, 0, 0, A,
V0, V0, B, 0, 0, 0, 0, 0, 0, 0, 0, B, V0, V1, A, 0, 0, 0, 0, 0, 0, 0, A, 0, V0, V1, B, 0, 0, 0, 0, 0, 0, 0, B, 0, V0, V2, A, 0, 0, 0, 0, 0, 0, A, 0, 0, V0, V2, B, 0, 0, 0, 0, 0, 0, B, 0, 0, V1, V0, A, 0, 0, 0, 0, 0, A, 0, 0, 0, V1, V0, B, 0, 0, 0, 0, 0, B, 0, 0, 0, V1, V1, A, 0, 0, 0, 0, A, 0, 0, 0, 0, V1, V1, B, 0, 0, 0, 0, B, 0, 0, 0, 0, V1, V2, A, 0, 0, 0, A, 0, 0, 0, 0, 0, V1, V2, B, 0, 0, 0, B, 0, 0, 0, 0, 0, V2, V0, A, 0, 0, A, 0, 0, 0, 0, 0, 0, V2, V0, B, 0, 0, B, 0, 0, 0, 0, 0, 0, V2, V1, A, 0, A, 0, 0, 0, 0, 0, 0, 0, V2, V1, B, 0, B, 0, 0, 0, 0, 0, 0, 0, V2, V2, A, A, 0, 0, 0, 0, 0, 0, 0, 0, V2, V2, B, B, 0, 0, 0, 0, 0, 0, 0, 0,
すべての解
Where0
のユニットは一次元格子点上に受容野を持つ。
ネットワークの状態の例
V1 V0 A
0
位置
3進数1ケタめ 物体の形
注目する場所以外への 接続が閉じられる。
X7
0 X6
0 X5
0 X4
A X3
0 X2
0 X1
0 X0 0
X8 0
X9
位置
3進数2ケタめ
オクルージョン
WhereF WhereB WhatF
X0 X1
WhatB
net.tableNodeList.add(tableNode(WhereF, table(
// WhatF->X0, WhatB->X0, WhatF->X1, WhatB->X1 row(X0,O,I,I,O),
row(X1,I,O,O,I) )));
net.tableNodeList.add(tableNode(WhereB, table(
// WhatF->X0, WhatB->X0, WhatF->X1, WhatB->X1 row(X0,O,O,O,I),
row(X1,O,I,O,O) )));
net.tableNodeList.add(tableNode(WhatF, table(
row(A,A,A), row(B,B,B), row(O,O,O) )));
net.tableNodeList.add(tableNode(WhatB, table(
row(A,A,A), row(B,B,B), row(O,O,O) )));
net.tableNodeList.add(tableNode(X0, table(row(A),row(B))));
net.tableNodeList.add(tableNode(X1, table(row(A),row(B))));
net.gateMatrixes.add(new GateMatrix(
list(WhereF,WhereB), list(WhatF,WhatB), list(X0,X1) ));
WhereF, WhereB, WhatF, WhatB, X0, X1, X0, X0, 0, 0, 0, 0,
X0, X0, 0, A, 0, 0, X0, X0, 0, B, 0, 0, X0, X0, A, 0, A, 0, X0, X0, A, A, A, 0, X0, X0, A, B, A, 0, X0, X0, B, 0, B, 0, X0, X0, B, A, B, 0, X0, X0, B, B, B, 0, X0, X1, 0, 0, 0, 0, X0, X1, 0, A, 0, A, X0, X1, 0, B, 0, B, X0, X1, A, 0, A, 0, X0, X1, A, A, A, A, X0, X1, A, B, A, B, X0, X1, B, 0, B, 0, X0, X1, B, A, B, A, X0, X1, B, B, B, B, X1, X0, 0, 0, 0, 0, X1, X0, 0, A, A, 0, X1, X0, 0, B, B, 0, X1, X0, A, 0, 0, A, X1, X0, A, A, A, A, X1, X0, A, B, B, A, X1, X0, B, 0, 0, B, X1, X0, B, A, A, B, X1, X0, B, B, B, B, X1, X1, 0, 0, 0, 0, X1, X1, 0, A, 0, 0, X1, X1, 0, B, 0, 0, X1, X1, A, 0, 0, A, X1, X1, A, A, 0, A, X1, X1, A, B, 0, A, X1, X1, B, 0, 0, B, X1, X1, B, A, 0, B, X1, X1, B, B, 0, B,
すべての解
手前
奥 手前
奥
2つの物体の位置が重なっているとき、
手前のものだけが見える。
ネットワークの状態の例
X0 X0 A
A 0
B
手前の物体の 位置
奥の物体の 位置
手前の物体の 形
奥の物体の 形
「
X0
」 と「奥の物体の形」との 間の接続が閉じられる。X0 X1
言語野モデル
CCGのCYKパーザの 実現に向けて
•
いきなり大きいパーザを作るのは大変な上、推論に時間がかかるので、3つの機能に分解 して試作する。
1.すべての構文木を生成するネットワーク。
2.CCGの2つの統語範疇を1つに統合するネット ワーク。
3.CCGの意味規則(ラムダ式の適用・合成)に相 当する機能を実現するネットワーク。