More Related Content
Similar to 確率的グラフィカルモデルと離散構造 (20)
確率的グラフィカルモデルと離散構造
- 2. 石畠 正和(いしはた まさかず)
• 経歴
– 2001-2006 石川高専
– 2006-2013 東工大(学部・修士・博士)
– 2013-2016 NTTコミュニケーション科学基礎研究所 研究員
– 2016-2018 北海道大学 特任助教(出向)
– 2018-現在 NTTコミュニケーション科学基礎研究所 研究主任
• 研究テーマ
– 人工知能・機械学習
– 論理と確率・離散構造処理
2019/7/19 全脳アーキテクチャ勉強会
2
@m_ishihata
- 4. まとめ
• Bayesian Network (BN) は有向グラフで同時分布を表現
– BN は確率推論・学習は一般的には難しい
– 変数の独立性を適切に仮定することでモデルの複雑さと表現力を調整
• 変数の独立性は論理関数で記述できる ← ここを伝えたい!
– 条件付き確率だけではなく、もっと細かな独立性も扱える
– 論理関数をコンパクトに表現できれば効率的な確率推論・学習が可能
• BDDを用いることでBNの計算を効率的に行える ← ここはささっと!
– 変数の依存性を表す論理関数をBDDでコンパクトに表現
– BDD上の動的計画法で確率計算・学習が可能
2019/7/19 全脳アーキテクチャ勉強会
4
- 5. 論理と確率
• 論理 : 正確な 関係を記述 ! ⇒ #
– デフォルトは独立、依存性を仮定する
– 論理変数 !, # はデフォルトでは独立
– ! ∨ #, ! ∧ #, ! ⇒ # などで依存性を記述
• 確率 : 柔軟な 関係を記述 '(# ∣ !)
– デフォルトは依存、独立性を仮定する
– 確率変数 !, # はデフォルトでは依存
– '(!, #) = '(!)'(#) などで独立性を記述
2019/7/19 全脳アーキテクチャ勉強会
5
- 6. 論理と確率
• 論理 : 正確な 関係を記述 ! ⇒ #
– デフォルトは独立、依存性を仮定する
– 論理変数 !, # はデフォルトでは独立
– ! ∨ #, ! ∧ #, ! ⇒ # などで依存性を記述
• 確率 : 柔軟な 関係を記述 '(# ∣ !)
– デフォルトは依存、独立性を仮定する
– 確率変数 !, # はデフォルトでは依存
– '(!, #) = '(!)'(#) などで独立性を記述
2019/7/19 全脳アーキテクチャ勉強会
6
論理に確率を導入
- Probabilistic Logic Programming
- Statistical Relational Learning
※ 今日はこの話はしません
- 7. 論理と確率
• 論理 : 正確な 関係を記述 ! ⇒ #
– デフォルトは独立、依存性を仮定する
– 論理変数 !, # はデフォルトでは独立
– ! ∨ #, ! ∧ #, ! ⇒ # などで依存性を記述
• 確率 : 柔軟な 関係を記述 '(# ∣ !)
– デフォルトは依存、独立性を仮定する
– 確率変数 !, # はデフォルトでは依存
– '(!, #) = '(!)'(#) などで独立性を記述
2019/7/19 全脳アーキテクチャ勉強会
7
論理に確率を導入
- Probabilistic Logic Programming
- Statistical Relational Learning
※ 今日はこの話はしません
確率に論理を導入
- Tractable Probabilistic Modeling
- Bayesian Network w/ Structures
※ 今日はこの話をします!
- 8. 確率モデリング
• 確率モデリングとは
– 興味のある対象を 確率モデル として表現すること
• 確率モデル = 確率分布
– 同時確率分布 !(#, %)
– 条件付き確率分布 !(% ∣ #)
• 用途
– 予測・分類・診断
– 期待値・リスクの定量化
– 現象の理解
2019/7/19 全脳アーキテクチャ勉強会
8
- 9. 有名な確率モデル
• Naïve Bayes Classifier (NBC)
– 識別・クラスタリング
• Hidden Markov Model (HMM)
– 系列データ解析
• Latent Dirichlet Allocation (LDA)
– トピック分析
Y
X1 X2 XN
Z1
X1 X2 XN
Z2 ZN
...
...
...
Zdi Xdiθd
φkβα
2019/7/19 全脳アーキテクチャ勉強会
9
- 12. Bayesian Network (BN)
• BN = DAG + CPT
– 複数の確率変数の 同時分布 を記述
• Directed Acyclic Graph (DAG): Model
– 有向非循環グラフ
– 確率変数間の 条件付き独立性 を記述
• Conditional Probability Table (CPT): Parameter
– 条件付き確率表
– 各確率変数の 条件付き確率分布 を記述
2019/7/19 全脳アーキテクチャ勉強会
12
- 13. Bayesian Network (BN)
• BN = DAG + CPT
– 複数の確率変数の 同時分布 を記述
• Directed Acyclic Graph (DAG): Model
– 有向非循環グラフ
– 確率変数間の 条件付き独立性 を記述
• Conditional Probability Table (CPT): Parameter
– 条件付き確率表
– 各確率変数の 条件付き確率分布 を記述
2019/7/19 全脳アーキテクチャ勉強会
13
!"
!# !$
!# ⊥ !$ ∣ !"
' !", !#, !$ = ' !" ' !# !" '(!$ ∣ !")
!" '(!#|!")
0 0.0
1 0.3
!" ' !$ !"
0 0.9
1 1.0
- ' !"
- 0.4
' !" = 1, !# = 1, !$ = 1
= ' !" = 1 ' !# = 1 !" = 1 ' !$ = 1 !" = 1
= 0.4×0.3×1.0
- 14. Bayesian Network (BN)
1. 周辺確率計算 (EI: Exact Inference)
– Input: DAG, CPT
– Output: 特定の確率変数の周辺確率
2. パラメータ学習 (PL: Parameter Learning)
– Input: 観測, DAG
– Output: 観測を得る確率(尤度)を最大化する CPT
3. 構造学習 (SL: Structure Learning)
– Input: 観測
– Output: あるモデル選択基準を最大化する DAG (+ CPT)
2019/7/19 全脳アーキテクチャ勉強会
14
ID !" !# !$
1 0 1 0
… … … …
N 1 1 0
!"
!# !$
!" %(!#|!")
0 0.0
1 0.3
!" % !$ !"
0 0.9
1 1.0
- % !"
- 0.4
- 15. Bayesian Network (BN)
1. 周辺確率計算 (EI: Exact Inference)
– Input: DAG, CPT
– Output: 特定の確率変数の周辺確率
2. パラメータ学習 (PL: Parameter Learning)
– Input: 観測, DAG
– Output: 観測を得る確率(尤度)を最大化する CPT
3. 構造学習 (SL: Structure Learning)
– Input: 観測
– Output: あるモデル選択基準を最大化する DAG (+ CPT)
2019/7/19 全脳アーキテクチャ勉強会
15
- 16. 確率モデルを設計する
• モデルの設計
– モデルの 複雑さ と 表現力 のトレードオフを コントロール
• モデルの複雑さ = 計算量
– 何も仮定しない → 指数的な計算量 L
– 独立性を仮定する → 効率的に計算可能 J
• モデルの表現力 = 精度
– 何も仮定しない → あらゆる分布を表現可能 J
– 独立性を仮定する → 特定の分布しか表現できない L
2019/7/19 全脳アーキテクチャ勉強会
16
!"
!#
!$
!%
!"
!#
!$
!%
2 + 2$ + 2# + 2% = 30 2 + 3×2$ = 14
- 17. Bayesian Network のどこが辛い?
2019/7/19 全脳アーキテクチャ勉強会
17
• DAGの候補が指数的に大きくなる
= モデル数が指数的に多くなる
– N頂点のDAGの数 !"
– !" = ∑%&'
"
−1 %*' "
% 2%("*%)!"*%
• CPTサイズが指数的に大きくなる
= パラメータ数が指数的に多くなる
– Y の CPTサイズ = 2|/0|
– Π2 = {4 ∈ 6 ∣ 4, 9 ∈ :} : Yの親集合
4'
4<
4= 4' 4=
4' 4=
4<
4' 4=
4<
4' 4=
4<
4' 4=
2!= = 3
6
612
!< = 25
!@ = 543
1
1
- 18. Bayesian Network のどこが辛い?
2019/7/19 全脳アーキテクチャ勉強会
18
!"!#
$
!%• DAGの候補が指数的に大きくなる
= モデル数が指数的に多くなる
– N頂点のDAGの数 &'
– &' = ∑*+#
'
−1 *.# '
* 2*('.*)&'.*
• CPTサイズが指数的に大きくなる
= パラメータ数が指数的に多くなる
– Y の CPTサイズ = 2|34|
– Π6 = {!8 ∣ !8, $ ∈ <} : Yの親集合
….!# !" !> !? @($|!)
0 0 0 0 p1
0 0 0 1 p2
0 0 1 0 p3
0 0 1 1 p4
0 1 0 0 p5
0 1 0 1 p6
0 1 1 0 p7
0 1 1 1 p8
1 0 0 0 p9
1 0 0 1 p10
1 0 1 0 p11
1 0 1 1 p12
1 1 0 0 p13
1 1 0 1 p14
1 1 1 0 p15
1 1 1 1 p16
- 19. Local Structures in CPTs
• CPT 内に構造 (= 独立性) を仮定する
0. Conditional Independence (CI)
1. Context Specific Independence (CSI)
2. Partial Exchangeability (PE)
3. Generalized CSI (GCSI)
• 構造を利用することで効率的な推論を実現
– パラメータ数を減らす (= Parameter Tying)
– データ構造を利用した効率的な推論
2019/7/19 全脳アーキテクチャ勉強会
19
- 20. Local Structures in CPTs
• アイディア
– 本当に指数個のパラメータは必要ですか?
– 同じ確率になる場合もがあるのでは?
• Parameter Tying
– 異なるパラメータを同一とみなす
– パラメータの異なり数を減らす
– 特別な独立性を導入することで表現可能
2019/7/19 全脳アーキテクチャ勉強会
20
!" !# !$ %('|!)
0 0 0 p1
0 0 1 p2
0 1 0 p3
0 1 1 p4
1 0 0 p5
1 0 1 p6
1 1 0 p7
1 1 1 p8
!#!"
'
!$
- 21. Local Structures in CPTs
0. Conditional Independence
2019/7/19 全脳アーキテクチャ勉強会
21
!" !# !$ %('|!)
0 0 0 p1
0 0 1 p1
0 1 0 p2
0 1 1 p2
1 0 0 p3
1 0 1 p3
1 1 0 p4
1 1 1 p4
!" !# !$ %('|!)
0 0 * p1
0 1 * p2
1 0 * p3
1 1 * p4
!$ ⊥ ' ∣ !", !#
* = don t care
- 22. Local Structures in CPTs
1. Context-Specific Independence (CSI)
2019/7/19 全脳アーキテクチャ勉強会
22
!" ⊥ $ ∣ !& = 0, !*
!& !* !" +($|!)
0 0 0 p1
0 0 1 p1
0 1 0 p2
0 1 1 p2
1 0 0 p3
1 0 1 p4
1 1 0 p5
1 1 1 p6
!& !* !" +($|!)
0 0 * p1
0 1 * p2
1 0 0 p3
1 0 1 p4
1 1 0 p5
1 1 1 p6
- 23. Local Structures in CPTs
2. Partial Exchangeability (PE)
2019/7/19 全脳アーキテクチャ勉強会
23
! " # = ! " ∑& #&
#' #( #) !("|#)
0 0 0 p0
0 0 1 p1
0 1 0 p1
0 1 1 p2
1 0 0 p1
1 0 1 p2
1 1 0 p2
1 1 1 p3
#' + #( + #) !("|#)
0 p0
1 p1
2 p2
3 p3
- 24. Local Structures in CPTs
3. Generalized Context-Specific Independence (GCSI)
2019/7/19 全脳アーキテクチャ勉強会
24
!" !# !$ %('|!)
0 0 0 p2
0 0 1 p2
0 1 0 p2
0 1 1 p1
1 0 0 p3
1 0 1 p3
1 1 0 p3
1 1 1 p1
*(!) %('|!)
1 p1
2 p2
3 p3
% ' ! = % ' * !
* ! = 1 ⇔ !# ∧ !$
* ! = 2 ⇔ ¬ !# ∧ !$ ∧ ¬!"
* ! = 3 ⇔ ¬ !# ∧ !$ ∧ !"
- 25. BN with local structures
• DAG ! = ($, &)
– $ = $(, … , $*
– & ⊂ $×$
– Π. = $./ ∈ $ $./, $. ∈ &
• CPT 1 = {1.34}
– 6. Π. = $. のCPTの Structure 関数
– 1.34 ≡ ;($. = < ∣ 6. Π. = >)
2019/7/19 全脳アーキテクチャ勉強会
25
$(
$? $@
6.(Π.) ;($. = <|Π.)
> 1.34
- 26. Local Structure = Logic Structure
• CPTの Structure 関数は論理関数で記述できる
• CPTをコンパクトに表現する
論理関数をコンパクトに表現する
• 論理関数をコンパクトに表現する方法とは?
2019/7/19 全脳アーキテクチャ勉強会
26
- 27. Local Structure = Logic Structure
• CPTの Structure 関数は論理関数で記述できる
• CPTをコンパクトに表現する
論理関数をコンパクトに表現する
• 論理関数をコンパクトに表現する方法とは?
2019/7/19 全脳アーキテクチャ勉強会
27
離散構造処理技術
- 28. 離散構造処理技術
• 組合せ 離散構造
– 集合、グラフ、論理などの離散的な構造を持つもの
– 組合せ爆発が起きやすく、一般的に扱うのが難しい対象
• 離散構造処理技術
– 離散構造を効率的に扱うための技術
– 対象の離散構造(の集合)を別のインデックス構造に変換
– インデックス構造上で様々な演算を効率的に実行
2019/7/19 全脳アーキテクチャ勉強会
28
- 29. Binary Decision Diagram (BDD)
2019/7/19 全脳アーキテクチャ勉強会
29
!" !# !$ %
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 0
1 0 0 0
1 0 1 1
1 1 0 1
1 1 1 1
Truth Table
!"
!#
!$
0 0
!$
0 0
!$
0 1
!$
1 1
!#
Binary Decision Tree (BDT)
!"
0
!$
1
!#
BDD
論理関数を表現するDAG構造
- 30. Binary Decision Diagram (BDD)
2019/7/19 全脳アーキテクチャ勉強会
30
!" !" !" !" !" !"
同じ子を持つノードを共有 冗長なノードを削除
BDTに以下の簡約化規則を適用
- 31. Binary Decision Diagram (BDD)
• BDD同士の演算が可能
– 論理関数 !, # のBDDから ! ∧ # のBDDを構築
• BDDがあれば様々なクエリを効率的に実行可能
– %∗ ∈ argmax-:/ - 012(%) : 線形関数最大化(最小化)
• 2 % = ∑7 87%7
– 9 ! = ∑-:/ - 01 9(%) : 充足確率(周辺確率)
• 9 % = ∏7:-;01 <7 ∏7:-;0= 1 − <7
– % ∼ 9 % ! : 充足解サンプリング
• 9 % ! = ! % 9 % /9(!)
2019/7/19 全脳アーキテクチャ勉強会
31
! # ! ∧ #=
!
BDD上の動的計画法
- 32. Compiling Bayesian Networks
• DAG + CPT を合わせて別の構造に Compile
• 変換後の構造上の DP で確率計算
→ (Generalized) Context Specific Independence を効率的に扱える
BDD
[Ishihata+ 11]
ZDD
[Minato+ 07]
[Gao+ 17]
d-DNNF
[Chavira+ 05, 07]
2019/7/19 全脳アーキテクチャ勉強会
32
- 34. BN with local structures (再掲)
• DAG ! = ($, &)
– $ = $(, … , $*
– & ⊂ $×$
– Π. = $./ ∈ $ $./, $. ∈ &
• CPT 1 = {1.34}
– 6. Π. = $. のCPTの Structure 関数(= Π.の論理関数)
– 1.34 ≡ ;($. = < ∣ 6. Π. = >)
2019/7/19 全脳アーキテクチャ勉強会
34
$(
$? $@
6.(Π.) ;($. = <|Π.)
> 1.34
- 35. 命題化確率計算
• 確率的命題変数 ! = {!$%&}
– !$%& ⇔ “*$ = + ∣ -$ Π$ = /”
– 1 !$%& = 2$%&
– 1 ! = ∏$%& 1 !$%&
• 観測関数 *$& ⇔ “*$ = +”
• 構造関数 -$% ⇔ “-$ Π$ = /”
– *$& ⇔ ⋁% -$% ∧ !$%&
– -$% ⇔ (*$&の論理関数として書かれた -$ Π$ = /)
2019/7/19 全脳アーキテクチャ勉強会
35
*8
*9 *:
-$(Π$) 1(*$ = +|Π$)
/ 2$%&
- 37. 命題化確率計算 by BDD(例)
• 命題化
– !"# = %""#
– !&# = ⋁((!"(∧ %&(#) = ⋁((%""( ∧ %&(#)
– !,# = ⋁((!"(∧ %,(#) = ⋁((%""( ∧ %,(#)
• 確率計算
- !" = 1, !& = 1, !, = 1
= - !"" ∧ !"& ∧ !",
= - %""" ∧ %&"" ∧ %,""
= - %""" - %&"" - %,""
= 0"""0&""0,""
= 0.4×0.3×1.0
2019/7/19 全脳アーキテクチャ勉強会
37
!" -(!&|!")
0 0.0
1 0.3
!" - !, !"
0 0.9
1 1.0
- - !"
- 0.4
!"
!& !,
!"" !&" !," !"" ∧ !&" ∧ !,"
- 38. 命題化確率計算 by BDD の利点
• CPTの Structure を自然に扱うことができる
– Structure が論理式で記述できるならOK
• 複雑な事象の確率計算も自然にできる
– 事象が論理式で記述できるならOK
• 確率モデルの設計がしやすい
– 論理式を書き換えてもアルゴリズム不変
– 論理式は人間には解釈しやすい
• パラメータ学習も効率的に実行できる
– BDDを用いて期待値計算が行えるので(詳細略)
2019/7/19 全脳アーキテクチャ勉強会
38
!" #(!%|!")
0 0.0
1 0.3
!" # !( !"
0 0.9
1 1.0
- # !"
- 0.4
!"
!% !(
!"" !%" !(" !"" ∧ !%" ∧ !("
- 39. 命題化確率計算 by BDD の欠点
• 対象BDDが巨大になる場合がある
– もともとの問題がNP困難なので仕方ない
• 対象BDDが構成中に巨大になる場合がある
– 最終的なBDDが小さくても途中計算が大きくなることはある
– 対象BDDを直接構成する工夫が必要
– フロンティア法:対象BDDを直接構成するテクニック(略)
2019/7/19 全脳アーキテクチャ勉強会
39
- 40. まとめ
• Bayesian Network (BN) は有向グラフで同時分布を表現
– BN は確率推論・学習は一般的には難しい
– 変数の独立性を適切に仮定することでモデルの複雑さと表現力を調整
• 変数の独立性は論理関数で記述できる
– 条件付き確率だけではなく、もっと細かな独立性も扱える
– 論理関数をコンパクトに表現できれば効率的な確率推論・学習が可能
• BDDを用いることでBNの計算を効率的に行える
– 変数の依存性を表す論理関数をBDDでコンパクトに表現
– BDD上の動的計画法で確率計算・学習が可能
2019/7/19 全脳アーキテクチャ勉強会
40
- 41. BDDの応用例(石畠の場合)
• 論理と確率の文脈
– BNの確率計算・学習 [AMBN 10,17]
– Probabilistic Logic Programing [ILP 08,11]
• 機械学習・人工知能の文脈
– 薬物代謝経路の推定 [IJCAI 09]
– ネットワーク上のユーザの影響力の厳密計算 [WWW 17]
– 制約付きオンライン最適化 [AISTATS 18]
– ネットワークの信頼性の厳密計算 [COCOA 18]
– 観測データに構造的な相関があるかの検定 [IJCAI 19]
2019/7/19 全脳アーキテクチャ勉強会
41