機(jī)器學(xué)習(xí)算法工程師需要掌握的技能

###1.前言 — 程序員是一個(gè)知識更新較為迅速的一個(gè)職業(yè),這個(gè)行業(yè)的知識的更新速度,有的時(shí)候會超過你的學(xué)習(xí)速度。大部分的人都在不斷的更新自己的知識體系,這里筆者要向讀者安利一下機(jī)器學(xué)習(xí)(包含深度學(xué)習(xí))的重要性,以及常見的知識。作為個(gè)人能力的提升,筆者覺得這一點(diǎn)是程序猿/媛,需要掌握的一想技能。 其實(shí)在互聯(lián)網(wǎng)公司工作過的同學(xué)都應(yīng)該有這樣的感觸,我們正在從IT到DT的轉(zhuǎn)型,算法在應(yīng)用中變得越來越重要了。

處在向DT轉(zhuǎn)型中的我們也就理所當(dāng)然的需要掌握DT的核心——算法。外界將大數(shù)據(jù)吵得如火如荼,但對于業(yè)內(nèi)人來說,這些東西只是吵概念而已,簡單的大數(shù)據(jù)是沒有太大意義的,數(shù)據(jù)就好比是發(fā)動機(jī)運(yùn)轉(zhuǎn)需要的燃料,而算法則是發(fā)動機(jī)。只有有了發(fā)動機(jī)數(shù)據(jù)才能發(fā)揮它的價(jià)值。就像石油已經(jīng)在地下沉睡千萬年,在發(fā)動機(jī)產(chǎn)生前并沒有人認(rèn)識到它的價(jià)值,但發(fā)動機(jī)產(chǎn)生后,石油才成為像黃金一樣珍貴的東西。所以我們必須掌握算法知識才能更好的駕馭DT這輛戰(zhàn)車。

然而在實(shí)際的工作中所謂的算法工程師,實(shí)際上大部分應(yīng)該叫做“算法應(yīng)用工程師”,很少有算法工程師能夠產(chǎn)生自己的算法。我這么說肯定有人要拍磚,但實(shí)際上確實(shí)是這樣的。比如做一些分類問題用邏輯回歸、SVM等常用算法,對于一些復(fù)雜問題,如圖像分類用CNN處理,稍微復(fù)雜一點(diǎn)的NLP問題用RNN處理。很多算法工程師日常工作大部分用在數(shù)據(jù)處理、訓(xùn)練數(shù)據(jù)集選擇、校驗(yàn)數(shù)據(jù)集選擇等,不斷的調(diào)節(jié)參數(shù)從而獲得較好的效果。這里不是詆毀那些努力工作的算法同學(xué),我在研究生的時(shí)候也是搞機(jī)器學(xué)習(xí)的,工作后,先搞工程、又混合著搞算法,如分類問題,類目映射(將A網(wǎng)站的商品映射到B網(wǎng)站的類目下)、接著搞NLP(基于RNN和CRF做slotfilling)…,接著又搞工程…。我想說的是算法沒我們認(rèn)為的那么復(fù)雜,但實(shí)際上又遠(yuǎn)比我們認(rèn)識的復(fù)雜。

