Expectation Maximum Algorithm(EM算法)

1. 预备知识

1.1 凸函数的性质

假设定义在实数域上的函数,对于 任意的实数,都有
f''(x)<0\tag{1.1}
则函数f(x)称为凸函数,反之,为凹函数。(国内外教材对于凸凹函数的定义不同,这里采用国内教材为准)

1.2 Jensen不等式

1.2.1 数学意义

如果函数是凸函数,则有
f(\lambda x_1+(1-\lambda)x_2) \geq \lambda f(x_1)+(1-\lambda)f(x_2)\tag{1.2}

如果函数是凹函数,则有
f(\lambda x_1+(1-\lambda)x_2) \leq \lambda f(x_1)+(1-\lambda)f(x_2)\tag{1.3}

1.2.2 几何意义
以凹函数为例

\lambda0.5时,左右两边严格相等。

1.2.3 推广

若存在凸函数f(x),其中有
\begin{align} \sum_{i=1}^{k} \lambda_i=1, \lambda_{i} \geq 0\tag{1.4} \end{align}
则有
\begin{align} f(\lambda_1x_1+\lambda_2x_2+...+\lambda_kx_k)\geq\lambda_{1}f(x_1)+\lambda_{2}f(x_2)+...+\lambda_{k}f(x_k)\tag{1.5} \end{align}
在概率论中,我们知道对于离散变量的期望E
\begin{align} E(X)=\sum_{i}^{k}p_iX_i \tag{1.6} \end{align}
类比公式(1.4),(1.5)则有
\begin{align} f(E(X)) \geq E(f(X)) \tag{1.7} \end{align}

1.3 高斯分布与高斯混合分布

1.3.1 高斯分布

说“高斯分布”可能有点不适应,但是,其实高斯分布(Gaussian distribution)就是正态分布(Normal distribution),也称“常态分布”。
若随机变量X(总共有N个样本,x_1,x_2…,x_N)服从一个位置参数为\mu、尺度参数为\sigma的概率分布,且其概率密度函数为
\begin{align} f(x)=\frac{1}{\sqrt{2\pi}\sigma_k}exp(-\frac{(x-\mu)^2}{2\sigma^2})\tag{1.8} \end{align}
则称为正态分布。

1.3.2 高斯混合分布

通常在自然界中,随机变量X可能有K个高斯分布混合组成,那么,记取自不同高斯分布的概率分别为\pi_1, \pi_2,... ,\pi_K,第k个高斯分布的均值为\mu_k,方差为\sigma_k

