Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
SATソルバを用いたNP困難な圧縮指標の高速計算
Search
kgoto
March 23, 2022
Research
0
70
SATソルバを用いたNP困難な圧縮指標の高速計算
第120回人工知能基本問題研究会
https://sig-fpai.org/past/fpai120.html
kgoto
March 23, 2022
Tweet
Share
More Decks by kgoto
See All by kgoto
BW Transform of Thue-Morse Words
kgoto
0
140
In-Place BW Transform
kgoto
0
53
Many Words with Many Palindromes
kgoto
0
86
Conjugate Palindromes
kgoto
0
59
2021-02-implicit-static-finger-search
kgoto
0
140
2019-08-psc-optimal-construction-of-suffix-arrays-and-lcp-arrays
kgoto
0
190
2019-06-space-efficient-graph-search
kgoto
0
120
2018-12-stringbeginners-in-place-array-rotation
kgoto
0
180
2018-11-stringbeginners-haruhi-problem-superpermutation
kgoto
1
780
Other Decks in Research
See All in Research
第 2 部 11 章「大規模言語モデルの研究開発から実運用に向けて」に向けて / MLOps Book Chapter 11
upura
0
390
外積やロドリゲスの回転公式を利用した点群の回転
kentaitakura
1
650
RSJ2024「基盤モデルの実ロボット応用」チュートリアルA(河原塚)
haraduka
3
650
The Fellowship of Trust in AI
tomzimmermann
0
130
テキストマイニングことはじめー基本的な考え方からメディアディスコース研究への応用まで
langstat
1
120
Global Evidence Summit (GES) 参加報告
daimoriwaki
0
150
論文読み会 SNLP2024 Instruction-tuned Language Models are Better Knowledge Learners. In: ACL 2024
s_mizuki_nlp
1
360
最近のVisual Odometryと Depth Estimation
sgk
1
270
日本語医療LLM評価ベンチマークの構築と性能分析
fta98
3
650
ダイナミックプライシング とその実例
skmr2348
3
400
いしかわ暮らしセミナー~移住にまつわるお金の話~
matyuda
0
150
snlp2024_multiheadMoE
takase
0
430
Featured
See All Featured
StorybookのUI Testing Handbookを読んだ
zakiyama
27
5.3k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
33k
Documentation Writing (for coders)
carmenintech
65
4.4k
GitHub's CSS Performance
jonrohan
1030
460k
For a Future-Friendly Web
brad_frost
175
9.4k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.8k
Building Flexible Design Systems
yeseniaperezcruz
327
38k
Building Adaptive Systems
keathley
38
2.3k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
16
2.1k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
42
9.2k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
44
2.2k
Docker and Python
trallard
40
3.1k
Transcript
SATソルバを用いた NP困難な圧縮指標の高速計算 2022/3/22-23 第120回人工知能基本問題研究会 坂内英夫1、◯ 後藤啓介2、石畠正和3、 神田峻介2、クップルドミニク1 、西本崇晃4 1東京医科歯科大学、2無所属、3NTT、4理化学研究所
背景 1 ◼年々反復の多いデータが大量に増加している Github Wikipedia ゲノム 膨大なデータを保存や処理をするためには圧縮が必要不可欠
研究課題 反復の多いデータに含まれる真に必要な情報量(=冗長な量)を計測したい 大量の差分データ 2つのヒトゲノムの差分は約0.1%
◼ 反復の多い文字列に特化した圧縮法の圧縮サイズ LZ (LZ77, LZ78) Run-length BWT
Bidirectional Macro Schemes 文脈自由文法(CFG, SLP) Collage System ◼ その他 文字列アトラクタ 反復の多い文字列に対する圧縮指標 2 😩 文字列の表現クラス 最小の表現を求めることはNP困難 😄 線形時間で計算可能 😩 圧縮に関連する性質を満たす位置集合 最小サイズを求めることはNP困難 各圧縮指標の圧縮性能の解析がホットな研究トピック(ほとんどは理論解析) ほとんどの圧縮指標はNP困難であり、計算機での解析が困難
◼ NP-hardな圧縮指標をSATソルバで高速に計算する手法を提案 文字列アトラクタ Bidirectional Macro Schemes 文脈自由文法
SLP(論文非掲載) 本研究の貢献 3 予備実験においてナイーブ実装100並列で 1ヶ月実行しても終わらなかった処理が、 提案手法だと1プロセス1日で実行が完了した ◼ 文字列アトラクタに関する乗算感度解析の改善 (Akagi 2021)が示した下界 2から2.5への改善 本発表ではこの2つを説明する 小さいデータに対して 提案手法を使った全数探索を実施
充足可能性問題(SAT問題) 4 ◼与えられた論理式を真にする割当を求める問題 𝑥1 ∧ (¬𝑥2 ∨ 𝑥3 ) 𝑥1
= 1, 𝑥2 = 0, 𝑥3 = 0 SATソルバ ◼和績標準形(CNF)形式で表されることが多い 𝑥1 ∧ ¬𝑥2 ∨ 𝑥3 ∧ 𝑥4 ∨ 𝑥2 ∧ ⋯ 節と呼ぶ CNFにおいて、SATはすべての節を 充足する(真にする)割当を求める
MAX-SAT問題 5 ◼SATを拡張した最大化問題 hard節 • 絶対に充足しないといけない節 soft節 •
重みが設定してあり、充足するsoft節の重みの総和を最大化する すべての節が充足する必要はない 提案手法の方針 • 文字列アトラクタとBMSの形式をhard節制約に落とし込む • サイズに関する制約をsoft節制約に落とし込む • MAX-SATソルバで最小サイズを求める
SATその他 6 ◼SATソルバが激しく研究されている SAT制約に落とし込むことが出来ればSATソルバが 進化するほど解きたい問題も高速に計算できる ◼追加の制約を入れやすい ◼リッチな制約も使える 以下の制約がCNFに変換できることが知られている
𝑥1 → 𝑥2 𝑥1 ↔ 𝑥2 σ 𝑖∈[1,𝑛] 𝑥𝑖 ≤ 4 このスライドではこれらの制約に 落とし込む=SAT制約が完了、とする
文字列のカバーと串刺し 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, ...の出現を串刺しにする
文字列アトラクタ 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] は自明なアトラクタ
文字列アトラクタ 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 は 最小文字列アトラクタ
文字列アトラクタのナイーブな制約 10 ◼For 𝑖 ∈ [1, 𝑛], 𝑝𝑖 = 1
⇔ 𝑖 ∈ Γ ◼𝑇の任意の部分文字列𝑡𝑗 について、 hard節𝐶𝑗 = ڀ𝑖∈𝑐𝑜𝑣𝑒𝑟(𝑡𝑗) 𝑝𝑖 を作成する ◼任意の位置𝑖について重み1のsoft節¬𝑝𝑖 を作成する hard節を全て満たし、充足するsoft節を最大化する𝑝𝑖 の割当について 𝑖 𝑝𝑖 = 1}は最小文字列アトラクタ MAX-SATソルバで高速に計算可能 文字列アトラクタの制約 文字列アトラクタの 最小性制約 𝑝𝑖 = 1となる𝑖が求めたい 文字列アトラクタの要素
極小部分文字列による制約の単純化 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節のみを考慮すれば良い 同値な部分文字列
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と呼ぶ 𝑓𝑖 は𝑇[𝑏. . 𝑒]を参照していると呼ぶ
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)
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 ◼参照がループを持たない⇔参照が木構造を持つ
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が求まる
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
フレーズ分解 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を計算可能
実験設定 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
実験結果(計算時間) 19 ◼ 単位は秒 ◼ M: メモリエラー ◼ T: 60分のタイムアウト
BMSはメモリ消費量が多く遅い(複雑な構造のせい?) 文字列長128文字あたりで限界が来る SAは小規模コーパスで動いたり動かなかったり
実験結果(出力サイズ) 20 ◼ M: メモリエラー ◼ T: 60分のタイムアウト 文字列アトラクタが他のサイズの下界となる (理論的な解析と一致)
BMSはLZ77, LZrr, lex, lcpの下界となる (理論的な懐石と一致)
まとめ 21 ◼ NP-hardな圧縮指標をSATソルバで高速に計算する手法を提案 文字列アトラクタ Bidirectional Macro Schemes
文脈自由文法 SLP (論文非掲載) ◼ 文字列アトラクタに関する乗算感度解析の改善 下界 2から2.5への改善 今後の課題 ◼文脈自由文法SLPの高速計算の実装 ◼提案手法を使った圧縮指標の解析