神經(jīng)網(wǎng)絡(luò)簡(jiǎn)介

BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)

我們知道單層感知機(jī)(perceptron)的局限性:它無法解決異或(XOR)問題,或者其它線性不可分問題。
考慮下圖的數(shù)據(jù)集的分類問題。這是一個(gè)線性不可分的問題,顯然單個(gè)單層感知機(jī)無法將其正確分類赂韵。


異或門

異或問題的例子

但是我們可以通過組合三個(gè)單層感知機(jī),來解決這個(gè)問題:


堆疊多個(gè)單層感知器解決異或問題

其中三個(gè)單層感知機(jī)可分別為:
\begin{align} f_{11}(x,y)&= \begin{cases} 0 &, y\geq x + \frac{3}{2}\\ 1 & ,y< x + \frac{3}{2} \end{cases}\\ f_{12}(x,y)&= \begin{cases} 0 &, y< x + \frac{1}{2}\\ 1 & , y\geq x + \frac{1}{2} \end{cases}\\ f_{21}(x,y)&= \begin{cases} 0 &, x=0\text{ or }y=0 \\ 1 &, x=y=1 \end{cases} \end{align}
需要注意的是挠蛉,可以正確分類的感知機(jī)組合的選擇不唯一祭示。

從上述例子,我們可以看到:通過堆疊多個(gè)單層感知機(jī)碌秸,可以解決該線性不可分問題绍移。這啟發(fā)我們用一種新的更復(fù)雜的框架——神經(jīng)網(wǎng)絡(luò)(neural network)——來建模。它包括輸入層讥电、隱含層輸出層三部分蹂窖。在一個(gè)神經(jīng)網(wǎng)絡(luò)中,輸入層和輸出層的層數(shù)僅為1恩敌,但維度可以為任意維瞬测,即輸入x、輸出y分別既可以為標(biāo)量(scaler)、又可以為向量(vector)月趟,甚至是二維矩陣(matrix)或高維數(shù)組(array)灯蝴。在本章,我們僅考慮神經(jīng)網(wǎng)絡(luò)的輸入孝宗、輸出為向量穷躁,神經(jīng)元結(jié)點(diǎn)的輸入、輸出為標(biāo)量的情形因妇。神經(jīng)網(wǎng)絡(luò)的隱含層卻可以有多層(假設(shè)層數(shù)至少為1)问潭。在每一個(gè)隱含層或輸出層,輸入該層的元素x首先進(jìn)行仿射變換\mathbf{w}^{\top}\mathbf{x}+b婚被,再通過激活函數(shù)映射后輸出f(\mathbf{w}^{\top}\mathbf{x}+b)狡忙。這個(gè)過程與人的神經(jīng)細(xì)胞在傳遞神經(jīng)信號(hào)的過程極為相似,故也常將每一層的每個(gè)仿射變換址芯、激活函數(shù)的組合稱為一個(gè)神經(jīng)元灾茁。

仿射變換和激活函數(shù)映射在圖中分別用符號(hào)\Sigmaf表示。如果僅從數(shù)學(xué)函數(shù)的角度看待神經(jīng)網(wǎng)絡(luò)谷炸,則可將其看做一個(gè)計(jì)算圖北专,不同的變量結(jié)點(diǎn)(variable node)通過計(jì)算結(jié)點(diǎn)(operator node)發(fā)生相互作用,這也是Tensorflow的基本框架旬陡。

以下我們通過前文的例子來理解上述定義逗余。

解決異或問題的多個(gè)單層感知機(jī)模型可以看做是一個(gè)具有一個(gè)隱含層的神經(jīng)網(wǎng)絡(luò),其中激活函數(shù)f為階躍函數(shù)季惩,即f(x)= \begin{cases} 1&, x\geq 0\\ 0&, x<0 \end{cases}

利用神經(jīng)網(wǎng)絡(luò)的計(jì)算圖框架解釋模型
利用神經(jīng)網(wǎng)絡(luò)的神經(jīng)元框架解釋模型

