Active Learning: 一個降低深度學(xué)習(xí)時間搏讶,空間洼畅,經(jīng)濟(jì)成本的解決方案

作者:Zongwei Zhou | 周縱葦
郵箱:zongweiz@asu.edu
微博:@MrGiovanni


下面要介紹的工作發(fā)表于CVPR2017吩案,題為“Fine-tuning Convolutional Neural Networks for Biomedical Image Analysis: Actively and Incrementally”。它主要解決了一個深度學(xué)習(xí)中的重要問題:如何使用盡可能少的標(biāo)簽數(shù)據(jù)來訓(xùn)練一個效果promising的分類器土思。根據(jù)我的判斷务热,當(dāng)遇到兩種情況的時候,這篇論文的可以非常強(qiáng)大的指導(dǎo)意義:

  • 一共手頭有100個未標(biāo)記樣本己儒,和僅僅夠標(biāo)記10個樣本的錢,老板說捆毫,通過訓(xùn)練這十個標(biāo)記的樣本闪湾,能接近甚至達(dá)到訓(xùn)練100個樣本的performance;
  • 手頭有了一個已經(jīng)在100個樣本中訓(xùn)練完的分類器绩卤,現(xiàn)在又來了100個新標(biāo)記的樣本途样,老板說,只給提供夠訓(xùn)練10個樣本的計算機(jī)濒憋;或者只給你提供夠訓(xùn)練10個樣本的時間何暇,讓分類器盡快學(xué)習(xí)到新來樣本的特征;

這兩個情況發(fā)生的條件是完全不同的凛驮,Situation A發(fā)生在屌絲公司裆站,沒有錢拿到精標(biāo)記的數(shù)據(jù)集,卻也想做深度學(xué)習(xí);Situation B一般發(fā)生在高富帥公司宏胯,有海量的精標(biāo)記數(shù)據(jù)羽嫡,但是由于目前即使是最牛逼的計算機(jī)也不能用深度學(xué)習(xí)在短時間內(nèi)一次性地去處理完這些數(shù)據(jù)(e.g.,內(nèi)存溢出肩袍,或者算上個幾年都算不完)杭棵。Anyway,我想我已經(jīng)說清楚應(yīng)用背景了氛赐,讀者可以根據(jù)實(shí)際情況判斷是否往后讀下去魂爪。

感謝你選擇繼續(xù)往下閱讀,那么如果覺得下文所傳遞的思想和方法對你有幫助艰管,請記得一定引用這篇CVPR2017的文章甫窟。Fine-tuning Convolutional Neural Networks for Biomedical Image Analysis: Actively and Incrementally.

@InProceedings{Zhou_2017_CVPR,
author = {Zhou, Zongwei and Shin, Jae and Zhang, Lei and Gurudu, Suryakanth and Gotway, Michael and Liang, Jianming},
title = {Fine-Tuning Convolutional Neural Networks for Biomedical Image Analysis: Actively and Incrementally},
booktitle = {The IEEE Conference on Computer Vision and Pattern Recognition (CVPR)},
month = {July},
year = {2017}
}

1. 為什么會想到去解決這個問題?

現(xiàn)在深度學(xué)習(xí)很火蛙婴,做的人也越來越多粗井,那么它的門檻可以說是很低的,Caffe街图,Keras浇衬,Torch等等框架的出現(xiàn),讓該領(lǐng)域的programming的門檻直接拆了餐济。所以深度學(xué)習(xí)真正的門檻變成了很簡單概念——錢耘擂。這個錢有兩個很重要的流向,一是計算機(jī)的運(yùn)算能力(GPU Power)絮姆,二是標(biāo)記數(shù)據(jù)的數(shù)量醉冤。這兒就引出一個很重要的問題:是不是訓(xùn)練數(shù)據(jù)集越多,深度學(xué)習(xí)的效果會越好呢篙悯?這個答案憑空想是想不出來的蚁阳,能回答的人一定是已經(jīng)擁有了海量的數(shù)據(jù),如ImageNet鸽照,Place等等螺捐,他們可以做一系列的實(shí)驗(yàn)來回答這個問題。需要呈現(xiàn)的結(jié)果很簡單矮燎,橫坐標(biāo)是訓(xùn)練集的樣本數(shù)定血,縱坐標(biāo)是分類的performance,如下圖所示:

Fig.1 如果答案是左圖诞外,那么就沒什么可以說的了澜沟,去想辦法弄到盡可能多的訓(xùn)練數(shù)據(jù)集就ok,但是現(xiàn)實(shí)結(jié)果是右圖的紅實(shí)線峡谊,一開始茫虽,訓(xùn)練集的樣本數(shù)增加刊苍,分類器的性能快速地在上升,當(dāng)訓(xùn)練集的樣本數(shù)達(dá)到某一個臨界值的時候席噩,就基本不變了班缰,也就是說,當(dāng)達(dá)到了這個臨界的數(shù)目時悼枢,再去標(biāo)注數(shù)據(jù)的ground truth就是在浪費(fèi)時間和金錢埠忘。有了這個認(rèn)知,接下來就是想辦法讓這個臨界值變小馒索,也就是用更小的訓(xùn)練集來更快地達(dá)到最理想的性能莹妒,如右圖的紅虛線所示。紅實(shí)線我們認(rèn)為是在隨機(jī)地增加訓(xùn)練集绰上,那么紅虛線就是用主動學(xué)習(xí)(Active Learning)的手段來增加訓(xùn)練集旨怠,從而找到一個更小的子集來達(dá)到最理想的性能。

這里需要說明的一點(diǎn)是蜈块,訓(xùn)練樣本數(shù)的臨界點(diǎn)大小和這個分類問題的難度有關(guān)鉴腻,如果這個分類問題非常簡單,如黑白圖像分類(白色的是1百揭,黑色的是0)爽哎,那么這個臨界值就特別小,往往幾幅圖就可以訓(xùn)練一個精度很高的分類器器一;如果分類問題很復(fù)雜课锌,如判斷一個腫瘤的良惡性(良性是0,惡性是1)祈秕,那么這個臨界值會很大渺贤,因?yàn)槟[瘤的形狀,大小请毛,位置各異志鞍,分類器需要學(xué)習(xí)很多很多的樣本,才能達(dá)到一個比較穩(wěn)定的性能获印。

FIG.1對于很多從事深度學(xué)習(xí)的無論是研究員還是企業(yè)家都是一個十分有啟發(fā)性的認(rèn)知改變述雾。一般來講,人的慣性思維會引領(lǐng)一個默認(rèn)的思路兼丰,就是訓(xùn)練樣本越多越好,如左圖所示唆缴,這將直接導(dǎo)致許多工作的停滯不前鳍征,理由永遠(yuǎn)是“我們沒有足夠的數(shù)據(jù),怎么訓(xùn)練網(wǎng)絡(luò)面徽!”進(jìn)一步的思路是圖二的紅實(shí)線認(rèn)知:要多少是多啊艳丛,先訓(xùn)著再說匣掸,慢慢的就會發(fā)現(xiàn)即便用自己有的一小部分?jǐn)?shù)據(jù)集好像也能達(dá)到一個不錯的分類性能,這個時候就遇到一個問題:自己的數(shù)據(jù)集樣本數(shù)到底有沒有到達(dá)臨界值呢氮双?這個問題也很關(guān)鍵碰酝,它決定了要不要繼續(xù)花錢去找人標(biāo)注數(shù)據(jù)了。這個問題我會在第三部分去回答它戴差,這里先假設(shè)我們知道了它的答案送爸,接下來的問題就是如何讓這個臨界值變小暖释?

2. 如何讓臨界值變邢А?

解決方案就是主動學(xué)習(xí)(Active Learning)球匕,去主動學(xué)習(xí)那些比較“難的”纹磺,“信息量大的”樣本(hard mining)。關(guān)鍵點(diǎn)是每次都挑當(dāng)前分類器分類效果不理想的那些樣本(hard sample)給它訓(xùn)練亮曹,假設(shè)是訓(xùn)練這部分hard sample對于提升分類器效果最有效而快速橄杨。問題是在不知道真正標(biāo)簽的情況下怎么去定義HARD sample?或者說怎么去描述當(dāng)前分類器對于不同樣本的分類結(jié)果的好壞照卦?

定義:由于深度學(xué)習(xí)的輸出是屬于某一類的概率(0~1)式矫,一個很直觀的方法就是用“熵(entropy)”來刻畫信息量,把那些預(yù)測值模棱兩可的樣本挑出來窄瘟,對于二分類問題衷佃,就是預(yù)測值越靠近0.5,它們的信息量越大蹄葱。還有一個比較直觀的方法是用“多樣性(diversity)”來刻畫labeled data和unlabeled data的相似性氏义。這兩個方法都是在“Active batch selection via convex relaxations with guaranteed solution bounds”中被提出。是十分重要的兩個Active Learning的選擇指標(biāo)图云。

