Towards Evaluating the Robustness of Neural Networks(C&W)

论文地址

摘要

神经网络为大多数机器学习任务提供了最新的结果。不幸的是,神经网络容易受到对抗性例子的攻击:给定输入x和任何目标分类t,是否有可能找到新的输入x'x类似,但归类为t。这使得难以将神经网络应用到安全关键的领域。防御性蒸馏是最近提出的一种方法,该方法可以采用任意神经网络,并增强其鲁棒性,将当前攻击找到敌方实例的能力的成功率从95%降低到0.5%。

在本文中,我们通过引入三种新的攻击算法来证明防御性蒸馏不会显着提高神经网络的鲁棒性,这三种新的攻击算法以100%的概率在蒸馏和未蒸馏神经网络上均成功。我们的攻击是针对文献中先前使用的三个距离度量量身定制的,与以前的对抗性示例生成算法相比,我们的攻击通常更为有效(而且永远不会更糟)。此外,我们建议在一个简单的可转移性测试中使用高可信度的对抗性示例,我们证明该示例也可以用于打破防御性蒸馏。我们希望我们的攻击将被用作未来防御尝试的基准,以创建能够抵抗对抗性示例的神经网络。

1.介绍

深度神经网络已在许多困难的机器学习任务上变得越来越有效。 在图像识别领域,他们能够以接近人类的准确性识别图像。 它们还用于语音识别,自然语言处理和玩游戏。 但是,研究人员发现,现有的神经网络容易受到攻击。 Szegedy等人首先注意到图像分类领域中存在对抗性示例:可以对图像进行少量转换,从而改变图像的分类方式。

通常,所需的更改总量可能很小,以至于无法检测到。 攻击者可以找到对抗性示例的程度限制了可以使用神经网络的领域。 例如,如果我们在无人驾驶汽车中使用神经网络,那么对抗性示例可能会使攻击者导致汽车采取不必要的行动。对抗性例子的存在激发了关于如何针对此类攻击强化神经网络的研究。许多早期的尝试来保护神经网络失败或仅提供了边际鲁棒性改进。

防御性蒸馏就是最近提出的一种针对对抗性例子强化神经网络的防御措施。 初步分析被证明是非常有前途的:防御性蒸馏击败了现有的攻击算法,并将其成功概率从95%降低至0.5%。 防御性蒸馏可以应用于任何前馈神经网络,只需要一个简单的重新训练步骤,并且是目前为对抗性示例提供强大安全保证的唯一防御之一。

通常,可以采用两种不同的方法来评估神经网络的健壮性:尝试证明下界,或构造证明上限的攻击。 前一种方法虽然合理,但实际上很难实施,所有尝试都需要近似值。 另一方面,如果在后一种方法中使用的攻击强度不足且经常失败,则上限可能无济于事。

在本文中,我们创建了一组攻击,可用于构建神经网络鲁棒性的上限。作为案例研究,我们使用这些攻击来证明防御性蒸馏实际上并没有消除对抗性例子。我们构造了三个新的攻击(在三个先前使用的距离度量标准下:L_0L_2L_{\infty}),这些攻击成功地为防御性蒸馏网络上100%的图像找到了对抗示例。防御性提炼可以阻止以前发布的攻击,但是它无法抵抗我们在本文中介绍的更强大的攻击技术。该案例研究表明,通常需要更好的技术来评估神经网络的鲁棒性:尽管蒸馏已被证明可以抵御当前的最新攻击,但无法抵御我们更强大的攻击。此外,在将我们的攻击与标准无担保模型上的最新技术进行比较时,我们的方法生成的对抗性示例在每种情况下的总失真都较小。我们建议我们的攻击是评估候选防御的更好基准:在对新的可能防御抱有信心之前,我们建议设计人员至少检查它是否可以抵抗我们的攻击。

