HMM的細致推導(上)

參考:《PRML》

注:作為學習筆記以及記錄自己的思考過程后频,我將把所有的細節(jié)全部推導出來梳庆,過程可能比較繁冗。

動機

我們想要對時序數(shù)據構建概率模型p(\boldsymbol {\rm x_1,\cdots,x_N}) = \prod_{j=1}^{N}p(\boldsymbol {\rm x_j|x_1,\cdots,x_{j-1}})卑惜,為了盡量降低參數(shù)量膏执、增加可行性,又不至于喪失數(shù)據之間的相關性露久,我們可以引入所謂的“馬爾可夫性”:p(\boldsymbol {\rm x_j|x_1,\cdots,x_{j-1}})=p(\boldsymbol {\rm x_j|x_{j-M},\cdots,x_{j-1}})更米,得到的概率模型稱為“馬爾可夫鏈”,即任意一個隨機變量的概率分布只依賴于前面的M個隨機變量毫痕,因此也稱為“M階馬爾可夫鏈”征峦。但是纸巷,隨之而來的問題是,如何抉擇M的大小眶痰,太小了模型能力不足,太大了參數(shù)量和計算量呈指數(shù)級別增加梯啤。

為了解決這個兩難問題竖伯,考慮引入隱變量(latent/hidden variable),反過來我們稱\boldsymbol {\rm x_1,\cdots, x_N}為可見變量(visible variable)或是可觀測變量(observable variable)因宇;我們在這里對每一個可觀測變量引入一個相應的離散隱變量\boldsymbol {\rm x_j}七婴,這時仍然使用一階馬爾可夫鏈,然而不再是作用到可觀測變量察滑,而是約束到隱變量上打厘,構成了雙重隨機過程;下面正式引入HMM的相關結構:

一贺辰、隱變量滿足一階馬爾可夫性户盯,即:p(\boldsymbol {\rm z_1,\cdots,z_N}) = p(\boldsymbol {\rm z_1})\prod_{j=2}^{N}p(\boldsymbol {\rm z_j|z_{j-1}})

二、可觀測變量在給定對應的隱變量的值時的條件分布滿足以下條件獨立性:

p(\boldsymbol {\rm x_j | z_1,x_1,\cdots,z_{j-1},x_{j-1},z_j}) = p(\boldsymbol {\rm x_j | z_j})

下面將推出聯(lián)合概率分布結構:

首先由概率乘法法則得:

\begin{aligned}&p(\boldsymbol {\rm X, Z})\\&=p(\boldsymbol {\rm Z})p(\boldsymbol {\rm X| Z})\\&=p(\boldsymbol {\boldsymbol {\rm z_1,\cdots,z_N}})p(\boldsymbol {\rm  x_1, \cdots, x_N|z_1,\cdots,x_N})\\\end{aligned}

進一步應用概率乘法法則得到:

\begin{aligned}&=p(\boldsymbol {\rm z_1})\prod_{j=2}^{N}p(\boldsymbol {\rm z_j | z_1, \cdots, z_{j-1}}) \prod_{j=1}^{N}p(\boldsymbol {\rm x_j | x_1, \cdots,x_{j-1}, z_1,\cdots, z_{j-1}})\\\end{aligned}

由上面的兩個獨立性假設:隱變量的馬爾可夫性饲化,和觀測變量的條件獨立性得到:

\begin{aligned}&=p(\boldsymbol {\rm z_1})\prod_{j=2}^{N}p(\boldsymbol {\rm z_j | z_{j-1}}) \prod_{j=1}^{N}p(\boldsymbol {\rm x_j | z_j})\\\end{aligned}

即為聯(lián)合概率模型的分解形式莽鸭。

顯然,在引入兩類條件獨立性假設后吃靠,分解式中只剩下了只依賴一個變量的條件分布硫眨,因而在每個時間步可以使用固定的很少數(shù)目的參數(shù),例如:狀態(tài)空間包含K個狀態(tài)巢块,對于p(\boldsymbol {\rm z_j | z_{j-1}})來說礁阁,每個時間步用K*K個參數(shù),因此用一個矩陣A_j = (a_{ij})_{K\times K}^{j}就可以描述這個分布族奢,而對p(\boldsymbol {\rm z_1})來說姥闭,只需K個參數(shù)即可,我們將其記為\boldsymbol \pi歹鱼。另外泣栈,為了進一步降低參數(shù)量,我們再對HMM引入另一個約束弥姻,就是所謂的“時齊性”南片,即所有的時間步都共享同一組分布,也就是參數(shù)量不會隨著時間步N的增加而增加庭敦,因此A_1 = \cdots = A_N疼进,記公共參數(shù)為:A = (a_{ij})_{K\times K};這也是機器學習領域極其普遍存在的“參數(shù)共享”思想秧廉。最后伞广,對p(\boldsymbol {\rm x_j | z_j})也使用參數(shù)共享方法拣帽,并令其為\boldsymbol \phi,例如在語音識別中嚼锄,可能有:\boldsymbol \phi = \{ (\boldsymbol \lambda_k,\boldsymbol  \mu_k,\boldsymbol  \Sigma_k) \}_{k=1}^{K}减拭。

然而更為重要的是:通過引入了隱變量,我們獲得了能力足夠強大的同時区丑,保持了結構上較為簡單的概率模型拧粪;而且我們沒有引入觀測變量之間的條件獨立性;事實上沧侥,當我們使用概率模型來預測時可霎,我們對任意階數(shù)M,都沒有作出假設:p(\boldsymbol {\rm x_n|x_1,\cdots,x_{n-1}}) = p(\boldsymbol {\rm x_n|x_{n-M},\cdots,x_{n-1}})宴杀;事實上癣朗,任意兩個可見變量都可以通過隱變量進行互相作用,因此在HMM中旺罢,觀測序列并不構成馬爾可夫鏈旷余,這樣便消除了馬爾可夫性這樣的強獨立性條件。

有趣的是扁达,HMM可以視為混合模型的一個推廣荣暮,因為當隱變量之間是獨立的時候,有:

\begin{aligned}p( \boldsymbol {\rm X , Z}) &= p(\boldsymbol {\rm z_1})\prod_{j=2}^{N}p(\boldsymbol {\rm z_j | z_{j-1}}) \prod_{j=1}^{N}p(\boldsymbol {\rm x_j | z_j}) \\& = \prod_{j=1}^{N}p(\boldsymbol {\rm z_j }) \prod_{j=1}^{N}p(\boldsymbol {\rm x_j | z_j}) \\&= \prod_{j=1}^{N}p(\boldsymbol {\rm z_j })p(\boldsymbol {\rm x_j | z_j})\end{aligned}

