音声言語処理特論
第5回 HMMのパラメータ推定と応用 山本一公
HMM3つの基本問題
1.  モデル(HMM)に対する観測系列(音声ではMFCC
ベクトル時系列など)の出力確率の計算
–  トレリス(前向き、Forward)アルゴリズム
2.  最適な状態系列を求める
– 
Viterbiアルゴリズム
3.  モデルから観測系列を出力する確率を最大とする
モデルのパラメータの設定
– 
EMアルゴリズム(Baum-­‐Welchアルゴリズム)
音声言語処理特論 第5回
出力確率の計算
•  HMMは「生成モデル」 –  観測された特徴系列が当該モデルから出力(生成)される確率が求
まる •  各時刻の特徴ベクトル xt は状態から生成されるものとする –  状態毎に出力確率分布(離散確率分布や混合正規分布)を持つ p (x t | qi (t ) ) = ∑ wm ,i (t ) N (x t | µ m ,i (t ) , Σ m ,i (t ) )
m
•  任意の状態系列 s を考え、すべての状態系列に対する確率
の総和を求める(トレリスアルゴリズム) P(X | Θ ) = ∑∏ p (qi (t +1) | qi (t ) )p (x t | qi (t ) )
q
t
音声言語処理特論 第5回
トレリスアルゴリズム (前向き(Forward)アルゴリズム)
必ずq1から始まる ↓ q1の初期状態確率が1
q1
1.0
“a”
“b”
0.3 x 0.7
0.21
0.5 x 0.8
q2
0.0
q3
0.0
q4
0.0
q5
0.0
0.2 x 0.5
0.4
0.1
“a”
0.0189
0.0396
9
0.0829
0.0108
76
0.169
0.0826
26
0.2 x 0.5
0.6 x 0.6
0.2 x 0.7
0.4 x 0.1
0.3 x 0.4
0.3 x 0.4
0.0
矢印が重なる ところは、加算
0.0
音声言語処理特論 第5回
0.3 x 0.6
0.068
0.012
0.5 x 0.4
1.0 x 0.1
0.0421
94
0.0452
2
最適な状態系列
•  前向きアルゴリズムで求まる確率は、可能な状態系列の全ての総和 –  状態系列は「隠れている」ので分からないから、可能なものを全部考えている •  しかし、最適な状態系列が欲しい場合もある –  特徴量時系列を音素ごとに対応付けたい場合等 –  DPマッチングのフレーム対応(バックポインタ)操作 •  Viterbiアルゴリズム –  可能な状態系列の中から、確率が最大になるものを選ぶ P(X | Θ ) = max ∏ p (qi (t +1) | qi (t ) )p (x t | qi (t ) )
q
t
log P(X | Θ ) = max ∑ (log p (qi (t +1) | qi (t ) ) + log p (x t | qi (t ) ))
q
t
–  対数を取ると、DPマッチングと同じアルゴリズムが使える(「距離の最小値」が
「対数確率の最大値」に変わっている) –  対数を取るのは計算上の理由もある •  指数関数の計算を避けることで計算量が減る •  乗算が加算に変わることで計算量が減る •  アンダーフローを防ぐ(1より小さい数を繰り返し掛けて数値表現が0になってしまうのを
避ける)
音声言語処理特論 第5回
Viterbiアルゴリズム
“a”
q1
1.0
“b”
0.3 x 0.7
0.21
0.5 x 0.8
q2
0.0
q3
0.0
q4
0.0
q5
0.0
0.2 x 0.5
0.4
0.1
0.2 x 0.5
0.6 x 0.6
0.2 x 0.7
0.4 x 0.1
0.3 x 0.4
0.3 x 0.4
0.0
矢印が重なる ところは、max
0.0
音声言語処理特論 第5回
“a”
0.0189
0.0396
9
0.064
0.0075
6
0.144
0.0518
4
0.3 x 0.6
0.056
0.012
0.5 x 0.4
1.0 x 0.1
0.0259
2
0.0259
2
パラメータの推定
•  HMMのパラメータ –  状態間の遷移確率 –  各状態のシンボル出力確率 •  連続型HMMなら、平均ベクトル、共分散行列、混合重み •  状態遷移系列が分かっている場合は、状態毎に「数
え上げによる最尤推定」が使えるが、状態遷移系列は
「隠れている」ので分からない –  学習データから状態遷移系列の確率(各状態の滞在確
率の期待値)を推定し、それに基づいて(学習データの確
率が最大になるように)確率分布のパラメータを更新する ⇒ ExpectaMon-­‐MaximizaMonアルゴリズム 音声言語処理特論 第5回
まず「最尤推定」から
•  尤度(likelihood):ある仮説(モデル λ)のもと
で観測された事象(o)が生じる確率 p(o|λ) –  「モデルの尤もらしさ」 •  尤度が最大となるようにパラメータ推定を行う
ことを最尤推定という –  「最も尤もらしい」モデルを推定する
音声言語処理特論 第5回
最尤推定の例(1)-離散分布-
事象 {Xi | i=1, …, M} の確率 Θ={pi} (i=1, …, M) を推定
観測系列 O(Xi の系列)を得た結果 Xi の回数が ni であったとき
M
M
i =1
i =1
n
条件: ∑ pi = 1 の下でP(O | Θ) = ∏ ( pi ) i の対数を最大化
ラグランジュの未定乗数法で
M
M
⎛
⎞ M
⎛
⎞
L = log P(O | Θ) + λ ⎜1 − ∑ pi ⎟ = ∑ ni log pi + λ ⎜1 − ∑ pi ⎟
⎝ i =1 ⎠ i =1
⎝ i =1 ⎠
pi での偏微分を 0 とした式と条件式を連立させて解くと
M
λ = ∑ ni
i =1
piML =
ni
M
∑n
i
i =1
音声言語処理特論 第5回
数え上げになっている
最尤推定の例(2)-連続分布-
正規分布に従う確率変数 X の分布パラメータ Θ={µ, σ2} を推定
観測系列 O( Xi の系列; i=1,N )を得たとき
⎧ ( x − µ ) 2 ⎫
1
exp⎨−
確率分布 f X ( X ) =
⎬ のパラメータ Θ={µ, σ2} を
2
2σ ⎭
2π σ
⎩
⎧ N
⎫
( X i − µ ) 2 ⎫
1 N ⎧
2
L = log P(O | Θ) = log ⎨∏ f X ( X i )⎬ = − ∑ ⎨log(2π ) + log(σ ) +
⎬
2
2
σ
i
=
1
i
=
1
⎩
⎭
⎩
⎭
の最大化で求める。µ、σ2での偏微分を0として解くと
µ
ML
1
=
N
N
∑ Xi
i =1
1
(σ ML ) 2 =
N
N
⎛ 1
2
X
−
⎜
∑
i
i =1
⎝ N
N
2
1
⎞
X
=
⎟
∑
i
N
i =1
⎠
数え上げになっている
音声言語処理特論 第5回
N
(
∑ X i2 − µ ML
i =1
2
)
隠れ変数がある場合 -­‐ EMアルゴリズム (Baum-­‐Welchアルゴリズム)
• 
• 
観測できない変数(隠れ変数、HMMでは状態系
列)が存在する場合には繰り返しアルゴリズムで
解く必要がある。
HMMのパラメータを Θ、観測可能変数(特徴ベク
トル系列)を x、観測できない変数(状態遷移系
列)を s とする
p ( x | Θ ) = ∑ p ( x, s | Θ )
s
Q(Θ, Θʹ′) = ∑ p(x, s | Θ )log p(x, s | Θʹ′)
s
音声言語処理特論 第5回
隠れ変数がある場合 -­‐ EMアルゴリズム (Baum-­‐Welchアルゴリズム)
≪定理≫
もし、Q(Θ,Θ’)≧ Q(Θ, Θ) なら、P(x|Θ’)≧P(x|Θ) で
ある(等号はΘ = Θ’のときのみ)。このとき、以
下を繰り返すことで、Θを推定できる
1.  Θ の初期値を設定する
2.  [E-­‐step] Q(Θ,Θ’)を最大にするΘ’を最尤推定
3.  [M-­‐step] Θ を更新する Θ = Θ’ 4.  2.から繰り返し
音声言語処理特論 第5回
定理の証明
log Z ≤ Z − 1の関係を用いれば、
Q(Θ, Θʹ′) − Q(Θ, Θ )
p(x, s | Θʹ′)
= ∑ p(x, s | Θ )log
p ( x, s | Θ )
s
⎡ p(x, s | Θʹ′) ⎤
≤ ∑ p(x, s | Θ )⎢
− 1⎥
z
⎣ p(x, s | Θ ) ⎦
= ∑ p(x, s | Θʹ′) − ∑ p(x, s | Θ )
s
s
= p(x | Θʹ′) − p(x | Θ )
音声言語処理特論 第5回
もうちょっと簡単に
•  何かしらの初期パラメータが与えられているとする –  即ち、それによって尤度が計算できる •  状態遷移が分からないので、学習データを使って状態
遷移を数える(ただし、確率的に) → Eステップ –  Viterbiアルゴリズムを使って状態遷移を「明示的に」数え
ることもできる(実際、そういうやり方もある)が、それは
EMアルゴリズムではない •  確率的に遷移回数が分かったら、それを使ってパラ
メータを再推定する → Mステップ
–  先ほどのQ関数の極値を取る •  パラメータで偏微分して0とおき、方程式を解く 音声言語処理特論 第5回
状態遷移の確率的数え上げ
•  γ(i, j, t) –  時刻 t において、シンボル xt を出力し、状態 i か
ら状態 j に遷移する確率(確率的回数) γ (i, j , t ) =
=
α (i, t − 1)aij bij ( xt ) β ( j , t )
P(X | Θ )
α (i, t − 1)aij bij ( xt ) β ( j , t )
∑ α (i, T )
i∈F
•  F:最終状態の集合、T:時系列の長さ
音声言語処理特論 第5回
前向き確率と後ろ向き確率
•  前向き確率 α(i, t) α ( j , t ) = ∑ α (i, t − 1)aij bij (xt )
i
•  後ろ向き確率 β(i, t)
β (i, t ) = ∑ β ( j , t + 1)aij bij (xt +1 )
j
∑ α (i, T ) = ∑ β (i,0)π
i∈F
i
πi:状態 i の初期状態確率
i
音声言語処理特論 第5回
トレリスアルゴリズム (前向き(Forward)アルゴリズム)
必ずq1から始まる ↓ q1の初期状態確率が1
q1
1.0
“a”
“b”
0.3 x 0.7
0.21
0.5 x 0.8
q2
0.0
q3
0.0
q4
0.0
q5
0.0
0.2 x 0.5
0.4
0.1
“a”
0.0189
0.0396
9
0.0829
0.0108
76
0.169
0.0826
26
0.2 x 0.5
0.6 x 0.6
0.2 x 0.7
0.4 x 0.1
0.3 x 0.4
0.3 x 0.4
0.0
矢印が重なる ところは、加算
0.0
音声言語処理特論 第5回
0.3 x 0.6
0.068
0.012
0.5 x 0.4
1.0 x 0.1
0.0421
94
0.0452
2
後ろ向き(Backward)アルゴリズム
“a”
“b”
“a”
q1
0.0452
2
q2
0.0169
68
q3
0.0515
52
0.6 x 0.6
0.2 x 0.7
0.0432 0.4 x 0.1
0.3 x 0.4
0.3 x 0.4
q4
0.029
0.11
0.2
q5
0.009
0.09
0.1
0.3 x 0.7
0.018
0.5 x 0.8
0.2 x 0.5
0.2 x 0.5
0.0928
音声言語処理特論 第5回
0.0
0.0
0.0
0.0
0.18
0.0
0.3 x 0.6
0.5 x 0.4
1.0 x 0.1
0.0
1.0
パラメータ更新式の求め方
T −1
T −1
t =0
t =0
P(x, s | Θ ) = π s0 ∏ ast st +1 ∏ bst st +1 (xt +1 )
Q(Θ, Θʹ′) =
∑a
ij
j
1
⎧
⎫
ʹ′
ʹ′
ʹ′
(
)
(
)
P
x
,
s
|
Θ
log
π
+
log
a
+
log
b
x
⎨
∑
∑
∑
s0
st st +1
st st +1
t +1 ⎬
P (x | Θ ) s
t
t
⎩
⎭
= 1,
∑ b (k ) = 1, ∑ π
ij
k
i
= 1の条件でQの最大値を求める。
i
F = Q + λ1 ∑ aijʹ′ + λ2 ∑ bijʹ′ (k ) + λ3 ∑ π i
j
k
i
aij , bij (k ), π iは全て独立な変数なので、独立に最大化できる。
Fをそれぞれで偏微分して零とおき、λ1 , λ2 , λ3を消去する。
Q = max ∑ wi log yi ,
wi
i
∑ y =1 ⇒
i
yi =
wi
∑ wj
j
音声言語処理特論 第5回
パラメータ更新式(初期状態確率)
•  状態 i の初期状態確率
πˆ i
∑ γ (i, j,1)
=
∑∑ γ (i, j,1)
j
i
j
時刻 1 に状態 i から 遷移した確率的回数
時刻 1 にどこでもいいから 遷移した確率的回数
確率的数え上げになっていることが分かる
音声言語処理特論 第5回
パラメータ更新式(状態遷移確率)
状態 i から状態 j への状態遷移確率
∑ γ (i, j, t ) ∑ α (i, t − 1)a b (x )β ( j, t )
=
=
∑∑ γ (i, j, t ) ∑ α (i, t − 1)β (i, t − 1)
ij ij
aˆij
t
j
t
t
t
t
確率的数え上げになっていることが分かる
分子側
状態i
α(i,t-1)
状態 i から状態 j へ 遷移した確率的回数
状態 i を通過した 確率的回数
分母側
状態j
α(i,t-­‐1):前向き確率 時刻 t-­‐1 に状態 i にいる確率 β (j,t):後向き確率 時刻 t に状態 j にいた確率
状態 i
α(i,t-1)
β(j,t)
音声言語処理特論 第5回
β(i,t-1)
パラメータ更新式(出力確率)(1)
•  出力確率分布(離散確率分布の場合)
∑ γ (i, j, t ) ∑ α (i, t − 1)a b (x )β ( j, t )
ij ij
bij (k ) =
t:xt = k
=
t
t:xt = k
∑ γ (i, j, t ) ∑ α (i, t − 1)a b (x )β ( j, t )
ij ij
t
t
確率的数え上げになっていることが分かる
音声言語処理特論 第5回
t
パラメータ更新式(出力確率)(2)
•  出力確率分布(正規分布の場合) –  無相関正規分布(対角共分散行列)の場合も次元ごとに求めれば
同じ式
∑ γ (i, j, t )x ∑ α (i, t − 1)a b (x )β ( j, t )x
=
=
∑ γ (i, j, t ) ∑ α (i, t − 1)a b (x )β ( j, t )
t
µˆ ij
t
ij ij
t
ij ij
t
σˆ ij2 =
bij(xt)が正規分布
t
t
2
(
)
α
i
,
t
x
∑
t β (i , t )
t
∑ α (i, t )β (i, t )
t
t
t
2
⎛ ∑ α (i, t )xt β (i, t ) ⎞
⎜ t
⎟
− ⎜
⎟ =
⎜ ∑ α (i, t )β (i, t ) ⎟
⎝ t
⎠
2
(
)
α
i
,
t
x
∑
t β (i , t )
t
∑ α (i, t )β (i, t )
t
確率的数え上げになっていることが分かる
音声言語処理特論 第5回
− µˆ m2
パラメータ更新式(出力確率)(3)
•  出力確率分布(多次元正規分布の場合)
µˆ ij
∑ γ (i, j, t )x
=
∑ γ (i, j, t )
t
t
Σˆ ij =
t
∑ α (i, t − 1)a b (x )β ( j, t )x
=
∑ α (i, t − 1)a b (x )β ( j, t )
ij ij
∑ γ (i, j, t )
t
t
t
ij ij
bij(xt)が 多次元正規分布
t
t
t
ˆ
ˆ
(
)(
)
(
)
γ
i
,
j
,
t
x
−
µ
x
−
µ
∑
t
ij
t
ij
t
t
=
t
ˆ
ˆ
(
)(
)
(
)
(
)
(
)
α
i
,
t
−
1
a
b
x
β
j
,
t
x
−
µ
x
−
µ
∑
ij ij
t
t
ij
t
ij
t
∑ α (i, t − 1)a b (x )β ( j, t )
ij ij
t
確率的数え上げになっていることが分かる
音声言語処理特論 第5回
t
パラメータ更新式(出力確率)(3)
•  出力確率分布(多次元混合正規分布の場合) –  状態遷移のように、正規分布ごとに分岐しているとみなす
∑ γ (i, j, m, t ) ∑ α (i, t − 1)a β ( j, t )w b (x )
=
=
∑ γ (i, j, t ) ∑ α (i, t − 1)a β ( j, t )∑ w b (x )
ij
wˆ ijm
t
ijm ijm
ij
∑ γ (i, j, m, t )x
=
∑ γ (i, j, m, t )
t
t
∑ γ (i, j, m, t )
t
m
t
∑ α (i, t − 1)a w b (x )β ( j, t )x
=
∑ α (i, t − 1)a w b (x )β ( j, t )
ij
ijm ijm
t
t
t
ij
ijm ijm
t
t
t
ˆ
ˆ
(
)(
)
(
)
γ
i
,
j
,
m
,
t
x
−
µ
x
−
µ
∑
t
ij
t
ij
t
ijm ijm
t
t
Σˆ ijm =
bij(xt)が 多次元混合正規分布
t
t
µˆ ijm
t
=
t
ˆ
ˆ
(
)(
)
(
)
(
)
(
)
α
i
,
t
−
1
a
w
b
x
β
j
,
t
x
−
µ
x
−
µ
∑
ij ijm ijm
t
t
ij
t
ij
t
∑ α (i, t − 1)a w
ij
t
音声言語処理特論 第5回
b
ijm ijm
(xt )β ( j, t )
学習データが複数個ある場合
•  学習データ(訓練サンプル)が n 個ある場合、これらの「全サ
ンプルのセット」について更新式を用いて1回パラメータを更
新し、これをパラメータが収束するまで繰り返さなければなら
ない •  1サンプルごとによるパラメータ更新では、パラメータの収束
が保障されない
{
}
n個の訓練データ x1 , x 2 , ! , x n に対して
(
) ( )( )
( )
P x1 , x 2 , ! , x n = P x1 P x 2 ! P x n
を最大にするようにパラメータΘを
推定しなければならない
音声言語処理特論 第5回
その場合の更新式
•  遷移確率の場合の例 aˆij =
∑∑ γ n (i, j, t )
n
t
∑∑∑ γ (i, j, t )
n
n
j
t
=
n
(
)
(
α
i
,
t
−
1
a
b
x
∑∑ n
ij ij
t )β n ( j , t )
n
t
∑∑ α (i, t − 1)β (i, t − 1)
n
n
n
t
–  データセット全体で1回更新する –  通常、学習データが多ければ多いほど、パラメー
タの信頼性は上がる •  学習データの分布が理想に近づく 音声言語処理特論 第5回
1つの出力確率分布あたりの 自由パラメータ数
音声言語処理特論 第5回
認識性能の違い
•  出力確率分布の違いによる認識性能の違い –  全共分散行列(full covariance)はパラメータ数が多くなる
ため学習が難しく、認識時の計算コストも高い •  きちんと学習できれば、性能は高い –  現在は、対角共分散行列(diagonal covariance)の混合正
規分布が一般的に使われている
音声言語処理特論 第5回
出力確率の違いによる いろいろなHMM
P(x1 x2 ! xT | Θ )
= ∑ P(x1 x2 ! xT , s1s2 ! sT | Θ )
s
= ∑∏ P(xi | x1 x2 ! xi − 2 xi −1 , s1s2 ! si −1si )P(si | s1s2 ! si −1 )
s
i
≈ ∑∏ P(xi | xi −3 xi − 2 xi −1 , si −1si )P(si | si −1 ) :予測型HMM
s
i
= ∑∏
s
i
P(xi −1 xi | si −1si )
P(si | si −1 ) :2フレーム条件付き確率HMM
P(xi −1 | si −1si )
≈ ∑∏ P(xi −1 xi | si −1si )P(si | si −1 ) :2フレームセグメント単位入力HMM
s
i
≈ ∑∏ P(xi −3 xi − 2 xi −1 xi | si −1si )P(si | si −1 ) :4フレームセグメント単位入力HMM
s
i
≈ ∑∏ P(xi | si −1si )P(si | si −1 ) :普通のHMM
s
i
音声言語処理特論 第5回
HMNet(1)
似たような状態が いくつかある……
状態数はいくつに するのが良いのか?
音声言語処理特論 第5回
HMNet(2)
自動的に状態分割 コンテキスト方向と 時間方向 似たような状態は 共有されたまま ネットワークで HMMを表現
音声言語処理特論 第5回
HMNet(3)
音声言語処理特論 第5回