CS224N學(xué)習(xí)筆記(七)—— RNN、LSTM和GRU

一、語言模型

語言模型計(jì)算特定序列中多個(gè)單詞的出現(xiàn)概率滩字。一個(gè) m 個(gè)單詞的序列 \{w_{1},…,w_{m}\} 的概率定義為 P(w_{1},…,w_{m})漓藕。

傳統(tǒng)的語言模型為了簡化問題,引入了馬爾科夫假設(shè)栗竖,即句子的概率通常是通過待預(yù)測單詞之前長度為n的窗口建立條件概率來預(yù)測:

\begin{equation} P(w_1,…,w_m) = \prod_{i=1}^{i=m} P(w_{i} | w_1, …, w_{i-1}) \approx \prod_{i=1}^{i=m} P(w_{i} | w_{i-n}, …, w_{i-1}) \label{eqn:nat_model} \end{equation}

簡單來說就是每次考慮都當(dāng)前詞前面所有的詞的信息顯然對(duì)是很冗余的,因?yàn)殡x當(dāng)前詞越遠(yuǎn)的詞通常和當(dāng)前詞沒多少聯(lián)系了根资,那么就干脆我們就取離當(dāng)前詞最近的幾個(gè)詞的信息來替代當(dāng)前詞前面所有詞的信息玄帕。嗯委刘,人之常情,很好理解淆珊。

例如,考慮一種情況戳吝,有一篇文章是討論西班牙和法國的歷史,然后在文章的某個(gè)地方且警,你讀到一句話 “The two country went on a battle”;顯然杏头,這句話中提供的信息不足以確定文章所討論的兩個(gè)國家的名稱(法國和西班牙)。


二寓娩、循環(huán)神經(jīng)網(wǎng)絡(luò)

傳統(tǒng)的翻譯模型只能以有限窗口大小的前 n 個(gè)單詞作為條件進(jìn)行語言模型建模,循環(huán)神經(jīng)網(wǎng)絡(luò)與其不同焊夸,RNN 有能力以語料庫中所有前面的單詞為條件進(jìn)行語言模型建模。

下圖展示的 RNN 的架構(gòu)揪阶,其中矩形框是在一個(gè)時(shí)間步的一個(gè)隱藏層 :

如上圖所示:

  • RNNs包含輸入單元(Input units),輸入集標(biāo)記為{x_0, x_1, ..., x_t, x_{t+1},...},是含有 T 個(gè)單詞的語料庫對(duì)應(yīng)的詞向量

  • 輸出單元(Output units)的輸出集標(biāo)記為{y_0,y_1,...,y_t,y_{t+1}.,..}倦淀,是在每個(gè)時(shí)間步 t 全部單詞的概率分布輸出,用公式表示為\widehat{y} = softmax(W_{(hy)}h_{t})

  • RNNs還包含隱藏單元(Hidden units)科展,{h_0,h_1,...,h_t,h_{t+1},...},表示每個(gè)時(shí)間步 t 的隱藏層的輸出特征的計(jì)算關(guān)系,可以理解成RNN的記憶

準(zhǔn)確來講坞琴,RNN其實(shí)就是一個(gè)網(wǎng)絡(luò)的多次復(fù)用:

其中:

如果將每一個(gè)復(fù)用都展開的話:

RNN的一個(gè)實(shí)際小例子:


三、BPTT

其實(shí)從理解上RNN其實(shí)很好理解羞酗,畢竟很直觀胸竞,因?yàn)橄肽耀@前面所有的信息煎饼,所以每次都計(jì)算一個(gè)h_{t-1}(這里使用網(wǎng)絡(luò)得到,但是其實(shí)最簡單的囊獲前面所有信息的方式就是累加沾乘,只是效果不好而已)。

但RNN麻煩的地方就在于它的求導(dǎo)滥崩,由于循環(huán)操作顽决,這就導(dǎo)致更新權(quán)值的時(shí)候會(huì)牽一發(fā)而動(dòng)全身慌烧。

如下圖的RNN:

首先寫出前向公式:
\mathbf{h}_t = \phi(\mathbf{W}_{hx} \mathbf{x}_t + \mathbf{W}_{hh} \mathbf{h}_{t-1})

\mathbf{o}_t = \mathbf{W}_{yh} \mathbf{h}_{t}

損失函數(shù):
L = \frac{1}{T} \sum_{t=1}^T \ell (\mathbf{o}_t, y_t)