注意一点:

  • 当随机变量X1维数据时,均值\mu_k和方差\sigma_k均为一个标量(其中(k<K)
  • 当随机变量Xm维数据时,均值\mu_k是一个m维的向量,和方差\sigma_k是一个m*m的协方差矩阵。为了加以区分,将\sigma_k记为\Sigma_k

此时,需要估计的参数包括K\pi, \mu, \Sigma
因此, 高斯混合模型是指具有如下形式的概率分布模型:
\begin{align} p(y|\theta)=\sum_{k=1}^{K}a_k\phi(y; \theta_k)\tag{1.9} \end{align}
其中,a_k是系数,a_k \geq 0, \sum_{k=1}^{K}a_k=1,且\phi(y|\theta_k)是高斯分布密度\phi(y; \mu_k, \Sigma_k)

1.4 隐变量

不能被直接观察到,但是对系统的状态和能观察到的输出存在影响的一种东西。

比如投硬币,规则如下:甲投掷硬币,乙猜测硬币的正反面。甲投硬币的规则如下:A、B、C三枚硬币,A正则选择B,A反选C,B正为1,B反为0;C正为1,C反为0。那么,假设随机变量y表示一次试验的观测结果:01,随机变量z表示投掷A硬币的结果。如果在实验过程中,乙知道A硬币的结果,则z不为隐变量;若乙不知道硬币A的投币结果,则z为隐变量

1.5 极大似然函数的概念

1.5.1 极大似然函数的概念
1.5.2 极大似然函数——以高斯分布为例

若给定一组样本X_1,X_2…,X_N,已知它们来自于高斯分布N~(\mu, \sigma^2),试估参数\mu, \sigma

1.5.3 极大似然函数——以高斯混合分布为例

对于高斯混合分布,建立似然函数,分两步走:

  1. 因为第i个样本属于k个分布的概率为:\pi_kN(X_i; \mu_k, \Sigma_k),所以取到第i个样本的概率为:
    \begin{align} \sum_{k=1}^{K} \pi_kN(X_i; \mu_k, \Sigma_k)\tag{1.10} \end{align}
  2. 所以,N个样本的似然函数为
    \begin{align} L_{\pi, \mu, \Sigma}(X)=&\prod_{i=1}^{N} \sum_{k=1}^{K} \pi_kN(X_i; \mu_k, \Sigma_k) \tag{1.11} \end{align}
    对公式(1.11)取对数有
    \begin{align} log(L_{\pi, \mu, \Sigma}(X_i))=&log(\prod_{i=1}^{N} \sum_{k=1}^{K} \pi_kN(X_i; \mu_k, \Sigma_k)))\\ =&\sum_{i=1}^{N} log(\sum_{k=1}^{K} \pi_kN(X_i; \mu_k, \Sigma_k)))\\ \tag{1.12} \end{align}
    此时,我们的目标是要找到K个高斯分布的\mu, \Sigma,使得公式(1.12)最大
    \begin{align} log(L_{\pi, \mu, \Sigma}(X_i))=&\sum_{i=1}^{N} log(\sum_{k=1}^{K} \pi_kN(X_i; \mu_k, \Sigma_k)))\\ \tag{1.13} \end{align}

2. EM算法的直观理解

先假设参数,根据参数计算其所属概率,反过来计算已知概率情况下该参数的后验概率,再通过最大似然估计参数,循环往复,直到收敛。

知乎男女身高分布的例子为例。随机挑选1000个人,测量他们的身高。在这1000个人中,有男性有女性,身高分别服从N_{boy}(\mu_{boy}, \sigma_{boy}^2)N_{girl}(\mu_{girl}, \sigma_{girl}^2)的分布,试着估计\mu_{boy}, \sigma_{boy}, \mu_{girl}, \sigma_{girl}

  • 估计每个样本数据由每个分布组成的比例。对于每个样本X,它由第k个高斯组份所占的比例

\begin{align} \gamma(i,k)=\frac{\pi_kN(X_i;\mu_k,\sigma_k)}{\sum_{k=1}^{K}\pi_kN(X_i;\mu_k,\sigma_k)} \tag{2.1} \end{align}
首先假设男孩服从的分布为N_{boy}(175, 10^2),女孩服从分布N_{girl}(165, 8^2)。将第一个样本X_1=198分别带入公式(2.2-1)(2.2-2)中,有:
\begin{align} f_{boy}(198)=\frac{1}{\sqrt{2\pi}*10}e^{-\frac{(198-175)^2}{2*10^2}}\tag{2.2-1} \end{align}
\begin{align} f_{girl}(198)=\frac{1}{\sqrt{2\pi}*8}e^{-\frac{(198-165)^2}{2*8^2}}\tag{2.2-2} \end{align}

  • 其次,假设选择男生分布的概率为\pi_{boy}=\frac{1}{2},女性分布的概率为\pi_{girl}=\frac{1}{2},带入公式(2.1)可以写成

\begin{align} \gamma(1,boy)=&\frac{\pi_{boy}N(X_1; \mu_{boy},\sigma_{boy})}{\sum_{k=1}^{K}\pi_kN(X_1;\mu_k,\sigma_k)} \\\\ =&\frac{\frac{1}{2}*f_{boy}(198)}{\frac{1}{2}*f_{boy}(198)+\frac{1}{2}*f_{girl}(198)}\tag{2.3-1} \end{align}
\begin{align} \gamma(1,girl)=&\frac{\pi_{girl}N(X_1; \mu_{girl},\sigma_{girl})}{\sum_{k=1}^{K}\pi_kN(X_1;\mu_k,\sigma_k)} \\\\ =&\frac{\frac{1}{2}*f_{girl}(198)}{\frac{1}{2}*f_{boy}(198)+\frac{1}{2}*f_{girl}(198)}\tag{2.3-2} \end{align}
此时,男孩样本1上的变化情况为198*\gamma(1,boy),女孩样本1上的变化情况为198*\gamma(1,girl)

  • 对所有样本均重复上述操作。