我们还建议使用高可信度的对抗性示例来评估防御的鲁棒性。 传递性,是众所周知的属性,一个模型上的对抗性示例通常在另一个模型上也具有对抗性。 我们证明了我们攻击的对抗性例子可以从不安全模型转移到防御性提炼(安全)模型中。 总的来说,我们认为任何防御都必须证明其能够破坏可传递性。

我们评估对三个标准数据集的攻击:MNIST ,一个数字识别任务(0-9); CIFAR-10 ,一个小图像识别任务,也有10个类别; 和ImageNet ,这是一个具有1000个类别的大图像识别任务。 图1显示了我们的技术在经过MNIST和CIFAR数据集训练的防御性蒸馏网络上生成的对抗性示例。 在ImageNet分类任务的一个极端示例中,我们可以通过仅更改每个像素的最低位来使Inception v3 网络对图像进行错误分类。 这样的变化是肉眼无法察觉的。 为了使其他人更容易地使用我们的工作来评估其他防御的鲁棒性,我们所有的对抗性示例生成算法(以及用于训练我们使用的模型,再现我们呈现的结果的代码)都可以在以下网址在线获得: http://nicholas.carlini.com/code/nn_robust_attacks

本文做出了以下贡献:

  • 我们针对L_0L_2L_{\infty}距离度量引入了三种新的攻击。我们的攻击比以前的方法明显更有效。我们的L_0攻击是第一个发布的攻击,它可能导致ImageNet数据集上的目标错误分类。
  • 我们将这些攻击应用于防御性蒸馏,发现与未蒸馏网络相比,蒸馏几乎没有提供安全益处。
  • 我们建议在简单的可传递性测试中使用高可信度对抗性示例来评估防御,并表明该测试可以打破防御性蒸馏。
  • 我们系统地评估目标函数的选择以找到对抗性示例,并表明选择可以极大地影响攻击的效果

2.背景

A. Threat Model

越来越多的设置使用机器学习来做出可能对安全性至关重要的决策:自动驾驶汽车,无人机,机器人,异常检测,恶意软件分类,语音识别和语音命令识别,NLP 等。因此,了解深度学习的安全属性已成为该领域的关键问题。我们可以构造对抗性示例的程度会影响我们可能希望(或不想)使用神经网络的设置。在语音识别领域,最近的工作表明,对于机器学习算法而言,生成语音听起来像语音的音频是可能的,但对于人类而言,则不是。这可用于在用户不知情的情况下控制他们的设备。例如,通过播放带有隐藏语音命令的视频,可能会导致智能手机访问恶意网页,从而导致偷渡式下载。这项工作集中于常规技术(高斯混合模型和隐马尔可夫模型),但是随着语音识别越来越多地使用神经网络,对抗性示例的研究在这一领域变得很重要。

在恶意软件分类的领域,对抗性示例的存在不仅限制了其潜在的应用程序设置,而且完全破坏了其目的:一个能够对恶意软件文件进行少量修改以使其仍为恶意软件但被分类的对手 作为良性的,已经完全击败了恶意软件分类器。 回到前面介绍的对自动驾驶汽车的威胁,这并不是不切实际的攻击:已经证明在拍照后,现实世界中可能存在对抗性例子。 然后,关键问题就变成了我们必须增加多少失真才能导致分类发生变化。 在每个域中,我们必须使用的距离度量是不同的。 在本文重点关注的图像空间中,我们依靠先前的工作表明各种L_p范式是人类感知距离的合理近似值(有关更多信息,请参见II-D节)

我们在本文中假设对手可以完全访问神经网络,包括体系结构和所有参数,并且可以白盒方式使用。 这是一个保守和现实的假设:先前的工作已经表明在黑盒访问目标模型的情况下,有可能训练替代模型,然后通过攻击替代模型,我们可以将这些攻击转移到目标模型。