其中:T是序列長度汹粤,在這里就是3(為了好理解,此次的推導(dǎo)會(huì)先按T=3進(jìn)行田晚,然后再推廣到一般)

3.1 對(duì) \mathbf{W}_{yh} 的求導(dǎo)

對(duì)于 \mathbf{W}_{yh} 的求導(dǎo)顯然不難嘱兼,但是要注意的是,由于RNN是循環(huán)的網(wǎng)絡(luò)贤徒,所有導(dǎo)致每一個(gè)時(shí)刻的o都對(duì) \mathbf{W}_{yh} 有關(guān)芹壕,所以求導(dǎo)會(huì)變成加和的形式:

\frac{\partial L}{\partial \mathbf{W}_{yh}} = \sum_{t=1}^T \text{prod}(\frac{\partial L}{\partial \mathbf{o}_t}, \frac{\partial \mathbf{o}_t}{\partial \mathbf{W}_{yh}}) = \sum_{t=1}^T \frac{\partial L}{\partial \mathbf{o}_t} \mathbf{h}_t^\top

矩陣求導(dǎo)的具體矩陣應(yīng)該怎么乘可以根據(jù)左右兩邊的維度來確定,如在上式中睁壁,由于 \frac{\partial L}{\partial \mathbf{W}_{yh}}肯定是(output_num, hidden_num)維度,\frac{\partial L}{\partial \mathbf{o}_t}是標(biāo)量對(duì)向量的求導(dǎo)备燃,不難得到其維度為(output_num, 1)更耻,那么剩下的h_t就只能是轉(zhuǎn)置的形式誉己。當(dāng)然疼阔,由于這里不涉及行向量對(duì)行向量求導(dǎo)或者列向量對(duì)列向量求導(dǎo)宾舅,所以可以用簡單的矩陣求導(dǎo)法則得到一樣的結(jié)果,但如果出現(xiàn)行向量對(duì)行向量求導(dǎo)或者列向量對(duì)列向量求導(dǎo)的情況勉吻,還是只能使用這樣的維度匹配踩娘。


3.2 對(duì)\mathbf{W}_{hx} 的求導(dǎo)

對(duì)于\mathbf{W}_{hx} 的求導(dǎo)就會(huì)變得更復(fù)雜一點(diǎn),因?yàn)椴粌H是o,隱藏層h之間也存在聯(lián)系毙驯。

先考慮最簡單的情況,當(dāng)我們對(duì)h_3求導(dǎo)時(shí),由于沒有其他ho的牽制,所以可以很簡單地寫出其表達(dá)式:

\frac{\partial L}{\partial \mathbf{h}_3} = \text{prod}(\frac{\partial L}{\partial \mathbf{o}_3}, \frac{\partial \mathbf{o}_3}{\partial \mathbf{h}_3} ) = \mathbf{W}_{yh}^\top \frac{\partial L}{\partial \mathbf{o}_3}

那么我們將情況拓展到 h_2伍绳,由于h_3也與其有關(guān),所以最后可以寫出表達(dá)式:

\frac{\partial L}{\partial \mathbf{h}_2} = \text{prod}(\frac{\partial L}{\partial \mathbf{h}_{3}}, \frac{\partial \mathbf{h}_{3}}{\partial \mathbf{h}_2} ) + \text{prod}(\frac{\partial L}{\partial \mathbf{o}_2}, \frac{\partial \mathbf{o}_2}{\partial \mathbf{h}_2} ) = \mathbf{W}_{hh}^\top \frac{\partial L}{\partial \mathbf{h}_{3}} + \mathbf{W}_{yh}^\top \frac{\partial L}{\partial \mathbf{o}_2}

如果我們將對(duì)h_3求導(dǎo)時(shí)的情況帶入的話:

\frac{\partial L}{\partial \mathbf{h}_2} = \mathbf{W}_{hh}^\top \frac{\partial L}{\partial \mathbf{h}_{3}} + \mathbf{W}_{yh}^\top \frac{\partial L}{\partial \mathbf{o}_2} = \mathbf{W}_{hh}^\top \mathbf{W}_{yh}^\top \frac{\partial L}{\partial \mathbf{o}_3} + \mathbf{W}_{yh}^\top \frac{\partial L}{\partial \mathbf{o}_2}