顯然單層感知機(jī)無法對(duì)回歸問題建模,因?yàn)樗妮敵鲋荒転?或1腻格。為了改進(jìn)這個(gè)缺陷画拾,我們可以將激活函數(shù)替換為其他線性或非線性函數(shù)。常用的激活函數(shù)有:

激活函數(shù) 表達(dá)式 圖像
sigmoid函數(shù) S(x)={\frac {1}{1+e^{-x}}}={\frac {e^{x}}{e^{x}+1}}
sigmoid.png
tanh函數(shù) tanh(x)={\frac {sinh(x)}{cosh(x)}}={\frac {e^{x}-e^{-x}}{e^{x}+e^{-x}}}
tanh.png
ReLU函數(shù)(Rectified Linear Unit) ReLU(x)= \max\{x,0\}
relu.png

因此菜职,現(xiàn)在我們就有了一般的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)——層級(jí)結(jié)構(gòu)——每一層由多個(gè)結(jié)點(diǎn)組成青抛,相鄰層的結(jié)點(diǎn)相互全連接。輸入層結(jié)點(diǎn)可視為將輸入的標(biāo)量通過恒等函數(shù)變換輸出酬核,隱含層和輸出層則將輸入的標(biāo)量做仿射變換蜜另、激活函數(shù)變換后輸出。

神經(jīng)網(wǎng)絡(luò)的神經(jīng)元基本框架

通過這樣的神經(jīng)元結(jié)構(gòu)嫡意,我們能較好地理解神經(jīng)網(wǎng)絡(luò)模型举瑰,但在后續(xù)的網(wǎng)絡(luò)權(quán)值更新過程中,計(jì)算圖框架會(huì)更加適用蔬螟。

損失函數(shù)和代價(jià)函數(shù)

同樣的網(wǎng)絡(luò)結(jié)構(gòu)此迅,搭配不同的仿射變換或激活函數(shù),都能得到不同的模型。因此耸序,我們自然會(huì)問:如何評(píng)價(jià)一個(gè)神經(jīng)網(wǎng)絡(luò)模型的效果呢忍些?

首先,對(duì)一個(gè)給定的輸入向量\mathbf{x}和真實(shí)的輸出向量\mathbf{y}坎怪,我們定義模型的損失函數(shù)(loss function)來衡量模型對(duì)\mathbf{x}的預(yù)測(cè)值\hat{\mathbf{y}}=f(\mathbf{x})\mathbf{y}的差異罢坝,這里我們假設(shè)神經(jīng)網(wǎng)絡(luò)模型的映射為f。常用的損失函數(shù)如下:

損失函數(shù) 表達(dá)式 應(yīng)用場(chǎng)景
平方損失(square loss)函數(shù) L(\hat{\mathbf{y}},\mathbf{y})=(\hat{\mathbf{y}}-\mathbf{y})^{\top}(\hat{\mathbf{y}}-\mathbf{y}) ,\qquad\hat{\mathbf{y}},\mathbf{y}\in \mathbb{R}^n 線性回歸模型
合頁損失(hinge loss)函數(shù) L(\hat{\mathbf{y}},\mathbf{y})=\max\{0,1-\hat{\mathbf{y}}\mathbf{y}\},\qquad \mathbf{y}\in\{-1,1\},\hat{\mathbf{y}}\in \mathbb{R} 支持向量機(jī)模型(SVM)
0-1損失(0-1 loss)函數(shù) L(\hat{\mathbf{y}},\mathbf{y})=\mathds{1}_{\{\hat{\mathbf{y}}\neq\mathbf{y}\}},\qquad \hat{\mathbf{y}},\mathbf{y}\in \mathbb{R} 用于理論分析及準(zhǔn)確度的定義
交叉熵?fù)p失(cross entropy loss)函數(shù) L(\hat{\mathbf{y}},\mathbf{y})= - \sum\limits_{c\in C} \mathbf{y}_c\log \hat{\mathbf{y}}_c,\qquad\sum\limits_{c\in C}\mathbf{y}_c=\sum\limits_{c\in C}\hat{\mathbf{y}}_c=1, \qquad\mathbf{y}_c\in\{0,1\},\hat{\mathbf{y}}_c\in[0,1] 二分類或多分類問題
指數(shù)損失(exponential loss)函數(shù) L(\hat{\mathbf{y}},\mathbf{y})= e^{-\hat{\mathbf{y}}\mathbf{y}},\qquad \mathbf{y}\in\{-1,1\},\hat{\mathbf{y}}\in \mathbb{R} Adaboost模型

