知識メディア特論(後半第1回) 北海道大学 大学院 情報科学研究科 情報理工学専攻 知識メディア研究室 湊 真一 知識メディア特論 今年度講義予定 • 前半 (担当:瀧川 准教授) – 確率分布の概念と統計モデリング技法 – 種々の統計モデルとその推論アルゴリズム • 後半 (担当:湊 教授) – 大規模離散構造データ処理の技法 – BDD/ZDDおよびその応用 2015.11.27 知識メディア特論 2 後半の講義内容(予定) • • • • • • • 第1回 (2015.11.27) 第2回 (2015.12.02) 第3回 (2015.12.11) 第4回 (2015.12.16) 第5回 (2015.12.21) 第6回 (2016.01.08) 第7回 (2016.01.22) 知識表現と二分決定グラフ(BDD) BDD処理系の実装技術 BDDの変数順序づけ ゼロサプレス型BDD(ZDD) ZDDの応用 文字列や順列を扱うZDDの拡張 ZDDとグラフ列挙索引化 講義スライドURL: http://art.ist.hokudai.ac.jp/~minato/km2015.html 2015.11.27 知識メディア特論 3 次回の講義 • 来週12/4(金)は、情報理工学専攻の修論中間発表会と 重なるため、講義日時を変更します。 12/2(水) 3限 講義室:A13 • その他の変更予定(まだ確定ではありません) – 12/18(金) 12/16(水) 3限?(講師出張のため) – 12/25(金) 12/21(月) 5限(集中講義と重なるため) – 1/29(金) 休講 (集中講義と重なるため) 2015.11.27 知識メディア特論 4 本日(第1回)の内容 知識表現と二分決定グラフ(BDD) • 論理関数と知識表現 – 論理関数を扱う場面、論理式と論理関数、命題論理と述語論理 • 論理関数の処理とは – 論理式/回路からの論理関数データ生成、各種論理演算 – 恒真/恒偽判定、等価性判定、包含性判定、充足解探索 • 論理関数の表現法 – 求められる性質 – 関数の総数・情報理論的ビット量 – カルノー図、真理値表、積和形、BDD • 二分決定グラフ(BDD)の基本構造とその性質 2015.11.27 知識メディア特論 5 論理関数とは • 関数(Function): 集合A(定義域)から集合B(値域)への写像、かつ Aの要素に対してBの要素がただ1つに定まる関係のことをいう。 • 論理関数(Logic Function / Boolean Function): B={0,1}のとき、 f: Bn→B という関数 f を論理関数 (正確には二値論理関数。Switching Functionとも呼ぶ) • 一般には多値論理関数(Multi-valued Boolean Function)もある。 X x1 x2 論理関数 f(X) xn 入力(input) 2015.11.27 出力(output) 知識メディア特論 6 論理関数とは • 関数(Function): 集合A(定義域)から集合B(値域)への写像、かつ Aの要素に対してBの要素がただ1つに定まる関係のことをいう。 • 論理関数(Logic Function / Boolean Function): B={0,1}のとき、 f: Bn→B という関数 f を論理関数 計算機が扱う知識表現の中で、 (正確には二値論理関数。Switching Functionとも呼ぶ) 最も基本的・汎用的なモデルの1つ • 一般には多値論理関数(Multi-valued Boolean Function)もある。 X x1 x2 論理関数 f(X) xn 入力(input) 2015.11.27 出力(output) 知識メディア特論 7 論理関数を扱う場面(1):論理回路設計 • VLSIの論理回路の設計・最適化 – 携帯電話の小型化・低電力化 – マイクロプロセッサの高速化・低電力化 • 設計検証 – 設計に誤りがないことを数学的に証明 X x1 x2 論理関数 f(X) xn 入力(input) 2015.11.27 出力(output) 知識メディア特論 8 論理関数を扱う場面(2):機械学習 • データを分類する装置の設計・最適化 – 任意の入力のビットパタンに対して、Yes/No のいずれかを 返す装置を設計する。 – 学習データ(入力データと模範解答)を与えて、論理関数 を徐々に変化させて、理想的な分類をする機械を自動的に 作り出そうというアプローチ X x1 x2 論理関数 f(X) xn 入力(input) 2015.11.27 出力(output) 知識メディア特論 9 論理関数を扱う場面(3):データマイニング • 大量のデータを処理して、興味深い知識を発見 – 例えば、商店のレジのデータを分析して、来店者が頻繁に 購入する商品の組合せを抽出する。 – 商品の種類をnとし、顧客のカゴに入っている商品組合せを 0,1のビットパタンで表現し、頻出かどうか(または興味深 いパタンかどうか)をYes/Noで出力する。 X x1 x2 論理関数 f(X) xn 入力(input) 2015.11.27 出力(output) 知識メディア特論 10 論理関数を扱う場面(4):制約充足問題 • 世の中の様々な問題は、ある制約条件を満たすよう な入力パタンを求めよ、という問題に翻訳できる。 – ある入力パタン(0,1のビット列)が問題の解に含まれるか どうかをYes/Noで答える論理関数となる。 – 与えられた問題を解くためにその部分問題を考えることが しばしばあり、様々な論理関数を扱う必要が生じる。 X x1 x2 論理関数 f(X) xn 入力(input) 2015.11.27 出力(output) 知識メディア特論 11 論理関数と命題論理・述語論理 • 命題論理(Propositional Logic): 真/偽を表す命題(proposition)変数とそれらの論理演算からなる式。 二値論理関数と等価な概念 (例) 大学生ならば人間である (Student⇒Human) ≡ (~Student + Human) • 述語論理(Predicate Logic): 述語(predicate)とそれらの論理演算からなる式。述語は主語に当 たる変数(二値とは限らない)を持つ。二値論理関数よりも高度な 概念 (例) X が大学生ならば X は人間である: (Student(X)⇒Human(X)) ≡ (~Student(X) + Human(X)) 2015.11.27 知識メディア特論 12 論理式(Boolean Expression)と論理関数 • 論理式(Boolean Expression): 論理変数と論理演算 (AND,OR,NOT等)の組合せで書かれた数式 1つの論理式は1つの論理関数を表現している (例) F = a b + a ~c + ~a b c + d a abcd F b 11-- 1 a ~c 1-0- 1 ~a b 011- 1 c ---1 1 d F 複数の異なる論理式が同じ論理関数を表す場合がある (例) F1 = x ~y + x z + ~x y + ~x ~z F2 = x ~y + ~x y + y z + ~y ~z F3 = x ~y + ~x ~z + y z 2015.11.27 知識メディア特論 13 論理演算子の記法の例 • 論理演算子には様々な書き方があり、 教科書によって異なる。 xy x・y x∧y x+y x|y x∨y AND(論理積): OR(論理和): NOT(否定): ~x ¬x !x EXOR(排他的論理和): x + y 2015.11.27 知識メディア特論 x&y x x↑y x^y 14 論理関数の処理とは(1) 現実の様々な知識処理の中で必要となる論理関数の操作 • 論理式/論理回路から論理関数データを作る操作 (2つの論理関数データ同士の演算) XY: F 00: 0 10: 1 01: 0 11: 1 XY: F 00: 1 10: 1 01: 0 11: 0 XY: F 00: 1 10: 0 01: 1 11: 1 XY: F 00: 0 10: 1 01: 1 11: 0 X Y XY: F 00: 0 10: 0 01: 1 11: 1 2015.11.27 XY: F 00: 1 10: 0 01: 1 11: 0 XY: F 00: 1 10: 1 01: 0 11: 1 知識メディア特論 15 論理関数の処理とは(2) • 恒真/恒偽判定 ( co-NP完全問題) (例) x y + ~x + ~y ~z + z • 等価性判定 (F≡G) ⇔ (F G + ~F~G ≡ 1) x~y + x z + ~x y + ~x~z x~y + ~x y + y z + ~y ~z x~y + ~x~z + y z • 包含性判定 (F⇒G) ⇔ (~F + G ≡ 1) • 充足解探索: – 与えられた論理関数が1になるような変数値の組合せをどれか 1つ求める問題 ( NP完全問題) – 最適化問題:充足解の中で最もコストが小さい(または大きい) 解を求める問題 ( NP完全問題) 2015.11.27 知識メディア特論 16 小規模な論理関数を表現する方法 xy zw 00 01 11 10 00 1 1 0 0 01 0 1 1 1 11 1 1 1 1 x y 10 1 0 0 0 z カルノー図表現 F 論理回路図表現 • 人間の目で見通しが良い図的表現が 多く使われていた。 2015.11.27 知識メディア特論 17 計算機上での論理関数表現の要求条件 • 表現がコンパクトであること n 通り存在。 → 固定長データで識別するには n 少なくとも2 ビットは必要。(例:真理値表) – 現実には全ての論理関数が均等に現れる訳ではない。 → よく現れる関数がコンパクトに表現できる 可変長データが使われる。 – n入力の論理関数は22 • 論理演算処理が高速に行えること – 2つの論理関数データの等価性判定が高速に行えるか – AND, OR, NOT等の論理演算が効率よく実行できるか • 人間が見やすいことはあまり重要でない。 2015.11.27 知識メディア特論 18 真理値表表現 x1x2x3 … xn F1 F2 F3 000 … 0 100 … 0 010 … 0 110 … 0 001 … 0 101 … 0 011 … 0 1 0 1 0 1 0 1 0 1 1 0 1 1 1 1 0 0 0 0 0 0 111 … 1 1 0 0 2015.11.27 • カルノー図と本質的には同じだが、 見やすく並べる必要はない (単純1次元配列) • ベクトル計算・並列計算に向く • どんな簡単な論理関数にも、入 力数に対して指数の記憶量と時 間を要する(30変数程度が限界) • どんな複雑な(ランダムな)論理 関数でも同じ時間で処理できる 知識メディア特論 19 積和形論理式 ab + ac + abc + d a b a c a b c d F abcd 11-1-0011---1 2015.11.27 F 1 1 1 1 • 肯定・否定の2種類の入力変数を 用いた積和2段の論理式で表す 方法。 • 記憶量は論理式に現れる文字数 にほぼ比例。 • 簡単な式でかける論理関数は効 率よく処理できる。 • 表現が一意でなく等価性判定に 時間がかかる。 • 否定演算やXOR演算が苦手 • BDDが出現するまでは最も多く使 われた(今も使われている) 知識メディア特論 20 BDD(二分決定グラフ) 「論理関数」の表現と 演算処理の技法 a 1 簡約化 (圧縮) 0 0 c 1 0 b a 0 1986年に画期的なBDD演算 アルゴリズムを提案。以後急速 にBDD技術が発達。 (長期間、情報科学の全分野 Bryant (CMU) での最多引用文献となった) 1 b b 1 c c 0 1 (BDD) 1 0 1 0 1 BDD BDD c c 0 1 1 (場合分け二分木) ・ 場合分け二分木グラフを簡約化(圧縮) ・ 多くの実用的な論理データをコンパクト かつ一意に表現。 (数百倍以上の圧縮率が得られる例も) 21 2015.11.27 知識メディア特論 BDD BDD AND BDD BDD BDD同士の論理演算 (圧縮データ量にほぼ 比例する計算時間) 近年のPC主記憶の大規模化により、 BDDの適用範囲が拡大 (特に2000年以降) BDD(Binary Decision Diagram) (二分決定グラフ)の例 a a a 1 0 b b c c 1 0 1 0 c c 0 1 0 1 真理値表と等価なBDD (Binary Decision Tree) 2015.11.27 c 1 1 0 0 1 1 0 0 1 0 b c 1 既約な順序付きBDD (Reduced Ordered BDD) 知識メディア特論 c b b 1 0 1 0 0 1 1 既約でも順序付き でもないBDD (Unordered BDD) 22 BDDの節点(node)と枝(edge) • • • • • 分岐節点(decision node) 終端節点(terminal node) 0-枝(0-edge) 1-枝(1-edge) 部分グラフ(sub-graph) シャノンの展開(Shannon’s expansion) a b c 1 0 0 1 F 0 v 1 F(v, X) = ~v F(0, X) + v F(1, X) F0 2015.11.27 知識メディア特論 F1 23 ROBDD (Reduced Ordered BDD) • 同じ論理を表すBDDは複数存在 • 順序付きBDD: – 変数に全順序関係が定義されている – 根(root)から定数節点に至るすべてのパスについて 変数の出現順序が、全順序関係に矛盾しない • 既約なBDD – BDDの2つの簡約化規則がこれ以上適用できなくなるまで 適用されている形 • 重要な性質を持つのは既約な順序付きBDD(ROBDD) – 以後、特に断らない限り、ROBDDのことを単にBDDと呼ぶ。 2015.11.27 知識メディア特論 24 BDDの簡約化規則 (a) x (削除) (a) 冗長な節点を全て削除 (b) 等価な節点を全て共有 f f 既約なBDDが得られる (b) x f0 2015.11.27 x f1 x f0 (共有) f1 参考: (b)の規則だけを可能な限り適用した形を 「準既約」(Quasi-reduced)なBDD と呼ぶこともある。 知識メディア特論 25 BDDの簡約化の例 • どの部分から簡約化を行っても最終形は同じ • 論理関数に対する一意な表現(標準形)となる – ただし変数順序が異なると同じ論理でも違う形になる (偶然一致する場合もあるが) c 1 0 2015.11.27 1 0 1 c c c 0 1 b b b b b c a a a 1 1 c c 0 知識メディア特論 1 1 0 1 26 BDDの節点数 n 2 2 種類存在する。 • n入力の論理関数は これを識別するには少なくとも 2nビットの記憶量が必要。 • BDDでも例外ではない。n変数論理関数を表現するための 最悪の場合の節点数は O(2n/n)となる。 – 1個の節点を記憶するのにO(n)ビット必要なので、 全体としてはO(2n)ビットとなる。 • ただし、実用上よく用いられる多くの論理関数について、 nの多項式に比例する節点数になることが示されている。 2015.11.27 知識メディア特論 27 n変数の論理積・論理和・パリティ x2 x2 x3 x3 0 x1 x1 x1 x4 x4 1 0 論理積(AND) 1 論理和(OR) x2 x2 x3 x3 x4 x4 0 1 排他的論理和・ パリティ(EXOR) • いずれも、nに比例する節点数 O(n) で表現可能 • 0と1の定数節点を入れ替えるとそれぞれの否定論理になる 2015.11.27 知識メディア特論 28 nビット2進数の算術加算 3ビット加算器の論理関数のBDD (変数は a2, b2, a1, b1, a0, b0, c0 の順) S2 C S1 S0 • nが増えてもBDDは縦方向に伸びるだけで幅は一定 → 節点数は O(n) • 減算も同じく O(n) となる。2進数の大小比較も O(n) 2015.11.27 知識メディア特論 29 BDDの圧縮効果 • 8入力データセレクタ 制御入力を上位にした場合 データを上位にした場合 O(n) 2015.11.27 O(2n) 知識メディア特論 30 BDDの生成アルゴリズム a a b b c c 1 0 簡約化 1 0 1 c c 0 0 0 c 1 1 1 F = a b + ~c 1 直接生成 b 1 0 0 1 • 真理値表に対応する二分木を簡約化する方法では、 常に指数オーダの記憶量と処理時間がかかってしまう。 実用的には、論理式からBDDを直接生成 するアルゴリズム[Bryant86]を用いる 2015.11.27 知識メディア特論 31 論理式からのBDD生成 a ab a 0 1 a 1 0 b AND 演算 1 0 0 b 1 b 0 1 0 1 0 NOT 演算 c OR 演算 a 1 0 0 c 0 1 0 0 1 1 2015.11.27 a b + ~c 1 ~c c • 2つのBDDの間の二項論 理演算を繰り返して任意の BDDを生成 (圧縮データ量にほぼ比例 する計算時間で実行可能) c 1 1 0 知識メディア特論 0 b 1 0 1 32 BDDの特徴 • 論理関数に対してグラフの形が一意に定まる。 – 等価性判定が非常に容易 • 多くの実用的な論理関数がコンパクトに表現できる。 – パリティ関数や加減算回路も効率よく表現 – 性質の良い関数では数百入力まで扱える • 論理関数同士の演算が、グラフのサイズにほぼ比例す る計算時間で実行できる。 – 否定演算も容易 • グラフのサイズが小さくならない場合もある。 – 乗算回路のBDDは指数サイズ • 変数の順序づけが悪いとグラフが大きくなる。 – 比較的良い順序づけを得る方法がいくつか実用化 (厳密最小化はNP完全問題) 2015.11.27 知識メディア特論 33 BDDパッケージ • BDD処理系は世界各地の研究機関で1990年頃から盛んに 開発された。 – BDDパッケージとして無料配布されている物もいくつかある。 • 多くの場合、CまたはC++のライブラリとして提供されている。 – BDDへのポインタを引数としてライブラリ関数を呼び出すと、 メモリ上にBDDが生成され、新しいBDDへのポインタが 返り値として戻ってくる。 – ユーザはBDDの論理演算を呼び出すメインプログラムを書き、 BDDパッケージをリンクしてコンパイルすると、BDD処理アプリ ケーションを作ることができる。 • BDDパッケージの実装技術については次回詳しく解説する。 2015.11.27 知識メディア特論 34 今回のまとめ 知識表現と二分決定グラフ(BDD) • 論理関数と知識表現 – 論理関数を扱う場面、論理式と論理関数、命題論理と述語論理 • 論理関数の処理とは – 論理式/回路からの論理関数データ生成、各種論理演算 – 恒真/恒偽判定、等価性判定、包含性判定、充足解探索 • 論理関数の表現法 – 求められる性質 – 関数の総数・情報理論的ビット量 – カルノー図、真理値表、積和形、BDD • 二分決定グラフ(BDD)の基本構造とその性質 2015.11.27 知識メディア特論 35 演習問題 1. 4入力パリティ関数 (1の個数が奇数個のときに1を出力する関数) を、カルノー図および積和形論理式で表現せよ。 2. 以下の3つの論理式が等価であるかどうかを、 なるべく効率よく判定するにはどうしたら良いか、 考えよ。 x~y + x z + ~x y + ~x~z x~y + ~x y + y z + ~y ~z x~y + ~x~z + y z 2015.11.27 知識メディア特論 36
© Copyright 2024 ExpyDoc