大規(guī)模機(jī)器學(xué)習(xí)(Large Scale Machine Learning)

1.大型數(shù)據(jù)集的學(xué)習(xí)

處理大數(shù)據(jù)集的算法
近年來機(jī)器學(xué)習(xí)技術(shù)的發(fā)展歸因于我們有極其龐大的數(shù)據(jù)用來訓(xùn)練我們的算法。
處理如此海量數(shù)據(jù)的算法?我們?yōu)槭裁匆么蟮挠?xùn)練集呢?

我們已經(jīng)知道一種獲取高性能的機(jī)器學(xué)習(xí)系統(tǒng)的途徑是采用低偏差的學(xué)習(xí)算法,并用大數(shù)據(jù)進(jìn)行訓(xùn)練。即決定效果好壞的往往不是算法的好壞,而是誰的訓(xùn)練數(shù)據(jù)多。如果你想使用大數(shù)據(jù)進(jìn)行訓(xùn)練,至少要能獲得大數(shù)據(jù)集。

大數(shù)據(jù)學(xué)習(xí)的問題:計(jì)算問題
如果有一億條訓(xùn)練數(shù)據(jù),可以和從這一億條數(shù)據(jù)中隨機(jī)抽取一千條數(shù)據(jù)訓(xùn)練的結(jié)果相同,為什么我們不用一千條進(jìn)行訓(xùn)練呢?

增大訓(xùn)練數(shù)據(jù)是否能提升算法的好壞?

高效的計(jì)算方法用來處理大數(shù)據(jù):
1.隨機(jī)梯度下降
2.減少映射

2.隨機(jī)梯度下降

對于很多機(jī)器學(xué)習(xí)算法,例如線性回歸、邏輯回歸和神經(jīng)網(wǎng)絡(luò),我們推導(dǎo)算法的方法是提出一個(gè)代價(jià)函數(shù),或提出一個(gè)優(yōu)化目標(biāo),然后使用梯度下降的算法求代價(jià)函數(shù)的最小值。

當(dāng)我們的訓(xùn)練集很大時(shí),梯度下降算法的計(jì)算量會(huì)變得非常大。對普通梯度下降算法的改進(jìn):隨機(jī)梯度下降法。

當(dāng)訓(xùn)練數(shù)據(jù)非常大時(shí),梯度下降變?yōu)榕刻荻认陆?。批量這個(gè)詞指的是我們每次都需要同時(shí)考慮所有的訓(xùn)練樣本。你要不端的迭代,就需要不斷地求和,三億數(shù)量的求和,計(jì)算需要花費(fèi)很長時(shí)間。

如果每次迭代時(shí)不用考慮全部的樣本,僅僅只需要考慮一個(gè)訓(xùn)練樣本。

1.隨機(jī)打亂所有數(shù)據(jù)
2.代入隨機(jī)打亂的的訓(xùn)練樣本,對代價(jià)函數(shù)進(jìn)行優(yōu)化,直到全局收斂(不需要代入三億數(shù)目就會(huì)使代價(jià)函數(shù)最小化)

換個(gè)寫法:

迭代會(huì)更快,不需要對所有訓(xùn)練樣本進(jìn)行求和
每一次迭代只要保證能擬合某一訓(xùn)練樣本就行了

兩者相比,收斂方式是不同的,隨機(jī)梯度下降法就是連續(xù)不斷地在某個(gè)區(qū)域內(nèi)朝著全局最小值徘徊,而不是直接達(dá)到全局最小值。但通常我們使用隨機(jī)梯度下降就可以達(dá)到一個(gè)很好的全局最小值,這對于算法的實(shí)際效果就已經(jīng)足夠了。

最后,在隨機(jī)梯度下降法中有一個(gè)外層循環(huán),它決定了內(nèi)層循環(huán)的執(zhí)行次數(shù),所以外層循環(huán)應(yīng)該執(zhí)行多少次呢?這取決于訓(xùn)練集的大小,通常一次就夠了(1-10次)。

3.Mini-Batch梯度下降