考虑到这些威胁,已经进行了各种尝试,以构建能够增强神经网络健壮性的防御措施,这被定义为衡量神经网络变得多么容易的一种措施。 查找接近其原始输入的对抗性示例。 在本文中,我们研究了其中之一,即蒸馏作为防御,希望可以确保任意神经网络的安全。 事实证明,这种类型的防御性蒸馏使现有的攻击技术几乎不可能生成对抗性示例。 我们发现,尽管当前的最新技术未能找到防御性提炼网络的对抗性示例,但我们在本文中开发的更强的攻击能力却可以构建对抗性示例。

B. Neural Networks and Notation

神经网络是函数F(x)= y,它接受输入x∈\Bbb R^n并产生输出y∈\Bbb R^m。 模型F还隐式地依赖于某些模型参数θ; 在我们的工作中,模型是固定的,因此为方便起见,我们不显示对θ的依赖性。 在本文中,我们专注于用作m类分类器的神经网络。 使用softmax函数计算网络的输出,该函数可确保输出向量y满足0≤y_i≤1y_1 +···+ y_m =1。因此,将输出向量y视为概率分布,即y_i被视为输入x具有类别i的概率。 分类器将标签C(x)= \arg \max_i F(x)_i分配给输入x。 令C^∗(x)x的正确标签。 softmax函数的输入称为logits。 我们使用Papernot等人的符号。 将F定义为包括softmax函数的完整神经网络,将Z(x)= z定义为除softmax外的所有层的输出(因此z是对数),并且

对于一些非线性激活函数σ,一些模型权重的矩阵θ_i,和一些模型偏差的向量\hat{θ_i}θ\hat{θ}共同构成模型参数。 σ的常用选择有tanh ,sigmoid,ReLU 或ELU 。 在本文中,我们主要关注使用ReLU激活功能的网络,因为它是目前使用最广泛的激活功能。

我们使用图像分类作为我们的主要评估领域。 h×w像素的灰度图像是二维向量x∈\Bbb R^{hw},其中x_i表示像素i的强度,并缩放到[0,1]范围内。 彩色RGB图像是三维向量x∈\Bbb R^{3hw}。 我们不会将RGB图像转换为HSV,HSL或其他彩色图像的圆柱坐标表示形式:神经网络会作用于原始像素值。

C. Adversarial Examples

Szegedy等人首先指出了对抗性例子的存在:给定有效输入x和目标t \neq C ^∗(x),通常可以找到相似的输入x'这样,C(x')= txx'根据某个距离度量是接近的。具有此属性的示例x'被称为目标对抗示例。文献中还讨论了一种不那么强大的攻击,而是要求使用非针对性的对抗示例:我们没有搜索x并将其分类为给定的目标类,而是仅搜索输入x'从而使C(x') \neq C ^∗(x)并且xx'接近。非目标攻击严格地没有目标攻击强大,我们在本文中不予考虑。3相反,我们针对目标攻击考虑三种不同的方法来选择目标类别:

  • 平均情况:在以下情况下统一选择目标类别在不是正确标签的标签之间随机。
  • 最佳情况:对所有不正确的类别进行攻击,并报告最难攻击的目标类别。
  • 最坏的情况:对所有不正确的类别进行攻击,并报告最难攻击的目标类别。

在所有评估中,我们执行所有三种类型的攻击:最佳情况,平均情况和最坏情况。请注意,如果分类器在80%的时间内仅是准确的,则最佳案例攻击将需要在20%的案例中将其更改为0。在ImageNet上,出于效率考虑,我们通过从1,000种可能的目标类别中采样100种随机目标类别来估计最佳情况和最坏情况的攻击。

D. Distance Metrics

在我们的对抗性示例定义中,我们需要使用距离度量来量化相似性。 在文献中,存在三种广泛使用的距离度量来生成对抗性示例,所有这些都是L_p范数。 L_p距离写成\begin{Vmatrix} x-x' \end{Vmatrix} _p,其中p范数\begin{Vmatrix} \cdot \end{Vmatrix} _p定义为:

更详细地说:
(1)L_0距离测量坐标i的数量,使得x_i \neq x'_i。因此,L_0距离对应于图像中已更改的像素数。
(在RGB图像中,每个通道可以更改三个通道。 我们计算不同像素的数量,如果三种颜色中的任何一种不同,则认为两个像素不同。 我们不考虑攻击者可以更改一个颜色平面但不能改变另一种颜色平面的距离度量。 与其他未作此假设的L0攻击进行比较时,我们放宽了此要求)
Papernot等人讨论L_0距离度量的使用,这是防御性蒸馏的安全性被论证的主要距离度量。
(2)L_2距离测量xx'之间的标准欧几里得距离(均方根)。当许多像素有很多细微变化时,L_2距离可以保持很小。在最初的对抗示例工作中使用了这种距离度量。
(3)L_\infty距离测量到任何坐标的最大变化:
\begin{Vmatrix} x-x' \end{Vmatrix} _\infty = max(|x_1-x'_1 |,...,|x_n-x'_n |).

对于图像,我们可以想象有一个最大的预算,并且每个像素被允许最多更改此限制,而对修改的像素数没有限制。 Goodfellow等人认为L_\infty是要使用的最佳距离度量。在后续论文Papernot等人认为在此距离指标下蒸馏是安全的。

没有距离度量是与人类感知相似的完美度量,并且我们没有准确判断哪个距离度量是最佳的。 我们认为,构建和评估良好的距离度量标准是我们留给未来工作的重要研究问题。 但是,由于大多数现有工作都选择了这三个距离量度之一,并且由于防御性蒸馏认为其中的两个距离量度是安全的,因此我们也使用这些距离量度并构造对每个距离量度都优于最新技术的攻击 这些距离指标。 在报告本文中的所有数字时,我们使用上面定义的距离度量在[0,1]范围内进行报告。 (也就是说,将灰度图像中的像素从全开更改为全关将导L_2变为1.0,L_\infty变为为1.0,而不是255)

E. Defensive Distillation

我们简要地概述了防御性分配。 稍后在第八节中,我们将提供完整的描述。 为了防御性地提取神经网络,首先要以标准方式在训练数据上训练具有相同架构的网络。 当我们在训练该网络时计算softmax时,将其替换为更平滑的softmax版本(将对数除以某个常数T)。 训练结束时,通过在每个训练实例上评估该网络并获取网络的输出标签来生成软训练标签。

然后,丢弃第一个网络并仅使用软训练标签。通过这些标签,训练第二个网络,而不是在原始训练标签上进行训练,而使用软标签。这训练了第二个模型,使其表现得像第一个模型,并且软标签传达了第一个模型学到的其他隐藏知识。此处的关键见解是,通过进行培训以匹配第一个网络,我们有望避免针对任何培训数据进行过度拟合。如果存在神经网络的原因是因为神经网络是高度非线性的,并且在对抗示例中存在“盲点” ,那么防止这种类型的过度拟合可能会消除那些盲点。实际上,正如我们稍后将看到的,防御性蒸馏并不能消除对抗性的例子。可能发生这种情况的一个可能原因是,其他人认为存在对抗性例子的原因不是由于高度非线性神经网络中的盲点,而是仅由于神经网络的局部线性性质。这种所谓的线性假设看来是正确的,在这种解释下,蒸馏不会增加神经网络的鲁棒性可能就不足为奇了。

F. Organization

本文的其余部分的结构如下。 在下一部分中,我们将调查文献中为生成L_2L_\inftyL_0距离量度的对抗示例而提出的现有攻击。 然后,我们描述针对相同三个距离度量的攻击算法,并为先前的工作提供卓越的结果。 在开发了这些攻击之后,我们将更详细地讨论防御性提炼,并讨论为什么现有攻击未能在防御性提炼网络上找到对抗性示例。 最后,我们使用新算法对防御性蒸馏进行了攻击,并表明它仅提供有限的价值。

3. 攻击算法

A. L-BFGS(论文地址)

Szegedy等人使用框约束的L-BFGS生成对抗示例。 给定一个图像x,他们的方法找到一个不同的图像x',类似于L_2距离下的x,但分类器对其进行了不同的标记。 他们将问题建模为约束最小化问题