為什么說算法不復(fù)雜卻又很復(fù)雜?其實(shí)這并不矛盾。說其不復(fù)雜是因?yàn)槲覀儾槐赝耆莆毡澈髲?fù)雜的公式推導(dǎo),只需要知道背后的物理意義、知道響應(yīng)的算法或模型適合處理的問題、知道如何調(diào)節(jié)相關(guān)的參數(shù)等即可。說其復(fù)雜是因?yàn)楸澈蟮耐茖?dǎo)確實(shí)很麻煩,就拿常用的SVM算法來說,讀書的時(shí)候硬生生的是照著PPT推導(dǎo)了一周才推導(dǎo)成功(也反映出自己數(shù)學(xué)基礎(chǔ)有點(diǎn)渣)…。繼續(xù)說復(fù)雜性,要非常純熟的掌握相應(yīng)算法的核心,需要對線性代數(shù)、概率、微積分等重要的數(shù)學(xué)知識掌握和理解的較為透徹。這里不得不說我們的大學(xué)里相關(guān)的數(shù)學(xué)教育,感覺線性代數(shù)、概率、微積分講得不徹底,只是學(xué)了知識點(diǎn)但背后的物理意義卻沒能講清楚,比如矩陣相關(guān)運(yùn)算的物理意義就是在實(shí)際的算法中才體會到的,數(shù)學(xué)真應(yīng)該讓計(jì)算機(jī)老師來講。話說的有點(diǎn)多,但對于程序員來說我覺得數(shù)學(xué)知識必須要學(xué)的扎實(shí),特別對于學(xué)校中的學(xué)生來說,其他課程可以不太用心,但數(shù)學(xué)相關(guān)必須牢牢地掌握,要用心,特別要掌握其背后的物理意義。

為什么我們要掌握算法呢?首先感覺是因?yàn)榄h(huán)境的變化,因?yàn)樗惴ㄗ兊迷絹碓街匾缰暗男侣劊?a target="_blank" rel="nofollow">谷歌轉(zhuǎn)型:把2.5萬工程師變成機(jī)器學(xué)習(xí)專家,google都已經(jīng)走在前列了,也足見機(jī)器學(xué)習(xí)越來越重要了。現(xiàn)在很多產(chǎn)品,工程只是對算法進(jìn)行包裝,很多產(chǎn)品的核心是算法,如滴滴、Uber。

其次,工程師懂算法,真的有點(diǎn)像流氓會武術(shù),誰也攔不住了。一方面增加自己的核心競爭力,另一方面在團(tuán)隊(duì)溝通的時(shí)候也更加方便。很多算法工程師的架構(gòu)、系統(tǒng)能力不足,如果工程師懂得算法,那么可以和算法同學(xué)順暢溝通,有助于產(chǎn)品或項(xiàng)目的實(shí)現(xiàn)。

最后,對于在校生、再找工作、畢業(yè)生或者剛工作的同學(xué),能夠掌握機(jī)器學(xué)習(xí)的基本知識能夠增加你的核心競爭力,在競爭面前更容易脫穎而出(特別是在面試的時(shí)候,不一定要有實(shí)戰(zhàn)經(jīng)驗(yàn),你能講的清楚也是很不錯的)。

總之,個(gè)人覺得,對于工程師而言,學(xué)習(xí)機(jī)器學(xué)習(xí)相關(guān)算法是提升個(gè)人核心競爭力的重要一步。那么接下來筆者就在這里進(jìn)一步闡述作為工程師應(yīng)該掌握哪些相關(guān)算法、如何去學(xué)習(xí)相關(guān)算法。