以此類推姿染,我們就可以得到當(dāng)t < 3時(shí)(或者說T時(shí))的通用表達(dá)式:
\frac{\partial L}{\partial \mathbf{h}_t} = \text{prod}(\frac{\partial L}{\partial \mathbf{h}_{t+1}}, \frac{\partial \mathbf{h}_{t+1}}{\partial \mathbf{h}_t} ) + \text{prod}(\frac{\partial L}{\partial \mathbf{o}_t}, \frac{\partial \mathbf{o}_t}{\partial \mathbf{h}_t} ) = \mathbf{W}_{hh}^\top \frac{\partial L}{\partial \mathbf{h}_{t+1}} + \mathbf{W}_{yh}^\top \frac{\partial L}{\partial \mathbf{o}_t}

那么將其他的h帶入通用形式變?yōu)椋?/p>

\frac{\partial L}{\partial \mathbf{h}_t} = \sum_{i=t}^T {(\mathbf{W}_{hh}^\top)}^{T-i} \mathbf{W}_{yh}^\top \frac{\partial L}{\partial \mathbf{o}_{T+t-i}}

可以看到這里有一個(gè)階乘的項(xiàng)中鼠,這也就是導(dǎo)致RNN更容易產(chǎn)生梯度爆炸和消失的原因天吓。

求出\frac{\partial L}{\partial \mathbf{h}_t} 的通用形式之后,對(duì)\mathbf{W}_{hx} 的求導(dǎo)就變得簡單了:

\frac{\partial L}{\partial \mathbf{W}_{hx}} = \sum_{t=1}^T \text{prod}(\frac{\partial L}{\partial \mathbf{h}_t}, \frac{\partial \mathbf{h}_t}{\partial \mathbf{W}_{hx}}) = \sum_{t=1}^T \frac{\partial L}{\partial \mathbf{h}_t} \mathbf{x}_t^\top

  • 防止梯度爆炸:
    一種暴力的方法是鹦蠕,當(dāng)梯度的長度大于某個(gè)閾值的時(shí)候冒签,將其縮放到某個(gè)閾值。雖然在數(shù)學(xué)上非常丑陋钟病,但實(shí)踐效果挺好萧恕。其直觀解釋是,在一個(gè)只有一個(gè)隱藏節(jié)點(diǎn)的網(wǎng)絡(luò)中肠阱,損失函數(shù)和權(quán)值w偏置b構(gòu)成error surface票唆,其中有一堵墻如下圖所示,每次迭代梯度本來是正常的屹徘,一次一小步走趋,但遇到這堵墻之后突然梯度爆炸到非常大,可能指向一個(gè)莫名其妙的地方(實(shí)線長箭頭)噪伊。但縮放之后簿煌,能夠把這種誤導(dǎo)控制在可接受的范圍內(nèi)(虛線短箭頭)。但這種trick無法推廣到梯度消失鉴吹,因?yàn)槟悴幌朐O(shè)置一個(gè)最低值硬性規(guī)定之前的單詞都相同重要地影響當(dāng)前單詞姨伟。
偽代碼
  • 減緩梯度消失
  1. 不去隨機(jī)初始化 W_{hh},而是初始化為單位矩陣
  2. 使用 Rectified Linear(ReLU)單元代替 sigmoid 函數(shù)豆励,ReLU 的導(dǎo)數(shù)是 0 或者 1夺荒。這樣梯度傳回神經(jīng)元的導(dǎo)數(shù)是 1,而不會(huì)在反向傳播了一定的時(shí)間步后梯度變小


3.3 對(duì)\mathbf{W}_{hh} 的求導(dǎo)

同理,我們可以輕松地寫出\frac{\partial L}{\partial \mathbf{W}_{hh}}

\frac{\partial L}{\partial \mathbf{W}_{hh}} = \sum_{t=1}^T \text{prod}(\frac{\partial L}{\partial \mathbf{h}_t}, \frac{\partial \mathbf{h}_t}{\partial \mathbf{W}_{hh}}) = \sum_{t=1}^T \frac{\partial L}{\partial \mathbf{h}_t} \mathbf{h}_{t-1}^\top



到這里般堆,我們基本上完成了RNN的求導(dǎo)在孝,通過如下公式诚啃,便可以對(duì)RNN進(jìn)行訓(xùn)練:

\mathbf{W}_{hx} = \mathbf{W}_{hx} - \eta \frac{\partial L}{\partial \mathbf{W}_{hx}}

