机器学习和深度学习之数学基础-线性代数 第二节 矩阵的概念及运算

本文为原创文章,欢迎转载,但请务必注明出处。

上文介绍了线性映射,而与线性映射直接相关的就是矩阵,它决定了线性映射的结果,这里介绍矩阵的一些基本概念和运算。包括矩阵的转置、逆、特征值与特征向量、投影、正交矩阵、对称矩阵、正定矩阵、内积和外积、SVD、二次型等基本概念。本文主要参考Garrett Thomas(2018),Marc Peter Deisenroth(2018),Strang(2003),José Miguel Figueroa-O'Farrill, Isaiah Lankham(UCD, MAT67,2012)等教授的相关讲座和教材。

1、 矩阵的转置

矩阵转置的定义很简单,矩阵的转置就是将矩阵的行变为列,即A∈ ℝm×n, 那么转置A⊤∈ ℝn×m,且(A⊤)ij=Aji。

转置的性质:

A⊤=A, 那么A称为对称矩阵(symmetric)。任何一个矩阵都可以是一个对称矩阵和反对称矩阵(antisymmetric)的和:

其中,1/2(A+A⊤)是对称矩阵,1/2(A-A⊤)是反对称矩阵。

2、可逆矩阵(invertible matrix)

一个方阵 A ∈ ℝn×n可逆当且仅当存在一个方阵 B∈ ℝn×n使得

其中 I∈ℝn×n为单位矩阵。那么方阵 B 为方阵 A的逆矩阵,记作 A−1。

如果矩阵 A∈ℝn×n,那么下面的说法等价:

A可逆

A不是奇异矩阵(non-singular)

行列式 det(A)≠0

A 满秩,即 rank(A=n)

Ax=0只有唯一解:x=0

A 的零空间只有零向量:{0},即null(A)=0

A的列向量线性无关

A的列向量的张成是整个ℝn空间。

A的列向量构成ℝn的一个基向量集

存在方阵B∈ℝn×n使得 AB=I=BA.

转置 A⊤是可逆矩阵,于是,矩阵A的行向量是线性无关的,张成是ℝn空间,同时构成了ℝn的一个基向量集。

A不存在值为0的特征值。

A可以表示为有限个初等矩阵的乘积。

A 有左逆矩阵(即 BA=I)和 右逆矩阵(即 AC=I),且 B=C=A−1。

可逆矩阵 A 的一些重要性质:

(A−1)−1=A;

(αA)−1=α−1A−1,这里实数标量α≠0

(A⊤)−1=(A−1)⊤

(AB)−1=B−1A−1,其中B∈ℝn×n是可逆矩阵。 更一般情况,如果方阵 A1,...Ak可逆,那么(A1...Ak)−1=A−1k...A−11.

det(A−1)=(det(A))−1

如果方阵A 的逆矩阵就是它自身,即A=A−1, 那么有 A2=I,这是方阵A就叫对合矩阵(involutory matrix)。

3、矩阵的列空间(columnspace)和行空间(rowspace), 矩阵的秩(rank)

矩阵 A∈ℝm×n的列空间(columnspace)是指其列向量(看成是ℝm中的向量)的张成; 类似的,行空间(rowspace)是指其行向量(看成是ℝn中的向量)的张成。

矩阵A的列空间等于由矩阵A导致的线性映射 ℝn→ℝm的值域, 即range(A)。

矩阵A∈ℝm×n的列秩是矩阵A的线性无关的列向量的最大数量。类似地,行秩是矩阵A的线性无关的行向量的最大数量。 矩阵的列秩和行秩总是相等的,因此它们可以简单地称作矩阵A的秩,通常表示为r(A)或rank(A)。

4、范数(norm)和内积(inner product)

4.1、范数(norm)

范数(norm)是对欧氏空间距离的一般描述。在实数向量空间在实数向量空间V的一个范数是一个函数 ‖⋅‖:V→ℝ ,并且满足:

‖x‖≥0 , 当且仅当 x=0 等号成立;

‖αx‖=|α|‖x‖

‖x+y‖≤‖x‖+‖y‖ (三角不等式)

注意在V上的任何范数都会引出一个在V上的距离度量:d(x,y)=‖x−y‖。

常用的范数包括:

图一,不同范数在二维平面的示例

4.2、内积(inner product)

在实数向量空间V的一个内积是一个函数 ⟨⋅⟩:V×V→ℝ,并且满足:

⟨x,x⟩≥0 ,当且仅当 x=0 等号成立

⟨x+y,z⟩=⟨x,z⟩+⟨y,z⟩,⟨αx,y⟩=α⟨x,y⟩

⟨x,y⟩=⟨y,x⟩

另外,对于向量的2-范数,有

当⟨x,y⟩=0时, 那么在同一向量空间中的非零向量x 和 y 正交 (orthogonal, 垂直,记为 x⊥y)。 如果x 和 y还是单位长度,即‖x‖=‖y‖=1,那么向量x 和 y 称为是标准正交的(orthonormal)。

向量正交的几何解释,如下图二,假设向量x 和 y的夹角是 θ,那么由于:

当夹角 θ=π/2 (即垂直)时,cos(θ)=0,所以有⟨x,y⟩=0。

图二,空间中两个向量之间的夹角

通常内积被记为:

在空间ℝn上, 内积被称为点积(dot product), 记为 x⋅y。

(毕氏定理,Pythagorean Theorem)如果x⊥y, 那么‖x+y‖2=‖x‖2+‖y‖2。

(柯西-施瓦茨不等式,Cauchy-Schwarz inequality): |⟨x,y⟩|≤‖x‖‖y‖

5、投影(projection)

5.1、点到直线的投影

考虑下图中的两个向量 u,v∈ℝ2,如何将向量u 投影到向量 v 上呢?

图三,一个向量投影到另一个向量

假设u 投影到向量 v 上的最近的点是 p,即p点(将向量看成一个空间的一点)是一条通过u点的直线并与向量 v 所在直线垂直且相交的点。这时,如果用向量p来近似向量u,那么误差为 e=u−p。下面来求u 在向量v上的投影p。因为p 与 向量v在同一直线上,那么设 p=αv,由于v 与 e 垂直,那么有 v⊤e=0, 即

于是

5.2、投影矩阵(projection matrix)

下面介绍用投影矩阵描述上述的投影,即p=Pu。由于:

所以, 投影矩阵

投影矩阵具有如下一些性质:

投影矩阵P 的列空间是有向量 v 张成的,因为对于任何一个向量 u, Pu都是位于由向量 v所决定的直线上。

秩 rank(P)=1 ;

对称矩阵: P⊤=P;

P2=P。

P 叫做正交(与向量所在直线正交)投影矩阵。

5.3、点到平面的投影

在 ℝ3中,如何将向量u 投影到平面上距离u最近的p点呢?

首先假设 a1和 a2是平面上的两个基向量,那么该平面就是矩阵 A=[a1a2] 的列空间(即两个基向量张成所构成的空间)。

基于上面的假设,那么平面里的任意一点(或任意一个向量)p 都可以由平面的两个基向量线性表示,即p=α1a1+α2a2=Aα。 我们需要求得向量α=(α1,α2),也就是说我们要在平面上找一个p,使得u 到 p的距离最近(即垂直)。如图四所示。

图四,向量映射到平面。a<sub>1</sub> 和 a<sub>2</sub> 是平面里的两个基向量,那么平面里的任意向量都可以由这两个向量的线性组合得到,这就是向量p=α<sub>1</sub>a<sub>1</sub>+α<sub>2</sub>a<sub>2</sub>=Aα 的原因

