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
Viterbiのアルゴリズム /viterbi-algorithm
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Miyakawa Taku
December 11, 2017
Technology
350
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Viterbiのアルゴリズム /viterbi-algorithm
This presentation is CC BY 3.0 License
Miyakawa Taku
December 11, 2017
More Decks by Miyakawa Taku
See All by Miyakawa Taku
入門: 末尾呼び出し最適化 /tail-call-elimination-intro
miyakawataku
2
2.6k
JVM言語の動き方・動かし方 /make-jvm-lang
miyakawataku
6
2.4k
Java SE 8から11で何が起きた?一気におさらいしてみよう! /java-se-8-to-11
miyakawataku
15
5.7k
ミニバッチサイズと学習率の関係 /small-batch-learning
miyakawataku
0
2.3k
機械学習プロジェクトの進め方 /howtoproceedwithmlproject
miyakawataku
0
400
グラフアルゴリズムその2: 単一始点最短路問題 /graphShortestPaths
miyakawataku
0
230
Strassenのアルゴリズムによる行列積の計算 /strassen-algorithm
miyakawataku
8
3.7k
Other Decks in Technology
See All in Technology
Microsoft MVP プログラムを紹介するから目指す人増えてくれ
tsubakimoto_s
0
140
GopherCon @シアトル に行ってきました
logica0419
0
330
Eight Engineering Unit 紹介資料
sansan33
PRO
3
8.3k
Kiro Crew で始める マルチエージェント開発
miu_crescent
PRO
0
200
AI駆動開発をチームに根付かせる - 「1行も書かない」チームがHarnessを育てた1年 -
kenichirokimura
6
3.3k
現場の暗黙知を継承するAIエージェント — 対話から生まれる長期記憶と Skills
atsukish
0
130
MCPを待つな、パスキーを拡げよう(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
350
AI時代の「OAuth認証」にどう物申すか?(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
340
Introduction to Bill One Development Engineer
sansan33
PRO
0
480
The Django UUID Story - DjangoCon US 2026
pauloxnet
0
310
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
6
77k
atproto spaces概要
yamarten
0
110
Featured
See All Featured
Done Done
chrislema
186
16k
WENDY [Excerpt]
tessaabrams
12
39k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
490
Java REST API Framework Comparison - PWX 2021
mraible
34
9.7k
Google's AI Overviews - The New Search
badams
0
1.6k
Code Review Best Practice
trishagee
74
20k
Product Roadmaps are Hard
iamctodd
55
12k
Making the Leap to Tech Lead
cromwellryan
135
10k
Thoughts on Productivity
jonyablonski
76
5.3k
Designing for humans not robots
tammielis
254
26k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Utilizing Notion as your number one productivity tool
mfonobong
4
560
Transcript
グラフアルゴリズム番外編: MecabとViterbiのアルゴリズム 宮川 拓
あらまし MecabはViterbiのアルゴリズムを使って、 最適な形態素列を探している http://taku910.github.io/mecab/ 2/23
問題設定 3/23
問題設定 前提 隠れマルコフモデルのパラメータ (初期状態確率、遷移確率、出力確率) が既知 観測値の系列が既知
問題 もっとも尤もらしい状態の系列は? 4/23
例 場所中のMT君は、尾上部屋の里山さんの 勝敗しだいでその日の機嫌が決まる 里山さんの勝ち、負けの初期状態確率、 遷移確率は分かっている 先場所中のMT君の機嫌は、彼のTwitter投 稿を見て把握している
先場所の里山さんのもっとも尤もらしい 星取表は? 5/23
初期状態・遷移確率 勝 敗 場所前 .5 .5 .7 .3 .6 .4
6/23
出力確率 勝 敗 上機嫌 平静 不機嫌 .6 .1 .1 .8
.3 .1 7/23
観測系列 何日目? 出力 勝負結果 初日 上機嫌 ? 二日目 上機嫌 ?
三日目 平静 ? 四日目 不機嫌 ? 五日目 平静 ? 六日目 上機嫌 ? 千秋楽 不機嫌 ? 8/23
解くべき問題 勝 敗 上機嫌 .5 .5 勝 敗 上機嫌 勝
敗 平静 不機嫌 平静 上機嫌 前 不機嫌 勝 勝 勝 勝 敗 敗 敗 敗 .7 .3 .6 .4 勝敗を結ぶパスのうち、もっとも尤もらしい パスを選ぶ .1 .8 9/23
解法の考え方 10/23
解法の考え方 1. 千秋楽は勝敗どっちが尤もらしいか考える 千秋楽の勝・敗それぞれに至るもっと も尤もらしい系列と、その確率が必要 2. 千秋楽の勝・敗それぞれに至るもっとも尤 もらしい系列と、その確率を考える
六日目の勝・敗それぞれに至るもっと も尤もらしい系列と、その確率が必要 3. 以下同様 11/23
千秋楽は勝敗どっち? 勝 敗 上機嫌 .5 .5 勝 敗 上機嫌 勝
敗 平静 不機嫌 平静 上機嫌 前 不機嫌 勝 勝 勝 勝 敗 敗 敗 敗 .7 .3 .6 .4 .1 .8 (仮定) 勝敗勝敗 勝敗勝 六日目までの機嫌との同時確率=0.06 (仮定) 敗勝敗勝敗勝敗 六日目までの機嫌との同時確率=0.01 千秋楽の機嫌との同時確率を考える 千秋楽勝ち: 0.06*0.1 = 0.006 千秋楽敗け: 0.01*0.8 = 0.008 → 尤もらしい 12/23
千秋楽敗戦に至る最尤の系列は? 勝 敗 上機嫌 .5 .5 勝 敗 上機嫌 勝
敗 平静 不機嫌 平静 上機嫌 前 勝 勝 勝 敗 敗 敗 敗 .7 .3 .6 .4 (仮定) 敗勝 敗 勝 敗勝 五日目までの機嫌との同時確率=0.2 (仮定) 勝敗勝敗勝敗 五日目までの機嫌との同時確率=0.4 .1 .6 .6 .3 六日目の機嫌・千秋楽敗戦との同時確率を考える 六日目勝ち: 0.2*0.6*0.3 = 0.036 → 採用 六日目敗け: 0.4*0.1*0.6 = 0.024 13/23
整理 その日の敗戦(勝利)にいたるもっとも尤も らしい系列とその確率を求めるには、 前日の勝利・敗戦にいたるもっとも尤もらし い系列と、その確率が分かれれば良い ↑に対しては動的計画法が有効 問題は部分問題の組み合わせで表せる
問題ツリーの部分木には重複がある 「五日目勝ちにいたるもっとも尤もらし い勝敗の系列」は、六日目勝利・敗戦を 考える場合両方で使われる 14/23
動的計画法の具体策 トップダウン+メモ化 大きな部分問題から、小さな部分問題を 再帰的呼び出しで解く 重複する部分問題の結果はキャッシュし て再利用する
ボトムダウン → Viterbiはこっち 小さな部分問題から大きな部分問題へと 順番に問いていく 15/23
Viterbiのアルゴリズム 16/23
Viterbi 勝 敗 .5 .5 前 初日勝利・敗戦にいたるもっとも尤もらしい 系列とその確率は自明 ‹ 勝›,
確率=0.5 ‹ 敗›, 確率=0.5 17/23
Viterbi 上機嫌 勝 前 .7 .4 ‹勝, 勝›: 0.5*0.6*0.7=0.21 →
採用 ‹敗, 勝›: 0.5*0.1*0.4=0.02 .1 .6 勝 敗 0.5 0.5 18/23
Viterbi 勝 敗 上機嫌 敗 前 .3 .6 ‹勝, 敗›:
0.5*0.6*0.3=0.09 → 採用 ‹敗, 敗›: 0.5*0.1*0.6=0.03 .1 .6 0.5 0.5 19/23
Viterbi 勝 敗 上機嫌 敗 前 ‹勝, 勝, 勝›: 0.21*0.6*0.7=0.0882
→ 採用 ‹勝, 敗, 勝›: 0.09*0.1*0.4=0.0036 勝 上機嫌 0.21 勝 0.09 20/23
Viterbi 勝 敗 上機嫌 敗 前 ‹勝, 勝, 敗›: 0.21*0.6*0.3=0.0378
→ 採用 ‹勝, 敗, 敗›: 0.09*0.1*0.6=0.0054 勝 上機嫌 0.21 敗 0.09 21/23
22/23 トリック ステップが進むと、系列の確率が小さくな り、精度が落ちてしまう(アンダーフ ロー) 対策: 確率の対数を持つ
Mecabにおける応用 https://www.slideshare.net/secret/9MHZC7bl dJC8Z2 23/23