###2.基礎(chǔ)知識 — #####2.1 線性代數(shù)基礎(chǔ)知識 個(gè)人覺得線性代數(shù)知識是在工作中用的最廣的大學(xué)知識,特別是矩陣相關(guān)知識在實(shí)際應(yīng)用中使用最為廣泛。但從個(gè)人經(jīng)驗(yàn)看,很多畢業(yè)生對于線性代數(shù)特別是矩陣相關(guān)知識掌握的很膚淺,對矩陣的理解很不到位,曾經(jīng)問過一些畢業(yè)生,對于矩陣的SVD很多人會解,但背后的物理意義卻模糊不清。 講義鏈接:[Linear Algebra Review and Reference](http://ai-coder.com/batbus/pdf/cs229-linalg.pdf) #####2.2 概率基礎(chǔ)知識 概率知識是也是實(shí)際工作中使用較為廣泛的知識,從BAT的筆試題中可以看出,概率計(jì)算基本是逢考比用的。其中較為常用的就是貝葉斯定理了,在復(fù)習(xí)這部分的知識的時(shí)候,一定要弄清楚相關(guān)定理的前置條件。 講義鏈接:[Review of Probability Theory](http://ai-coder.com/batbus/pdf/cs229-prob.pdf) #####2.3 凸優(yōu)化 在許多機(jī)器學(xué)習(xí)算法中,我們最終是求一個(gè)目標(biāo)函數(shù)的最大值或最小值,很多時(shí)候這種問題最終歸咎為目標(biāo)函數(shù)的優(yōu)化問題,實(shí)質(zhì)是一種凸優(yōu)化問題,所以讀者需要掌握一些凸優(yōu)化問題的基礎(chǔ)知識。 講義鏈接:[Convex Optimization Overview](http://ai-coder.com/batbus/pdf/cs229-cvxopt.pdf) ######注:講義來源于Stanford深度學(xué)習(xí)與NLP課程前置基礎(chǔ)知識 — ###3.應(yīng)該了解哪些算法 這里不會對相關(guān)的算法做展開,只想從個(gè)人轉(zhuǎn)型的經(jīng)歷向讀者闡述,應(yīng)該掌握哪些常見的機(jī)器學(xué)習(xí)算法,以及學(xué)習(xí)中應(yīng)該注意的事項(xiàng)。相關(guān)的算法以及有很多博客可以參考,但個(gè)人覺得還是要先讀一遍原論文,讀不懂沒關(guān)系,能理解多少理解多少,再參考別人寫的解釋理解一遍。如果直接讀別人的博客,有可能被誤導(dǎo),之后再反過頭來再讀一讀原論文,這樣感覺理解的能好一些。當(dāng)然也推薦大家直接學(xué)習(xí)Andrew Ng的公開課,講的比較容易懂。而且已經(jīng)好幾年了,相關(guān)的討論、講義標(biāo)注都很全面了,對于初學(xué)者來說是一個(gè)好的學(xué)習(xí)資源。 — ####3.1 常見的特征提取方法 其實(shí)特征選擇(提取)是作為監(jiān)督學(xué)習(xí)中特別重要的一個(gè)環(huán)節(jié)。往往我們要處理的問題可能供處理的特征特別多,我們減少特征的數(shù)量,比如圖像處理,如果完全用像素,對于一張1000*1000的圖片,那么特征就是一個(gè)1000*1000這種高維的特征,我們需要降低這個(gè)特征的維度,這個(gè)過程就叫做特征提取(選擇)。對于圖像我們常用sift特征。常用的降維方法包括(個(gè)人常用): ######1.PCA(主成分分析) 這是一種無監(jiān)督的降維方法,準(zhǔn)確的說應(yīng)該是一種空間映射方法,PCA一次尋找一組正交的映射空間,并且使得能夠在這個(gè)映射空間上方差最大。這個(gè)方法使用的頻率較高,也比較典型,比較容易掌握。一般的教材書中都有相關(guān)的介紹,在Andrew Ng的課程中有相關(guān)介紹,可以直接學(xué)習(xí)。 ######2.基于樹的方法 這里嗎需要讀者理解一些常用的概念如”熵”,”信息增益”等,基于樹的方法,可以通過剪枝的方式來去掉那些對于結(jié)果沒什么大的影響的特征。這里面對于”熵”的理解,要強(qiáng)調(diào)一下,”熵”可以理解為不確定性,你可以認(rèn)為是”商量”,熵越大,不確定性越高,就越需要”商量”,越小,代表確定性越高。關(guān)于樹的相關(guān)方法,在國內(nèi)的機(jī)器學(xué)習(xí)教材中都有明確的闡釋。

######3.SVD(矩陣分解) 矩陣分解這是機(jī)器學(xué)習(xí)里面非常重要的一個(gè)線性代數(shù)知識,能夠很好的起到降維的效果。在自然語言處理中較為常用。比如X是word->document的矩陣,關(guān)于SVD雖然在公開課中有講解,但感覺還是語言的理解有問題,理解的不是很透徹,發(fā)現(xiàn)這個(gè)哥們寫的相關(guān)機(jī)器學(xué)習(xí)的博客講的還都比較通透,所以讀者可以參考他的這篇博文理解一下。