可得到\gamma(i,boy)\gamma(i,girl),其中i=1,2,...,N。第一轮参数估计的结果为:
\begin{align} \mu_{boy}=&\frac{1}{\sum_{i=1}^{N}\gamma(i,boy)}\sum_{i=1}^{N}X_i*\gamma(i,boy) \tag{2.4-1} \\ \mu_{girl}=&\frac{1}{\sum_{i=1}^{N}\gamma(i,girl)}\sum_{i=1}^{N}X_i*\gamma(i,girl) \tag{2.4-2} \\ \sigma_{boy}=&\frac{1}{\sum_{i=1}^{N}\gamma(i,boy)}\sum_{i=1}^{N}\gamma(i,boy)*(X_i-\mu_{boy})^2 \tag{2.4-3} \\ \sigma_{girl}=&\frac{1}{\sum_{i=1}^{N}\gamma(i,girl)}\sum_{i=1}^{N}\gamma(i,girl)* (X_i-\mu_{girl})^2 \tag{2.4-4} \\ \pi_{boy}=&\frac{\sum_{i=1}^{N}*\gamma(i,boy)}{N} \tag{2.4-5} \\ \pi_{girl}=&\frac{\sum_{i=1}^{N}*\gamma(i,girl)}{N} \tag{2.4-6} \\ \end{align}

  • 根据公式(2.4-1,2.4-2,2.4-3,2.4-4, 2.4-5,2.4-6)所得,重复上述步骤,直到迭代次数完毕为止。

3. EM算法的科学推理

3.1 EM算法问题提出

对于不含隐变量的数据而言,多元高斯分布的似然函数可以写成
\begin{align} log(L_{\pi, \mu, \Sigma}(X_i))=&\sum_{i=1}^{N} log(\sum_{k=1}^{K} \pi_kN(X_i; \mu_k, \Sigma_k)))\\ \tag{1.13} \end{align}
一般情况下,我们会对\mu_k,\Sigma_k求偏导,但是,(3.3)中的函数跟隐变量没有半毛钱关系,但是实际生活中,我们却不得不考虑隐变量,因此,需要稍微变动一下。


3.2 加入了隐变量之后的似然函数

其实前面都是瞎比比,没有卵用,这里才是主题。。。

首先假设,训练集由K个高斯混合分布组成。在训练集\boldsymbol{X}=[\boldsymbol{X_1}, \boldsymbol{X_2}, ..., \boldsymbol{X_N}]^T对应上例中的身高)中,给定每个样本具有d个特征值。除此之外,还具有未观测数据\boldsymbol{z}=[z_1, z_2, ..., z_N]^T。所以,未观测数据所构成的分布为Q_i(z_i=K),可能的取值(随机变量)为:z_i \in \left \{1, 2, ..., K\right \},例如,在第i个样本中,\boldsymbol{X_i}|(Z_i=1)\sim N_d(\boldsymbol{\mu_1}, \Sigma_1)\boldsymbol{X_i}|(Z_i=2)\sim N_d(\boldsymbol{\mu_2}, \Sigma_2) ;...;\boldsymbol{X_i}|(Z_i=K)\sim N_d(\boldsymbol{\mu_K}, \Sigma_K) 。表示生成样本\boldsymbol{X_i}的高斯混合成分,取值未知。(对应上例中的性别)。

需要解决的问题:

  1. 隐变量与高斯混合分布的关系是怎样的?

