6. 转导支持向量机(TSVM)

        与学习一般预测规则相比,V.Vapnik提出了一种转导学习设置,其中预测只在固定数量的已知测试点进行。这使得学习算法能够利用测试点的位置,使其成为一种特殊的半监督学习问题。转导支持向量机(TSVMS)通过在边缘计算中包含测试点来实现转导学习的思想。本章将提供一些示例,说明为什么测试示例上的空白可以为学习提供有用的先验信息,特别是对于文本分类问题。然而,由此产生的优化问题很难解决。本章回顾了精确和近似的优化方法,并讨论了它们的性质。最后,本章讨论了与其他相关的半监督学习方法(如协同训练和基于图形切割的方法)的联系,这些方法可视为解决TSVM优化问题的变体。

6.1 介绍

        转导推理的设置是由vapnik引入的(例如(vapnik,1998))。作为一个转导学习任务的例子,考虑在信息检索中从相关反馈中学习的问题(见(Baeza Yates和Ribeiro Neto,1999))。用户将搜索引擎响应初始查询返回的某些文档标记为相关或不相关。然后,这些文档作为二元文本分类问题的训练集。其目标是学习一个规则,该规则根据文档的相关性对数据库中的所有剩余文档进行精确分类。显然,这个问题可以被认为是一个有监督的学习问题。但它至少在两个方面不同于许多其他(归纳)学习问题。

        首先,学习算法不一定要学习一般规则,但它只需要对有限数量的测试示例(即数据库中的文档)进行准确的预测。其次,测试实例是先验的,可以通过学习算法在训练过程中观察到。这允许学习算法利用测试示例位置中可能包含的任何信息。因此,转导学习是半监督学习的一种特殊情况,因为它允许学习算法利用测试集中未标记的示例。下面重点介绍第二点,而第24章则阐述第一点。

        更正式地说,转导学习设置可以形式化如下。S=\{1,2,...,n  \}            (6.1)

列举了所有n个可能的例子。在上面的相关反馈示例中,集合中的每个文档都有一个索引I。我们假设每一个示例I都是由文本向量的特征向量x_i \in R^d表示的,这可以是TFIDF向量表示(参见例如(JoaCHIMS,2002)),其中每个文档由其所包含的字的缩放和归一化直方图表示。S中所有示例的特征向量集合表示为

X=(x_1,x_2,...,x_n)                                                                                       (6.2)

对于S中的示例,标签

Y=(y_1,y_2,...,y_n)                                                                                         (6.3)

由分布 P(y_1,...,y_n)=\prod\nolimits_{i=1}^n P(y_i)独立生成。简单起见,无门假设二元标签 y_i \in \{-1,+1  \}

        作为训练集,学习算法可以观测到随机选择的样本l S_{train} \subset S 的标签 。余下的u=n-l
个样本组成测试集 S_{test}=S\ \backslash \ S_{train}

S_{train}=\{l_1,...,l_l    \} \ \ \  \ \ S_{test}=\{u_1,...,u_u  \}                                            (6.4)

        当训练一个转导学习算法L,它不仅接收训练向量 X_{train}和训练标签集 Y_{train}

            X_{train}=(x_{l_1},x_{l_2},...,x_{l_l}) \ \ \ \  Y_{train} = (y_{l_1},y_{l_2},...,y_{l_l})            (6.5)

还接收未标记的测试集向量

            X_{test}=(x_{u_1},x_{u_2},...,X_{u_u})                                                                (6.6)

这个转导学习器使用 X_{train}Y_{train}X_{test}(但是没有 测试集 的标签 Y_{test})去生成预测,

            Y_{test}^*=(y_{u_1}^*,y_{u_2}^*,...,y_{u_u}^*)                                                                   (6.7)