比隨機(jī)梯度下降還要快哦!

它的思想是既不使用全部的樣本,也不一次只用一個(gè)樣本,而是一次使用b個(gè)樣本。

比方說b = 10時(shí):

完整的算法:

為什么我們使用b個(gè)樣本而不是像隨機(jī)梯度下降那樣每次只使用一個(gè)樣本呢?
因?yàn)樵谙蛄炕倪^程中,Mini-Batch梯度下降法可能要比隨機(jī)梯度下降法表現(xiàn)要好,僅當(dāng)你有一個(gè)好的向量化方式。因?yàn)榘薭個(gè)樣本更向量化的方式執(zhí)行,將使你在10個(gè)樣本內(nèi)部分并行運(yùn)算。換句話說,如何使用合適的向量化方式計(jì)算余下的樣本,可以部分使用好的數(shù)值代數(shù)庫然后對b個(gè)樣本進(jìn)行并行運(yùn)算。

Mini-Batch梯度下降的缺點(diǎn)之一是:當(dāng)有一個(gè)額外的參數(shù)b時(shí),你需要確定Mini-Batch的大小,這可能需要費(fèi)些時(shí)間,不過如果你有優(yōu)秀的向量化方法,有時(shí)它將比隨機(jī)梯度下降運(yùn)行的更快。

4.隨機(jī)梯度下降收斂

運(yùn)行隨機(jī)梯度下降法,你怎么保證調(diào)試過程已經(jīng)完成,并且已經(jīng)收斂到合適的位置了呢?你怎么調(diào)整隨機(jī)下降梯度中學(xué)習(xí)速率α的值呢?

確保算法收斂
選擇合適的學(xué)習(xí)速率α

回顧之前的批量梯度下降算法,確保梯度下降已經(jīng)收斂的一個(gè)標(biāo)準(zhǔn)方法就是繪制優(yōu)化代價(jià)函數(shù),這是一個(gè)關(guān)于迭代次數(shù)的函數(shù),要確保代價(jià)函數(shù)在每一次迭代中都是下降的。

比起之前需要是不是的計(jì)算Jtrain,那樣就得遍歷所有的訓(xùn)練樣本,而隨機(jī)梯度下降法的步驟只是在更新θ之前計(jì)算這些cost函數(shù),并不需要太大的計(jì)算量。我們要做的就是在1000次迭代中,求出前1000個(gè)cost函數(shù)的平均值,然后把它畫出來,通過觀察所畫的圖我們就能檢查出隨機(jī)梯度下降是否在收斂。

畫圖實(shí)例:

如果使用一個(gè)更小的學(xué)習(xí)速率,震蕩就會(huì)變小,最終結(jié)果也會(huì)變好一點(diǎn)(區(qū)別可以忽略)。
增大訓(xùn)練樣本的數(shù)量,得到的曲線更平滑。但是速度會(huì)變慢。
樣本太少,噪聲明顯。增大訓(xùn)練樣本,曲線會(huì)變得優(yōu)化,如果沒有變好,說明你需要調(diào)整學(xué)習(xí)速率或調(diào)整特征或者算法的其他東西。
曲線上升,需要用更小的學(xué)習(xí)速率α。

在大多數(shù)隨機(jī)梯度下降法的典型應(yīng)用中,一般你最終得到的參數(shù)只是一個(gè)全局最小之的接近值,而不是真正的全局最小值。在大多數(shù),隨機(jī)梯度下降法的典型應(yīng)用中,學(xué)習(xí)速率α一般是不變的,如果你想要最終的收斂結(jié)果達(dá)到局部最小值,你可以做的就是讓學(xué)習(xí)速率α的值隨著時(shí)間變化逐漸減小。

你的最終值會(huì)比較接近全局最小值(每一步都會(huì)越精確)。

5.在線學(xué)習(xí)

在線學(xué)習(xí)機(jī)制讓我們可以模型化一些問題,就是我們有連續(xù)一波數(shù)據(jù)或者連續(xù)的數(shù)據(jù)流,先要用算法從中學(xué)習(xí)的這類問題。