對任意{\rm X, Z}的取值都成立罩驻,因此所有N組隨機變量對\boldsymbol {\rm (x_j, z_j)}, {\rm j=1,\cdots, N}之間是相互獨立的穗酥。另外,當p(\boldsymbol {\rm z_j})是K-維的二值分布惠遏,且p(\boldsymbol {\rm x_j | z_{j}}) 是多元高斯分布砾跃,則p({\rm X, Z}) 相當于是多個獨立同分布高斯混合模型的乘積;特別地节吮,當N=1時抽高,化為GMM模型。

HMM的最大似然解

既然HMM是GMM一種推廣透绩,HMM顯然是沒有閉式解的翘骂。HMM也是包含隱變量的概率模型,因而考慮使用“期望最大化算法”來進行求解。由EM算法的收斂性最后的結論可知,只要最大化Q函數(shù): \mathcal{Q}( \boldsymbol \theta,  \boldsymbol \theta^{old}) 即可慰安,我們將HMM對應的Q函數(shù)寫出來,并帶上相應參數(shù):

\begin{aligned}&  \mathcal{Q}( \boldsymbol \theta,  \boldsymbol \theta^{old}) = \sum_{\boldsymbol Z} p(\boldsymbol Z| \boldsymbol X; \boldsymbol \theta^{old}) {\rm ln}\  p(\boldsymbol X, \boldsymbol Z| \boldsymbol \theta) \ \ , \ \ \ \boldsymbol \theta=(\boldsymbol \pi, A, \boldsymbol \phi)\end{aligned}

其中:\boldsymbol Z=(\boldsymbol {\rm z_1},..., \boldsymbol {\rm z_N}), \boldsymbol X=(\boldsymbol {\rm x_1},..., \boldsymbol {\rm x_N})莹桅。

\begin{aligned}{\rm ln} \ p( \boldsymbol {\rm X , Z} | \boldsymbol \theta) &= {\rm ln} \left \{ p(\boldsymbol {\rm z_1}; \boldsymbol \pi)\prod_{j=2}^{N}p(\boldsymbol {\rm z_j | z_{j-1}} ;A) \prod_{j=1}^{N}p(\boldsymbol {\rm x_j | z_j} ; \boldsymbol \phi) \right \} \\&= {\rm ln} \ p(\boldsymbol {\rm z_1}; \boldsymbol \pi) + \sum_{j=2}^{N}{\rm ln}\ p(\boldsymbol {\rm z_j | z_{j-1}}; A) + \sum_{j=1}^{N}{\rm ln}\ p(\boldsymbol {\rm x_j | z_j} ; \boldsymbol \phi) \end{aligned}代入Q函數(shù)中,得到:

\begin{aligned} \mathcal{Q}( \boldsymbol \theta,  \boldsymbol \theta^{old}) &= \sum_{\boldsymbol Z} p(\boldsymbol Z| \boldsymbol X; \boldsymbol \theta^{old}) \left \{  {\rm ln} \ p(\boldsymbol {\rm z_1}; \boldsymbol \pi) + \sum_{j=2}^{N}{\rm ln}\ p(\boldsymbol {\rm z_j | z_{j-1}}; A) + \sum_{j=1}^{N}{\rm ln}\ p(\boldsymbol {\rm x_j | z_j} ; \boldsymbol \phi) \right \}  \\&=\sum_{\boldsymbol Z} p(\boldsymbol Z| \boldsymbol X; \boldsymbol \theta^{old})\   {\rm ln} \ p(\boldsymbol {\rm z_1} ; \boldsymbol \pi )  + \sum_{\boldsymbol Z} p(\boldsymbol Z| \boldsymbol X; \boldsymbol \theta^{old})\   \sum_{j=2}^{N}{\rm ln}\ p(\boldsymbol {\rm z_j| z_{j-1}};  A) \\& \ \ \ \ + \sum_{\boldsymbol Z} p(\boldsymbol Z| \boldsymbol X; \boldsymbol \theta^{old})\   \sum_{j=1}^{N}{\rm ln}\ p(\boldsymbol {\rm x_j| z_j}; \boldsymbol \phi) \end{aligned}   \cdots (1)

下面嘗試啰嗦地將所有步驟整理出來烛亦,將Q函數(shù)化為目標形式:

在上面(1)式中的第1項為:

\begin {aligned}&\sum_{\boldsymbol Z} p(\boldsymbol Z| \boldsymbol X; \boldsymbol \theta^{old})\   {\rm ln} \ p(\boldsymbol {\rm z_1})  \\ &= \sum_{\boldsymbol z_1} \sum_{\boldsymbol z_2} \cdots \sum_{\boldsymbol z_N}  p(\boldsymbol z_1,\boldsymbol  z_2, \cdots, \boldsymbol z_N| \boldsymbol X; \boldsymbol \theta^{old})\   {\rm ln} \ p(\boldsymbol {\rm z_1}) \\\end {aligned}

簡單地應用乘法對加法的分配律诈泼,有:

\begin {aligned}&= \sum_{\boldsymbol z_1}   {\rm ln} \ p(\boldsymbol {\rm z_1})  \sum_{\boldsymbol z_2} \cdots \sum_{\boldsymbol z_N}  p(\boldsymbol z_1,\boldsymbol  z_2, \cdots, \boldsymbol z_N| \boldsymbol X; \boldsymbol \theta^{old}) \\\end {aligned}

累加后懂拾,得到\boldsymbol z_1的邊緣分布,有:

\begin {aligned}& = \sum_{\boldsymbol z_1}   {\rm ln} \ p(\boldsymbol {\rm z_1}) p(\boldsymbol z_1 | \boldsymbol X; \boldsymbol \theta^{old})\end{aligned}

  {\rm ln} \ p(\boldsymbol {\rm z_1}) =   {\rm ln} \prod_{k=1}^{K} \pi_k^{z_{1k}} = \sum_{k=1}^{K} z_{1k}\  {\rm ln}\  \pi_k代入得:

\begin {aligned}& = \sum_{\boldsymbol  {\rm z_1}} \left \{  \sum_{k=1}^{K} z_{1k}\  {\rm ln}\  \pi_k \right \} p(\boldsymbol {\rm z_1} | \boldsymbol X; \boldsymbol \theta^{old}) \\&= \sum_{k=1}^{K} \left \{  \sum_{\boldsymbol  {\rm z_1}} z_{1k} p(\boldsymbol {\rm z_1} | \boldsymbol X; \boldsymbol \theta^{old}) \right \} {\rm ln}\  \pi_k \end{aligned}