其次搅窿,對(duì)于一個(gè)模型嘁酿,我們更關(guān)心的是其在某個(gè)數(shù)據(jù)集上的表現(xiàn)而不僅局限于某個(gè)樣本,因此戈钢,我們也定義了代價(jià)函數(shù)(cost function)痹仙,來衡量模型在某個(gè)分布上的表現(xiàn):Cost(\mathscr{X},\mathscr{Y} )= \mathbb{E}_{(\mathscr{X},\mathscr{Y} )}[L(f(\mathbf{x}),\mathbf{y})]
其中\mathbb{E}_{(\mathscr{X},\mathscr{Y} )}是在數(shù)據(jù)集(\mathscr{X},\mathscr{Y} )的真實(shí)分布上求期望。在實(shí)際應(yīng)用中殉了,由于我們可能并不知道數(shù)據(jù)的真實(shí)分布开仰,故常用數(shù)據(jù)集中每個(gè)樣本點(diǎn)在特定損失函數(shù)下的損失平均值作為代價(jià)函數(shù),例如均方誤差(mean squared error)薪铜,此時(shí)有
Cost(\mathscr{X},\mathscr{Y} )= \sum\limits_{(\mathbf{x}, \mathbf{y})\in (\mathscr{X},\mathscr{Y} )}L(f(\mathbf{x}),\mathbf{y})

對(duì)于神經(jīng)網(wǎng)絡(luò)這樣的參數(shù)模型众弓,通常我們不僅考慮代價(jià)函數(shù)在數(shù)據(jù)集上的值,同時(shí)也考慮模型參數(shù)的復(fù)雜程度隔箍。因此我們希望模型優(yōu)化的目標(biāo)函數(shù)(objective function)定義為:
Obj(\mathscr{X},\mathscr{Y})= Cost(\mathscr{X},\mathscr{Y} ) + R(f)
其中R(f)是正則項(xiàng)(regularization)谓娃,它有助于防止過擬合。目標(biāo)函數(shù)就是我們?cè)趯?shí)際求解神經(jīng)網(wǎng)絡(luò)參數(shù)用的準(zhǔn)則蜒滩,好的參數(shù)可以在訓(xùn)練集滨达、測(cè)試集上都有較低的目標(biāo)函數(shù)值。

需要注意的是俯艰,代價(jià)函數(shù)和目標(biāo)函數(shù)在某些語境下并不區(qū)分捡遍,此時(shí)代價(jià)函數(shù)本身便包含正則項(xiàng)。

反向傳播算法

在前面的章節(jié)竹握,我們已經(jīng)有了神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)與模型的評(píng)價(jià)標(biāo)準(zhǔn)画株,接下來,我們要考慮的是:給定數(shù)據(jù)集和神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)啦辐,我們應(yīng)該怎樣讓網(wǎng)絡(luò)從數(shù)據(jù)中學(xué)習(xí)谓传、更新參數(shù)?

在數(shù)值計(jì)算中芹关,我們常用梯度下降法來求取一個(gè)函數(shù)的局部極小值续挟,在神經(jīng)網(wǎng)絡(luò)中,我們可以將其推廣侥衬,利用鏈?zhǔn)椒▌t將誤差從后往前傳播庸推,并利用梯度下降法更新相鄰兩層間的權(quán)重常侦,最小化誤差。