类似“点到直线投影”的方法,点u到平面上一点p的误差向量为 e=u−p=u−Aα。也就是说,要使得误差e最小,只需要u垂直投影到平面上,而p 就是e与平面相交的点。

由于e与平面垂直,那么e就与平面上所有的向量或直线垂直,最简单的就是e与平面的两个基向量a1和 a2都垂直,所以有:

用矩阵表示就是:A⊤(u−Aα)=0。

还有就是,e=u−Aα 是在 A⊤的零空间里,所以 e 也是在 A 的左零空间里(left nullspace)。我们知道所有在A 的左零空间里的向量都是与A 的列空间垂直的。这也从另一个方面验证了上述计算。

由于A⊤(u−Aα)=0, 所以

如果是映射到直线,那么 A⊤A 就是一个标量数值,但是如果是映射到平面,A⊤A 变成了一个方阵(square matrix)。所以这里不再是除以 v⊤v,而是乘以 A⊤A 的逆 (A⊤A)-1。

所以(对于 n 维空间也是一样)有

这里,仍然有 P⊤=P,P2=P。

P  叫做正交(这里是与平面正交)投影矩阵。如果A中的列向量之间两两相互正交,且向量长度为1(标准正交向量),那么A⊤A=I,所以有

P=A(A⊤A)−1A⊤=AA⊤。(注意,这个结论的矩阵A必须是标准正交的列向量组成)。

5.4、从投影的视角看线性回归

线性回归问题:给定m个数据对{(xi,yi)}im= 1,其中xi∈ℝn,yi∈ℝ, 目标是找到一点直线 ŷ =θ⊤x 能“最好的”拟合这些点使得损失最小。为了找到这样的直线,问题变成了根据给定的m个数据点求向量参数 θ。

现在以矩阵来表示:X∈ℝm×n,y∈ℝm。 假设这些数据是由真实的 y=Xθ+ϵ, 其中 ϵ是高斯白噪声。我们的目标就是求ŷ =Xθ,使得真实的y 与模型预测的ŷ 误差最小。

以二维平面为例,假设平面是两个向量 x1和x2的张成(即x1和x2是平面的两个基向量),y是平面外的一个点,我们记作 X=[x1x1]。 由于我们定义了ŷ =Xθ, 那就说明 ŷ  是平面两个基向量x1和x2的线性组合,也就是说,ŷ 也在平面上。我们求向量参数θ,使得平面外的y与平面上的ŷ 距离最近,那么就是说ŷ  是通过向量y的直线垂直于平面的交点。根据上面4.3的结论,有(如图五所示)

图五,从投影的视角看线性回归

于是,有

6、特征值(eigenvalue)和特征向量(eigenvector)

凡是涉及到特征值和特征向量时,矩阵首先必须是方阵, 即 A∈ℝn×n。

如果方阵A 作用于一个非零向量 x∈ℝn,得到的结果其实只是简单的对向量 x 进行拉伸或收缩(scaled) λ 个单位,即经过方阵A的作用(或叫做线性变换)后向量 x 的方向不变只是长度变化了(这个特性也叫线性不变性),那么这个特殊的向量 x 就是方阵 A 的一个特征向量,λ 则是该特征向量对应的特征值,即

特征向量不包括零向量(0)。

假设方阵A 的一个特征向量为 x,对应的特征值是 λ ,下面列出一些重要的结论:

对于任意的实数 γ∈ℝ,那么方阵 A+γI 的特征向量仍然是x, 对应的特征值变为 λ+γ;

如果方阵A可逆,那么方阵A−1的特征向量仍然是x对应的特征值为 λ−1;

对于任意的整数 k∈ℤ,有Akx=λkx,(这里 定义A0=I)。

后面会详细介绍特征值和特征向量的应用。

7、矩阵的迹(trace)

在谈到矩阵的迹(trace)的时候一般也是针对的方阵。一个方阵的迹是该方阵上的对角线上元素的和,即

迹的一些重要的性质:

tr(A+B)=tr(A)+tr(B);

tr(αA)=α tr(A),这里α∈ℝ;

tr(A⊤)=tr(A)

tr(ABCD)=tr(BCDA)=tr(CDBA)=tr(DABC)。

另外,方阵的迹等于方阵的所有特征值的和,即

8、行列式(determinant)

行列式(方阵才有行列式)的定义在这里就不在介绍,这里列出一些重要性质:

det(I)=1

det(A⊤)=det(A)

det(AB)=det(A)det(B)

det(A-1)=det(A)-1

det(αA)=αndet(A)

另外,方阵的行列式等于该方阵的所有特征值的乘积,即

从几何意义的角度,在二维平面上,行列式的绝对值等于由矩阵的两个向量(列向量或行向量都可以)为临边所围成的平行四边形的面积;如果是3维空间,那么行列式的绝对值等于由矩阵的三个向量(列向量或行向量都可以)为临边所围成的平行四边体的体积,以此类推。

图六,二维平面中行列式的几何意义

9、正交矩阵(Orthogonal matrices)

如果方阵 Q∈ℝn×n的列两两标准正交(pairwise orthonormal),那么Q称为正交矩阵, 即

也就是说,正交矩阵的转置等于它的逆,即Q⊤=Q−1。正交矩阵作用于任何向量(即与向量相乘,矩阵和向量相乘也可以看成根据矩阵对向量进行线性变换)保留了向量的内积结果(即内积结果不受正交矩阵相乘的影响),即

一个直接的结果就是正交矩阵保留了2-范数的结果:

上面的结果因此说明了正交矩阵与向量相乘可以看成是一个保留了向量长度的线性变换,但是方向有可能针对向量的原点进行了旋转或翻转。

10、对称矩阵(symmetric matrices)

如果方阵 A∈ ℝn×n的转置就是它本身,那么方阵A 就称为对称矩阵,即A=A⊤。

以下介绍一个重要的定理:

矩阵质谱定理(Spectral Theorem):如果方阵 A∈ℝn×n 是对称矩阵,那么在 ℝn空间中存在由方阵 A的特征向量组成的标准正交基(orthonormal basis)。

这个定理的直接应用就是对对称矩阵的因子化(factorization),也就是常说的矩阵的特征分解(eigen decomposition)或谱分解(spectral decomposition)。假设对称方阵 A 的特征向量(也就是方阵 A对应空间ℝn 的标准正交基)为q1,...,qn,对应的特征值为 λ1,...,λn。假设正交矩阵 Q 的列就是q1,...,qn,对角矩阵 Λ=diag(λ1,...,λn)。根据这些假设,所以对所有的 i 有 Aqi=λiqi,于是用矩阵表示就是

上式右乘 Q⊤,就可以可以得到矩阵分解:

11、瑞利熵(Rayleigh quotients)

如果方阵 A∈ℝn×n是对称矩阵,那么表达式x⊤Ax 称为二次型 (quadratic form)。

瑞利熵(Rayleigh quotients,见下面的等式)将一个对称矩阵的二次型与该对称矩阵的特征值联系了起来:

一些瑞利熵的重要性质:

标量不变性:对于任意非零向量 x≠0 和任意非零实数标量 α≠0, 有

如果 x是方阵 A 的特征向量,对应的特征值是 λ, 有

下面两个性质对求解某些问题也很重要,这些性质说明对称矩阵A的瑞利熵的计算结果是介于A的最小和最大特征值之间的:

对于任意向量x,如果其长度为1(即‖x‖2=1),那么有

(瑞丽熵的最小最大定理,min-max theorem):对于任意的非0向量x,有

当其仅当向量x为其对应的特征向量时,等号成立。

后面我们会介绍瑞丽熵的应用及其与拉格朗日算子求极值的例子。

12、正定(或半正定)矩阵 (Positive (semi-)definite matrices)