網(wǎng)站用戶數(shù)據(jù)流,就可以用在線學(xué)習(xí)機(jī)制從數(shù)據(jù)流中學(xué)習(xí)用戶的偏好,然后用這些信息優(yōu)化關(guān)于網(wǎng)站的決策。

在在線學(xué)習(xí)機(jī)制中,我們實(shí)際上丟棄了固定的數(shù)據(jù)集這一概念,取而代之是一個(gè)算法,現(xiàn)在我們獲取一個(gè)樣本,然后利用那個(gè)樣本以這種方式學(xué)習(xí)。然后我們丟棄這個(gè)樣本。因?yàn)槟阌袕?qiáng)大的數(shù)據(jù)流,沒必要反復(fù)使用樣本。

連續(xù)的數(shù)據(jù)流是關(guān)鍵。

這種在線學(xué)習(xí)機(jī)制可以適應(yīng)變化的用戶偏好。

賣手機(jī)的選項(xiàng)供用戶選擇;
CTR:點(diǎn)擊率
產(chǎn)品搜索問題,使用在線學(xué)習(xí)機(jī)制在線學(xué)習(xí)用戶點(diǎn)擊情況
網(wǎng)站展示特別優(yōu)惠;
新聞網(wǎng)站推薦;
商品推薦;
...

這些問題中的任何一個(gè)都可以被轉(zhuǎn)變?yōu)闃?biāo)準(zhǔn)的,擁有一個(gè)固定的樣本集的機(jī)器學(xué)習(xí)問題。或許你可以讓網(wǎng)站運(yùn)行幾天,然后保存一個(gè)固定的數(shù)據(jù)集,然后轉(zhuǎn)變?yōu)橐粋€(gè)擁有固定數(shù)據(jù)集的機(jī)器學(xué)習(xí)問題。但是在實(shí)際中,大公司的大網(wǎng)站有如此多的數(shù)據(jù),所以真的沒必要保存一個(gè)固定的數(shù)據(jù)集。可以使用在線學(xué)習(xí)算法,來連續(xù)的學(xué)習(xí),從這些用戶不斷產(chǎn)生的數(shù)據(jù)中來學(xué)習(xí)。

優(yōu)點(diǎn):如果你有一個(gè)變化的用戶群,又或者你在嘗試預(yù)測的事情在緩慢變化(用戶品味),在線學(xué)習(xí)算法可以慢慢地調(diào)試你所學(xué)習(xí)到的假設(shè),將其調(diào)整更新為最新的用戶行為。

6.減少映射與數(shù)據(jù)并行

應(yīng)用在大規(guī)模機(jī)器學(xué)習(xí)上,MapReduce

你可以將學(xué)習(xí)算法應(yīng)用到隨機(jī)梯度下降不能解決的規(guī)模更大的問題。

把訓(xùn)練集分成10份或者100份...計(jì)算完成后再返回到一個(gè)服務(wù)器上。
這個(gè)公式完全等同于批量梯度下降算法,只是不需要在一臺機(jī)器上計(jì)算。

示意圖:

只要學(xué)習(xí)算法可以表示成一系列的求和形式,或者表示成在訓(xùn)練集上對函數(shù)的求和形式,你就可以使用MapReduce技巧來并行化學(xué)習(xí)算法,使得其可以應(yīng)用于非常大的數(shù)據(jù)集。

計(jì)算機(jī)可以有多個(gè)CPU,CPU又有多個(gè)核心,如果你有很大的數(shù)據(jù)集,且你有一個(gè)四核電腦,可以用MapReduce分共工作,然后每個(gè)核心計(jì)算四分之一訓(xùn)練樣本的總和。還不用擔(dān)心數(shù)據(jù)傳輸和網(wǎng)絡(luò)延遲。有些線性代數(shù)庫可以自動(dòng)在一臺機(jī)器上不同核心上進(jìn)行并行代數(shù)運(yùn)算。而且如果你的學(xué)習(xí)算法有非常好的向量化表示,你就可以直接以向量化的形式應(yīng)用標(biāo)準(zhǔn)學(xué)習(xí)算法,不用擔(dān)心并行。你的線性代數(shù)庫會(huì)幫你處理的很好,所以你可以不應(yīng)用MapReduce。