正向傳播

每一個(gè)神經(jīng)元的結(jié)構(gòu)

誤差反向傳播

在圖中贬媒,我們用x_{ij}表示神經(jīng)網(wǎng)絡(luò)中第i層第j個(gè)神經(jīng)元的輸入值(其中第0層表示輸入層)聋亡,同時(shí)也是第i+1層,用W_{jk}^{i+1}表示第i層第j個(gè)神經(jīng)元對(duì)第i+1層第k個(gè)神經(jīng)元貢獻(xiàn)的權(quán)重际乘,用b_{i+1}表示第i層與與第i+1層仿射變換的偏移量坡倔,用z_{i+1,k}表示第i+1層第k個(gè)神經(jīng)元的輸出值,n_i為第i層神經(jīng)元的個(gè)數(shù)脖含。我們也可以用向量和矩陣的形式將每個(gè)神經(jīng)元結(jié)點(diǎn)表示為:
\begin{align} \mathbf{z}_{i+1}&= \mathbf{W}_{i+1}\mathbf{x}_i + \mathbf罪塔_{i+1} \\ \mathbf{x}_{i+1} &= f(\mathbf{z}_{i+1} ) \end{align}
其中
\begin{align} \mathbf{x}_i = \begin{pmatrix} x_{i1}\cr \vdots \cr x_{in_i} \end{pmatrix} \qquad \mathbf{W}_{i+1}= \begin{pmatrix} W_{11}^{i+1}& \cdots & W_{1n_i}^{i+1} \cr \vdots & \ddots & \vdots \cr W_{n_{i+1}1}^{i+1}& \cdots & W_{n_{i+1}n_i}^{i+1} \cr \end{pmatrix} \qquad \mathbf_i = \begin{pmatrix} b_{i1}\cr \vdots \cr b_{in_i} \end{pmatrix} \qquad \mathbf{z}_i = \begin{pmatrix} z_{i1}\cr \vdots \cr z_{in_i} \end{pmatrix} \end{align}
f(\mathbf{z}_{i+1})是分別作用在向量\mathbf{z}_{i+1}的每一個(gè)分量上(element-wise)养葵。

以上圖中的三層網(wǎng)絡(luò)為例征堪,這個(gè)網(wǎng)絡(luò)的輸出層只有一個(gè)神經(jīng)元,假設(shè)我們已經(jīng)計(jì)算出該結(jié)點(diǎn)仿射變換輸出的誤差\delta_{21}关拒,其下標(biāo)表示第2層第1個(gè)神經(jīng)元佃蚜。讀者也可以選擇每個(gè)結(jié)點(diǎn)輸出值的誤差進(jìn)行反向傳播更新參數(shù),但是選擇仿射變換后的誤差更加方便理解與計(jì)算着绊,因此我們按照該約定進(jìn)行反向傳播算法的介紹谐算。

  1. 更新隱含層與輸出層之間的參數(shù)。