\mathbf{W}_{hh} = \mathbf{W}_{hh} - \eta \frac{\partial L}{\partial \mathbf{W}_{hh}}

\mathbf{W}_{yh} = \mathbf{W}_{yh} - \eta \frac{\partial L}{\partial \mathbf{W}_{yh}}


四魔招、雙向RNN

這部分就不展開了,主要因?yàn)槔斫馍掀鋵?shí)不難,就是在原來從左到右進(jìn)行訓(xùn)練的基礎(chǔ)上,又加了一個(gè)從右到左的順序睛挚,整體原理和推導(dǎo)變化不大:

通過總結(jié)過去和未來詞表示來預(yù)測下一個(gè)詞的類別關(guān)系:

\begin{eqnarray} \overrightarrow{\,h}_{t} &=& f(\overrightarrow{\,W}x_{t}+\overrightarrow{\,V}\overrightarrow{\,h}_{t-1}+\overrightarrow{\,b}) \tag{17} \\ \overleftarrow{h}_{t} &=& f(\overleftarrow{W}x_{t}+\overleftarrow{V}\overleftarrow{h}_{t+1}+\overleftarrow戈咳) \tag{18} \\ \widehat{y}_{t} &=& g(Uh_{t}+c) = g(U[\overrightarrow{\,h}_{t};\overleftarrow{h}_{t}]+c) \tag{19} \end{eqnarray}

雖然看起來復(fù)雜猎唁,不過因?yàn)榇蟛糠謳於家呀?jīng)封裝了雙向的操作逐纬,所以日常使用還是很輕松的,而且推導(dǎo)上其實(shí)也和原來的一樣仪际,只是要求的東西變多了而已。


五纬凤、LSTM

LSTM的全稱是Long-Short-Term-Memories,其在原先RNN的基礎(chǔ)上引入了門機(jī)制:

\begin{eqnarray} i_{t} &=& \sigma(W^{(i)}x_{t}+U^{(i)}h_{t-1}) \tag{Input gate} \\ {f}_{t} &=& \sigma(W^{(f)}x_{t}+U^{(f)}h_{t-1}) \tag{Forget gate} \\ {o}_{t} &=& \sigma(W^{(o)}x_{t}+U^{(o)}h_{t-1}) \tag{Output/Exposure gate} \\ \widetilde{c}_{t} &=& tanh(W^{(c)}x_{t}+U^{(c)}h_{t-1}) \tag{New memory cell} \\ {c}_{t} &=& f_{t} \circ c_{t-1} +i_{t} \circ \widetilde{c}_{t} \tag{Final memory cell} \\ {h}_{t} &=& o_{t} \circ tanh(c_{t}) \nonumber \end{eqnarray}