Important Observation: To boost the performance of CNNs in biomedical imaging, multiple patches are usually generated automatically for each candidate through data augmentation; these patches generated from the same candidate share the same label, and are naturally expected to have similar predictions by the current CNN before they are expanded into the training dataset.

有了這兩個指標(biāo)來選hard sample惯悠,是比較靠譜了——實(shí)驗(yàn)結(jié)果表明,這比隨機(jī)去選已經(jīng)能更快地達(dá)到臨界拐點(diǎn)了竣况。

FIG.2 Active Learning的結(jié)構(gòu)示意圖克婶。利用深度學(xué)習(xí)所帶來的優(yōu)勢在于,一開始你可以不需要有標(biāo)記的數(shù)據(jù)集丹泉。

舉例來講情萤,假設(shè)你是一個養(yǎng)狗的大戶,你現(xiàn)在想做一個非常偏的(專業(yè)化的)分類問題摹恨,如卷毛比雄犬哈瓦那犬的分類問題筋岛,你手頭有這兩種狗各50條,你自己可以很輕松地區(qū)分這100條狗晒哄,現(xiàn)在需要做的是訓(xùn)練一個分類器睁宰,給那些不懂狗的人肪获,他們拍了狗的照片然后把照片輸入到這個分類器就可以很好地判斷這是卷毛比雄犬還是哈瓦那犬。首先你可以給這100條狗拍照片柒傻,每條狗都有不同形態(tài)的10張照片孝赫,一共拍了1000張沒有標(biāo)記的照片。對于這1000張照片红符,你所知道的是哪10張對應(yīng)的是一條狗青柄,其他什么都不知道。

在這個實(shí)際分類問題中违孝,你擁有絕對的數(shù)據(jù)優(yōu)勢刹前,即便是Google Image也不能企及,當(dāng)然一種選擇是你把1000張圖片從頭到尾看一遍雌桑,標(biāo)注好喇喉,但是你更希望是把大多數(shù)簡單的分類工作交給分類器,自己盡可能少的做標(biāo)記工作校坑,并且主要是去標(biāo)記那些分類器模棱兩可的那幾張照片來提高分類器的性能拣技。
我們初步提供的解決方案是(參考Fig.2或者Fig.3):

  1. 把1000張圖放到在大量自然圖像中預(yù)訓(xùn)練的網(wǎng)絡(luò)(LeNet,AlexNet耍目,GoogLeNet膏斤,VGG,ResNet等等)中測試一遍邪驮,得到預(yù)測值莫辨,然后挑出來那些“最難的”,“信息量最大的”樣本毅访,你看一下沮榜,給出他們的標(biāo)簽(卷毛比雄犬還是哈瓦那犬);
  2. 用這些剛剛給了標(biāo)簽的樣本訓(xùn)練深度網(wǎng)絡(luò)N喻粹;
  3. 把剩下那些沒有標(biāo)簽的圖像用N測試蟆融,得到預(yù)測值,還是挑出來那些“最難的”守呜,“信息量最大的”樣本型酥,你再給出他們的標(biāo)簽(卷毛比雄犬還是哈瓦那犬);
  4. 剛剛給了標(biāo)簽的樣本和原來有標(biāo)簽的樣本組成新的訓(xùn)練集查乒,繼續(xù)用它們來訓(xùn)練深度網(wǎng)絡(luò)N弥喉;
  5. 重復(fù)步驟3,4玛迄,直到 [?]

FIG.2所示档桃,每次循環(huán)都用不斷增加的標(biāo)記數(shù)據(jù)集去提升分類器的性能,每次都挑對當(dāng)前分類器比較難的樣本來人為標(biāo)記。

3. 這個過程什么時候可以停其做?

  1. 錢用光了复濒;
  2. 當(dāng)前分類器對選出來的hard samples分類正確谭企;
  3. 選出來的hard samples人類也無法標(biāo)記哗魂;

以上三種情況都可以讓這個循環(huán)訓(xùn)練過程中斷眉枕,第一種就很無奈了低葫,沒錢找人標(biāo)記了...第二種情況和第三種情況的前提共識是如果難的樣本都分類正確了从撼,那么我們認(rèn)為簡單的樣本肯定也基本上分類正確了州弟,即便不知道標(biāo)簽。第三種情況低零,舉例來說就是黑白圖像分類婆翔,結(jié)果分類器模棱兩可的圖像是灰的...也就是說事實(shí)上的確分不了,并且當(dāng)前的分類器居然能把分不了的樣本也找出來掏婶,這時我們認(rèn)為這個分類器的性能已經(jīng)不錯的了啃奴,所以循環(huán)訓(xùn)練結(jié)束。