我們一般有一組記號上的約定:\gamma(\boldsymbol {\rm z}) =  p(\boldsymbol {\rm z} | \boldsymbol X; \boldsymbol \theta^{old})\gamma(z_{nk}) =  \sum_{\boldsymbol  {\rm z_n}} z_{nk} p(\boldsymbol {\rm z_n} | \boldsymbol X; \boldsymbol \theta^{old})  铐达,而上面大括號內的表達式剛好是\gamma(z_{1k}) 岖赋,因此有:

\begin {aligned}第1項= \sum_{k=1}^{K} \gamma(z_{1k}) {\rm ln}\  \pi_k \\\end{aligned}


在上面(1)式中的第2項為(其中記號\boldsymbol {\rm z}_1...\hat{ \boldsymbol   {\rm z}}_j...\boldsymbol {\rm z}_N表示在除了\boldsymbol {\rm z}_j以外的所有其它變量上遍歷取值):

\begin{aligned}& \sum_{\boldsymbol Z} p(\boldsymbol Z| \boldsymbol X; \boldsymbol \theta^{old}) \left \{  \sum_{j=2}^{N}{\rm ln}\ p(\boldsymbol {\rm z_j| z_{j-1}}) \right \} \\&=   \sum_{j=2}^{N}  \sum_{\boldsymbol Z}  p(\boldsymbol Z| \boldsymbol X; \boldsymbol \theta^{old}) \   {\rm ln}\ p(\boldsymbol {\rm z_j| z_{j-1}}) \\&=  \sum_{j=2}^{N} \left \{ \sum_{\boldsymbol {\rm z_{j-1}}} \sum_{\boldsymbol {\rm z_j}} {\rm ln}\ p(\boldsymbol {\rm z_j| z_{j-1}})  \sum_{\boldsymbol {\rm z}_1...\hat{ \boldsymbol   {\rm z}}_{j-1},\hat{ \boldsymbol   {\rm z}}_j...\boldsymbol {\rm z}_N}  p(\boldsymbol  {\rm z_1,\cdots,z_{j-1},z_{j},\cdots, z_N }| \boldsymbol X; \boldsymbol  \theta^{old})  \right \} \\&= \sum_{j=2}^{N} \left \{ \sum_{\boldsymbol {\rm z_{j-1}}} \sum_{\boldsymbol {\rm z_j}} \boldsymbol [ {\rm ln}\ p(\boldsymbol {\rm z_j| z_{j-1}}) \boldsymbol ] p(\boldsymbol  {\rm z_{j-1},z_{j}}| \boldsymbol X; \boldsymbol  \theta^{old})  \right \} \ \  \cdots(2) \\\end{aligned}

設K個轉移概率分布p(\boldsymbol {\rm z_j| z_{j-1}})的參數(shù)是K\times K矩陣A= (a_{i,j})_{K\times K},即:a_{kl} = p({\rm x_j}=l| {\rm x_{j-1}}=k)瓮孙;而z_{j,k}= \begin{cases}  1,\  若 j時刻處于狀態(tài)k \\  0, \ \text {otherwise}  \end{cases}贾节,所以只有當j-1時刻處于狀態(tài)k,且j時刻處于狀態(tài)l衷畦,才有{z_{j-1,k} \cdot z_{j,l}} = 1。因此有表達式:p(\boldsymbol {\rm z_j | z_{j-1}}) = \prod_{k=l}^{K} \prod_{l=1}^{K}(a_{kl})^{z_{j-1,k} \cdot z_{j,l}}知牌,進一步有下式:

\begin{aligned} & {\rm ln}\ p(\boldsymbol {\rm z_j| z_{j-1}}) \\& = {\rm ln}\ \prod_{k=1}^{K}\prod_{l=1}^{K} (a_{kl})^{z_{j-1,k}z_{j,l}} \\&=\sum_{k=1}^{K} \sum_{l=1}^{K} {z_{j-1,k}  \cdot z_{j,l}}  \cdot {\rm ln} \ (a_{kl})\end {aligned}

因為我們的模型是時齊的祈争,所以這里的因子{\rm ln} \ (a_{kl})不依賴時間步j-1,j;將 {\rm ln}\ p(\boldsymbol {\rm z_j| z_{j-1}}) 的展開式代入上面(2)式繼續(xù)計算得:

\begin{aligned}(2)式&= \sum_{j=2}^{N} \left \{ \sum_{\boldsymbol {\rm z_{j-1},z_j}} \boldsymbol [  \sum_{k=1 \\ l=1}^{K}  {z_{j-1,k}  \cdot z_{j,l}}  \cdot{\rm ln} \ (a_{kl}) \boldsymbol ] p(\boldsymbol  {\rm z_{j-1},z_{j}}| \boldsymbol X; \boldsymbol  \theta^{old})  \right \} \\&= \sum_{j=2}^{N} \left \{ \sum_{k=1 \\ l=1}^{K}  {\rm ln} \ (a_{kl}) \sum_{\boldsymbol {\rm z_{j-1},z_j}}  {z_{j-1,k}  \cdot z_{j,l}} \cdot p(\boldsymbol  {\rm z_{j-1},z_{j}}| \boldsymbol X; \boldsymbol  \theta^{old})  \right \} \\\end{aligned}

我們再次引進記號:\xi(  \boldsymbol {\rm z}_{j-1}, \boldsymbol {\rm z}_{j}) =     p(\boldsymbol  {\rm z_{j-1},z_{j}}| \boldsymbol X; \boldsymbol  \theta^{old}) 角寸,和\xi(z_{j-1,k}, z_{j,l}) =  \sum_{\boldsymbol {\rm z_{j-1},z_j}}  {z_{j-1,k}  \cdot z_{j,l}} \cdot p(\boldsymbol  {\rm z_{j-1},z_{j}}| \boldsymbol X; \boldsymbol  \theta^{old}) 菩混,并代入上式得:

\begin{aligned}&= \sum_{j=2}^{N} \sum_{k=1 \\ l=1}^{K} \xi(z_{j-1,k}, z_{j,l}) \  {\rm ln} \ (a_{kl}) \end{aligned} ,即為(1)式的第2項扁藕。


最后對第3項作類似的變換:

\begin{aligned}&\sum_{\boldsymbol Z} p(\boldsymbol Z| \boldsymbol X; \boldsymbol \theta^{old})\   \sum_{j=1}^{N}{\rm ln}\ p(\boldsymbol {\rm x_j| z_{j}}) \\&=  \sum_{j=1}^{N} \sum_{\boldsymbol Z}  p(\boldsymbol Z| \boldsymbol X; \boldsymbol \theta^{old}) \ {\rm ln}  \ p(\boldsymbol  {\rm x_j| z_{j}})  \\&=  \sum_{j=1}^{N} \sum_{\boldsymbol {\rm z}_j} {\rm ln}  \ p(\boldsymbol  {\rm x_j| z_{j}}) \sum_{\boldsymbol z_1...\hat{ \boldsymbol  z_j} ... \boldsymbol  z_N}  p(\boldsymbol {\rm z_1},..., \boldsymbol {\rm z_N} | \boldsymbol X; \boldsymbol \theta^{old}) \  \\&=  \sum_{j=1}^{N} \sum_{\boldsymbol {\rm z}_j} p(\boldsymbol {\rm z_j} | \boldsymbol X; \boldsymbol \theta^{old}) \  {\rm ln}  \ p(\boldsymbol  {\rm x_j| z_{j}})  \\&=  \sum_{j=1}^{N} \sum_{\boldsymbol {\rm z}_j} p(\boldsymbol {\rm z_j} | \boldsymbol X; \boldsymbol \theta^{old}) \  {\rm ln}  \ p(\boldsymbol  {\rm x_j| z_{j}})  \\\end{aligned}

到這里沮峡,我們再令K個隱狀態(tài)分別對應的觀測概率分布為:p(\boldsymbol {\rm x}_j ; \boldsymbol \phi_k),k=1,...K,其中\boldsymbol \phi_k是第k個狀態(tài)對應的觀測概率的參數(shù)亿柑。則有:{\rm ln}  \ p(\boldsymbol  {\rm x_j| z_{j}})  = {\rm ln} \left ( \prod_{k=1}^{K} p(\boldsymbol {\rm x_j} ; \boldsymbol \phi_k)^{z_{jk}} \right )邢疙,代入上式得:

\begin{aligned}&=  \sum_{j=1}^{N} \sum_{\boldsymbol {\rm z}_j} p(\boldsymbol {\rm z_j} | \boldsymbol X; \boldsymbol \theta^{old}) \ \sum_{k=1}^{K} z_{j,k} \cdot {\rm ln} \ p(\boldsymbol {\rm x_j}; \boldsymbol \phi_k) \\&=  \sum_{j=1}^{N} \sum_{k=1}^{K}   {\rm ln} \ p(\boldsymbol {\rm x_j}; \boldsymbol \phi_k) \sum_{\boldsymbol {\rm z}_j}  z_{j,k}\cdot p(\boldsymbol {\rm z_j} | \boldsymbol X; \boldsymbol \theta^{old})  \\&=  \sum_{j=1}^{N} \sum_{k=1}^{K}  \gamma(z_{jk})\   {\rm ln} \ p(\boldsymbol {\rm x_j}; \boldsymbol \phi_k)\end{aligned}

得到(1)式中的第3項對應的目標形式,最后全部代入(1)式得到目標Q函數(shù):

\begin{aligned} \mathcal{Q}( \boldsymbol \theta,  \boldsymbol \theta^{old}) &= \sum_{k=1}^{K} \gamma(z_{1k}) {\rm ln}\  \pi_k +  \sum_{j=2}^{N} \sum_{k=1 \\ l=1}^{K} \xi(z_{j-1,k}, z_{j,l}) \  {\rm ln} \ (a_{kl}) \\  &\ \ \ \  + \sum_{j=1}^{N} \sum_{k=1}^{K}  \gamma(z_{jk})\   {\rm ln} \ p(\boldsymbol {\rm x}_j; \boldsymbol \phi_k)  \ \ \ \   \cdots (4) \end{aligned}


按照慣例望薄,我們假設狀態(tài)轉移概率矩陣A的行指標k表示上一時間步的狀態(tài)疟游,而列指標表示下一時間步的狀態(tài);因此痕支,矩陣A的每一行是一個概率質量函數(shù)颁虐,因此每一行相加為1。

為了在M步中優(yōu)化參數(shù)卧须,這里需要求Q函數(shù)在相應的約束條件下的極值點另绩;因此應用Lagrange增廣函數(shù),并求得平穩(wěn)點:

\begin{aligned} \mathcal{\tilde{Q}}( \boldsymbol \theta,  \boldsymbol \theta^{old}) &= \sum_{j=1}^{K} \gamma(z_{1j}) {\rm ln}\  \pi_j +  \sum_{j=2}^{N} \sum_{k=1 \\ l=1}^{K} \xi(z_{j-1,k}, z_{j,l}) \  {\rm ln} \ (a_{kl}) \\  &\ \ \ \  + \sum_{j=1}^{N} \sum_{n=1}^{K}  \gamma(z_{jn})\   {\rm ln} \ p(\boldsymbol {\rm x}_j; \boldsymbol \phi_n)  +\lambda(1-\sum_{j=1}^{K} \pi_j) \\ &\ \ \ \ + \sum_{k=1}^{K} \mu_k (1-  \sum_{l=1}^{K} a_{kl}) \ \   \cdots (5) \end{aligned}

高斯混合模型GMM的詳細推導文中對\boldsymbol \pi的處理一樣花嘶,對分別對\boldsymbol \pi的每個分量\pi_k單獨求導笋籽,并令結果為0,得到:

 \gamma(z_{1k}) / \pi_k - \lambda= 0 \iff  \gamma(z_{1k})  = \lambda \pi_k ,k=1,...K

對上面K個等式同時相加得到:\begin{aligned}\sum_{k=1}^{K} \gamma(z_{1k})  = \sum_{k=1}^{K} \lambda \pi_k = \lambda \sum_{k=1}^{K} \pi_k = \lambda \\\end{aligned}椭员,代回上式得:

\begin{aligned}\pi_k  = \frac { \gamma(z_{1k})} {\sum_{j=1}^{K} \gamma(z_{1j}) }, k=1,...,K\end{aligned} \ \ \ \ (**1)

同理對狀態(tài)轉移概率矩陣參數(shù)進行類似推導干签,得到下面K\times K個等式:

\begin{aligned}& \frac{ \partial  \mathcal{\tilde{Q}}( \boldsymbol \theta,  \boldsymbol \theta^{old})}{ \partial a_{k_0l_0}} = \sum_{j=2}^{N}\xi(z_{j-1,k_0}, z_{j,l_0})\cdot \frac{1}{a_{k_0l_0}} -\mu_{k_0} = 0 \\ &\iff \sum_{j=2}^{N}\xi(z_{j-1,k_0}, z_{j,l_0}) = \mu_{k_0} \cdot a_{k_0l_0} \ ;\ \  k_0,l_0=1,...,K\end{aligned}  \ \ \cdots (6)

在上面的K\times K個方程中,固定某個k_0拆撼,并對所有的l_0容劳,將相應的K個方程相加得到:

\sum_{l_0=1}^{K} \sum_{j=2}^{N} \xi(z_{j-1,k_0}, z_{j,l_0}) =\sum_{l_0=1}^{K} \mu_{k_0} \ a_{k_0l_0} =  \mu_{k_0} \sum_{l_0=1}^{K}\ a_{k_0l_0} =\mu_{k_0}  ;\ \  k_0=1,...,K

\mu_{k_0}的表達式代回(6)式喘沿,并省略下標0,得到:

a_{kl} = \frac{\sum_{j=2}^{N}\xi(z_{j-1,k}, z_{j,l})}{\sum_{l=1}^{K} \sum_{j=2}^{N} \xi(z_{j-1,k}, z_{j,l}) } \ \  \ \ \ \ (**2)


最后竭贩,我們來討論Lagrange函數(shù)極值點關于觀測概率分布的參數(shù)的部分蚜印,一般來說,觀測概率分布可以是離散概率分布或事連續(xù)概率分布都可以留量;下面以GMM作為觀測概率分布完成最后的推導窄赋。

設觀測概率分布為GMM,即:

\begin{aligned}p(\boldsymbol {\rm x} ; \boldsymbol \phi_{n}) &= \sum_{k=1}^{K_n} \nu_{nk} N(\boldsymbol{ {\rm x} ; \mu_{nk},\Sigma_{nk}}) \\&=  \sum_{k=1}^{K_n}\nu_{nk} \frac{1}{\sqrt{{(2\pi)}^Ddet(\boldsymbol\Sigma_{nk})}}e^{-\frac{1}{2}\boldsymbol {{(x-\mu_{nk})}^T\Sigma_{nk}^{-1}(x-\mu_{nk})}}\end{aligned} \ \ \ \cdots (7)

其中楼熄,\boldsymbol \phi_n是馬爾可夫鏈的狀態(tài)n對應的觀測概率分布的參數(shù)忆绰;即這里共有K個GMM模型,第n個模型包含K_n個分量可岂,且其參數(shù)記為\boldsymbol \phi_n=\{(\boldsymbol \nu_{nk}, \boldsymbol \mu_{nk},\boldsymbol \Sigma_{nk})\}_{k=1}^{Kn}错敢,D為數(shù)據空間的維數(shù)。

現(xiàn)在因為確定了觀測概率分布GMM缕粹,則需要把GMM的約束條件也加入到Lagrange函數(shù)里稚茅,我們重新寫一遍Lagrange函數(shù),引入新的Lagrange 乘子\alpha_n平斩,并忽略掉對本次求導的無關項:

\begin{aligned} \mathcal{\tilde{Q}}( \boldsymbol \theta,  \boldsymbol \theta^{old}) &=  \sum_{j=1}^{N} \sum_{n=1}^{K}  \gamma(z_{jn})\   {\rm ln} \ p(\boldsymbol {\rm x}_j; \boldsymbol \phi_n)  + \sum_{n=1}^{K} \alpha_n (1-  \sum_{k=1}^{K_n} \nu_{nk}) + \text {(irrelevant-items)}  \ \    \cdots (8) \end{aligned}

類似高斯混合模型GMM的詳細推導中類似的方法亚享,對\boldsymbol \mu_{nk}求導:

\begin{aligned}\frac{\partial \tilde{Q} }{\partial \boldsymbol \mu_{nk}}  &= \frac{\partial \tilde{Q} }{ \partial {\rm ln}\ p(\boldsymbol {\rm x}_j; \boldsymbol \phi_n)} \frac{ \partial {\rm ln}\ p(\boldsymbol {\rm x}_j; \boldsymbol \phi_n)}{ \partial p(\boldsymbol {\rm x}_j; \boldsymbol \phi_n)} \frac{\partial p(\boldsymbol {\rm x}_j; \boldsymbol \phi_n)}{\partial {\rm q}( \boldsymbol \mu_{nk})}  \frac{ \partial {\rm q}( \boldsymbol \mu_{nk})}{\partial \boldsymbol \mu_{nk}}\\&= \sum_{j=1}^{N} \gamma(z_{jn})\  \frac{1}{p(\boldsymbol {\rm x}_j; \boldsymbol \phi_n)} \nu_{nk}N(\boldsymbol {\rm x}_j; \boldsymbol \mu_{nk}, \boldsymbol \Sigma_{nk}) \cdot (\boldsymbol {\rm x}_j - \boldsymbol \mu_{nk})\boldsymbol \Sigma_{nk}^{-1}\end{aligned}

上式中的{\rm q}(\boldsymbol \mu_{nk})是多元正態(tài)分布指數(shù)上的二次型,將高斯混合模型GMM的詳細推導中相關結論抄過來绘面,就得到上式欺税;另外和GMM文中一樣,令\gamma(w_{jk}) = \frac{\nu_{nk}N(\boldsymbol {\rm x}_j; \boldsymbol \mu_{nk}, \boldsymbol \Sigma_{nk}) } { {\rm ln}\ p(\boldsymbol {\rm x}_j; \boldsymbol \phi_n)}表示鏈中的第j個樣本屬于狀態(tài)n對應的GMM的第k的后驗概率揭璃;現(xiàn)在令\frac{\partial \tilde{Q} }{\partial \boldsymbol \mu_{nk}}  = \boldsymbol 0_{1\times D}(其中D是觀測數(shù)據空間的維度)魄衅,經過化簡得:

{\boldsymbol \mu_{nk} = \frac{ \sum_{j=1}^{N} \gamma(z_{j,n})\gamma(w_{j,k}) \boldsymbol {\rm x}_j} { \sum_{j=1}^{N} \gamma(z_{j,n})\gamma(w_{j,k})} } \ \ \ \cdots (**3)

同理可得\boldsymbol \Sigma_{nk}相關的等式:

{\boldsymbol \Sigma_{nk} = \frac{ \sum_{j=1}^{N} \gamma(z_{j,n})\gamma(w_{j,k}) (\boldsymbol {\rm x}_j - \boldsymbol \mu_j )  (\boldsymbol {\rm x}_j - \boldsymbol \mu_j )^{T}} { \sum_{j=1}^{N} \gamma(z_{j,n})\gamma(w_{j,k})} }  \ \ \ \cdots (**4)

最后對第n個狀態(tài)對應的GMM的混合系數(shù)\nu_{nk}; k=1,...,K_n求導塘辅,并令其為0晃虫,得:

\sum_{j=1}^{N} \gamma(z_{j,n}) \frac{1}{p(\boldsymbol {\rm x}_j; \boldsymbol \phi_n)}N(\boldsymbol {\rm x}_j; \boldsymbol \mu_{nk}, \boldsymbol \Sigma_{nk}) - \alpha_n = 0 \ \ \ ; \ \  k=1,...,K_n

對上面K_n個方程,左右分別乘以對應的混合系數(shù)\nu_{nk}

\sum_{j=1}^{N} \gamma(z_{j,n}) \frac{\nu_{nk} N(\boldsymbol {\rm x}_j; \boldsymbol \mu_{nk}, \boldsymbol \Sigma_{nk})}{p(\boldsymbol {\rm x}_j; \boldsymbol \phi_n)} = \alpha_n \nu_{nk}  \ \ ; \ \ k=1,...,K_n

再次我們湊出了\gamma(z_{j,k})扣墩,即上式等價于:

\sum_{j=1}^{N} \gamma(z_{j,n})\gamma(w_{j,k}) = \alpha_n \nu_{nk} \  \ ; \ \  k=1,...,K_n

再將這些方程相加得:

 \sum_{k=1}^{Kn} \sum_{j=1}^{N} \gamma(z_{j,n})  \gamma(w_{j,k}) = \sum_{k=1}^{K_n} \alpha_n \nu_{nk} =  \alpha_n \sum_{k=1}^{K_n}\nu_{nk} =  \alpha_n

將上式代回上面(9)式哲银,即有:

\nu_{nk} = \frac{\sum_{j=1}^{N} \gamma(z_{j,n})\gamma(w_{j,k})}{ \sum_{k=1}^{Kn} \sum_{j=1}^{N} \gamma(z_{j,n})  \gamma(w_{j,k})}  \ , \ \ \  k=1,...,K_n \ \ \ \cdots (**5)


前向-后向算法

到目前為止,前面所有的推導過程中都應用了封裝的兩個函數(shù):\gamma( z_{j,k}),\  \xi(z_{j-1,k}, z_{j,l})呻惕。下面我們使用前向-后向算法來對其進行估計荆责。

回想\gamma(\boldsymbol {\rm z_n}) =  p(\boldsymbol {\rm z_n} | \boldsymbol X; \boldsymbol \theta^{old}),以及\gamma(z_{nk}) =  \sum_{\boldsymbol  {\rm z_n}} z_{nk} p(\boldsymbol {\rm z_n} | \boldsymbol X; \boldsymbol \theta^{old})  亚脆,所以我們先來處理\gamma(\boldsymbol {\rm z_n}) 做院,使用貝葉斯公式:

\begin{aligned}\gamma(\boldsymbol {\rm z_n})  &= p(\boldsymbol {\rm z}_n | \boldsymbol X ; \boldsymbol \theta^{old}) \\ &= \frac{p(\boldsymbol {\rm z}_n)p(\boldsymbol {\rm x}_1,...,\boldsymbol {\rm x}_N | \boldsymbol {\rm z}_n; \boldsymbol \theta^{old})} {p(\boldsymbol X ; \boldsymbol \theta^{old})} \\&= \frac{p(\boldsymbol {\rm z}_n)p(\boldsymbol {\rm x}_1,...,\boldsymbol {\rm x}_n | \boldsymbol {\rm z}_n; \boldsymbol \theta^{old}) p(\boldsymbol {\rm x}_{n+1},...,\boldsymbol {\rm x}_N | \boldsymbol {\rm x}_1,...,\boldsymbol {\rm x}_n ,\boldsymbol {\rm z}_n ; \boldsymbol \theta^{old}) } {p(\boldsymbol X ; \boldsymbol \theta^{old})} \\&= \frac{p(\boldsymbol {\rm z}_n)p(\boldsymbol {\rm x}_1,...,\boldsymbol {\rm x}_n | \boldsymbol {\rm z}_n; \boldsymbol \theta^{old}) p(\boldsymbol {\rm x}_{n+1},...,\boldsymbol {\rm x}_N | \boldsymbol {\rm z}_n ; \boldsymbol \theta^{old}) } {p(\boldsymbol X ; \boldsymbol \theta^{old})} \\&= \frac{p(\boldsymbol {\rm x}_1,...,\boldsymbol {\rm x}_n , \boldsymbol {\rm z}_n; \boldsymbol \theta^{old}) p(\boldsymbol {\rm x}_{n+1},...,\boldsymbol {\rm x}_N | \boldsymbol {\rm z}_n ; \boldsymbol \theta^{old}) } {p(\\boldsymbol X ; \boldsymbol \theta^{old})} \\\end{aligned}

其中,上式應用了HMM的條件獨立性假設;在上式的最后一行中键耕,令\alpha(\boldsymbol {\rm z}_n) = p(\boldsymbol {\rm x}_1,...,\boldsymbol {\rm x}_n , \boldsymbol {\rm z}_n; \boldsymbol \theta^{old}); \beta(\boldsymbol {\rm z}_n) =  p(\boldsymbol {\rm x}_{n+1},...,\boldsymbol {\rm x}_N | \boldsymbol {\rm z}_n ; \boldsymbol \theta^{old}) 寺滚,前一個稱為“前向變量”,其意義用語句敘述就是:生成前n個觀測屈雄,且鏈在時間步n時處于狀態(tài)\boldsymbol {\rm z}_n的概率村视;后一個稱為“后向變量”,用語句敘述是:給定在時間步n鏈處于狀態(tài)\boldsymbol {\rm z}_n酒奶,而后觀測到后一半的部分觀測序列的概率蚁孔。

顯然,這里的\alpha(\boldsymbol {\rm z}_n) \beta(\boldsymbol {\rm z}_n) 是作用過“條件獨立性假設”后的惋嚎,要使得\gamma(\boldsymbol {\rm z_n}) 成為一個合法的概率分布杠氢,我們對\alpha(\boldsymbol {\rm z}_n) \beta(\boldsymbol {\rm z}_n) 進行歸一化,即使用:p(\boldsymbol X) = \sum_{\boldsymbol {\rm z}_k} \alpha(\boldsymbol {\rm z}_n) \beta(\boldsymbol {\rm z}_n) 作為分母另伍。