注意到誤差與損失函數(shù)L的關(guān)系:
\begin{align} {\boldsymbol\delta}_2 &= \delta_{21} \\ &= \dfrac{\partial L}{\partial \mathbf{z}_2}\\ &=\dfrac{\partial L}{\partial \mathbf{x}_2}\odot \dfrac{\partial f(\mathbf{z}_2)}{\partial \mathbf{z}_2}\\ &=\dfrac{\partial L( \mathbf{x}_{2}, y)}{\partial \mathbf{x}_2} \odot f'(\mathbf{z}_2) \end{align}
其中\odot表示逐元素相乘(element-wise multiplication / Hadamard product)归露。我們希望更新參數(shù)\mathbf{W}_2b_2洲脂,首先根據(jù)鏈?zhǔn)椒▌t有
\begin{align} \dfrac{\partial L}{\partial W^{2}_{1j}}&= \dfrac{\partial L}{ \partial z_{21}}\cdot \dfrac{ \partial z_{21}}{\partial W_{1j}^2} \end{align}
因此有
\begin{align} \dfrac{\partial L}{\partial \mathbf{W}_2} &= \delta_{21}\cdot\mathbf{x}_1^{\top} \end{align}
類似地,
\begin{align*} \dfrac{\partial L}{\partial b_2}&={\boldsymbol\delta}_2\\ \end{align*}
因此由梯度下降法剧包,我們可以用以下公式更新該神經(jīng)網(wǎng)絡(luò)中輸出層之前的參數(shù):
\begin{align*} \mathbf{W}_2' & = \mathbf{W}_2 - \eta \cdot \delta_{21} \cdot \mathbf{x}_1^{\top}\\ b_2'&= b_2- \eta \cdot {\boldsymbol\delta}_2\\ \end{align*}
其中\eta\in (0 ,1]為人工設(shè)定的學(xué)習(xí)率恐锦,用于調(diào)整權(quán)重更新的步長(zhǎng)。

需要注意的是疆液,在實(shí)際數(shù)值計(jì)算中踩蔚,需要先求解相應(yīng)的偏導(dǎo)函數(shù),再將\mathbf{x}_2\mathbf{z}_2對(duì)應(yīng)的具體數(shù)值代入得到對(duì)應(yīng)的偏導(dǎo)數(shù)值枚粘。

  1. 誤差反向傳播。

我們希望計(jì)算出網(wǎng)絡(luò)隱含層每個(gè)結(jié)點(diǎn)的誤差飘蚯,同樣地根據(jù)鏈?zhǔn)椒▌t計(jì)算偏導(dǎo)
\begin{align} {\boldsymbol \delta_1} &= \dfrac{\partial L}{\partial \mathbf{z}_1}\\ &=\dfrac{\partial L}{\partial \mathbf{x}_1}\odot \dfrac{\partial f(\mathbf{z}_1)}{\partial \mathbf{z}_1} \\ &=\left\{ \left[\dfrac{\partial (\mathbf{W}_{2}\mathbf{x}_1 + b_{2} ) }{\partial \mathbf{x}_1}\right]^{\top} \cdot \dfrac{\partial L(\mathbf{x}_2,y)}{\partial \mathbf{z}_2} \right\}\odot \dfrac{\partial f(\mathbf{z}_1)}{\partial \mathbf{z}_1} \\ &=(\mathbf{W}_2^{\top} \cdot \delta_{21} ) \odot f'(\mathbf{z}_1) \end{align}
其中{\boldsymbol \delta_1}= \begin{pmatrix} \delta_{11}\cr\delta_{12} \end{pmatrix}
在上述計(jì)算中涉及向量的求導(dǎo)運(yùn)算馍迄,具體的公式可以查閱Matrix Cookbook

  1. 更新輸入層與隱含層之間的參數(shù)局骤。

有了隱含層的輸出誤差后攀圈,我們可以重復(fù)第一步的工作,利用梯度下降法再次更新誤差峦甩。首先從每一個(gè)分量入手赘来,
\begin{align} \dfrac{\partial L}{\partial W^{1}_{ji}}&= \dfrac{\partial L}{ \partial z_{1j}}\cdot \dfrac{ \partial z_{1j}}{\partial W_{ji}^1}\\ &=\delta_{1j}\cdot x_{0i} \end{align}
因此我們有
\begin{align} \dfrac{\partial L}{\partial \mathbf{W}_1} &={\boldsymbol\delta}_1\cdot \mathbf{x}_0^{\top} \end{align}
類似地现喳,
\begin{align} \dfrac{\partial L}{\partial \mathbf_1} &= {\boldsymbol\delta}_1 \end{align}