至此雄妥,主要講了傳統(tǒng)的Active Learning的思想最蕾,接下來會講講這篇CVPR2017論文的幾個工作點(diǎn)。


The way to create something beautiful is often to make subtle tweaks to something that already exists, or to combine existing ideas in a slightly new way.
-- "Hackers & Painters"


上面我講到了Active Learning的大概思路老厌,如Fig. 3所示瘟则,是一個很有意思的概念,說實(shí)話很實(shí)用枝秤,我在Mayo Clinic實(shí)習(xí)的時候醋拧,每次遇到新的數(shù)據(jù)集,都會想到用一用這個方法淀弹,來讓給數(shù)據(jù)標(biāo)注的專家輕松一點(diǎn)...

Fig.3 暗的表示unlabeled的數(shù)據(jù)丹壕,高亮的表示labeled的數(shù)據(jù),CNN的結(jié)構(gòu)可以隨便挑SOTA的無所謂垦页,CNN0是拍 retrained from ImageNet雀费,得到的第二列表示每個image對應(yīng)的importance指標(biāo),越紅的說明entropy越大痊焊,或者diversity越大盏袄,每次挑這些important的sample給專家標(biāo)注,這樣labeled的數(shù)據(jù)就變多了薄啥,用labeled的數(shù)據(jù)訓(xùn)練CNN辕羽,得到新的更強(qiáng)的分類器了,再在unlabeled data上測試垄惧,挑出entropy/diversity大的樣本刁愿,交給專家去標(biāo)注,如此循環(huán)...

4. 發(fā)現(xiàn)新問題

貌似前面講的算法沒留下什么問題啊到逊,也就是說铣口,只要學(xué)術(shù)視野夠開闊滤钱,這個Active Learning的技術(shù)完全可以直接用啦。但是實(shí)際上并不是這樣的脑题,上面說的熵(Entropy)的確沒有什么嚴(yán)重的問題件缸,但是多樣性(Diversity),在很多現(xiàn)實(shí)應(yīng)用中問題就會出現(xiàn)叔遂。

根據(jù)“Active batch selection via convex relaxations with guaranteed solution bounds”的描述他炊,Diversity是計算labeled data和unlabeled data之間的相似度,把和labeled data比較相似的作為簡單樣本已艰,每次active select難樣本痊末,也就是挑出來和labeled data不太像的出來。體現(xiàn)在矩陣上就是行是labeled data哩掺,列是unlabeled data凿叠,在它們組成的大矩陣中找出最優(yōu)的子矩陣。這個方法在理論上是可行的疮丛,但是實(shí)際應(yīng)用中幔嫂,數(shù)據(jù)量(labeled和unlabeled)會非常大,這個矩陣會特別的大誊薄,導(dǎo)致求最優(yōu)解會很慢履恩,或者根本得不出來最優(yōu)解。因此呢蔫,我們并不在image-level上算diversity切心。

由于標(biāo)記的醫(yī)學(xué)影像訓(xùn)練數(shù)據(jù)量和自然圖像的沒法比,Data Augmentation是必須的環(huán)節(jié)片吊,我們就抓住了這個點(diǎn)來設(shè)計Diversity這個指標(biāo)绽昏。這里的假設(shè)是:經(jīng)過data augmentation后的patches,從CNN出來的預(yù)測值應(yīng)該相對是一致的俏脊,因?yàn)樗鼈兊膖ruth應(yīng)該還是一致的全谤。比如一張貓的圖像,經(jīng)過數(shù)據(jù)擴(kuò)充爷贫,得到的那些個patch所對應(yīng)的truth也應(yīng)該都是貓认然。

定義:對于來自同一幅image的patch集,如果它們的分類結(jié)果高度不統(tǒng)一了漫萄,那么這個image就是Important的卷员,或者h(yuǎn)ard sample。

