Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SATソルバを用いたNP困難な圧縮指標の高速計算

kgoto
March 23, 2022

 SATソルバを用いたNP困難な圧縮指標の高速計算

第120回人工知能基本問題研究会
https://sig-fpai.org/past/fpai120.html

kgoto

March 23, 2022
Tweet

More Decks by kgoto

Other Decks in Research

Transcript

  1. SATソルバを用いた
    NP困難な圧縮指標の高速計算
    2022/3/22-23 第120回人工知能基本問題研究会
    坂内英夫1、◯ 後藤啓介2、石畠正和3、
    神田峻介2、クップルドミニク1 、西本崇晃4
    1東京医科歯科大学、2無所属、3NTT、4理化学研究所

    View full-size slide

  2. 背景
    1
    ◼年々反復の多いデータが大量に増加している
     Github
     Wikipedia
     ゲノム
    膨大なデータを保存や処理をするためには圧縮が必要不可欠
    研究課題
    反復の多いデータに含まれる真に必要な情報量(=冗長な量)を計測したい
    大量の差分データ
    2つのヒトゲノムの差分は約0.1%

    View full-size slide

  3. ◼ 反復の多い文字列に特化した圧縮法の圧縮サイズ
     LZ (LZ77, LZ78)
     Run-length BWT
     Bidirectional Macro Schemes
     文脈自由文法(CFG, SLP)
     Collage System
    ◼ その他
     文字列アトラクタ
    反復の多い文字列に対する圧縮指標
    2
    😩 文字列の表現クラス
    最小の表現を求めることはNP困難
    😄 線形時間で計算可能
    😩 圧縮に関連する性質を満たす位置集合
    最小サイズを求めることはNP困難
    各圧縮指標の圧縮性能の解析がホットな研究トピック(ほとんどは理論解析)
    ほとんどの圧縮指標はNP困難であり、計算機での解析が困難

    View full-size slide

  4. ◼ NP-hardな圧縮指標をSATソルバで高速に計算する手法を提案
     文字列アトラクタ
     Bidirectional Macro Schemes
     文脈自由文法 SLP(論文非掲載)
    本研究の貢献
    3
    予備実験においてナイーブ実装100並列で
    1ヶ月実行しても終わらなかった処理が、
    提案手法だと1プロセス1日で実行が完了した
    ◼ 文字列アトラクタに関する乗算感度解析の改善
     (Akagi 2021)が示した下界 2から2.5への改善
    本発表ではこの2つを説明する
    小さいデータに対して
    提案手法を使った全数探索を実施

    View full-size slide

  5. 充足可能性問題(SAT問題)
    4
    ◼与えられた論理式を真にする割当を求める問題
    𝑥1
    ∧ (¬𝑥2
    ∨ 𝑥3
    ) 𝑥1
    = 1, 𝑥2
    = 0, 𝑥3
    = 0
    SATソルバ
    ◼和績標準形(CNF)形式で表されることが多い
    𝑥1
    ∧ ¬𝑥2
    ∨ 𝑥3
    ∧ 𝑥4
    ∨ 𝑥2
    ∧ ⋯
    節と呼ぶ
    CNFにおいて、SATはすべての節を
    充足する(真にする)割当を求める

    View full-size slide

  6. MAX-SAT問題
    5
    ◼SATを拡張した最大化問題
     hard節
    • 絶対に充足しないといけない節
     soft節
    • 重みが設定してあり、充足するsoft節の重みの総和を最大化する
    すべての節が充足する必要はない
    提案手法の方針
    • 文字列アトラクタとBMSの形式をhard節制約に落とし込む
    • サイズに関する制約をsoft節制約に落とし込む
    • MAX-SATソルバで最小サイズを求める

    View full-size slide

  7. SATその他
    6
    ◼SATソルバが激しく研究されている
     SAT制約に落とし込むことが出来ればSATソルバが
    進化するほど解きたい問題も高速に計算できる
    ◼追加の制約を入れやすい
    ◼リッチな制約も使える
    以下の制約がCNFに変換できることが知られている
     𝑥1
    → 𝑥2
     𝑥1
    ↔ 𝑥2
     σ
    𝑖∈[1,𝑛]
    𝑥𝑖
    ≤ 4
    このスライドではこれらの制約に
    落とし込む=SAT制約が完了、とする

    View full-size slide

  8. 文字列のカバーと串刺し
    7
    ◼ 𝑐𝑜𝑣𝑒𝑟(𝑠): 𝑇中に出現する𝑇の部分文字列𝑠の出現範囲の位置集合
    ◼ 位置𝑝について𝑝 ∈ 𝑐𝑜𝑣𝑒𝑟(𝑠)のとき、𝑝は𝑠の出現を串刺しにすると呼ぶ
    1 2 3 4 5 6
    b a n a n a
    ● ● ●
    ●・●・
    ●・●・・
    ●・・・
    ●・・・・

    ●・
    ●・・
    ●・・・
    ●・・・・
    ●・・・・・
    ● ●
    ●・●・
    ●・・
    ●・・・
    T =
    cover(a) =
    cover(an) =
    cover(ana) =
    cover(anan) =
    cover(anana) =
    cover(b) =
    cover(ba) =
    cover(ban) =
    cover(bana) =
    cover(banan) =
    cover(banana) =
    cover(n) =
    cover(na) =
    cover(nan) =
    cover(nana) =
    ここで●はsの出現開始位置
    位置6はa, ana, ...の出現を串刺しにする

    View full-size slide

  9. 文字列アトラクタ
    8
    ◼𝑇 1. . 𝑛 のアトラクタは以下を満たす𝑇の位置集合Γ ⊆ 1. . 𝑛
     任意の部分文字列𝑠について、 𝑠の出現を串刺しにするΓの要素𝑝が存在する
    (𝑝 ∈ 𝑐𝑜𝑣𝑒𝑟(𝑡𝑖
    ) なる𝑝 ∈ Γ が存在する)
    (Kempa and Prezza 2018)
    1 2 3 4 5 6
    b a n a n a
    ● ● ●
    ●・●・
    ●・●・・
    ●・・・
    ●・・・・

    ●・
    ●・・
    ●・・・
    ●・・・・
    ●・・・・・
    ● ●
    ●・●・
    ●・・
    ●・・・
    T =
    cover(a) =
    cover(an) =
    cover(ana) =
    cover(anan) =
    cover(anana) =
    cover(b) =
    cover(ba) =
    cover(ban) =
    cover(bana) =
    cover(banan) =
    cover(banana) =
    cover(n) =
    cover(na) =
    cover(nan) =
    cover(nana) =
    すべての位置集合[1, n]
    は自明なアトラクタ

    View full-size slide

  10. 文字列アトラクタ
    9
    ◼𝑇 1. . 𝑛 のアトラクタは以下を満たす𝑇の位置集合Γ ⊆ 1. . 𝑛
     任意の部分文字列𝑠について、 𝑠の出現を串刺しにするΓの要素𝑝が存在する
    (𝑝 ∈ 𝑐𝑜𝑣𝑒𝑟(𝑡𝑖
    ) なる𝑝 ∈ Γ が存在する)
    (Kempa and Prezza 2018)
    1 2 3 4 5 6
    b a n a n a
    ● ● ●
    ●・●・
    ●・●・・
    ●・・・
    ●・・・・

    ●・
    ●・・
    ●・・・
    ●・・・・
    ●・・・・・
    ● ●
    ●・●・
    ●・・
    ●・・・
    T =
    cover(a) =
    cover(an) =
    cover(ana) =
    cover(anan) =
    cover(anana) =
    cover(b) =
    cover(ba) =
    cover(ban) =
    cover(bana) =
    cover(banan) =
    cover(banana) =
    cover(n) =
    cover(na) =
    cover(nan) =
    cover(nana) =
    Γ = 1, 2, 3 は
    最小文字列アトラクタ

    View full-size slide

  11. 文字列アトラクタのナイーブな制約
    10
    ◼For 𝑖 ∈ [1, 𝑛], 𝑝𝑖
    = 1 ⇔ 𝑖 ∈ Γ
    ◼𝑇の任意の部分文字列𝑡𝑗
    について、
    hard節𝐶𝑗
    = ڀ𝑖∈𝑐𝑜𝑣𝑒𝑟(𝑡𝑗)
    𝑝𝑖
    を作成する
    ◼任意の位置𝑖について重み1のsoft節¬𝑝𝑖
    を作成する
    hard節を全て満たし、充足するsoft節を最大化する𝑝𝑖
    の割当について
    𝑖 𝑝𝑖
    = 1}は最小文字列アトラクタ
    MAX-SATソルバで高速に計算可能
    文字列アトラクタの制約
    文字列アトラクタの
    最小性制約
    𝑝𝑖
    = 1となる𝑖が求めたい
    文字列アトラクタの要素

    View full-size slide

  12. 極小部分文字列による制約の単純化
    11
    ◼ 𝑇の部分文字列𝑥, 𝑦について、次の性質を満たすとき𝑥と𝑦を同値とする
     𝑐𝑜𝑣𝑒𝑟 𝑥 ⊆ 𝑐𝑜𝑣𝑒𝑟 𝑦 or 𝑐𝑜𝑣𝑒𝑟 𝑦 ⊆ 𝑐𝑜𝑣𝑒𝑟 𝑥
     𝑜𝑐𝑐 𝑥 = |𝑜𝑐𝑐(𝑦)|
    ◼ 𝑥と同値な𝑥の真の部分文字列が存在しないとき、
    𝑥を極小部分文字列と呼ぶ
    1 2 3 4 5 6
    b a n a n a
    ● ● ●
    ●・●・
    ●・●・・
    ●・・・
    ●・・・・

    ●・
    ●・・
    ●・・・
    ●・・・・
    ●・・・・・
    ● ●
    ●・●・
    ●・・
    ●・・・
    T =
    cover(a) =
    cover(an) =
    cover(ana) =
    cover(anan) =
    cover(anana) =
    cover(b) =
    cover(ba) =
    cover(ban) =
    cover(bana) =
    cover(banan) =
    cover(banana) =
    cover(n) =
    cover(na) =
    cover(nan) =
    cover(nana) =
    𝑜𝑐𝑐(𝑠)は𝑠の出現開始位置集合
    重要な性質
    位置𝑝が極小な部分文字列を串刺しする
    → 𝑝は同値な部分文字列を串刺しする
    → SAT制約において極小部分文字列の
    hard節のみを考慮すれば良い
    同値な部分文字列

    View full-size slide

  13. Bidirectional Macro Scheme (Storer+, 1982)
    12
    ◼ 文字列𝑇のbidirectional macro scheme (BMS) は𝑇を
    フレーズ𝑇 = 𝑓1
    𝑓2
    … 𝑓𝑚
    に分解し、フレーズ𝑓𝑖
    を次のように表現する
     𝑐 ∈ Σ
     (𝑏, 𝑒) s.t. 𝑓𝑖
    = 𝑇 𝑏. . 𝑒
    BMSからTが一意に求まるとき、そのBMSはvalidであると呼ぶ
    1 2 3 4 5 6 7 8 9
    a b a a a b a b a
    (7, 8) (4, 5) (5, 7)
    (a) (b)
    サイズ1のフレー
    ズをrootと呼ぶ
    𝑓𝑖
    は𝑇[𝑏. . 𝑒]を参照していると呼ぶ

    View full-size slide

  14. k-BMS
    13
    ◼ フレーズ長が高々kのBMSをk-BMSと呼ぶ
    (n-BMSを単にBMSと呼ぶ)
    ◼ 任意のBMSから参照位置を維持した1-BMSが愚直に求まる
    1 2 3 4 5 6 7 8 9
    a b a a a b a b a
    (7, 7) (5, 5) (6, 6)
    (a) (b)
    (8, 8) (4, 4) (7, 7)
    (5, 5)

    View full-size slide

  15. validなBMSは1-BMSが木構造を持つ
    14
    1 2 3 4 5 6 7 8 9
    a b a a a b a b a
    a b
    a b
    a
    a
    b
    a a


    0
    1
    2
    ◼参照がループを持たない⇔参照が木構造を持つ

    View full-size slide

  16. 1-BMSから対応する最小BMS
    15
    ◼ 任意の1-BMSから、愚直変換の変換元の最小BMSと
    同じフレーズ数のBMSが愚直に求まる
    1 2 3 4 5 6 7 8 9
    a b a a a b a b a
    (7, 7) (5, 5) (6, 6)
    (a) (b)
    (8, 8) (4, 4) (7, 7)
    (5, 5)
    愚直な変換は、同じフレーズ内の位置
    (i, i+1)の参照先がそれぞれ連続する(j, j+1)
    → (i, i+1)の参照先が連続するなら(i, i+1)を
    同じフレーズにする様に逆変換すると最小
    BMSと同じフレーズ数のBMSが求まる

    View full-size slide

  17. BMSのSAT制約の方針
    16
    1. T中の木構造を制約化する
    2. 1-BMSを制約化する
    3. フレーズを制約化する
    お互いに矛盾しないhard制約を追加する
    • 木構造から1-BMSは愚直に対応付けが出来る
    • 1-BMSから最小なフレーズへの対応付けが出来る
    1 2 3 4 5 6 7 8 9
    a b a a a b a b a
    2
    3
    1

    View full-size slide

  18. フレーズ分解
    17
    ◼𝑓𝑏𝑒𝑔𝑖
    : 位置𝑖はフレーズの開始位置
    a b a a a b a b a
    1 0 1 0 1 1 1 0 0
    𝑓𝑏𝑒𝑔𝑖
    soft節: ٿ 𝑖∈[1,𝑛]
    (¬ 𝑓𝑏𝑒𝑔𝑖
    , 1)
    MAX-SATソルバにより、BMSの中で最小サイズのBMSを計算可能

    View full-size slide

  19. 実験設定
    18
    ◼ 提案手法をpysatで実装計算時間と出力サイズを計測
    ◼ 使用ソルバ
     pysat + RC2
    ◼ 比較手法*
     LZ77, LZRR, lex-parse, lcp-comp (すべて多項式時間)
    ◼ データセット
     canterbury corpus (比較的小規模コーパス)
     有名な文字列系列:
    フィボナッチ文字列、period-doubling文字列、Thue-Morse文字列
    ◼ 計算機
     Windows 10 Pro Intel Core i7-9700 3.00GHz 32GBメモリ
    *以下の実装を使用:https://github.com/TNishimoto/lzrr

    View full-size slide

  20. 実験結果(計算時間)
    19
    ◼ 単位は秒
    ◼ M: メモリエラー
    ◼ T: 60分のタイムアウト
    BMSはメモリ消費量が多く遅い(複雑な構造のせい?)
    文字列長128文字あたりで限界が来る
    SAは小規模コーパスで動いたり動かなかったり

    View full-size slide

  21. 実験結果(出力サイズ)
    20
    ◼ M: メモリエラー
    ◼ T: 60分のタイムアウト
    文字列アトラクタが他のサイズの下界となる
    (理論的な解析と一致)
    BMSはLZ77, LZrr, lex, lcpの下界となる
    (理論的な懐石と一致)

    View full-size slide

  22. まとめ
    21
    ◼ NP-hardな圧縮指標をSATソルバで高速に計算する手法を提案
     文字列アトラクタ
     Bidirectional Macro Schemes
     文脈自由文法 SLP (論文非掲載)
    ◼ 文字列アトラクタに関する乗算感度解析の改善
     下界 2から2.5への改善
    今後の課題
    ◼文脈自由文法SLPの高速計算の実装
    ◼提案手法を使った圧縮指標の解析

    View full-size slide