可以看到一共有4個(gè)門:

  • Input Gate:我們看到在生成新的記憶之前恋技,新的記憶的生成階段不會(huì)檢查新單詞是否重要拇舀,這需要輸入門函數(shù)來做這個(gè)判斷。輸入門使用輸入單詞和過去的隱藏狀態(tài)來決定輸入值是否值得保留蜻底,從而決定該輸入值是否加入到新的記憶中

  • Forget Gate:這個(gè)門與輸入門類似骄崩,但是它不能決定輸入單詞是否有用,而是評(píng)估過去的記憶單元是否對(duì)當(dāng)前記憶單元的計(jì)算有用朱躺,因此刁赖,忘記門觀測輸入單詞和過去的隱藏狀態(tài)并生成f_t用來決定是否使用c_{t-1}

  • New memory generation:生成新的記憶的階段。我們基本上是用輸入單詞 x_t 和過去的隱藏狀態(tài)來生成一個(gè)包括新單詞 x_t 的新的記憶 \widetilde{c}_{t}(這個(gè)算不算門也因人而異长搀,我個(gè)人是將其計(jì)算成門,所以一共是4個(gè)門)

  • Output/Exposure Gate:用處是將最終記憶與隱狀態(tài)分離開來鸡典。記憶 c_t 中的信息不是全部都需要存放到隱狀態(tài)中源请,隱狀態(tài)是個(gè)很重要的使用很頻繁的東西,因此彻况,該門是要評(píng)估關(guān)于記憶單元 c_t 的哪些部分需要顯露在隱藏狀態(tài) h_t 中谁尸。用于評(píng)估的信號(hào)是 o_t,然后與 c_t 通過 o_{t} \circ tanh(c_{t})運(yùn)算得到最終的 h_t(注意纽甘,這里的h_t和RNN里面其實(shí)不太一樣良蛮,在LSTM里面,其實(shí)c_t才是真正的h_t

其他步驟:

  • Final memory generation:這個(gè)階段首先根據(jù)忘記門 f_t 的判斷悍赢,相應(yīng)地忘記過去的記憶 c_{t?1}决瞳。類似地,根據(jù)輸入門 i_t 的判斷左权,相應(yīng)地生成新的記憶 \widetilde{c}_{t}皮胡。然后將上面的兩個(gè)結(jié)果相加生成最終的記憶 c_t

例子:

如上圖所示赏迟,權(quán)值隨機(jī)初始化屡贺,輸入在右下角,接下來按順序先輸入[3,1,0]:

再輸入[4,1,0]:

接下去以此類推:

整體上來看:

LSTM 如此復(fù)雜锌杀,那么它到底解決了什么問題呢甩栈?
觀察LSTM的前向公式我們可以看到\begin{eqnarray} {c}_{t} &=& f_{t} \circ c_{t-1} +i_{t} \circ \widetilde{c}_{t} \end{eqnarray}其實(shí)就是我們之前的\mathbf{h}_t = \mathbf{W}_{hx} \mathbf{x}_t + \mathbf{W}_{hh} \mathbf{h}_{t-1} 。那么如果對(duì)c_{t-1}求導(dǎo)也會(huì)得到類似\mathbf{W}_{hh}的階乘的情況糕再,但是此時(shí)\mathbf{W}_{hh}被換成了f_t(當(dāng)然和之前求RNN的梯度一樣量没,這里同樣省略了其他東西,但大體上不影響結(jié)論)亿鲜,作為門機(jī)制的f_t允蜈,它的取值基本上不是0就是1冤吨,但大多時(shí)候是1,(注意饶套,遺忘門并是不為了解決梯度消失而出現(xiàn)漩蟆,在最早的LSTM中是不存在遺忘門,而是直接把這里設(shè)置為1妓蛮,這很有殘差網(wǎng)絡(luò)的味道)所以通過這樣的結(jié)果很好地解決了傳統(tǒng)RNN中梯度消失的問題怠李。

當(dāng)然這里僅僅解決了c_{t-1}處的梯度問題,實(shí)際上LSTM在其他的梯度求導(dǎo)上還是容易出問題蛤克,這部分還是有待研究捺癞。至于遺忘門,查到的資料是說Gers 等人(2000)首先發(fā)現(xiàn)如果沒有使記憶單元遺忘信息的機(jī)制构挤,那么它們可能會(huì)無限增長髓介,最終導(dǎo)致網(wǎng)絡(luò)崩潰。為解決這個(gè)問題筋现,他們?yōu)檫@個(gè) LSTM 架構(gòu)加上了另一個(gè)乘法門唐础,即遺忘門。


六矾飞、GRU

GRU全稱為Gated Recurrent Unit一膨,它是LSTM的簡化版變種,就目前的實(shí)驗(yàn)來看洒沦,GRU在性能上幾乎與LSTM持平豹绪,但是在資源消耗方面會(huì)小一些。

GRU對(duì)LSTM的門進(jìn)行了刪減整合申眼,將遺忘門瞒津、輸入門和輸出門換成了更新門和重置門,即下圖中的z和r:

\begin{align*} z_{t} &= \sigma(W^{(z)}x_{t} + U^{(z)}h_{t-1})&~\text{(Update gate)}\\ r_{t} &= \sigma(W^{(r)}x_{t} + U^{(r)}h_{t-1})&~\text{(Reset gate)}\\ \tilde{h}_{t} &= \operatorname{tanh}(r_{t}\circ Uh_{t-1} + Wx_{t} )&~\text{(New memory)}\\ h_{t} &= (1 - z_{t}) \circ \tilde{h}_{t} + z_{t} \circ h_{t-1}&~\text{(Hidden state)} \end{align*}

更新門用于控制前一時(shí)刻的狀態(tài)信息被帶入到當(dāng)前狀態(tài)中的程度豺型,更新門的值越大說明前一時(shí)刻的狀態(tài)信息帶入越多仲智。重置門用于控制忽略前一時(shí)刻的狀態(tài)信息的程度,重置門的值越小說明忽略得越多姻氨。