應(yīng)用舉例:照片OCR

第一百四十七課:問題描述與OCR pipeline

照片OCR技術(shù):
1.復(fù)雜。一個(gè)復(fù)雜的機(jī)器學(xué)習(xí)系統(tǒng)是如何被組裝起來的。
2.機(jī)器學(xué)習(xí)流水線。如何分配資源來對下一步計(jì)劃做出決定

自己開發(fā)/團(tuán)隊(duì)開發(fā)

3.機(jī)器學(xué)習(xí)中很多有用的想法和概念 。

如何將機(jī)器學(xué)習(xí)應(yīng)用到計(jì)算機(jī)視覺問題中!?。?br> 人工數(shù)據(jù)合成

照片OCR技術(shù):照片光學(xué)字符識別(讀取圖片中的文字信息)

步驟:
1.掃描圖片,找處照片中的文字信息
2.重點(diǎn)關(guān)注文字區(qū)域,并對區(qū)域中的文字進(jìn)行識別
3.顯示和記錄文字

文字檢測
字符分割
文字分類

像這樣一個(gè)系統(tǒng),我們稱之為機(jī)器學(xué)習(xí)流水線:

如果你要設(shè)計(jì)一個(gè)機(jī)器學(xué)習(xí)系統(tǒng),你要作出的最重要的決定之一就是你要怎么設(shè)計(jì)這個(gè)流水線的各個(gè)模塊。(如何將這個(gè)問題分成一系列不同的模塊,這會(huì)影響到你算法的最終表現(xiàn))

第一百四十八課:滑動(dòng)窗口

流水線中每個(gè)獨(dú)立組件的工作原理?
文字識別是長寬不同的矩形,所以先看個(gè)行人檢測的例子。

為了建立一個(gè)新人檢測系統(tǒng),我們要做的是從數(shù)據(jù)集中收集一些正樣本和負(fù)樣本(包含行人和不包含行人)。然后你可以在你的網(wǎng)絡(luò)中訓(xùn)練,或者使用其他學(xué)習(xí)算法,來對y進(jìn)行分類,來劃分每個(gè)圖塊是否包含一個(gè)行人。

監(jiān)督學(xué)習(xí)

移動(dòng)綠色滑塊(一定步長移動(dòng)),每次移動(dòng)都是用分類器進(jìn)行分類,遍歷圖片中的不同位置,并且通過分類器進(jìn)行分類,判斷圖片中是否有行人。

這就是你如何訓(xùn)練一個(gè)監(jiān)督學(xué)習(xí)分類器,然后使用一個(gè)滑動(dòng)窗口分類器或者說滑動(dòng)窗口檢測器找出圖中所有的行人。

回到文字檢測:

正負(fù)樣本訓(xùn)練
滑動(dòng)窗口檢測
繪制矩形
擴(kuò)大白色區(qū)域
丟棄不適用長寬比

現(xiàn)在獲得了文字區(qū)域,轉(zhuǎn)到流水線下一步:
識別文本

再次使用監(jiān)督學(xué)習(xí)算法
尋找字符分割,訓(xùn)練分類器,再次使用滑動(dòng)窗口

訓(xùn)練26個(gè)字母,識別出字母。

第一百四十九課:獲取大量數(shù)據(jù)和人工數(shù)據(jù)?

從哪獲取這么多訓(xùn)練數(shù)據(jù)呢?
人工數(shù)據(jù)合成

假如這個(gè)想法適用于你的機(jī)器學(xué)習(xí)模型,有時(shí)它能為你的學(xué)習(xí)算法輕松得到大規(guī)模的訓(xùn)練集。

