Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

マルコフモデル,隠れマルコフモデルとコネクショニスト時系列分類法

1,622 views

Published on

輪講用の資料

Published in: Data & Analytics
  • Be the first to comment

マルコフモデル,隠れマルコフモデルとコネクショニスト時系列分類法

  1. 1. MLP深層学習 隠れマルコフモデルと コネクショニスト時系列分類法 曽和 修平
  2. 2. ・マルコフモデル ・隠れマルコフモデル ・コネクショニスト時系列分類法 扱う内容 -前向き/後ろ向きアルゴリズム -ビタビアルゴリズム -バウム・ウェルチアルゴリズム
  3. 3. マルコフモデル
  4. 4. マルコフモデルとは ・各試行は独立ではないとする確率モデル 現実世界では、独立性が成り立たない場合が多い 株価、音声信号、言語・・など →例題から考えていく ・では、具体的にどのような確率モデルなのか
  5. 5. マルコフ性とマルコフ過程 • 各試行が独立でない 現在の状態が一時点前の状態に依存して確率的に決まる マルコフ性 マルコフ過程 • マルコフ性を満たすような確率過程 j重マルコフ過程 • 現在の状態がj時点までの状態に依存して確率的に決まる j=1のとき特に単純マルコフ過程と呼ぶ
  6. 6. 例題 サイコロが までc種類あり、 までm種類の目がある t回目に投げたサイコロの種類を ,観測された目を で表す v1 ⇠ vm !1 ⇠ !c st xt t回目に取り出すサイコロ は(t-1)回目に取り出したサイコロ    によって確率的に決まるとする st その確率を a(st, st−1) で表す st−1
  7. 7. 例題 t-1回目に取り出したサイコロがωiで、t回目にサイコロωj を取り出す確率 aij = a(!i, !j) t回目にサイコロを投げてxtが観測される確率を b(st, xt)と表す サイコロωjを投げてvkが観測される確率は bjk = b(!j, vk) 遷移確率 出力確率 確率的に状態が遷移していく過程→マルコフ連鎖
  8. 8. 例題 ある時点でサイコロ を投げたら、次の時点では確率 で サイコロ を投げ、確率  で の目が観測される ここまでをまとめると・・ !i !j aij bjk vk 一般的に表現すると・・ ある時点で状態 にあり、次の時点に確率  で に遷移 するとともに、確率  で を出力する !i !jaij bjk vk
  9. 9. 例題 遷移確率 と出力確率  はそれぞれ行列A,Bとして表記できるaij bjk 例) A = 0 @ 0.1 0.4 0.5 0.2 0.1 0.7 0.3 0.1 0.6 1 A B = 0 @ 0.8 0.2 0.6 0.4 0.3 0.7 1 A 出目(2種類) 種類 現在の状態 次の状態 !1 !2 !3 0.1 0.4 0.2 0.5 0.3 0.1 0.7 0.60.1
  10. 10. パラメータの最尤推定 AとBとρが決まればマルコフモデルが完成する (観測データが存在している事が前提なので、  マルコフモデルは教師あり学習) ⇢i !i・・初期状態(t=1)が である確率 ⇢ = (⇢1, ⇢2, ..., ⇢c) 最後に初期状態の定義 ⇒それぞれのパラメータを観測データから最尤推定していく x = x1x2...xt...xn s = s1s2...st...sn
  11. 11. パラメータの最尤推定 x = x1x2...xt...xn s = s1s2...st...sn ・・・得られた出目の系列 ・・・得られた状態の系列 このような結果が得られる確率は P(x, s) = P(s)P(x|s) P(x|s) = P(x1x2...xn|s1s2...sn) = P(x1|s1)P(x2|s2)...P(xn|sn) b(st, xt) = P(xt|st)ここから、 を用いて P(x|s) = nY t=1 b(st, xt) と書ける。 n…観測回数
  12. 12. パラメータの最尤推定 P(s) について考える 状態の系列は,1つ前の系列の影響を受けるので独立でない P(s) = P(s1s2...sn) = P(s1)a(s1, s2)a(s2, s3)...a(sn−1, sn) = nY t=1 a(st−1, st) a(s0, s1) def = P(s1)(ただし ) ここまでを整理すると P(x, s) = nY t=1 a(st−1, st)b(st, xt)
  13. 13. パラメータの最尤推定 P(x, s) = nY t=1 a(st−1, st)b(st, xt) 微分しやすいように対数を取る P(x, s) = log P(s1) + n−1X t=1 log a(st, st+1) + nX t=1 log b(st, xt) 下線部はそれぞれ ⇢i, aij, bjk のみを含む なので、下線部それぞれについて独立にパラメータを最大化 すれば良い
  14. 14. (補足)最尤推定に必要な定理 n個の正の定数 がある. ここで,n個の変数 x1, x2, ..., xn (0 < xi < 1) が拘束条件 nX i=1 xi = 1 を満たしている時 f(x1, x2, ..., xn) = nX i=1 wi log xi を最大にする xi は xi = wi Pn k=1 wk (i = 1, 2..., n) w1, w2, ..., wn
  15. 15. (補足)最尤推定に必要な定理【証明】 ラグランジュの未定乗数法より L = nX i=1 wi log xi − λ nX i=1 xi − 1 ! この式が極値を取るxiを求めるため、Lをxiで偏微分し 結果を0と置く ∆L ∆xi = wi 1 xi − λ = 0 これより λxi = wi (i = 1, 2..., n)
  16. 16. (補足)最尤推定に必要な定理【証明】 両辺に  を施すと λxi = wi (i = 1, 2..., n) nX i=1 λ nX i=1 xi = nX i=1 wi ここで、 nX i=1 xi = 1 という拘束条件があったので λ = nX i=1 wi 従って、λxi = wi (i = 1, 2..., n) より、求めるxiは xi = wi λ = wi Pn k=1 wk (i = 1, 2..., n) となる。 (証明終)
  17. 17. パラメータの最尤推定 P(x, s) = log P(s1) + n−1X t=1 log a(st, st+1) + nX t=1 log b(st, xt) La = n−1X t=1 log a(st, st+1) = cX i=1 ( cX j=1 mij log aij) c …状態の数 mij …ωi,ωjと連続して    取り出した回数 パラメータ  に関して最大化するには各i毎に を最大化すれば良い aij cX j=1 mij log aij
  18. 18. パラメータの最尤推定 cX j=1 aij = 1 という拘束条件が成り立つ cX j=1 mij = ni なので よって、先の定理を用いると ˆaij = mij Pc h=1 mih また、 ˆaij = mij ni と求められる(パラメータAの最尤推定値)
  19. 19. パラメータの最尤推定 P(x, s) = log P(s1) + n−1X t=1 log a(st, st+1) + nX t=1 log b(st, xt) Lb = cX j=1 mX k=1 njk log bjk ! サイコロ  を取り出した回数をwj nj とし サイコロ  を投げて出た目が  であった回数を  とするwj vk njk m…出力記号の数 各j毎に mX k=1 njk log bjk を最大化すれば良い
  20. 20. パラメータの最尤推定 mX k=1 bjk = 1 (j = 1, 2..., c) mX k=1 njk = nj bに関しても以下の拘束条件が成り立っているので 先と同様の定理を用いることができる ˆbjk = njk Pm l=1 njl = njk nj より (パラメータBの最尤推定値)
  21. 21. パラメータの最尤推定 P(x, s) = log P(s1) + n−1X t=1 log a(st, st+1) + nX t=1 log b(st, xt) 初期状態は既知であるものとしている Lp = log P (s1 = !i) s1=ωiだとしたとき = log ⇢i ⇢ ˆ⇢i = 1 ˆ⇢j = 0 (j 6= i) 上式を最大にするパラメータρは (パラメータρの最尤推定値)
  22. 22. 隠れマルコフモデル
  23. 23. 隠れマルコフモデルとは • マルコフ性をもったデータに対する教師なし学習 (マルコフモデルでは教師あり学習だった) 単純マルコフ過程を前提として先と同様の例題を考えていく ある時点でサイコロ を投げたら、次の時点では確率 で サイコロ を投げ、確率  で の目が観測される !i !j aij bjk vk x = x1x2...xt...xn s = s1s2...st...sn ただし、今回は取り出したサイコロの種類がわからない 既知 未知
  24. 24. 考えないといけない問題 (3)観測結果からパラメータA,B,ρを最尤推定 (1)パラメータA,B,ρが既知の時,ある観測結果が得られる確率 (2)パラメータA,B,ρが既知の時,観測結果から推定される系列
  25. 25. (1)パラメータA,B,ρが既知の時,ある観測結果が得られる確率 観測結果 x = x1x2...xt...xn が得られた このような観測結果が得られる確率  は?P(x) 系列sを観測することができないので、可能な系列sを全て 想定しないといけない P(x) = X s P(x, s) P(x, s) = nY t=1 a(st−1, st)b(st, xt) P(x,s)は先と同様 により求まる
  26. 26. (1)パラメータA,B,ρが既知の時,ある観測結果が得られる確率 教師ありの場合は,sも観測できるため,そのような観測結果が 得られる確率P(x,s)は容易に求まる 教師なしの場合は周辺化の演算が必要となり,計算量が膨大 P(x) = X s P(x, s) 2nc^nのオーダ 効率的な計算方法が必要 =前向き・後向きアルゴリズム
  27. 27. (1)パラメータA,B,ρが既知の時,ある観測結果が得られる確率 x = x1x2...xt...xn観測結果 が得られ,かつt回目にサイコロωiを取り出している確率は P(x, st = !i) = P(x1x2...xt, st = !i)P(xt+1xt+2...xn|st = !i) ↵t(i) def = P(x1x2...xt, st = !i) βt(i) def = P(xt+1xt+2...xn|st = !i) P(x, st = !i) = ↵t(i)βt(i) と定義し とする
  28. 28. (1)パラメータA,B,ρが既知の時,ある観測結果が得られる確率 P(x, st = !i) = ↵t(i)βt(i) ↵t(i) ・・・x1x2..xtという観測結果が得られ,かつt回目に    サイコロωiを取り出している確率 βt(i) ・・・t回目にサイコロωiを取り出したという条件で    以降の観測結果がxt+1,xt+2…xnとなる確率
  29. 29. 前向きアルゴリズム ↵t(i) は再帰的な計算方法で求めることができる ↵t(j) = [ cX i=1 ↵t−1(i)aij]b(!j, xt) (t = 2, 3..., n) (j = 1, 2..., c) ↵1(i) = p(x1, s1 = !i) = ⇢ib(wi, x1) 各パラメータが既知なのでここは 計算できる ただし (i = 1, 2, ..., c) このような計算方法は前向きアルゴリズムと呼ばれている
  30. 30. 前向きアルゴリズム t-1 t ↵t−1(1) ↵t−1(i) ↵t−1(c) ↵1j ↵ij ↵cj b(!j, xt) ↵t(1) ↵t(j) ↵t(c) ↵t(j) = [ cX i=1 ↵t−1(i)aij]b(!j, xt)
  31. 31. 前向きアルゴリズム P(x) = P(x1x2...xn) = cX i=1 ↵n(i) ↵t(i) をt=nとし、sに関して周辺化することでP(x)が求まる ↵n(i) = P(x1x2...xn, sn = !i) ↵n(i) を前向きアルゴリズムにより計算することでP(x)を求めた βn(i)を後向きアルゴリズムにより計算することでも求められる (今回は省略)
  32. 32. (2)パラメータA,B,ρが既知の時,観測結果から推定される系列 観測結果 x = x1x2...xt...xn が得られた この時、観測できなかった系列      を推定s = s1s2...sn 観測結果xをもたらす系列sとしてはどのようなものが最適か?
  33. 33. (2)パラメータA,B,ρが既知の時,観測結果から推定される系列 求めるべき系列sを s⇤ = s⇤ 1s⇤ 2...s⇤ n とする γt(i) def = P(st = !i|x) γt(i)また、 を以下のように定義する 観測結果xが得られた時,t回目にサイコロωiを取り出している 確率 cX i=1 γt(i) = 1 が成り立つのは自明
  34. 34. (2)パラメータA,B,ρが既知の時,観測結果から推定される系列 γt(i) = P(st = !i|x) = P(x, st = !i) P(x) P(x, st = !i) = ↵t(i)βt(i) = ↵t(i)βt(i) P(x) P(x) = P(x1x2...xn) = cX i=1 ↵n(i)= ↵t(i)βt(i) Pc i=1 ↵n(i)
  35. 35. (2)パラメータA,B,ρが既知の時,観測結果から推定される系列 ここでS*を求める手段として i⇤ = argmaxi (γt(i)) s⇤ = !⇤ i (最も確率が高いものをs*とする) が、考えられるが、これは誤り マルコフ性を持つので、このようにして求めた系列は 実現不可能な場合があるため 観測結果xが得られたという条件下で、連続した系列sの 正規確率P(s|x)を最大化しなくてはならない (γtはtごとに独立として求めている)
  36. 36. ビタビアルゴリズム すなわち・・ s⇤ = argmaxs(P(s|x)) = argmaxs(P(x, s)) = argmaxs( P(x, s) P(x) ) 可能な全てのP(x,s)を求めれば最大となる系列sを発見できる しかし、可能なsはc^n通りあるので計算量は膨大となる ビタビアルゴリズム
  37. 37. ビタビアルゴリズム ある時点tで状態ωjに到達し,かつxtが観測される確率を考え その最大値をψt(j)で表す t(j) = max s1,...,st−1 P(x1...xt, s1...st−1, st = !j) この式は再帰的な形で表せる 1(i) = ⇢ib(!i, x1) (t = 2, 3, ..., n) (i, j = 1, 2, ..., c) t(j) = max i [ t−1(i)aij]b(!j, xt)
  38. 38. ビタビアルゴリズム 1時点前の状態のうち,先の確率を最大にする状態がωk であったとする時、Ψを以下で定義 t(j) = k = argmaxi{ t−1(i)aij} 上式により,最適な状態系列を記憶しておく (状態を復元するため)
  39. 39. ビタビアルゴリズム t-1 t ↵1j ↵ij ↵cj b(!j, xt) t−1(1) t−1(i) t−1(c) t(c) t(j) t(1) まず前向きに再起計算していき、nまで到達したら 逆向きにin…i1までたどることにより系列を求める
  40. 40. ビタビアルゴリズム 1.初期化 1(i) = ⇢ib(wi, x1) 1(i) = 0 (i = 1, 2, ..., c) 2.再帰的計算 t(j) = max i { t−1(i)aij}b(!j, xt) t(j) = argmaxi{ t−1(i)aij} 3.終了 P(x, s⇤ ) = max i { n(i)} (i = 1, 2, ..., c) 4.系列の復元( it = t+1(it + 1) s⇤ t = !it ( in = argmaxi{ n(i)} s⇤ t = !in (t = n − 1, ..., 2, 1)
  41. 41. (3)観測結果からパラメータA,B,ρを最尤推定 バウムウェルチアルゴリズムによりパラメータを推定する EMアルゴリズムの一種 数式を追っていく形ではなく、流れのみを解説する (長くなるので。。)
  42. 42. バウム・ウェルチアルゴリズム (1)初期化 パラメータaij, bjk, ⇢i に適当な初期値を与える (2)再帰的計算 ˆaij = Pn−1 t=1 at(i)aijb(!j, xt+1)βt+1(j) Pn−1 t=1 ↵t(i)βt(i) ˆbik = Pn t=1 δ(xt, vk)↵t(j)βt(j) Pc t=1 ↵t(j)βt(j) ˆ⇢i = ↵1(i)β1(i) Pc j=1 ↵n(j) δ(xt, vk) = ( 1(xt = vk) 0(otherwise) これらの式から      を求める。 α,β等は前向き・後向きアルゴリズムによって求める。 ˆaij,ˆbjk, ˆ⇢i
  43. 43. バウム・ウェルチアルゴリズム (3)パラメータの更新 aij = ˆaij, bjk = ˆbjk, ⇢i = ˆ⇢iパラメータを として更新する (4)判定 対数尤度をlogP(x)により計算 = cX i=1 ↵n(i)P(x) 1ステップ前の対数尤度と比べ,その増分が予め定めていた 閾値よりも小さければ収束とする. そうでない場合は(2)に戻る
  44. 44. コネクショニスト時系列分類法
  45. 45. コネクショニスト時系列分類法 入出力間で系列長が違う分類問題をHMMではなく ニューラルネットだけで解決しようとするもの ・RNNの出力の解釈を変更して実現する ・任意のRNN(LSTMや双方向性のものなど)に適用可
  46. 46. コネクショニスト時系列分類法 真のラベル l = ‘cbab’ L = {a,b,c} ・・認識対象となるラベルの集合 L0 = {a, b, c, }・・Lに空白を表すラベルを追加した集合 真のラベルの冗長な系列は無数にある 例){c b aab} { c ba b} {cc b aaa bb} 冗長性のない系列lと冗長な系列πは多:1の以下の 写像によって結ばれる l = ß(⇡) l = ß(c b aab) = ß( c ba b)
  47. 47. コネクショニスト時系列分類法 1つのラベル系列lに対し,これを与える冗長な系列すべての 集合を ß−1 (l) = {⇡|ß(⇡) = l} と書くことにする この集合の要素πをlに対する「パス」と呼ぶことにする 長さが8の時の全ての冗長な経路
  48. 48. コネクショニスト時系列分類法 CTCで使うRNNの出力層は|L’|個であり,活性化関数はソフト マックス関数 時刻tにおける出力  はその時刻の正解ラベルがkで ある確率 yt k 系列内のラベルの生起が互いに独立であるとすると 入力系列Xに対して1つのパスπが正解である確率は p(⇡|X) = TY t=1 yt ⇡t
  49. 49. コネクショニスト時系列分類法 これを最大にするようなlを推定される系列とする p(⇡|X) = TY t=1 yt ⇡t p(l|X) = X ⇡2ß−1(l) p(⇡|X) これは計算量が膨大なので 前向き、後ろ向きアルゴリズムを使って解く
  50. 50. コネクショニスト時系列分類法 前半のtまでパス 後半のt以降のパス ⇡t:T = (⇡t, ..., ⇡T ) ⇡1:t = (⇡1, ..., ⇡t) s番目のラベルを時刻tに通過するパスの集合を考える 前半パス   に関する確率の和p(⇡1:t) p(⇡t:T ) ↵s,t βs,t後半パス   に関する確率の和 α,βは再帰的に計算可能(前向きと後向き)
  51. 51. コネクショニスト時系列分類法 に関して再帰的に計算↵s,t l’sが空白の場合,もしくはl’sが空白ではないが空白をまた いで同じラベルの場合 1) それ以外の場合2) ↵s,t = yt l0 s (↵s−1,t−1 + ↵s,t−1) ↵s,t = yt l0 s (↵s−2,t−1 + ↵s−1,t−1 + ↵s,t−1) t=Tまで計算ができるとp(l|X)は p(l|x) = ↵|l0|,T + ↵|l0|−1,T で計算できる(図参照)
  52. 52. 図の再掲
  53. 53. コネクショニスト時系列分類法の学習 系列Xに対する正解ラベルをdとする dは冗長性のない入力系列Xより一般に短い系列 最尤推定によってRNNのパラメータを決定 E(w) = − X n log p(dn|Xn) 誤差関数としてXに対するラベル系列の事後確率の負の対数 尤度を使う これを  で微分しなければならないyt k
  54. 54. コネクショニスト時系列分類法の学習 ∆E(w) ∆yt k = − 1 p(d|X) ∆p(d|X) ∆yt k ここで、αβを利用する ↵s,tβs,t = X ⇡2ß−1(d)⇡t=d0 s p(d|X) α_stとβ_stの積は(s,t)を通る全パスにわたる同じ確率の総和 任意のtに対し,全てのs ∈[1,|d’|]にわたる和を取ると p(d|X) = |d0 | X s=1 ↵s,tβs,t d’はdの系列の間,最初,最後に空白 ラベルを入れたもの
  55. 55. コネクショニスト時系列分類法の学習 α,βには  が含まれているので微分可能。yt k その結果より、出力層でのデルタ δout,t k = ∆E ∆vt k を計算 このような流れでBTPP法を適用し、パラメータを求める
  56. 56. コネクショニスト時系列分類法 学習後,与えられた入力系列Xに対してラベル列lを推定 ˆl = argmaxip(l|X) ただ、この厳密解を少ない計算量で計算する方法は知られて いないらしい。ので、近似的に計算を行う 最も単純なのは ˆ⇡ = argmax⇡p(⇡|X) と求めた後 ˆl = ß(ˆ⇡) とする方法 この方法で計算したlが最適である保証はない。 p(⇡|X) = TY t=1 yt ⇡tと各時刻のπtの正解ラベルである 確率yの積和を取るだけなので計算が速い

×