需要展開解釋的兩點(diǎn):

  1. 由于在annotation之前不知道label腾务,所以我們不能知道網(wǎng)絡(luò)的預(yù)測正確還是錯誤毕骡,但是我們可以知道預(yù)測統(tǒng)一還是不統(tǒng)一。所以比如一幅貓的圖,如果網(wǎng)絡(luò)的預(yù)測很統(tǒng)一都是狗未巫,那么我們也認(rèn)為這是一個easy sample窿撬,不去active select它的。
  2. 結(jié)合data augmentation的優(yōu)點(diǎn)是我們可以知道哪些patch對應(yīng)什么image橱赠,比較容易控制尤仍。這樣就可以在一個image內(nèi)算diversity了,每個image對應(yīng)一個矩陣狭姨,大小是一樣的,非常的簡潔苏遥,也容易控制計算量饼拍。

這樣的diversity就完美了嗎?并沒有... 讀者可以先猜猜哪兒又出問題啦田炭,我在第五部分會指出來师抄。

5. 這次是Data Augmentation的鍋

問題出在上面的假設(shè):經(jīng)過data augmentation后的patches,從CNN出來的預(yù)測值應(yīng)該相對是一致的教硫,因?yàn)樗鼈兊膖ruth應(yīng)該還是一致的叨吮。

我們知道有幾種經(jīng)典的數(shù)據(jù)擴(kuò)充方法:平移,旋轉(zhuǎn)瞬矩,縮放茶鉴,形變,加噪聲等等景用。但是很有可能發(fā)生的是涵叮,經(jīng)過這些變化以后,得到的patch是無法分類的伞插。舉例來講割粮,Augmentation Lecture講到的平移crop,如果我們將它應(yīng)用到貓的分類問題中媚污,很有可能得到這樣的訓(xùn)練樣本:

右圖是網(wǎng)絡(luò)得到的對應(yīng)patch的預(yù)測值舀瓢。

可以看出,在這個實(shí)例中耗美,對于一個candidate京髓,網(wǎng)絡(luò)預(yù)測的一致性很低,套用Diversity的公式幽歼,Diversity的值很大朵锣,也就是說,應(yīng)該被認(rèn)為是hard sample挑出來甸私。但是仔細(xì)觀察一下這九個patches就不難看出诚些,即便是很好的分類器,對于中間圖中的1,2诬烹,3砸烦,也是很難分出這個是貓... could be rat, rabbit, etc. 我們把像這三個patch的例子叫做從data augmentation帶來的noisy label issue。 而對于4~6的patches绞吁,網(wǎng)絡(luò)很好地做出了分類幢痘,這很合情合理。所以我們把這種像1家破,2颜说,3的patches,由于隨機(jī)的數(shù)據(jù)擴(kuò)充(Random Data Augmentation)帶來的干擾樣本稱為noisy labels汰聋。Fig.4只是一個很直觀的例子门粪,其實(shí)在實(shí)際的數(shù)據(jù)集中會有很多這樣的案例。

我們給出的解決方法是:先計算majority的預(yù)測烹困,然后在majority上面算diversity玄妈,只要網(wǎng)絡(luò)的預(yù)測大方向是統(tǒng)一的,就是統(tǒng)一的髓梅。意思就是想個辦法把Fig.4中的三個非主流0.1扔掉拟蜻。只抓住大方向,也就是0.9——我們不希望Fig.4這種情況被當(dāng)作important sample挑出來枯饿,因?yàn)楫?dāng)前的分類器實(shí)際上已經(jīng)可以分出來這幅圖的類別啦酝锅。

這個改進(jìn)的數(shù)學(xué)表達(dá)也非常直觀,以Fig.4為例鸭你,為了知道大方向屈张,我們計算它們的平均值,如果大于0.5袱巨,大方向就是label 1阁谆,反之大方向是label 0,如果是前者愉老,那么就從大到小取前25%的預(yù)測场绿,其他的不要啦,如果是后者嫉入,就從小到大取前25%焰盗,其他的不要啦。這樣Fig.4就只剩下三個0.9咒林,它們的diversity就非常小熬拒,也就不會被當(dāng)作important sample挑出來啦。成功解決了data augmentation帶來的noisy label issue垫竞。

整體的算法流程可參見Fig.5

Fig.5 Active Learning Algorithm

至此澎粟,主要講了這篇論文是怎樣成功的將Diversity這個重要的指標(biāo)引入到Active Learning中來蛀序,所有的Active Selection部分結(jié)束。


6. 如何訓(xùn)練活烙?