然而,这个问题很难解决,因此,Szegedy等人。而是解决以下问题:

其中loss_{F,l}是将图像映射到正实数的函数, 使用的一种常见损失函数是交叉熵损失。 进行线搜索以找到常数c> 0,产生了最小距离的对抗示例:换句话说我们针对c的多个值反复解决此优化问题,使用对分搜索或任何其他用于一维优化的方法自适应地更新c

B. Fast Gradient Sign(论文地址)

快速梯度符号方法与L-BFGS方法有两个主要区别:首先,它针对L_\infty距离度量进行了优化,其次,它主要是为了快速而设计,而不是产生非常接近的对抗性示例。 给定图像x快速梯度符号方法集:

其中\epsilon被选为足够小以便不被检测,而t是目标标签。直观地说,对于每个像素,快速梯度符号法利用损失函数的梯度来确定像素的强度应该朝哪个方向改变(是应该增加还是减少),以最小化损失函数;然后,它同时移动所有像素。值得注意的是,快速梯度符号攻击被设计成快速的,而不是最优的。它并不意味着产生最小的对抗性干扰。

Iterative Gradient Sign论文地址:Kurakin等人引入快速梯度符号法的一个简单的改进,其中没有采取一个单一的步骤大小\epsilon在梯度符号的方向上,而是采取多个较小的步骤α,并用相同的\epsilon对结果进行裁剪。具体来说,先设定

然后在每次迭代

发现迭代梯度符号比快速梯度符号产生更好的结果。

C. JSMA(论文地址)

Papernot等人引入了一种在L_0距离下优化的攻击,称为Jacobian-based Saliency Map Attack(基于雅可比的显着性图攻击 JSMA)。 我们简要概述了他们的攻击算法。 为了获得完整的描述和动力,我们鼓励读者阅读其原始论文。 从高层次上讲,这种攻击是一种贪婪算法,该算法一次选择像素以修改一个像素,从而在每次迭代中增加目标分类。 他们使用梯度∇Z(x)_l计算显着图,该显着图模拟了每个像素对结果分类的影响。 较大的值表示更改此值将大大增加模型将图像标记为目标类别l的可能性。 给定显着性图,它会选择最重要的像素并对其进行修改以增加l类的可能性。 重复此操作,直到修改了超过设置的像素阈值(可以检测到攻击)或成功更改分类为止。

更详细地,我们首先根据一对像素pq定义显着图。 定义:

因此,α_{pq}代表像素pq的变化量将改变目标分类,而β_{pq}代表像素pq的变化量将改变所有其他输出。 然后算法选择

因此,α_{pq}> 0(更有可能成为目标类别),β_{pq}<0(其他类别变得不太可能),并且-α_{pq}·β_{pq}是最大。 请注意,JSMA在计算中使用倒数第二层到最后一层的输出Z,也就是logits : softmax F的输出未使用。 我们将此称为JSMA-Z攻击。 但是,当作者将此攻击应用于防御性蒸馏网络时,他们会修改攻击,因此使用F代替Z。换句话说,他们的计算使用softmax(F)的输出而不是logits(Z)。 我们将此修改称为JSMA-F攻击

当图像具有多个颜色通道(例如RGB)时,此攻击将针对每个独立更改的颜色通道的L0差异视为1(因此,如果一个像素的所有三个颜色通道均发生更改,则L0范数将为3)。 尽管我们认为这不是有意义的威胁模型,但与这种攻击相比,我们在两种模型下进行评估。

D. Deepfool(论文地址)

Deepfool 是针对L_2距离指标优化的无目标攻击技术。 与前面讨论的L-BFGS方法相比,它是有效的并且产生了更紧密的对抗性示例。 作者通过想象神经网络是完全线性的,并通过一个超平面将每个类别彼此分开来构造Deepfool。 由此,他们分析性地得出了此简化问题的最佳解决方案,并构造了对抗性示例。 然后,由于神经网络实际上不是线性的,因此它们朝该解决方案迈出了一步,并再次重复了该过程。 找到真实的对抗示例后,搜索将终止。 使用的确切公式相当复杂。 有兴趣的读者应参考原著。