參考

  1. LSTM如何來避免梯度彌散和梯度爆炸钓辆?
  2. 三次簡化一張圖:一招理解LSTM/GRU門控機(jī)制
  3. LSTM如何解決梯度消失問題
  4. 詳解 LSTM
  5. 學(xué)界|神奇!只有遺忘門的LSTM性能優(yōu)于標(biāo)準(zhǔn)LSTM
  6. LSTM詳解 反向傳播公式推導(dǎo)
  7. CS224n筆記9 機(jī)器翻譯和高級(jí)LSTM及GRU
  8. CS224n自然語言處理與深度學(xué)習(xí) Lecture Notes Five
  9. Understanding LSTM Networks
  10. YJango的循環(huán)神經(jīng)網(wǎng)絡(luò)——實(shí)現(xiàn)LSTM
  11. GRU神經(jīng)網(wǎng)絡(luò)
  12. mxnet深度學(xué)習(xí)
  13. GRU與LSTM總結(jié)
  14. 李宏毅機(jī)器學(xué)習(xí)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末肴焊,一起剝皮案震驚了整個(gè)濱河市前联,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌娶眷,老刑警劉巖似嗤,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異届宠,居然都是意外死亡烁落,警方通過查閱死者的電腦和手機(jī)乘粒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來伤塌,“玉大人灯萍,你說我怎么就攤上這事∶看希” “怎么了旦棉?”我有些...
    開封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長药薯。 經(jīng)常有香客問我绑洛,道長,這世上最難降的妖魔是什么童本? 我笑而不...
    開封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任真屯,我火速辦了婚禮,結(jié)果婚禮上巾陕,老公的妹妹穿的比我還像新娘讨跟。我一直安慰自己,他們只是感情好鄙煤,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著茶袒,像睡著了一般梯刚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上薪寓,一...
    開封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天亡资,我揣著相機(jī)與錄音,去河邊找鬼向叉。 笑死锥腻,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的母谎。 我是一名探鬼主播瘦黑,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼奇唤!你這毒婦竟也來了幸斥?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤咬扇,失蹤者是張志新(化名)和其女友劉穎甲葬,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體懈贺,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡经窖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年坡垫,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片画侣。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡冰悠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出棉钧,到底是詐尸還是另有隱情屿脐,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布宪卿,位于F島的核電站的诵,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏佑钾。R本人自食惡果不足惜西疤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望休溶。 院中可真熱鬧代赁,春花似錦、人聲如沸兽掰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽孽尽。三九已至窖壕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間杉女,已是汗流浹背瞻讽。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留熏挎,地道東北人速勇。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像坎拐,于是被迫代替她去往敵國和親烦磁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

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

  • (第一部分 機(jī)器學(xué)習(xí)基礎(chǔ))第01章 機(jī)器學(xué)習(xí)概覽第02章 一個(gè)完整的機(jī)器學(xué)習(xí)項(xiàng)目(上)第02章 一個(gè)完整的機(jī)器學(xué)習(xí)...
    SeanCheney閱讀 3,344評(píng)論 3 26
  • 你對(duì)我說情話 要一輩子不分離 這時(shí)候心里微甜 人隨風(fēng)飄蕩 天各自一方 風(fēng)塵中遺忘清白臉龐 輕描時(shí)光漫長 低唱語焉不...
    廣電二班孔瑤閱讀 265評(píng)論 0 0
  • 很多人認(rèn)為打哈欠是一種困乏的表現(xiàn)院溺, 覺得在公眾場合下打哈欠有傷大雅, 因此總是拼命克制打哈欠磅轻, 但是珍逸,這樣真的好嗎...
    吾安德福閱讀 721評(píng)論 0 0
  • 又到一年一度的教師資格證考試時(shí)間逐虚,11月5號(hào)星期六。之所以會(huì)被安排到雙休日谆膳,是因?yàn)橐挥玫降目荚噲龅囟际切W(xué)和初中...
    郭大年閱讀 125評(píng)論 0 0
  • 不知有多少人活的和我一樣漱病。人生的基調(diào)就是聽話买雾,克制。從小到大杨帽,未曾做過一件很出格的事漓穿。 堅(jiān)持著該做的事,上課注盈、上班...
    想聽你唱歌閱讀 142評(píng)論 0 0