既然用了遷移學(xué)習(xí)徐裸,那么一開始的CNN測試的效果肯定是一團(tuán)糟,因?yàn)檫@個CNN是從自然圖像中學(xué)過來的啸盏,沒有學(xué)習(xí)過CT這種醫(yī)學(xué)影像重贺,所以這個loop的啟動階段,Active Learning的效果會沒有random selecting好回懦。不過很快气笙,隨著CNN慢慢地在labeled的CT上訓(xùn)練,Active Learning的效果會一下子超過random selecting粉怕。

接下來討論Continuous fine-tuning的細(xì)節(jié)健民,隨著labeled data集變大,CNN需要一次次地被訓(xùn)練贫贝,有兩種選擇,一是每次都從ImageNet pretrained來的model來遷移蛉谜,二是每次用當(dāng)前的model上面遷移(Continuous Fine-tuning)稚晚。方法一的優(yōu)點(diǎn)是模型的參數(shù)比較好控制,因?yàn)槊看味际菑念^開始fine-tuning型诚,但是缺點(diǎn)是隨著labeled數(shù)據(jù)量大增加客燕,GPU的消耗很大,相當(dāng)于每次有新的標(biāo)注數(shù)據(jù)來的時候狰贯,就把原來的model扔了不管也搓,在實(shí)際應(yīng)用中的代價還是很大的。第二種方法是從當(dāng)前的model基礎(chǔ)上做finetune涵紊,在某種意義上knowledge是有記憶的傍妒,而且是連續(xù)漸進(jìn)式的學(xué)習(xí)。問題在于參數(shù)不好控制摸柄,例如learning rate颤练,需要適當(dāng)?shù)臏p小,而且比較容易在一開始掉入local minimum驱负。關(guān)于Continuous Finetuning的前期論文也是有的嗦玖,需要更進(jìn)一步的研究。

另外跃脊,如何能夠真正意義上去體現(xiàn)出increamentally learning宇挫,只是這樣一個網(wǎng)絡(luò)結(jié)構(gòu)去不斷的學(xué)習(xí)嗎,還是隨著數(shù)據(jù)集的增加去讓網(wǎng)絡(luò)自適應(yīng)的變深酪术,便復(fù)雜器瘪,都是我比較關(guān)心的問題。


乍一看,Active Learning的工具很直觀娱局,思想也很簡潔彰亥,但隨著博客討論的技術(shù)細(xì)節(jié)越來越深入,會出現(xiàn)很多的open question有待研究衰齐,因此任斋,只能說我們的論文是active learning的一個引子。

本文只是從思想的角度來闡述這篇論文耻涛,至于后續(xù)的分析废酷,結(jié)果和結(jié)論都在論文中詳細(xì)的report了。反正一句話來總結(jié)抹缕,hin好...

祝好澈蟆,

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市卓研,隨后出現(xiàn)的幾起案子趴俘,更是在濱河造成了極大的恐慌,老刑警劉巖奏赘,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件寥闪,死亡現(xiàn)場離奇詭異,居然都是意外死亡磨淌,警方通過查閱死者的電腦和手機(jī)疲憋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來梁只,“玉大人缚柳,你說我怎么就攤上這事√侣啵” “怎么了秋忙?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長淤翔。 經(jīng)常有香客問我翰绊,道長,這世上最難降的妖魔是什么旁壮? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任监嗜,我火速辦了婚禮,結(jié)果婚禮上抡谐,老公的妹妹穿的比我還像新娘裁奇。我一直安慰自己,他們只是感情好麦撵,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布刽肠。 她就那樣靜靜地躺著溃肪,像睡著了一般。 火紅的嫁衣襯著肌膚如雪音五。 梳的紋絲不亂的頭發(fā)上惫撰,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天,我揣著相機(jī)與錄音躺涝,去河邊找鬼厨钻。 笑死,一個胖子當(dāng)著我的面吹牛坚嗜,可吹牛的內(nèi)容都是我干的夯膀。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼苍蔬,長吁一口氣:“原來是場噩夢啊……” “哼诱建!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起碟绑,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤俺猿,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后格仲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體辜荠,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年抓狭,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片造烁。...
    茶點(diǎn)故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡否过,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出惭蟋,到底是詐尸還是另有隱情苗桂,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布告组,位于F島的核電站煤伟,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏木缝。R本人自食惡果不足惜便锨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望我碟。 院中可真熱鬧放案,春花似錦、人聲如沸矫俺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至友雳,卻和暖如春稿湿,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背押赊。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工饺藤, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人考杉。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓策精,卻偏偏與公主長得像,于是被迫代替她去往敵國和親崇棠。 傳聞我的和親對象是個殘疾皇子咽袜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評論 2 345

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