人工數(shù)據(jù)合成主要包括兩種形式:
第一種:自己創(chuàng)造數(shù)據(jù)
第二種:我們已經(jīng)有小的標(biāo)簽訓(xùn)練集,然后以某種方式擴(kuò)充訓(xùn)練集(較小的訓(xùn)練集轉(zhuǎn)換成一個(gè)較大的訓(xùn)練集)

假如我們收集到了一個(gè)大的標(biāo)簽數(shù)據(jù)集,我選用了一個(gè)正方形的長寬比,目標(biāo)是輸入一個(gè)圖像塊然后識別出圖像塊中央的字符。

現(xiàn)代計(jì)算機(jī)有一個(gè)龐大的字體庫,任意字體粘貼到一個(gè)任意的背景中,應(yīng)用一點(diǎn)模糊算子或者仿射變換,縮放和旋轉(zhuǎn)操作就生成了一個(gè)人工數(shù)據(jù)集。

使用合成的數(shù)據(jù),你實(shí)際上能為你的人工訓(xùn)練合成提供無限的訓(xùn)練數(shù)據(jù)樣本。

使用現(xiàn)有的樣本生成數(shù)據(jù):
實(shí)際圖片:人工扭曲

語音識別:
人工添加失真,引入不同的背景聲音,就可以擴(kuò)充樣本數(shù)。

人工合成要合理。
當(dāng)你在決定該添加那種失真時(shí),認(rèn)真考慮一下,添加什么樣的失真才是有意義的?怎么樣才能使你生成的樣本至少有一定的代表性?

1.在合成大量的人工樣本之前,要確保你的分類器偏差較低,這樣的話更多的訓(xùn)練數(shù)據(jù)才有意義,標(biāo)準(zhǔn)的做法是繪制一個(gè)學(xué)習(xí)曲線來確保你有一個(gè)低偏差、高方差的分類器。如果你的分類器偏差太高,那么你可以嘗試持續(xù)增加分類器的特征數(shù)量或者增加神經(jīng)網(wǎng)絡(luò)隱藏單元的數(shù)量直到偏差值降低。
2.獲得比我目前的數(shù)據(jù)量多10倍的數(shù)據(jù)量,需要花費(fèi)多少努力?

此外,
自己增加數(shù)據(jù)/添加標(biāo)簽
眾包

第一百五十課:天花板分析(下一步工作的pipeline)

上限分析,它通常能夠提供一個(gè)很有價(jià)值的信號,很好的指導(dǎo)你,你的工作流中的哪一部分最值得你花時(shí)間去研究?

一個(gè)有效的方法是對學(xué)習(xí)系統(tǒng)使用一個(gè)數(shù)值評估度量(文本識別正確的比例)。

上限分析的主要度量:
首先我們關(guān)注這個(gè)機(jī)器學(xué)習(xí)工作流中的第一個(gè)模塊,對于每一個(gè)測試樣本,都給它提供一個(gè)正確的文本檢測結(jié)果(直接給出正確答案)。繼續(xù)運(yùn)行,使用跟之前一樣的評價(jià)度量指標(biāo),來測量系統(tǒng)的準(zhǔn)確率。如果用這個(gè)完美的文本檢測系統(tǒng),準(zhǔn)確率提升了。

接著人工輸入其他模塊正確標(biāo)簽。
就能得到它們各自的上升空間是多大。

通過這種分析,你可以知道提升每個(gè)模塊的潛在效果如何?或者說一個(gè)模塊近乎完美時(shí),系統(tǒng)性能增益多少?這就像給系統(tǒng)表現(xiàn)加上了一個(gè)提升的上限值。

工作流非常常用,卻又很復(fù)雜的機(jī)器學(xué)習(xí)應(yīng)用。上限分析可以用來衡量模塊的表現(xiàn),找到能提升算法性能的關(guān)鍵問題。

第一百五十一課:總結(jié)和感謝

我們學(xué)了什么?
監(jiān)督學(xué)習(xí)算法
線性回歸、邏輯回歸、神經(jīng)網(wǎng)路和支持向量機(jī)(SVM)
在這些例子中,你會(huì)有帶標(biāo)簽的數(shù)據(jù)和樣本