相關(guān)博文:強(qiáng)大的矩陣奇異值分解

####3.2 常用機(jī)器學(xué)習(xí)算法 這里面會向讀者介紹一下工作中常用的相關(guān)機(jī)器學(xué)習(xí)算法,當(dāng)然這里也不會詳細(xì)解釋,這里只是告訴讀者存在并且常用這些算法,筆試和面試中往往會考察面試者對于這些知識的掌握。對于如何學(xué)習(xí),筆者覺得最好優(yōu)先讀paper,再看看公開課和相關(guān)博客。 ##### 3.2.1 常見聚類算法 聚類算法是我們常用的算法其思想比較容易理解,符合大腦處理問題的思維邏輯。我們常見的聚類算法包括Kmeans、EM算法等,下面簡單羅列一下: SimpleKmeans算法:接受輸入?yún)?shù)K,然后將數(shù)據(jù)集劃分為K歌聚簇,同一個(gè)聚簇中的相似度較高,不同聚簇的相似度較小。 Xmeans算法:Kmeans的改進(jìn),在總體中通過Kmeans產(chǎn)生聚類,再分別對每個(gè)聚類進(jìn)行Kmeas的迭代,將某些子類進(jìn)行聚類,直到達(dá)到用戶設(shè)定的次數(shù)為止。 EM算法:期望最大化算法(Expectation Maximization Algorithm),是一種迭代算法,用于含有隱變量(hidden variable)的概率參數(shù)模型的最大似然估計(jì)或極大后驗(yàn)概率估計(jì)。這里需要說下,EM算法背后的理論、推導(dǎo)最好好好掌握,這個(gè)掌握了,大部分的推導(dǎo)和理論基本都cover了。 相關(guān)博文:[常用聚類算法介紹之聚類種類和算法列表](http://ai-coder.com/batbus/html/blog_detail.php?blog_id=250) ##### 3.2.2 常見分類、回歸算法 分類和回歸問題,其實(shí)可以拿到一起來講。如果我的問題最終是要將待處理的數(shù)據(jù)明確分為若干類別(常用的有二元分類、多元分類),那么就是分類問題,如果最終需要映射到一個(gè)數(shù)值區(qū)間,那么就是回歸問題,比如預(yù)測一個(gè)人犯罪的概率,如果需要判斷是否犯罪,那么就是一個(gè)分類問題(是和否),如果要給個(gè)概率那么就是一個(gè)回歸問題。 這里面我們常用的算法有SVM、LR、隨機(jī)森林、樸素貝葉斯。 線性回歸(Linear Regression):結(jié)果易于理解,計(jì)算上不復(fù)雜,但對非線性數(shù)據(jù)擬合不好。應(yīng)該是線上應(yīng)用最為廣泛的模型,簡約而不簡單,更重要的是快!LR的推導(dǎo)是必須要掌握的! SVM:通俗的講,SVM是一種二類分類模型,其模型的定義為特征空間上的間隔最大的線性分類器。其學(xué)習(xí)策略是使得間隔最大化,最終可以轉(zhuǎn)化為凸優(yōu)化問題。簡單的理解就是,在低維空間中難以劃分的問題,將其映射到一個(gè)高維空間,在高維空間使得數(shù)據(jù)可以線性劃分。 樸素貝葉斯:樸素貝葉斯是貝葉斯理論的一部分,是一種概率模型,即選擇較高概率的決策。其前置條件是: (1)每個(gè)特征之間相互獨(dú)立。 (2)每個(gè)特征同等重要。 在數(shù)據(jù)較少的情況下仍然有效,可以處理多類別問題。但對于輸入數(shù)據(jù)較為敏感。 隨機(jī)森林(Random Forest):隨機(jī)森林比較適合做多分類問題,其優(yōu)點(diǎn)是: 訓(xùn)練和預(yù)測速度快; 對訓(xùn)練數(shù)據(jù)的容錯能力好; 實(shí)現(xiàn)簡單且易并行 當(dāng)數(shù)據(jù)集中有大比例的數(shù)據(jù)缺失時(shí)仍然可以保持精度不變和能夠有效地處理大的數(shù)據(jù)集;可以處理沒有刪減的成千上萬的變量;能夠在分類的過程中可以生成一個(gè)泛化誤差的內(nèi)部無偏估計(jì);能夠檢測到特征之間的相互影響以及重要性程度。但容易出現(xiàn)過度擬合。 實(shí)際上該算法實(shí)際上可以理解為專投票算法,一個(gè)森林可以拆解成很多樹,每個(gè)樹都是一個(gè)決策算法,可以理解成一個(gè)領(lǐng)域?qū)<遥姸鄬<医M合成一個(gè)森林,對于待處理的問題,專家組進(jìn)行投票,最終少數(shù)服從多數(shù),由票數(shù)決定結(jié)果。 ####3.3 深度學(xué)習(xí)相關(guān)算法 深度學(xué)習(xí)是近幾年較為火的一種學(xué)習(xí)方式,目前在實(shí)際工作中使用的越來越廣,往往不需要較為復(fù)雜的調(diào)優(yōu)就能達(dá)到其他常用的調(diào)優(yōu)過后的機(jī)器學(xué)習(xí)算法達(dá)到的水平,也就是說,他的baseline很高,隨著向caffee、tensorflow等框架使用的推廣,這些深度模型實(shí)現(xiàn)起來越來越簡單,所以工程師就越來越有必要掌握這些深度學(xué)習(xí)算法。你可以在機(jī)器上安裝tensorflow就能夠嘗試在本機(jī)上進(jìn)行手寫體識別、word2Vector訓(xùn)練等,趕緊動起來吧。 關(guān)于學(xué)習(xí),可以參考Stanford深度學(xué)習(xí)和NLP的公開課,講的還比較透徹,但需要讀者掌握在文章第二部分提到的一些數(shù)學(xué)知識。 ##### 3.3.1 RNN(Recursive Neural Network) RNN是較為常用的深度模型,常用的有兩種變體,一種是時(shí)間遞歸神經(jīng)網(wǎng)絡(luò)(Recurrent neural network),另一種是結(jié)構(gòu)遞歸神經(jīng)網(wǎng)絡(luò)(Recursive neural network)。時(shí)間遞歸神經(jīng)網(wǎng)絡(luò)的神經(jīng)元間連接構(gòu)成有向圖,而結(jié)構(gòu)遞歸神經(jīng)網(wǎng)絡(luò)利用相似的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)遞歸構(gòu)造更為復(fù)雜的深度網(wǎng)絡(luò)。兩者訓(xùn)練的算法不同,但屬于同一算法變體。 Recurrent是在時(shí)間維度的展開,能夠有效的表示信息在時(shí)間維度上從前往后的的傳遞和積累,你可以和馬爾科夫鏈做類比。 Recursive是在空間維度的展開,你可以認(rèn)為他是一種結(jié)構(gòu)上遞歸的結(jié)構(gòu),對應(yīng)為棵樹。在NLP領(lǐng)域用的較為廣泛,能夠很好的提取出結(jié)構(gòu)信息,其示意圖如下