隐变量与高斯混合分布是一一对应的,隐变量反映了观测数据来自K个高斯混合分布中的哪一个分布。在身高例子中,z_i=boy说明,第i个变量来自于“男”这个高斯分布。

  1. 隐变量怎么与公式(1.13)结合?

隐变量与观测变量构成联合概率,因此,第i个样本的隐变量观测变量构成的分布为p(\boldsymbol{X_i}, z_i; \theta, \Sigma_i)

3.2.1 明确隐变量,写出似然函数

\begin{align} l(\theta)=&\sum_{i=1}^{N} log(\sum_{\boldsymbol{Q_i(Z)}}\pi_{z_i}p(\boldsymbol{X_i},z_i;\theta))\\ \tag{2.5} \end{align}

一般情况下,由于z_i是隐随机变量,不便于直接寻找其参数估计,因此,采用的策略是:计算l(\theta)的下界,求其下界的最大值,不断重复这个过程,直到找到极值为止。也就是说,其终止条件为当下界函数的极大值与l(\theta)在该点的取值相等时,则说明该点为l(\theta)的极大值。

首先Q是隐随机变量z_i的某一个分布,且Q(z_i)>0,则
\begin{align} l(\theta)=&\sum_{i=1}^{N} log(\sum_{\boldsymbol{Q_i(Z)}}\pi_{z_i}p(\boldsymbol{X_i},z_i;\theta))\\ =&\sum_{i=1}^{N} log(\sum_{\boldsymbol{Q_i(Z)}}Q_i (z_i)\frac{\pi_{z_i}p(\boldsymbol{X_i},z_i;\theta)}{Q(z_i)})\\ \tag{2.6} \end{align}
由于log函数是凸函数,则根据公式(1.5),公式(2.6)可以改为:
\begin{align} l(\theta)=&\sum_{i=1}^{N} log(\sum_{\boldsymbol{Q_i(Z)}}\pi_{z_i}p(\boldsymbol{X_i},z_i;\theta))\\ =&\sum_{i=1}^{N} log(\sum_{\boldsymbol{Q_i(Z)}}Q_i(z_i)\frac{\pi_{z_i}p(\boldsymbol{X_i},z_i;\theta)}{Q_i(z_i)})\\ \geq& \sum_{i=1}^{N} \sum_{\boldsymbol{Q_i(Z)}}Q_i(z_i) log(\frac{\pi_{z_i}p(\boldsymbol{X_i},z_i;\theta)}{Q_i(z_i)}) \tag{2.7} \end{align}

2.2.2 如何构建并求解下界函数?
E-step:

2.1.1节中提到,当下界函数的极大值与l(\theta)在该点的取值相等时,则说明该点为l(\theta)的极大值。那么,什么时候会出现这种情况呢?
如果公式(1.5)中的变量x是常数呢,那么,此时等号也成立。此时有
\frac{p(\boldsymbol{X_i},z_i;\theta)}{Q_i(z_i)}=C,\ C是一个常数。\tag{2.8}
则公式(2.8)可以改写成
p(\boldsymbol{X_i},z_i;\theta)=Q_i(z_i)*C\tag{2.9}
两边同时累加可得
\begin{align} \sum_{\boldsymbol{Q_i(Z)}}p(\boldsymbol{X_i},z_i;\theta)=&\sum_{\boldsymbol{Q_i(Z)}}Q_i(z_i)*C\\ \sum_{\boldsymbol{Q_i(Z)}}p(\boldsymbol{X_i},z_i;\theta)=&C \tag{2.10} \end{align}
结合公式(2.8)与公式2.10可知:
\begin{align} Q_i(z_i)=&\frac{p(\boldsymbol{X_i},z_i;\theta)}{\sum_{\boldsymbol{Q_i(Z)}}p(\boldsymbol{X_i},z_i;\theta)} \\ =&\frac{p(\boldsymbol{X_i},z_i;\theta)}{p(\boldsymbol{X_i};\theta)} \tag{2.11} \end{align}
所以,若Q_i(z_i)为给定第i个样本\boldsymbol{X_i}的条件下,随机变量\boldsymbol{Z}=z_i的条件概率时,等号成立。(对于身高198的人来说,若求的是男生的参数估计时,需要计算在身高198的条件下,性别是男的概率。

M-step:将参数带入:

\begin{align} \sum_{i=1}^{N}\sum_{\boldsymbol{Q_i(Z)}}Q_i(z_i)log(\frac{p(\boldsymbol{X_i},z_i;\theta)}{Q_i(z_i)}) \\ \sum_{i=1}^{N} \sum_{\boldsymbol{Q_i(Z)}}Q_i(z_i) log(\frac{p(\boldsymbol{X_i}|z_i;\theta)p(z_i;\theta)}{Q_i(z_i)}) \\ \sum_{i=1}^{N} \sum_{j=1}^{K}Q_i(z_i=j) log(\frac{p(\boldsymbol{X_i}|z_i=j;\theta)p(z_i=j;\theta)}{Q_i(z_i=j)})\tag{2.12} \end{align}
那么在高斯混合分布中则有:
\begin{align} \sum_{i=1}^{N} \sum_{j=1}^{K}Q_i(z_i=j) log(\frac{\frac{1}{{(2\pi)^{n/2}\boldsymbol{|\Sigma_j|^{1/2}}}}exp(-\frac{1}{2}(\boldsymbol{X_i}-\boldsymbol{\mu_j})^T\boldsymbol{\Sigma_j}^{-1}(\boldsymbol{X_i}-\boldsymbol{\mu_j})\pi_j}{Q_i(z_i=j)})\tag{2.13} \end{align}
公式(2.13)中:

  • 向量\boldsymbol{X_i}代表第i个样本的特征数据;
  • 向量\boldsymbol{\mu_i}代表第j个分布的均值;
  • 矩阵\boldsymbol{\Sigma_i}代表第j个分布的协方差矩阵;
  • 标量z_j代表第i个样本中隐随机变量的取值(男or女)
  • 标量\pi_j代表第j个分布z_i所对应的先验概率
2.2.3 计算参数\mu_j\Sigma_j\pi_j
对参数\mu_j\Sigma_j分别求导,矩阵求导参考

\partial{\boldsymbol{X^TAX}}/\partial{\boldsymbol{X}}=2\boldsymbol{AX}\boldsymbol{A}为对称矩阵。

  • 计算参数\mu_j
    \begin{align} &= \bigtriangledown_{\mu_j}\sum_{i=1}^{N} \sum_{j=1}^{K}Q_i(z_i=j) log(\frac{\frac{1}{{(2\pi)^{n/2}\boldsymbol{|\Sigma_j|^{1/2}}}}exp(-\frac{1}{2}(\boldsymbol{X_i}-\boldsymbol{\mu_j})^T\boldsymbol{\Sigma_j}^{-1}(\boldsymbol{X_i}-\boldsymbol{\mu_j})\pi_j}{Q_i(z_i=j)})\\ &= \bigtriangledown_{\mu_j} \sum_{i=1}^{N} \sum_{j=1}^{K}-\frac{1}{2}Q_i(z_i=j)(\boldsymbol{X_i}-\boldsymbol{\mu_j})^T\boldsymbol{\Sigma_j}^{-1}(\boldsymbol{X_i}-\boldsymbol{\mu_j})\\ &=\sum_{i=1}^{N}Q_i(z_i=j)\boldsymbol{\Sigma_j}^{-1}(\boldsymbol{\mu_j}-\boldsymbol{X_i}) \end{align}
    令求导结果为0,则有
    \boldsymbol{\mu_j}=\frac{\sum_{i=1}^{N}Q_i(z_i=j)(\boldsymbol{X_i})}{\sum_{i=1}^{N}Q_i(z_i=j)}\tag{2.14-1}

  • 计算参数\Sigma_j
    \begin{align} &=\bigtriangledown_{\Sigma_j}\sum_{i=1}^{N} \sum_{j=1}^{K}Q_i(z_i=j) log(\frac{\frac{1}{{(2\pi)^{n/2}\boldsymbol{|\Sigma_j|^{1/2}}}}exp(-\frac{1}{2}(\boldsymbol{X_i}-\boldsymbol{\mu_j})^T\boldsymbol{\Sigma_j}^{-1}(\boldsymbol{X_i}-\boldsymbol{\mu_j})\pi_j}{Q_i(z_i=j)})\\ &= \bigtriangledown_{\Sigma_j} \sum_{i=1}^{N} \sum_{j=1}^{K}-\frac{1}{2}Q_i(z_i=j)(\boldsymbol{X_i}-\boldsymbol{\mu_j})^T\boldsymbol{\Sigma_j}^{-1}(\boldsymbol{X_i}-\boldsymbol{\mu_j})\\ {\Sigma_j} &= \frac{\sum_{i=1}^{N}Q_i(z_i=j)(\boldsymbol{X_i}-\boldsymbol{\mu_j})(\boldsymbol{X_i}-\boldsymbol{\mu_j})^T}{\sum_{i=1}^{N}Q_i(z_i=j)} \tag{2.14-2} \end{align}

  • 计算参数\pi_j
    \mu_j\Sigma_j已知的情况下,且\pi_j \geq 0,有\sum_{j=1}^{K}\pi_j=1。因此,目标函数(2.13)可化简为:
    \begin{align} \sum_{i=1}^{N} \sum_{j=1}^{K}Q_i(z_i=j) log(\pi_j) \tag{2.15} \end{align}
    引入拉格朗日算子:
    \begin{align} l(\pi_j)=\sum_{i=1}^{N} \sum_{j=1}^{K}Q_i(z_i=j) log(\pi_j)+\lambda(\sum_{j=1}^{K}\pi_j-1) \tag{2.16} \end{align}
    \pi_j求偏导,则有:
    \begin{align} \frac{\partial{l(\pi_j)}}{\partial{\pi_j}}=\sum_{i=1}^{N}Q_i(z_i=j) \frac{1}{\pi_j}+\lambda \tag{2.17} \end{align}
    令公式(2.17)=0,则有:
    \begin{align} 0&=\sum_{i=1}^{N}Q_i(z_i=j) \frac{1}{\pi_j}+\lambda\\ 0&=\sum_{i=1}^{N}Q_i(z_i=j) +\lambda\pi_j\\ \pi_j&=-\frac{1}{\lambda}\sum_{i=1}^{N}Q_i(z_i=j)\tag{2.17-1}\\ 0&=\sum_{j=1}^{K}\sum_{i=1}^{N}Q_i(z_i=j)+\lambda\sum_{j=1}^{K}\pi_j\\ 0&=\sum_{i=1}^{N}1+\lambda\\ \lambda &= -N \tag{2.17-2} \end{align}
    所以
    \begin{align} \pi_j&=\frac{1}{M}\sum_{i=1}^{N}Q_i(z_i=j)\\ \tag{2.18} \end{align}
    综上所述:
    \begin{align} \boldsymbol{\mu_j}&=\frac{\sum_{i=1}^{N}Q_i(z_i=j)(\boldsymbol{X_i})}{\sum_{i=1}^{N}Q_i(z_i=j)}\\ {\Sigma_j} &= \frac{\sum_{i=1}^{N}Q_i(z_i=j)(\boldsymbol{X_i}-\boldsymbol{\mu_j})(\boldsymbol{X_i}-\boldsymbol{\mu_j})^T}{\sum_{i=1}^{N}Q_i(z_i=j)}\\ \pi_j&=\frac{1}{M}\sum_{i=1}^{N}Q_i(z_i=j)\\ \end{align}

2.3 EM算法的缺点

  • 对先验的依赖性比较强
  • 没有办法收敛到全局最值,仅能收敛到极值。

3. 流程图


4. 参考文献

《西瓜书》
《统计学习方法》
《人人都懂EM算法》
What is the expectation maximization algorithm?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,716评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,558评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,431评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,127评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,511评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,692评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,915评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,664评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,412评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,616评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,105评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,424评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,098评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,096评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,869评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,748评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,641评论 2 271