我們來推導出\alpha(\boldsymbol {\rm z}_n)\beta(\boldsymbol {\rm z}_n)的遞歸式:

\begin{aligned}\alpha(\boldsymbol {\rm z}_n) &= p(\boldsymbol {\rm x}_1,...,\boldsymbol {\rm x}_{n-1} ,  \boldsymbol {\rm x}_n , \boldsymbol {\rm z}_n; \boldsymbol \theta^{old}) \\&= \sum_{\boldsymbol {\rm z}_{n-1}} p(\boldsymbol {\rm x}_1,...,\boldsymbol {\rm x}_{n-1} , \boldsymbol {\rm z}_{n-1},  \boldsymbol {\rm x}_n , \boldsymbol {\rm z}_n; \boldsymbol \theta^{old}) \\&=  \sum_{\boldsymbol {\rm z}_{n-1}} p(\boldsymbol {\rm x}_1,...,\boldsymbol {\rm x}_{n-1} | \boldsymbol {\rm z}_{n-1} , \boldsymbol {\rm x}_n , \boldsymbol {\rm z}_n)     p( \boldsymbol {\rm x}_n | \boldsymbol {\rm z}_{n-1} , \boldsymbol {\rm z}_n)   p( \boldsymbol {\rm z}_n | \boldsymbol {\rm z}_{n-1} ) p(\boldsymbol {\rm z}_{n-1} )\\&=  \sum_{\boldsymbol {\rm z}_{n-1}} p(\boldsymbol {\rm x}_1,...,\boldsymbol {\rm x}_{n-1} | \boldsymbol {\rm z}_{n-1} )     p( \boldsymbol {\rm x}_n | \boldsymbol {\rm z}_n)   p( \boldsymbol {\rm z}_n | \boldsymbol {\rm z}_{n-1} ) p(\boldsymbol {\rm z}_{n-1} )\\&=  \sum_{\boldsymbol {\rm z}_{n-1}} p(\boldsymbol {\rm x}_1,...,\boldsymbol {\rm x}_{n-1} , \boldsymbol {\rm z}_{n-1} )     p( \boldsymbol {\rm x}_n | \boldsymbol {\rm z}_n)   p( \boldsymbol {\rm z}_n | \boldsymbol {\rm z}_{n-1} ) \\&=   \sum_{\boldsymbol {\rm z}_{n-1}} \alpha(\boldsymbol {\rm z}_{n-1}) p( \boldsymbol {\rm x}_n | \boldsymbol {\rm z}_n)   p( \boldsymbol {\rm z}_n | \boldsymbol {\rm z}_{n-1} ) \\&= p( \boldsymbol {\rm x}_n | \boldsymbol {\rm z}_n)    \sum_{\boldsymbol {\rm z}_{n-1}} \alpha(\boldsymbol {\rm z}_{n-1})  p( \boldsymbol {\rm z}_n | \boldsymbol {\rm z}_{n-1} ) \\\end{aligned}

有了遞歸式鼻百,我們再補上遞歸的觸底式,根據定義有:

\alpha(\boldsymbol {\rm z}_1)  = p(\boldsymbol {\rm x}_1, \boldsymbol {\rm z}_1) =  p(\boldsymbol {\rm x}_1| \boldsymbol {\rm z}_1) p(\boldsymbol {\rm z}_1) = \prod_{k=1}^{K} \{ p(\boldsymbol {\rm x}_1; \boldsymbol \phi_k) \} ^{z_{1,k}} \prod_{k=1}^{K} \pi_k ^{z_{1,k}} = \prod_{k=1}^{K} \{ \pi_k p(\boldsymbol {\rm x}_1; \boldsymbol \phi_k) \} ^{z_{1,k}}

\begin{aligned} \beta(\boldsymbol {\rm z}_n) &=  p(\boldsymbol {\rm x}_{n+1},\boldsymbol {\rm x}_{n+2},...,\boldsymbol {\rm x}_N | \boldsymbol {\rm z}_n ; \boldsymbol \theta^{old}) \\ &=\sum_{\boldsymbol {\rm z}_{n+1}} p(\boldsymbol {\rm x}_{n+1},\boldsymbol {\rm z}_{n+1}, \boldsymbol {\rm x}_{n+2},...,\boldsymbol {\rm x}_N | \boldsymbol {\rm z}_n) \\ &=\sum_{\boldsymbol {\rm z}_{n+1}} p( \boldsymbol {\rm x}_{n+2},...,\boldsymbol {\rm x}_N | \boldsymbol {\rm x}_{n+1},\boldsymbol {\rm z}_{n+1},\boldsymbol {\rm z}_n )    p( \boldsymbol {\rm x}_{n+1} | \boldsymbol {\rm z}_n,\boldsymbol {\rm z}_{n+1} )     p(\boldsymbol {\rm z}_{n+1} | \boldsymbol {\rm z}_{n} ) \\ &=\sum_{\boldsymbol {\rm z}_{n+1}} p( \boldsymbol {\rm x}_{n+2},...,\boldsymbol {\rm x}_N | \boldsymbol {\rm z}_{n+1} )    p( \boldsymbol {\rm x}_{n+1} | \boldsymbol {\rm z}_{n+1} )     p(\boldsymbol {\rm z}_{n+1} | \boldsymbol {\rm z}_{n} ) \\ &=\sum_{\boldsymbol {\rm z}_{n+1}} \beta(\boldsymbol {\rm z}_{n+1} )    p( \boldsymbol {\rm x}_{n+1} | \boldsymbol {\rm z}_{n+1} )     p(\boldsymbol {\rm z}_{n+1} | \boldsymbol {\rm z}_{n} ) \\\end{aligned}

對于\beta函數(shù)质况,從后往前遞歸,那么觸底式為\beta(\boldsymbol {\rm z}_N)玻靡,但是對于這樣的下標N來說结榄,\beta(\boldsymbol {\rm z}_N)無定義,但是\alpha(\boldsymbol {\rm z}_N)是有定義的囤捻;我們再回到最初的定義中去:

\gamma(\boldsymbol {\rm z_N})  = p(\boldsymbol {\rm z}_N | \boldsymbol X ) = \frac{\alpha(\boldsymbol {\rm z}_N) \beta(\boldsymbol {\rm z}_N) } {p(\\boldsymbol X )} =  \frac{p(\boldsymbol X, \boldsymbol {\rm z}_N) \beta(\boldsymbol {\rm z}_N) } {p(\\boldsymbol X )}