無監(jiān)督學(xué)習(xí)算法
K均值算法、主成分分析法用來降維、異常檢測算法
在這些算法中,你只有無標(biāo)簽的數(shù)據(jù)和樣本
此外,異常檢測算法也可以在有標(biāo)簽的樣本中對算法進(jìn)行評估

特定的應(yīng)用和話題
推薦系統(tǒng)、大規(guī)模機(jī)器學(xué)習(xí)系統(tǒng)、并行和映射-化簡算法
滑動(dòng)窗口分類器(計(jì)算機(jī)視覺)

如何構(gòu)建機(jī)器學(xué)習(xí)系統(tǒng)的建議
什么東西使得機(jī)器學(xué)習(xí)算法工作或是不工作?
談?wù)摿朔讲詈推?、如何使用正則化來解決方差問題

如何決定下一步要做什么?
當(dāng)你開發(fā)一個(gè)機(jī)器學(xué)習(xí)系統(tǒng)時(shí)應(yīng)該如何合理分配你的時(shí)間?
學(xué)習(xí)算法的評估方法?
召回率和F1分?jǐn)?shù)這樣的評價(jià)指標(biāo)
實(shí)踐方面的評測方法(訓(xùn)練集、交叉驗(yàn)證集和測試集)

如何調(diào)試算法?
確保算法能夠正常工作
診斷算法?
學(xué)習(xí)曲線、誤差分析、上限分析等

我希望不僅僅認(rèn)識了這些工具,更重要的是怎么有效的使用它們來構(gòu)建強(qiáng)大的機(jī)器學(xué)習(xí)系統(tǒng)。

如果你跟著這么課學(xué)到現(xiàn)在,那么你可以自信地認(rèn)為你已經(jīng)成了機(jī)器學(xué)習(xí)方面的專家。如你所知,機(jī)器學(xué)習(xí)是一門在科學(xué)、技術(shù)和產(chǎn)業(yè)方面都有著深遠(yuǎn)影響的學(xué)科,現(xiàn)在你已經(jīng)具備了使用這些機(jī)器學(xué)習(xí)的工具來發(fā)揮巨大作用的能力。

希望你們中能有很多人能夠利用這些機(jī)器學(xué)習(xí)工具來構(gòu)建出色的系統(tǒng)和應(yīng)用以及出色的產(chǎn)品,并且希望你們能夠利用機(jī)器學(xué)習(xí),不僅僅是為了自己,更是為了有朝一日能夠造福其他人的生活。

我還想告訴大家,給大家教這門課真的很有趣,所以謝謝你們。最后,在結(jié)束之前,我還想多說幾句,在不久之前,我也是一個(gè)學(xué)生,甚至到了現(xiàn)在,我也盡可能擠出一些時(shí)間去上一些課,學(xué)一些新的東西,所以我很能體會(huì)你們學(xué)這門課的辛苦,因?yàn)槟銈兛赡芤彩呛苊Φ娜?,生活中有很多很多事情要處理,即便如此你也還是擠出時(shí)間來觀看這些課程視頻。我知道這些視頻長達(dá)數(shù)個(gè)小時(shí),但你還是能夠拿出時(shí)間來做這些復(fù)習(xí)題,并且很多人還愿意花時(shí)間去做那些編程練習(xí)題,那些題目都很長而且很難。所以我要對大家說一聲謝謝。我知道,很多人學(xué)這門課都非常努力,很多人都在這門課上花了大量時(shí)間,很多人把自己整個(gè)人都扎進(jìn)了課程,我希望你們能從中收貨很多知識。在這最后,我要說:感謝你們能來當(dāng)我的學(xué)生。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,533評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,055評論 3 414
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 175,365評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,561評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,346評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 54,889評論 1 321
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,978評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,118評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,637評論 1 333
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,558評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,739評論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,246評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 43,980評論 3 346
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,362評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,619評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,347評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,702評論 2 370

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