我們可以用以下公式更新該神經(jīng)網(wǎng)絡(luò)中輸出層之前的參數(shù):
\begin{align} \mathbf{W}_1' & = \mathbf{W}_1 - \eta \cdot {\boldsymbol\delta}_1\cdot \mathbf{x}_0^{\top}\\ \mathbf犬辰_1'&= \mathbf嗦篱_1- \eta \cdot {\boldsymbol\delta}_1 \end{align}
對(duì)于上述例子,至此我們已經(jīng)完成了對(duì)一個(gè)訓(xùn)練樣本上權(quán)重的一次更新幌缝。

對(duì)于更加一般的情況灸促,假設(shè)我們有第i+1層的輸出結(jié)點(diǎn)誤差向量\delta_{i+1}\in \mathbf{R}^{n_{i+1}},我們可以計(jì)算相應(yīng)的梯度
\begin{align} \dfrac{\partial L}{\partial \mathbf{W}_{i+1}} &= {\boldsymbol\delta}_{i+1}\cdot \mathbf{x}_i^{\top}\\ \dfrac{\partial L}{\partial \mathbf涵卵_{i+1}} &= {\boldsymbol\delta}_{i+1} \end{align}
其中相鄰層誤差的關(guān)系滿足
\begin{align} {\boldsymbol \delta}_{i}&= (\mathbf{W}_{i+1}^{\top}\cdot {\boldsymbol \delta}_{i+1})\odot f'(\mathbf{z}_{i+1}) \end{align}
在實(shí)際訓(xùn)練過程中浴栽,逐個(gè)訓(xùn)練樣本更新權(quán)重的效率太低,而且不利于算法的收斂轿偎,因此在深度學(xué)習(xí)中常使用批次方法(mini-batch)典鸡,權(quán)重每次更新只考慮某一小批次的訓(xùn)練樣本,這時(shí)相應(yīng)的更新方向即為各個(gè)樣本更新方向的平均坏晦。

完整的反向傳播算法在以下算法中給出萝玷,該算法給出了訓(xùn)練一個(gè)多層簡(jiǎn)單神經(jīng)網(wǎng)絡(luò)的一般流程。


反向傳播算法
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末英遭,一起剝皮案震驚了整個(gè)濱河市间护,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌挖诸,老刑警劉巖汁尺,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異多律,居然都是意外死亡痴突,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門狼荞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來辽装,“玉大人,你說我怎么就攤上這事相味∈盎” “怎么了?”我有些...
    開封第一講書人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵丰涉,是天一觀的道長(zhǎng)拓巧。 經(jīng)常有香客問我,道長(zhǎng)一死,這世上最難降的妖魔是什么肛度? 我笑而不...
    開封第一講書人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮投慈,結(jié)果婚禮上承耿,老公的妹妹穿的比我還像新娘冠骄。我一直安慰自己,他們只是感情好加袋,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開白布凛辣。 她就那樣靜靜地躺著,像睡著了一般锁荔。 火紅的嫁衣襯著肌膚如雪蟀给。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,554評(píng)論 1 305
  • 那天阳堕,我揣著相機(jī)與錄音跋理,去河邊找鬼。 笑死恬总,一個(gè)胖子當(dāng)著我的面吹牛前普,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播壹堰,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼拭卿,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了贱纠?” 一聲冷哼從身側(cè)響起峻厚,我...
    開封第一講書人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎谆焊,沒想到半個(gè)月后惠桃,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡辖试,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年辜王,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片罐孝。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡呐馆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出莲兢,到底是詐尸還是另有隱情汹来,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布改艇,位于F島的核電站收班,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏遣耍。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一炮车、第九天 我趴在偏房一處隱蔽的房頂上張望舵变。 院中可真熱鬧酣溃,春花似錦、人聲如沸纪隙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽绵咱。三九已至碘饼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間悲伶,已是汗流浹背艾恼。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留麸锉,地道東北人钠绍。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像花沉,于是被迫代替她去往敵國和親柳爽。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容