二相比之下時(shí)間遞歸神經(jīng)網(wǎng)絡(luò)如下:

##### 3.3.2 RNN(Recurrent Neural Network) 常見的示意圖如下所示,其核心就是每輪的運(yùn)算都充分結(jié)合上一輪的迭代結(jié)果。

目前最為常見的時(shí)間遞歸神經(jīng)網(wǎng)絡(luò)就是LSTM(Long-Short-Term-Memories)。按照時(shí)間序列進(jìn)行展開如下圖

由上圖可見一般包括書入門、忘記門、輸出門,能夠很好的學(xué)習(xí)當(dāng)前特征同時(shí)兼顧上下文信息。目前較多的用于NLP范疇,其能夠較好的保留上下文信息,這樣在語義理解、摘要生成、情感分析等問題處理上都能得到一個(gè)較好的結(jié)果。

讀者可以不去掌握其復(fù)雜的推導(dǎo),但其背后的物理意義、這種思想是必須掌握的,應(yīng)用的時(shí)候,大部分都是利用現(xiàn)有框架去處理。所以這里再強(qiáng)調(diào)一遍,如果精力有限那么就要重其意。

3.3.3 RNN模型比較

其實(shí)兩種模型的區(qū)別在3.3.1中已經(jīng)做了區(qū)分,這里按照Stanford深度學(xué)習(xí)和NLP課程中所述進(jìn)行一下模型對比。

