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
100
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
190
In-Place BW Transform
kgoto
0
85
Many Words with Many Palindromes
kgoto
0
130
Conjugate Palindromes
kgoto
0
91
2021-02-implicit-static-finger-search
kgoto
0
170
2019-08-psc-optimal-construction-of-suffix-arrays-and-lcp-arrays
kgoto
0
280
2019-06-space-efficient-graph-search
kgoto
0
150
2018-12-stringbeginners-in-place-array-rotation
kgoto
0
210
2018-11-stringbeginners-haruhi-problem-superpermutation
kgoto
1
1k
Other Decks in Research
See All in Research
AlphaEarth Foundations: An embedding field model for accurate and efficient global mapping from sparse label data
satai
1
180
SSII2025 [TS3] 医工連携における画像情報学研究
ssii
PRO
2
1.3k
SSII2025 [SS1] レンズレスカメラ
ssii
PRO
2
1k
RHO-1: Not All Tokens Are What You Need
sansan_randd
1
170
まずはここから:Overleaf共同執筆・CopilotでAIコーディング入門・Codespacesで独立環境
matsui_528
2
450
Learning to (Learn at Test Time): RNNs with Expressive Hidden States
kurita
0
160
Streamlit 総合解説 ~ PythonistaのためのWebアプリ開発 ~
mickey_kubo
2
1.4k
集合間Bregmanダイバージェンスと置換不変NNによるその学習
wasyro
0
140
機械学習と数理最適化の融合 (MOAI) による革新
mickey_kubo
0
250
Large Language Model Agent: A Survey on Methodology, Applications and Challenges
shunk031
15
9.8k
業界横断 副業・兼業者の実態調査
fkske
0
240
AIグラフィックデザインの進化:断片から統合(One Piece)へ / From Fragment to One Piece: A Survey on AI-Driven Graphic Design
shunk031
0
410
Featured
See All Featured
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.9k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.8k
Raft: Consensus for Rubyists
vanstee
140
7.1k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
131
19k
Become a Pro
speakerdeck
PRO
29
5.5k
Making the Leap to Tech Lead
cromwellryan
135
9.5k
Designing Experiences People Love
moore
142
24k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
[RailsConf 2023] Rails as a piece of cake
palkan
57
5.8k
Site-Speed That Sticks
csswizardry
10
810
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.9k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.5k
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の高速計算の実装 ◼提案手法を使った圧縮指標の解析