为测试样本的标签。学习器的目标是最小化错误预测的分数,

              Err_{test}(Y_{test}^* = \frac{1}{\mu} \sum_{i \in S_{test}} \ \delta_{0/1}(y_i^*,y_i),                                             (6.8)

在测试集上。\delta_{0/1}(a,b)为 0 如果 a=b,其他情况下它为 1 。

        乍一看,转导学习的问题似乎与通常的归纳设置没有太大的不同。我们可以根据训练数据学习分类规则,然后将其应用到测试数据中。然而,一个关键的区别是归纳策略将忽略任何可能在X_{test}中传递的信息。

        我们从研究测试样本X_{test}中得到什么信息,以及如何使用它?事实上,我们只处理一组有限的点,这意味着一个转导学习者的假设空间\mathcal{H}必然是有限的,即所有向量\{-1,+1   \}^n。根据结构风险最小化原则(Vapnik,1998),我们可以将\mathcal{H}构造成一个嵌套结构。

            \mathcal{H}_1 \subset \mathcal{H}_2 \subset \cdot \cdot \cdot \subset \mathcal{H} = \{-1,+1  \}^n                                              (6.9)

        该结构应反映有关学习任务的先验知识。特别是,结构的构造应确保在很高的概率下,S(或很少出错的标签)的正确标记包含在小基数的元素\mathcal{H}_i中。这种假设空间H的构造可以用统计学习理论中的泛化误差界来驱动。特别是,对于寻找一个假设(Y_{train}^*,Y_{test}^*)\in \mathcal{H}的学习器\mathcal{L},训练误差很小,

            Err_{test}(Y_{train}^*)=\frac{1}{l} \sum_{i\in S_{train}}  \  \delta_{0/1}(y_i^*,y_i)                                        (6.10)

        可以上界测试误差的分数Err_{test}(Y_{train}^*)(Vapnik,1998;Derbeko等人,2003)。概率1-\eta

                Err_{test}(Y_{test}^*) \leq Err_{test}(Y_{train}^*) + \Omega (l,u,|\mathcal{H}_i|,\eta)                   (6.11)

其中,置信区间 \Omega (l,u,|\mathcal{H}_i|,\eta)取决于训练示例l的数量l、测试示例u的数量以及\mathcal{H}_i的基数|\mathcal{H}_i|(详见(Vapnik,1998)。基数|\mathcal{H}_i|越小,训练与测试误差偏差的置信区间 \Omega (l,u,|\mathcal{H}_i|,\eta)越小。

        边界表示一个良好的结构确保了测试标签的准确预测。这里有一个重要的区别,转导和归纳学习。与归纳设置不同,我们可以在定义结构时研究测试示例的位置X_{test}

图 6.1 这两个图说明了边缘超平面可以根据边缘大小实现的标记。示例点用点表示:每个超平面的边缘用灰色区域表示。左图显示了小边缘阈值\rho的分隔符\mathcal{H}_{\rho}。如右图所示,随着边缘阈值的增加,可能的标签数n_{\rho}减少。

特别是,在转导设置中,可以对我们可能掌握的关于X=(x_1,...,x_n)P(y_1,...,y_n)几何关系的先验知识进行编码。如果存在这样的关系,我们可以建立一个更合适的结构,减少实现预期精度所需的培训实例数量。这一推理在第24章中有详细说明。

6.2 转导支持向量机(TSVM)

        转导支持向量机(TSVMs)假定X=(x_1,...,x_n)P(y_1,...,y_n)之间存在特殊的几何关系。他们在\mathcal{H}上建立了一个基于超平面\{x:w\cdot x+b = 0    \}的结构,在完整的样本X=(x_1,x_2,...,x_n)上,包括训练和测试向量。X上超平面的边界是到X
中最近的示例向量的最小距离。

            {min\atop i\in [1..n] }\bigg[\frac{y_i}{||w||} (w\cdot x_i+b)\bigg]                                                        (6.12)

        结构元素\mathcal{H}_{\rho}包含所有X的标签,这些标签可以用超平面分类器h(x)=sign \{x\cdot w_i+b   \}实现,该分类器在X上的边缘至少为\rho。图6.1说明了\mathcal{H}_{\rho}\rho的依赖性。直观地说,基于边缘构建结构优先于遵循集群边界的标记,而不是穿过集群的标记。Vapnik表明,边缘的大小\rho可以用来控制相应的一组标记 \mathcal{H}_{\rho}的基数。更正式地说,下面的定理提供了一个关于标记 \mathcal{H}_{\rho}数量的上界,这个上界可以用边缘至少为\rho的超平面来实现。


图 6.2 对于图6.1中的相同数据,现在标记了一些示例。正/负示例标记为+/-。虚线是一个归纳支持向量机的解,它找到了一个超平面,该超平面将训练数据最大限度地分离出来,但忽略了测试向量。实线表示的是硬边转导分类,即对训练向量和测试向量都具有零训练误差和最大边界的标记。TSVM解决方案将标签与训练和测试向量中的集群结构对齐。

定理 6.1 ((VAPNIK,1998))

对任意包含在直径为r的球中的 n 维向量 x_1,...,x_n \in R^d ,可能的二进制标签个数为|\mathcal{H}_{\rho}|y_1,...,y_n \in \{-1,+1    \},可以用边缘至少为\rho的超平面分类器h(x)=sign \{x\cdot w +b   \}实现,

                    \forall _{i=1}^n:\frac{y_i}{||w||} [w\cdot x_i+b] \geq \rho                                         (6.13)

边界为

                |\mathcal{H}_{\rho}|\leq e^{d(ln \frac{n+k}{d} +1)},d=\frac{R^2}{\rho ^2} +1                                    (6.14)

        注意,标签数|\mathcal{H}_{\rho}|并不一定取决于特征数d。如定理所建议的,TSVMs将所有标签按其在X上的边缘\rho排序,以在\mathcal{H}上构建结构。结构风险最小化理论认为,学习算法应选择训练误差Err_{train}Y_{train}^*)最小的标记Y^*\in \mathcal{H}_{\rho}\mathcal{H}_{\rho}的基数最小的泛化误差界(6.11)。对于需要零训练误差的特殊情况(即Err_{train}(Y_{train}^*)=0),优化边界意味着在整组向量上找到最大边界的标签。这导致了以下优化问题(OP)(Vapnik,1998)。

OP1 (TSVM (HARD-MARGIN))

                        最小化:V(y_{u_1}^*,...,y_{u_n}^*,w,b)=\frac{1}{2} w\cdot w                            (6.15)

                        条件于:\forall_{i=1}^l:y_{l_i}[\vec{w} \cdot x_{l_i}+b]\geq 1                                  (6.16)

                                       \forall_{j=1}^u:y_{u_j}^*[\vec{w} \cdot x_{u_j}^*+b]\geq 1                                (6.17)

                                       \forall_{j=1}^u:y_{u_j}^* \in \{-1,+1    \}                                        (6.18)

        解决这个问题意味着找到测试数据的标记y_{u_1}^*,...,y_{u_k}^*,对于这个标记,分离训练和测试数据的超平面有最大的裕度。图6.2说明了这一点。该图还显示了归纳SVM(Cortes和Vapnik,1995年;Vapnik,1998年)计算的解决方案。归纳支持向量机也发现了一个大的边缘超平面,但它只考虑训练向量,而忽略了所有的测试向量。特别地,硬边诱导 SVM 计算了训练误差为零、最大边值的分离超平面。

        为了能够处理不可分离的数据,可以引入松弛变量\xi _i(Joachims,1999),类似于归纳SVM(Cortes和Vapnik,1995)。

OP2 (Transductive SVM (soft-margin))

min:W(y_{u_1}^*,...,y_{u_u}^*,w,b,\xi_1,...,\xi_l,\xi_1^*,...,\xi_u^*)=\frac{1}{2} w\cdot w + C\sum_{i=1}^l \xi_i+C^*\sum_{j=1}^u \xi_j^*    (6.19)

s.t. :\forall_{i=1}^l:y_{l_i}[w\cdot x_{l_i}+b]\geq 1-\xi_i                                        (6.20)

        \forall_{j=1}^u:y_{u_j}^*[w\cdot x_{u_j}^* +b ]\geq 1-\xi_j^*                                     (6.21)

        \forall_{j=1}^u:y_{u_j}^* \in \{-1,+1  \}                                                       (6.22)

        \forall_{i=1}^l:\xi_i \geq 0                                                                          (6.23)

        \forall_{j=1}^u:\xi_j^*\geq 0                                                                         (6.24) 

        CC^*是用户设置的参数。它们允许以保证金规模交易错误分类的训练示例或排除测试示例。C^*可用于降低对异常值的敏感度(即,单个示例错误地降低了测试数据的裕度)。

        归纳和转导SVM都可以扩展到包括内核(Boser等人,1992年;Vapnik,1998年)。利用优化理论中的对偶技术,内核允许学习非线性规则以及非外部数据的分类规则(参见(Sch¨olkopf和Smola,2002)),而不会实质性地改变优化问题。

        请注意,在TSVM的硬边界公式(op1)和软边界公式(op2)中,测试示例的标签都输入为整数变量,由于等式6.18和6.22中的约束,op1和op2不再是类似于归纳SVM的模拟优化问题的凸二次规划。在讨论(近似)求解TSVM优化问题的方法之前,让我们先讨论一些直觉,为什么基于测试示例上的边界构造假设空间可能是合理的。


图 6.3 共现模式的文本分类问题的例子。行对应于文档,列对应于单词。表条目1表示文档中出现的单词。

6.3 为什么在测试集上使用边距?

        为什么选择大幅度的标签而不是小幅度的标签是合理的,即使两者都有相同的训练错误?显然,这个问题只能在特定学习问题的背景下解决。在下面,我们将以文本分类为例。特别是,对于基于主题的文本分类,众所周知,良好的分类规则通常具有较大的边距(Joachims,2002年)。下面的例子给出了为什么会出现这种情况的一些直觉。

        在信息检索领域,众所周知,自然语言中的单词以共现模式出现(参见(van Rijsbergen,1977))。有些单词可能同时出现在一个文档中,而另一些则不可能。例如,当向谷歌询问所有包含“Pepper and Salt”的文档时,它会返回3500000个网页。当查询包含“Pepper and Physics”的文档时,我们只获得248000个点击率,尽管物理(162000000个点击率)在网络上比Salt(63200000个点击率)更受欢迎。信息检索中的许多方法都试图利用这种文本的集群结构(见Baeza Yates和Ribeiro Neto,1999,第5章)。TSVMS利用这些共现信息作为学习任务的先验知识。

        考虑图6.3中的示例。假设文件D1是作为A类的培训示例给出的,文件D6是作为B类的培训示例给出的。我们应该如何将文件D2分类为D5(测试集)?即使我们不理解单词的含义,我们也会将D2和D3分为A类,D4和D5分为B类。即使D1和D3不共享任何信息性单词,我们也会这样做。我们之所以选择测试数据的这种分类而不是其他分类,是因为我们先前对文本的属性和常见的文本分类任务有了了解。


图 6.4 不同训练集大小和3299测试集大小的路透社数据集的宏观平均PRBEP。

我们通常希望按主题、源代码或样式对文档进行分类。对于这些类型的分类任务,我们发现类内的共现模式比不同类之间的共现模式更强。在我们的示例中,我们分析了测试数据中的共存信息,发现了两个集群。这些集群表示\{D1,D2,D3  \}\{D4,D5,D6  \}的不同主题,我们选择集群分隔符作为分类。再次注意,我们通过研究测试示例的位置来进行分类,这对于归纳学习者来说是不可能的。

        TSVM输出与我们上面建议的相同的分类,尽管所有16个D2到D5的标签都可以用线性分离器实现。将D2和D3分配给A级,D4和D5分配给B级是最大裕度解(即OP1的解)。最大幅度偏差似乎很好地反映了我们之前对文本分类的了解。通过测量测试集的边界,TSVM利用表示主题之间边界的共现模式。

6.4 TSVM 的实验和使用

        在上面的玩具例子中,利用边缘构造假设空间显然是有益的。实验已经证实,这在实践中也适用。

        图6.4和6.5(来自Joachims(1999))提供了经验证据,证明TSVMS提高了真实文本分类任务(即路透社21578文本分类基准)的预测性能。使用标准的“modapte”培训/测试分割,形成9603份培训文件和3299份测试文件的文集。在保存所有文档的同时,对十个最常见主题的结果进行平均。每个主题都会导致一个二元分类问题,其中关于主题的文档是正示例,而所有其他文档都是负示例。每个二元分类器的性能都是根据精度/召回盈亏平衡点(PRBEP)来衡量的。prbep是正确分类的阳性测试示例的百分比,前提是允许分类器预测测试集中存在真阳性的测试示例的数量(参见例如(Joachims,2002))。精确设置如(Joachims,1999)所述。


图 6.5 17份培训文件的路透社数据集和TSVM的不同测试集大小的宏平均PRBEP。

        图6.4和6.5显示了使用TSVM而不是归纳法的效果。为了提供一个比较基准,增加了归纳支持向量机和多项式朴素贝叶斯分类器的结果。SVM 和 TSVM 使用 SVM^{light}进行培训,可从svmlight.joachims.org获得。图6.4显示了改变训练集大小的效果。对于小的训练集,使用转导方法的优势最大。为了增加训练集的规模,支持向量机的性能接近于TSVM。这是可以预料的,因为标记的示例最终传递了与未标记数据相同的关于示例向量分布的信息。

        测试集大小对TSVM性能的影响如图6.5所示。测试集越大,SVM和TSVM之间的性能差距越大。在3299之外添加更多的测试示例不太可能提高性能,因为图似乎变平了。这些曲线相当典型,在其他问题上也观察到类似的行为。其他文本分类数据集的结果可在(Joachims,2002)中找到。

        Chapelle等人(2003年)报告了TSVM在感应SVM上的性能类似的提高。为了对网络新闻文章进行分类,他们报告说,TSVM几乎将16个示例的小训练集的预测误差减半。对于电子邮件分类问题,Kockelkorn等人(2003)的研究结果还表明,对于小型训练集,TSV明显优于归纳SVM。Tong和Koller(2001)也报告了对文本分类问题的小改进。然而,他们得出的结论是,主动学习的效果,即算法可以要求特定示例的标签,主导了从TSVM看到的改进。这与Wang等人(2003)的发现形成了对比。他们发现,将tsvms结合到他们的主动学习过程中,基于相关性反馈的图像检索大大提高了性能。更多文本分类实验见第3章。

        除了文本分类之外,Bennett和Demiriz(1999)还将其转导SVM的L_1范数变体应用于几个UCI基准问题。他们发现这些任务的改进几乎是相当一致的。与大多数其他转导学习实验的一个关键区别是使用的小测试集。由于用于培训的混合整数编程代码的效率限制,所有测试集包含的示例不超过70个。在这些UCI基准的子集上对常规 TSVM 的重新评估显示了混合的结果(Demiriz和Bennett,2000年)。Joachims(2003年)也报告了UCI基准的类似发现,其中归纳支持向量机和TSVM 之间的差异很小。

        探讨了 TSVM 在生物信息学中的几种应用。例如,它们被用来识别基因中的启动子序列。Kasabov和Pang(2004)报告说,在他们的实验中,TSVM 明显优于归纳支持向量机。然而,对于预测蛋白质功能特性的问题,Krogel和Scheffer(2004)发现,与归纳 SVM 相比,TSVM显著降低性能。

        Goutte等人(2002)将tsvms应用于医学文本中识别实体(如基因名、蛋白质名)的问题。他们发现,TSVM 大大提高了中等规模训练集的性能,并且至少与基于Fisher内核的替代转导学习方法的性能相当。

        综上所述,TSVM 似乎特别适合文本分类和其他几个(通常是高维)学习问题。然而,在某些问题上,TSVM 的表现大致相当于归纳的 SVM ,有时甚至更糟。这是可以预料的,因为根据边缘大小构造假设空间可能不适合某些应用。此外,在某些情况下,很可能由于难以找到TSVM优化问题的最优结果而导致次优结果。接下来讨论了求解TSVM优化问题的算法。

6.5 解决 TSVM 优化问题

        软硬边TSVM优化问题都可以写成具有二次目标和线性约束的混合整数问题。不幸的是,目前还没有一种算法能够有效地找到全局最优解。

        Vapnik及其同事(Vapnik和Sterin,1977;Wapnik和Tscherwonenkis,1979)提出使用分支和绑定搜索来寻找TSVM优化问题的全局最优。同样地,Bennett和Demiriz(1999)使用标准的混合整数编程软件(如CPLEX)来解决TSVM优化问题的变体。为了能够使用这种软件,他们用||w||_1替换了目标中的w\cdot w = ||w||_2^2,使目标成为线性的。然而,虽然这两种方法都能产生全局最优解,但它们只能在合理的时间内用少于100个测试实例来解决小问题。不幸的是,图6.5表明,转导学习的最大好处只发生在更大的测试集上。

        在SVM^{light}中实现的算法不一定产生全局最优解,但可以在合理的时间内处理多达100000个实例的测试集(Joachims,1999,2002)。前一节中的大多数经验结果都是使用该算法得出的。该算法从归纳支持向量机的测试实例的初始标记开始,执行一种协调的局部搜索。在初始标签中被分类为阳性(通过调整超平面阈值b)的测试示例的比率由用户指定,或根据训练集中的阳性与阴性示例的比率进行估计。该比率在整个优化过程中保持不变,以避免将所有测试示例分配给同一类的退化解。在本地搜索的每个步骤中,算法选择两个示例(一个正示例和一个负示例)并交换其标签。选择实例的方法保证了在每一步中目标函数(即软边界)的严格改进,另外,该算法从C^*的小值开始,并在整个优化过程中提高它。这意味着在搜索的初始阶段,大多数\xi^*都是非零的,从而产生更平滑的目标函数。在搜索结束时,向所需目标值递增C^*的值,使问题更接近所需目标。该算法的更详细解释见(Joachims,2002年)。

        Demiriz 和 Bennett(2000)提出了一种相关的块坐标下降方法。该算法还交替更改测试示例的标签和重新计算边界。与SVM^{light}算法相比,差异在于选择要更改的标签、每次迭代中更改的标签数量以及旨在避免局部最优的启发式方法。Fung和Mangasarian(2001)描述了TSVM 的L_1范数变量的类似算法。

        De Bie和Cristianini(2004a)探讨了TSVM优化问题的凸逼近(另见第7章)。它们呈现出一种半定程序形式的放松。虽然该程序可以在多项式时间内求解,但对于有100多个示例的测试集来说,它效率太低。然而,假设测试标签的低阶结构源自光谱分解技术,De Bie和Cristianini将效率限制推至数千个测试示例。

6.6 与相关方法的联系

        求解TSVM优化问题的困难,使得人们对其他的转导学习算法产生了极大的兴趣。目标是更广泛地利用测试示例或未标记示例的几何图形与其标签之间的相同类型的关系,但它们具有更方便计算的特性。基于St-Min割的图划分方法(Blum和Chawla,2001)和光谱图划分明确或隐含地实现了这一目标(Belkin和Niyogi,2002;Chapelle等人,2003;Joachims,2003;Zhu等人,2003b)(另见第11、12、13、14和15章)。例如,中的方法(Joachims,2003)显式派生为类似于TSVM的k-最近邻分类器的转导版本。

        岭回归是一种与回归支持向量机密切相关的方法。Chapelle等人(1999)推导了岭回归的一个转换变量。由于回归问题不需要对类标签进行离散,因此它们表明可以有效地计算出相关优化问题的解。

        联合训练(Blum和Mitchell,1998)利用了半监督学习的学习问题的两个冗余表示。与一般的转导学习的联系来自这样一种见解,即共同训练产生的转导学习问题具有很大的边际(Joachims,2003,2002)。事实上,tsvms和光谱分割方法在协同训练问题上表现良好(Joachims,2003年)。

        连接到算法随机性的概念,Gammerman等人。(1998年),Vovk等人(1999)和Saunders等人(1999)提出了基于转导设置的预测置信度估计方法。Graepel等人采用贝叶斯方法实现了类似的目标。(2000年)。由于它们的主要目标通常不是降低错误率,而是对特定预测的置信度度量,因此它们只考虑具有一个示例的测试集。

6.7 总结和结论

        转导支持向量机利用测试实例特征向量中的几何(簇)结构,使其成为一种特殊的半监督学习方法。特别是,TSVM 可以找到测试示例的标签,从而使培训和测试数据上的利润最大化。直观地说,这会生成测试示例的标签,以便类边界遵循集群边界。实验结果表明,TSVM 特别适合文本分类和其他几个(通常是高维)学习问题,通常显示小训练集和大测试集的高精度增益。然而,在一些问题上,TSVM 的性能大致相当于一个归纳的支持向量机,有时甚至更糟。在一定程度上,某些任务的失败可能是由于很难找到 TSVM 优化问题的最优解。对于尺寸有趣的测试集,寻找全局最优解是很难的。现有算法采用局部搜索或放宽优化问题。我们需要更多的工作来研究易学的公式和算法,以及对其潜力的更深入的理论和经验理解。

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