Recursive Neural Network:在語言層解釋性較好,能夠保留骨干信息,可應(yīng)用在句法分析、短語識別。

Recurrent Neural Network: 在語意上解釋性較好,很多人利用其做了很多好玩的,如自動寫詩之類的,訓(xùn)練是一個(gè)個(gè)字符的讀取后訓(xùn)練。通常情況下雖然不是最好的結(jié)果,但是結(jié)果也不差,特別是在引入了”門”之后,提示較為明顯。

3.3.4 CNN(Convolutional Neural network)

卷積神經(jīng)網(wǎng)絡(luò)由于避免了對圖像的復(fù)雜前期預(yù)處理,可以直接輸入原始圖像(需要尺寸format處理),因而得到了更為廣泛的應(yīng)用。

一般地,CNN的基本結(jié)構(gòu)包括兩層,其一為特征提取層,每個(gè)神經(jīng)元的輸入與前一層的局部接受域相連,并提取該局部的特征。一旦該局部特征被提取后,它與其它特征間的位置關(guān)系也隨之確定下來;其二是特征映射層,網(wǎng)絡(luò)的每個(gè)計(jì)算層由多個(gè)特征映射組成,每個(gè)特征映射是一個(gè)平面,平面上所有神經(jīng)元的權(quán)值相等。

CNN主要用來識別位移、縮放及其他形式扭曲不變性的二維圖形。由于CNN的特征檢測層通過訓(xùn)練數(shù)據(jù)進(jìn)行學(xué)習(xí),所以在使用CNN時(shí),避免了顯示的特征抽取,而隱式地從訓(xùn)練數(shù)據(jù)中進(jìn)行學(xué)習(xí)。

這里讀者需要掌握卷積的物理意義、全鏈接和局部鏈接、知道為什么要池化、常見的池化方法等,這樣對CNN就基本掌握了,剩下的就是應(yīng)用了。

4.總結(jié)

無論是學(xué)士還是已經(jīng)工作的工程師,掌握一些機(jī)器學(xué)習(xí)算法,對于自己都是增加了自己的核心競爭力,在DT轉(zhuǎn)型的過程中,會讓自己走的更遠(yuǎn)。如今無論是Google、微軟還是Amazon都在開放自己的機(jī)器學(xué)習(xí)平臺,阿里云上的機(jī)器學(xué)習(xí)平臺也可以直接使用,這些平臺的開放大大降低了我們對于算法的使用難度,我們無需向那些真正的算法專家一樣去發(fā)明算法,只要我們知其然、也知其所以然,就能夠利用這些知識去解決實(shí)際問題。

對于還在學(xué)校里學(xué)習(xí)的同學(xué)要充分利用自己的時(shí)間,在數(shù)學(xué)基礎(chǔ)上打撈,對常用的機(jī)器學(xué)習(xí)算法和深度學(xué)習(xí)算法都有所掌握。對于開源的tensorflow、caffee等代表性平臺和框架,要勇于嘗試,在未來的筆試和面試中一定會脫穎而出的。

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

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