对于对称矩阵A,如果对于所有的向量 x∈ℝn,都有 x⊤Ax ≥ 0, 记作 A⪰0,那么对称矩阵A称为半正定矩阵。如果对于所有的非零向量x∈ℝn,都有 x⊤Ax > 0, 记作 A≻0,那么对称矩阵A称为正定矩阵。

下面的一些性质与其特征值有关:

一个对称矩阵是半正定矩阵当且仅当它的所有特征值都是非负的;一个对称矩阵是正定矩阵当且仅当它的所有特征值都是正的。

假设任意矩阵 A∈ℝm×n,那么A⊤A 是半正定矩阵。 如果A的零空间只有 0 向量, 即null(A)={0}, 那么A是正定矩阵(null(A)={0} 说明只要向量 x∈ℝn是非零向量,那么就有 Ax≠0)。

如果 A是半正定矩阵,对于任意 ϵ>0,那么 A+ϵI 是正定矩阵。

12.1、正定二次型的几何表示(The geometry of positive definite quadratic forms)

一个理解二次型的有用方法就是通过观察他们的几何水平集(the geometry of their level set)。一个函数的水平集或等高线(isocontour)是一组输入的集合,对于这些输入,函数都产生一个相同的值或结果,如函数 f 的 c-等高线是 {x∈dom  f:f(x)=c}。

考虑一个特殊情况 f(x)=x⊤Ax,其中 A 是正定矩阵。由于A 是正定矩阵,那么它有唯一的矩阵平方根 A1/2=QΛ1/2Q,其中 QΛQ 是A的特征分解,Λ1/2=diag( √λ1,...,√λn)。很容易看出A1/2是正定矩阵(因为它的所有特征值都是大于0的),而且有A1/2A1/2=A。 给定一个实数 c>0, 那么函数f 的 c-等高线就是一组 x∈ℝn,且满足:

上式中,A1/2是对称矩阵。设 z=A1/2x,那么有‖z‖2=√c。 这就是说向量的值z是位于半径为 √c 的圆上。进一步,我们加入参数使 z=√c ẑ ,其中 ‖z‖2=1,那么由于A−1/2=QΛ−1/2Q⊤,所以有,

其中 z̃ =Q⊤ẑ , 因为 Q 是正交矩阵,所以 z̃  也是满足‖z̃ ‖2=1。使用这种参数化的方式可以得到结果集{x∈ℝn:f(x)=c} 是在可逆的线性映射 x=√c QΛ−1/2z̃  的单位圆影像(image of the unit sphere) {z̃ ∈ℝn:‖z̃ ‖2} 。( 矩阵的影像(image of matrix)是指该矩阵的张成(Think of it (image of the matrix) as what vectors you can get from applying the linear transformation or multiplying the matrix by a vector, from wiki)) 。

通过这些运算可以看出,经过一系列的线性变换后可以很清楚的理解函数 f 的 c-等高线是如何得到的:首先开始于一个单位圆(或单位球面),然后对每个坐标轴 i 拉伸或压缩 对应的λi1/2个单位,由此得到一个轴对齐的椭球(an axis-aligned ellipsoid)。椭球的轴长度与正定矩阵 A 的特征值的平方根倒数成正比。所以,特征值越大,对应的椭球的轴的长度就越小,反之亦然。

然后这个轴对齐的椭球通过矩阵 Q 进行了一个刚性变换(rigid transform, 即保留长度和角度,例如旋转或反射(rotation/reflection)等)这个变换的结果就是椭圆的轴不在沿着原来的坐标轴方向,而是沿着相应的特征向量方向。为了说明这点,假设有一个单位向量 ei∈ℝn,有 [ei]j=δij。在变换之前的空间,这个向量指向原坐标轴方向,其长度与 λi1/2成正比。但是,进过刚性变化 Q后,该向量指向的方向变成了相应的特征向量 qi的方向,因为:

这里我们使用了matrix-vector product identity。

总结:f(x)=x⊤Ax 的等高线是椭球,椭球的轴是指向了 A 的特征向量方向,这些轴的半径是与相应的特征值的平方根倒数成正比的。

13、奇异值分解(Singular value decomposition)

任意矩阵 A∈ℝm×n都有一个SVD (即使该矩阵不是方阵)。

SVD的矩阵分解如下:

其中U∈ℝm×m和 V∈ℝn×n是正交矩阵(orthogonal matrix),Σ∈ℝm×n是对角矩阵(diagonal matrix),其对角线上的元素值是矩阵A 的奇异值 (singular value,记作 σi)。

假设矩阵A 的前 r=rank(A) 个奇异值是非零的,为了方便,我们以非递增排序,即

另外一中SVD的写法是(即 sum-of-outer-product identity):

其中 ui和 vi分别是 U 和 V 的第 i 个列向量。

可以看出,SVD因子提供了 A⊤A 和 AA⊤的特征分解:

于是,V的列(即A右奇异(right-singular)向量)就是A⊤A的特征向量,而U的列(即A左奇异(left-singular)向量)就是AA⊤的特征向量。

矩阵 Σ⊤Σ 与 ΣΣ⊤的大小不是必须要相等。 但是他们都是对角阵,其对角线上的元素都是奇异值的平方,即 σi2(可能还有一些0值)。所以矩阵 A 的奇异值是矩阵 A⊤A(或AA⊤)的特征值的平方根。

14、伪逆(Pseudoinverse)矩阵

对于矩阵 A∈ℝm×n,如果 m≠n, 那么 A 是不可逆的。但是,一种叫摩尔-彭若斯广义逆(Moore-Penrose pseudoinverse)的方法可以用来求一般矩阵的伪逆,记作 A†∈ℝn×m,它具有以下性质:

AA†A=A;

A†AA†=A†

AA†是对称矩阵

A†A也是对称矩阵

如果A可逆,那么 A†=A-1。更一般情况,我们可以通过计算矩阵的SVD来得到它的伪逆:如果 A=UΣV⊤,那么

其中 Σ†可以通过如下方式得到:对 Σ 进行转置,然后将对角线的非零元素求倒数。

15、一些有用的Matrix identities

15.1、矩阵和向量(matrix-vector)相乘就是矩阵列向量的线性组合

假设向量x∈ℝn和矩阵 A∈ℝm×n,A的列向量为a1,...,a1,那么有

15.2、外积(outer product) 的和是矩阵和矩阵(matrix-matrix)相乘

一个外积(outer product)表示为 ab⊤, 其中a∈ℝm,b∈ℝn,外积的结果生成一个 m×n 的矩阵:

假设向量a1,...,ak∈ℝm,b1,...,bk∈ℝn,那么

其中 A=[a1...  ak], B=[b1...  bk]。

15.3、二次型

假设 A∈ℝn×n是对称矩阵,那么 x⊤Ax 称为对称矩阵 A 的二次型。二次型可以写成如下的求和形式:

这种写法对一般的方阵都适用(不一定必须是对称矩阵),但是对二次型来说,只限定在对称矩阵的范围里进行讨论。

16、小结

上文我们从线性映射引入了矩阵的概念,本文介绍了矩阵的一些概念及运算, 包括矩阵的转置、逆、特征值与特征向量、投影、正交矩阵、对称矩阵、正定矩阵、内积和外积、SVD、二次型等基本概念。需要注意的是,行列式、正交矩阵、对称矩阵都是方阵;而瑞丽熵、正定或半正定矩阵、二次型的讨论都是针对的对称矩阵。

下文中我们将从运动的角度直观介绍向量、线性变换及其与矩阵的关系。

作者:yong_bai

链接:https://www.jianshu.com/p/cdd538779714

來源:简书

简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

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

推荐阅读更多精彩内容