因而: \beta(\boldsymbol {\rm z}_N)  =  \frac{p(\boldsymbol {\rm z}_N | \boldsymbol X) p(\boldsymbol X )}{p(\boldsymbol X, \boldsymbol {\rm z}_N ) } \equiv 1

下面計算分母:p(\boldsymbol X) = \sum_{\boldsymbol {\rm z}_n} \alpha(\boldsymbol {\rm z}_n) \beta(\boldsymbol {\rm z}_n) 臼朗,可以從任意一個n=1,...,N開始迭代計算,例如令n=N蝎土,用前向算法得到\alpha(\boldsymbol {\rm z}_N) 视哑,最后得到:p(\boldsymbol X) = \sum_{\boldsymbol {\rm z}_N} \alpha(\boldsymbol {\rm z}_N)


下面再來處理一下\xi(  \boldsymbol {\rm z}_{n-1}, \boldsymbol {\rm z}_{n})

\begin{aligned}\xi(  \boldsymbol {\rm z}_{n-1}, \boldsymbol {\rm z}_n) &=     p(\boldsymbol  {\rm z_{n-1},z_{n}}| \boldsymbol X )  \\&=\frac { p(\boldsymbol  {\rm z_{n-1},z_n} , \boldsymbol {\rm x}_1,..., \boldsymbol {\rm x}_N) } {p(\boldsymbol X ) } \\&=\frac { p( \boldsymbol {\rm x}_1,..., \boldsymbol {\rm x}_{n-1} | \boldsymbol {\rm z}_{n-1}, \boldsymbol {\rm z}_n, \boldsymbol {\rm x}_n,..., \boldsymbol {\rm x}_N )      p( \boldsymbol {\rm x}_{n+1},..., \boldsymbol {\rm x}_N | \boldsymbol {\rm z}_{n-1}, \boldsymbol {\rm z}_n, \boldsymbol {\rm x}_n)     p(\boldsymbol  {\rm z}_{n-1}, \boldsymbol {\rm z}_n ,  \boldsymbol {\rm x}_n) } {p(\boldsymbol X)} \\&=\frac { p( \boldsymbol {\rm x}_1,..., \boldsymbol {\rm x}_{n-1} | \boldsymbol {\rm z}_{n-1})      p( \boldsymbol {\rm x}_{n+1},..., \boldsymbol {\rm x}_N |  \boldsymbol {\rm z}_n)     p(\boldsymbol  {\rm x}_n | \boldsymbol  {\rm z}_{n-1}, \boldsymbol {\rm z}_n )  p(\boldsymbol  {\rm z}_n | \boldsymbol {\rm z}_{n-1} ) p(\boldsymbol {\rm z}_{n-1}) } {p(\boldsymbol X)} \\&=\frac { p( \boldsymbol {\rm x}_1,..., \boldsymbol {\rm x}_{n-1} ,\boldsymbol {\rm z}_{n-1})      p( \boldsymbol {\rm x}_{n+1},..., \boldsymbol {\rm x}_N |  \boldsymbol {\rm z}_n)     p(\boldsymbol  {\rm x}_n | \boldsymbol {\rm z}_n )  p(\boldsymbol  {\rm z}_n | \boldsymbol {\rm z}_{n-1} ) } {p(\boldsymbol X)} \\&=\frac { \alpha(\boldsymbol {\rm z}_{n-1})      \beta(\boldsymbol {\rm z}_n)     p(\boldsymbol  {\rm x}_n |  \boldsymbol {\rm z}_n )  p(\boldsymbol  {\rm z}_n | \boldsymbol {\rm z}_{n-1} )) } {p(\boldsymbol X)} \\\end{aligned}

下面就可以使用上面推導的公式誊涯,在EM算法中進行參數(shù)優(yōu)化:

1. 初始化參數(shù)\boldsymbol \theta = (\boldsymbol \pi, {\rm A}, \boldsymbol \Phi)挡毅;

2. 在訓練數(shù)據上計算\gamma(  \boldsymbol {\rm z}_n) , \xi(  \boldsymbol {\rm z}_{n-1}, \boldsymbol {\rm z}_n)

3. 利用上面的(**1) ,..., (**5)式重新估計參數(shù)暴构;

4. 根據收斂準則跪呈,判斷\boldsymbol \theta是否已經收斂:若沒有,則重復上面2取逾,3步驟耗绿。


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市砾隅,隨后出現(xiàn)的幾起案子误阻,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件究反,死亡現(xiàn)場離奇詭異寻定,居然都是意外死亡,警方通過查閱死者的電腦和手機奴紧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進店門特姐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人黍氮,你說我怎么就攤上這事唐含。” “怎么了沫浆?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵捷枯,是天一觀的道長。 經常有香客問我专执,道長淮捆,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任本股,我火速辦了婚禮攀痊,結果婚禮上,老公的妹妹穿的比我還像新娘拄显。我一直安慰自己苟径,他們只是感情好,可當我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布躬审。 她就那樣靜靜地躺著棘街,像睡著了一般。 火紅的嫁衣襯著肌膚如雪承边。 梳的紋絲不亂的頭發(fā)上遭殉,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天,我揣著相機與錄音博助,去河邊找鬼险污。 笑死,一個胖子當著我的面吹牛富岳,可吹牛的內容都是我干的罗心。 我是一名探鬼主播,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼城瞎,長吁一口氣:“原來是場噩夢啊……” “哼渤闷!你這毒婦竟也來了?” 一聲冷哼從身側響起脖镀,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤飒箭,失蹤者是張志新(化名)和其女友劉穎狼电,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體弦蹂,經...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡肩碟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了凸椿。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片削祈。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖脑漫,靈堂內的尸體忽然破棺而出髓抑,到底是詐尸還是另有隱情,我是刑警寧澤优幸,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布吨拍,位于F島的核電站,受9級特大地震影響网杆,放射性物質發(fā)生泄漏羹饰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一碳却、第九天 我趴在偏房一處隱蔽的房頂上張望队秩。 院中可真熱鬧,春花似錦昼浦、人聲如沸馍资。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽迷帜。三九已至物舒,卻和暖如春色洞,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背冠胯。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工火诸, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人荠察。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓置蜀,卻偏偏與公主長得像,于是被迫代替她去往敵國和親悉盆。 傳聞我的和親對象是個殘疾皇子盯荤,可洞房花燭夜當晚...
    茶點故事閱讀 44,960評論 2 355

推薦閱讀更多精彩內容