4. 实验设置

在开发攻击算法以打破蒸馏之前,我们将描述如何训练模型以评估攻击。
我们为MNIST [28]和CIFAR-10 [24]分类任务训练了两个网络,并为ImageNet分类任务[41]使用了一个预先训练的网络。 我们的模型和训练方法与[39]中介绍的模型和训练方法相同。 我们在MNIST上达到了99.5%的准确度,可与最新技术相媲美。 在CIFAR-10上,我们达到80%的精度,与蒸馏工作中给出的精度相同。

表1
表2

MNIST和CIFAR-10。模型结构如表1所示,超参数的选择见表2。我们在训练中使用基于动量的SGD优化器。CIFAR-10模型对训练数据的拟合程度明显超过了训练数据,即使有丢失:我们得到的最终训练交叉熵损失为0.05,准确率为98%,而验证损失为1.2,验证准确率为80%。我们不会通过执行图像增强或添加额外的丢失来改变网络。

5. 我们的方法

现在我们转向我们构建对抗性例子的方法。首先,我们依赖于对抗性示例的初始表述,并正式定义了以图像x寻找对抗性实例的问题,如下所示

其中x是固定的,目标是找到最小化D(x, x+δ)δ。也就是说,我们希望找到一些变化小的δ,我们可以对一个图像x进行改变,从而改变它的分类,但是其仍然是一个有效的图像。这里D是一些距离度量;如前所述,它将是L_0L_2L_\infty

我们通过将其描述为可用现有优化算法解决的适当优化实例来解决此问题。有许多可能的方法可以做到这一点;我们探索公式的空间,并根据经验确定哪些方法会导致最有效的攻击

A. Objective Function

由于约束C(x+δ)=t是高度非线性的,现有算法很难直接求解上述公式。因此,我们用更适合于优化的不同形式来表示它。我们定义了一个目标函数f,使得C(x+δ)=t当且仅当f(x+δ)≤0。f有很多可能的选择:

其中s是正确的分类,(e)^+max(e,0)的简写,softplus(x)=log(1+exp(x))loss_{F,s}(x)是x的交叉熵损失。

注意,我们已经通过添加一个常量来调整上面的一些公式;我们这样做只是为了使函数符合我们的定义。这不会影响最终结果,因为它只是缩放最小化函数。现在,把问题表述为:

我们用另一个公式:

其中c>0是一个适当选择的常数。这两者是等价的,即存在c>0,使得后者的最优解与前者的最优解相匹配。在用L_p范式实例化距离度量D后,问题变为:给定x,找到δ解决:

选择常数c

从经验上讲,我们发现选择c的最佳方法通常是使用c的最小值,由此得到的解x^*f(x^∗)≤0。这会导致梯度下降同时最小化两个项,而不是只选择一个项进行优化。

我们通过运行f_6公式(我们发现最有效)对MNIST数据集上c的值从c = 0.01c = 100均匀间隔(以对数刻度)进行验证。 我们在图2中绘制这条线。

图2

B. Box constraints

为了确保修改产生有效的图像,我们对δ进行了约束:对于所有i,我们必须使0≤x_i +δ_i≤1。 在优化文献中,这称为“盒约束”。以前的工作使用了一种特殊的优化算法L-BFGS-B,它本地支持盒约束。 我们研究了三种解决此问题的方法:

(1)投影梯度下降执行标准梯度下降的一个步骤,然后将所有坐标裁剪到框内。 对于具有复杂更新步骤(例如,具有动量的梯度下降方法)的梯度下降方法,此方法可能效果不佳:当裁剪实际xi时,我们意外地将输入更改为算法的下一个迭代

(2)

(3)

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