深度學(xué)習(xí)中訓(xùn)練參數(shù)的調(diào)節(jié)技巧

深度學(xué)習(xí)中訓(xùn)練參數(shù)的調(diào)節(jié)技巧

在這篇文章中:

2皆辽、權(quán)重

3萨赁、層數(shù)

4弊琴、過(guò)擬合

5、Loss設(shè)計(jì)與觀察

二位迂、caffe訓(xùn)練時(shí)Loss變?yōu)閚an的原因

1访雪、梯度爆炸

2详瑞、不當(dāng)?shù)膿p失函數(shù)

3掂林、不當(dāng)?shù)妮斎?/a>

4、池化層中步長(zhǎng)比核的尺寸大

三坝橡、一些訓(xùn)練時(shí)候出現(xiàn)的問(wèn)題

1泻帮、為啥label需要從0開始?

2计寇、為什么Caffe中引入了這個(gè)inner_num锣杂,inner_num等于什么

3、在標(biāo)簽正確的前提下番宁,如果倒數(shù)第一個(gè)全連接層num_output > 實(shí)際的類別數(shù)元莫,Caffe的訓(xùn)練是否會(huì)報(bào)錯(cuò)?

4蝶押、BN中的use_global_status

5踱蠢、BatchNorm層是否支持in place運(yùn)算,為什么棋电?

四茎截、過(guò)擬合解決:dropout苇侵、batch Normalization

1、dropout——另類Bagging(類似隨機(jī)森林RF)

2企锌、batch Normalization

1榆浓、學(xué)習(xí)率

步長(zhǎng)的選擇:你走的距離長(zhǎng)短,越短當(dāng)然不會(huì)錯(cuò)過(guò)撕攒,但是耗時(shí)間陡鹃。步長(zhǎng)的選擇比較麻煩。步長(zhǎng)越小抖坪,越容易得到局部最優(yōu)化(到了比較大的山谷杉适,就出不去了),而大了會(huì)全局最優(yōu)

重要性:學(xué)習(xí)率>正則值>dropout

學(xué)習(xí)率:0.001柳击,0.01猿推,0.1,1捌肴,10 …….以10為階數(shù)嘗試

小數(shù)據(jù)集上合適的參數(shù)大數(shù)據(jù)集上一般不會(huì)差蹬叭,可以先減少訓(xùn)練類別。

一般來(lái)說(shuō)状知,前1000步秽五,很大,0.1饥悴;到了后面坦喘,迭代次數(shù)增高逆皮,下降0.01绰精,再多,然后再小一些碗旅。

2贷揽、權(quán)重

梯度消失的情況棠笑,就是當(dāng)數(shù)值接近于正向∞,求導(dǎo)之后就更小的禽绪,約等于0蓖救,偏導(dǎo)為0 梯度爆炸,數(shù)值無(wú)限大

對(duì)于梯度消失現(xiàn)象:激活函數(shù) Sigmoid會(huì)發(fā)生梯度消失的情況印屁,所以激活函數(shù)一般不用循捺,收斂不了了。Tanh(x)雄人,沒(méi)解決梯度消失的問(wèn)題从橘。 ReLu Max(0,x),比較好,代表Max門單元洋满,解決了梯度消失的問(wèn)題晶乔,而且起到了降維

權(quán)重初始化,可以隨機(jī)也可以一開始設(shè)置一定的圖形分布牺勾,用高斯初始化

3正罢、層數(shù)

越多,靈敏度越好驻民,收斂地更好翻具,激活函數(shù)也越多,曲線的性能也更好 但是回还,神經(jīng)元過(guò)擬合裆泳,并且計(jì)算量較大層數(shù)越多。在節(jié)點(diǎn)多的情況下一般會(huì)考慮:Drop-out

節(jié)點(diǎn)太多也不好柠硕,所以需要?jiǎng)h除一些無(wú)效的節(jié)點(diǎn) 但是去掉節(jié)點(diǎn)工禾,這里卻是隨機(jī)的,隨機(jī)去掉(30%-60%)的節(jié)點(diǎn) 注意:隨機(jī)的選擇蝗柔,去掉一些節(jié)點(diǎn)闻葵。但是drop-out也不一定是避免過(guò)擬合 很常見(jiàn)。一般不drop-out一定會(huì)過(guò)擬合癣丧,有drop-out概率低一些

4槽畔、過(guò)擬合

上面的drop-out就算一種。其他過(guò)擬合可能也會(huì)使用:BN,batch normalization(歸一化)

在caffe操作時(shí)候胁编,模型訓(xùn)練中如何解決過(guò)擬合現(xiàn)象厢钧?

看到驗(yàn)證集的數(shù)據(jù)趨于平穩(wěn),譬如第1000次之后嬉橙,驗(yàn)證集的loss平穩(wěn)了早直,那么就截取1000次,把學(xué)習(xí)率降低為原來(lái)的0.1憎夷,拿來(lái)第10000次結(jié)果莽鸿,修改文件,繼續(xù)訓(xùn)練拾给。

欠擬合:

表現(xiàn)形式:訓(xùn)練集,測(cè)試集準(zhǔn)確率都很低

解決辦法:增加網(wǎng)絡(luò)層數(shù)兔沃,增加節(jié)點(diǎn)數(shù)蒋得,減少dropout值,減少L2正則值等.

5乒疏、Loss設(shè)計(jì)與觀察

一般來(lái)說(shuō)分類就是Softmax, 回歸就是L2的loss. 但是要注意loss的錯(cuò)誤范圍(主要是回歸), 你預(yù)測(cè)一個(gè)label是10000的值, 模型輸出0, 你算算這loss多大, 這還是單變量的情況下. 一般結(jié)果都是nan. 所以不僅僅輸入要做normalization, 輸出也要额衙。

準(zhǔn)確率雖然是評(píng)測(cè)指標(biāo), 但是訓(xùn)練過(guò)程中還是要注意loss的. 你會(huì)發(fā)現(xiàn)有些情況下, 準(zhǔn)確率是突變的, 原來(lái)一直是0, 可能保持上千迭代, 然后突然變1. 要是因?yàn)檫@個(gè)你提前中斷訓(xùn)練了, 只有老天替你惋惜了. 而loss是不會(huì)有這么詭異的情況發(fā)生的, 畢竟優(yōu)化目標(biāo)是loss. 對(duì)比訓(xùn)練集和驗(yàn)證集的loss。 判斷過(guò)擬合, 訓(xùn)練是否足夠, 是否需要early stop的依據(jù)

二、caffe訓(xùn)練時(shí)Loss變?yōu)閚an的原因


1窍侧、梯度爆炸

原因:梯度變得非常大县踢,使得學(xué)習(xí)過(guò)程難以繼續(xù)

現(xiàn)象:觀察log,注意每一輪迭代后的loss伟件。loss隨著每輪迭代越來(lái)越大硼啤,最終超過(guò)了浮點(diǎn)型表示的范圍,就變成了NaN斧账。 措施: 1. 減小solver.prototxt中的base_lr谴返,至少減小一個(gè)數(shù)量級(jí)。如果有多個(gè)loss layer咧织,需要找出哪個(gè)損失層導(dǎo)致了梯度爆炸嗓袱,并在train_val.prototxt中減小該層的loss_weight,而非是減小通用的base_lr习绢。 2. 設(shè)置clip gradient渠抹,用于限制過(guò)大的diff

2、不當(dāng)?shù)膿p失函數(shù)

原因:有時(shí)候損失層中l(wèi)oss的計(jì)算可能導(dǎo)致NaN的出現(xiàn)闪萄。比如逼肯,給InfogainLoss層(信息熵?fù)p失)輸入沒(méi)有歸一化的值,使用帶有bug的自定義損失層等等桃煎。

現(xiàn)象:觀測(cè)訓(xùn)練產(chǎn)生的log時(shí)一開始并不能看到異常篮幢,loss也在逐步的降低,但突然之間NaN就出現(xiàn)了为迈。

措施:看看你是否能重現(xiàn)這個(gè)錯(cuò)誤三椿,在loss layer中加入一些輸出以進(jìn)行調(diào)試。 示例:有一次我使用的loss歸一化了batch中l(wèi)abel錯(cuò)誤的次數(shù)葫辐。如果某個(gè)label從未在batch中出現(xiàn)過(guò)搜锰,loss就會(huì)變成NaN。在這種情況下耿战,可以用足夠大的batch來(lái)盡量避免這個(gè)錯(cuò)誤蛋叼。

3、不當(dāng)?shù)妮斎?/p>

原因:輸入中就含有NaN剂陡。

現(xiàn)象:每當(dāng)學(xué)習(xí)的過(guò)程中碰到這個(gè)錯(cuò)誤的輸入狈涮,就會(huì)變成NaN。觀察log的時(shí)候也許不能察覺(jué)任何異常鸭栖,loss逐步的降低歌馍,但突然間就變成NaN了。 措施:重整你的數(shù)據(jù)集晕鹊,確保訓(xùn)練集和驗(yàn)證集里面沒(méi)有損壞的圖片松却。調(diào)試中你可以使用一個(gè)簡(jiǎn)單的網(wǎng)絡(luò)來(lái)讀取輸入層暴浦,有一個(gè)缺省的loss,并過(guò)一遍所有輸入晓锻,如果其中有錯(cuò)誤的輸入歌焦,這個(gè)缺省的層也會(huì)產(chǎn)生NaN。 案例:有一次公司需要訓(xùn)練一個(gè)模型砚哆,把標(biāo)注好的圖片放在了七牛上独撇,拉下來(lái)的時(shí)候發(fā)生了dns劫持,有一張圖片被換成了淘寶的購(gòu)物二維碼窟社,且這個(gè)二維碼格式與原圖的格式不符合券勺,因此成為了一張“損壞”圖片。每次訓(xùn)練遇到這個(gè)圖片的時(shí)候就會(huì)產(chǎn)生NaN灿里。 良好的習(xí)慣是关炼,你有一個(gè)檢測(cè)性的網(wǎng)絡(luò),每次訓(xùn)練目標(biāo)網(wǎng)絡(luò)之前把所有的樣本在這個(gè)檢測(cè)性的網(wǎng)絡(luò)里面過(guò)一遍匣吊,去掉非法值儒拂。

4、池化層中步長(zhǎng)比核的尺寸大

如下例所示色鸳,當(dāng)池化層中stride > kernel的時(shí)候會(huì)在y中產(chǎn)生NaN

layer{? ? ? name:"faulty_pooling"? ? ? type:"Pooling"? ? ? bottom:"x"? ? ? top:"y"? ? ? pooling_param{? ? ? pool: AVE? ? ? stride:5? ? ? kernel:3}}

http://stackoverflow.com/questions/33962226/common-causes-of-NaNs-during-training

.

三社痛、一些訓(xùn)練時(shí)候出現(xiàn)的問(wèn)題

1、為啥label需要從0開始命雀?

在使用SoftmaxLoss層作為損失函數(shù)層的單標(biāo)簽分類問(wèn)題中蒜哀,label要求從零開始,例如1000類的ImageNet分類任務(wù)吏砂,label的范圍是0~999撵儿。這個(gè)限制來(lái)自于Caffe的一個(gè)實(shí)現(xiàn)機(jī)制,label會(huì)直接作為數(shù)組的下標(biāo)使用狐血,具體代碼SoftmaxLoss.cpp中133行和139行的實(shí)現(xiàn)代碼淀歇。

132行第一層for循環(huán)中的outer_num等于batch size,對(duì)于人臉識(shí)別和圖像分類等單標(biāo)簽分類任務(wù)而言匈织,inner_num等于1浪默。如果label從1開始,會(huì)導(dǎo)致bottom_diff數(shù)組訪問(wèn)越界缀匕。 .

2纳决、為什么Caffe中引入了這個(gè)inner_num,inner_num等于什么

從FCN全卷積網(wǎng)絡(luò)的方向去思考弦追。FCN中l(wèi)abel標(biāo)簽長(zhǎng)度=圖片尺寸 caffe引入inner_num使得輸入image的size可以是任意大小岳链,innuer_num大小即為softmax層輸入的height*width .

3、在標(biāo)簽正確的前提下劲件,如果倒數(shù)第一個(gè)全連接層num_output > 實(shí)際的類別數(shù)掸哑,Caffe的訓(xùn)練是否會(huì)報(bào)錯(cuò)?

不會(huì)報(bào)錯(cuò)且無(wú)影響 .

4零远、BN中的use_global_status

圖2. ResNet部署階模型Proto文件片段

但是如果直接拿這個(gè)Proto用于訓(xùn)練(基于隨機(jī)初始化)苗分,則會(huì)導(dǎo)致模型不收斂,原因在于在Caffe的batch_norm_layer.cpp實(shí)現(xiàn)中牵辣,use_global_stats==true時(shí)會(huì)強(qiáng)制使用模型中存儲(chǔ)的BatchNorm層均值與方差參數(shù)摔癣,而非基于當(dāng)前batch內(nèi)計(jì)算均值和方差。

首先看use_global_stats變量是如何計(jì)算的:

圖3. use_global_stats計(jì)算

再看這個(gè)變量的作用:

圖4. use_global_stats為true時(shí)的行為

以下代碼在use_global_stats為false的時(shí)候通過(guò)moving average策略計(jì)算模型中最終存儲(chǔ)的均值和方差:

圖5. BatchNorm層均值和方差的moving average

因此纬向,對(duì)于隨機(jī)初始化訓(xùn)練BatchNorm層择浊,只需要在Proto文件中移除use_global_stats參數(shù)即可,Caffe會(huì)根據(jù)當(dāng)前的Phase(TRAIN或者TEST)自動(dòng)去設(shè)置use_global_stats的值逾条。 .

5琢岩、BatchNorm層是否支持in place運(yùn)算,為什么师脂?

BN是對(duì)輸入那一層做歸一化操作担孔,要對(duì)每個(gè)元素-均值/標(biāo)準(zhǔn)差,且輸入輸出規(guī)格相當(dāng)吃警,是可以進(jìn)行in place糕篇。 標(biāo)準(zhǔn)的ReLU函數(shù)為max(x, 0),而一般為當(dāng)x > 0時(shí)輸出x酌心,但x <= 0時(shí)輸出negative_slope拌消。RELU層支持in-place計(jì)算,這意味著bottom的輸出和輸入相同以避免內(nèi)存的消耗安券。 .

四墩崩、過(guò)擬合解決:dropout、batch Normalization

來(lái)源于:https://github.com/exacity/deeplearningbook-chinese/releases/

1完疫、dropout——另類Bagging(類似隨機(jī)森林RF)

引用自Dropout作者: 在標(biāo)準(zhǔn)神經(jīng)網(wǎng)絡(luò)中泰鸡,每個(gè)參數(shù)接收的導(dǎo)數(shù)表明其應(yīng)該如何變化才能使最終損失函數(shù)降低,并給定所有其它神經(jīng)網(wǎng)絡(luò)單元的狀態(tài)壳鹤。因此神經(jīng)單元可能以一種可以修正其它神經(jīng)網(wǎng)絡(luò)單元的錯(cuò)誤的方式進(jìn)行改變盛龄。而這就可能導(dǎo)致復(fù)雜的共適應(yīng)(co-adaptations)。由于這些共適應(yīng)現(xiàn)象沒(méi)有推廣到未見(jiàn)的數(shù)據(jù)芳誓,將導(dǎo)致過(guò)擬合余舶。我們假設(shè)對(duì)每個(gè)隱藏層的神經(jīng)網(wǎng)絡(luò)單元,Dropout通過(guò)使其它隱藏層神經(jīng)網(wǎng)絡(luò)單元不可靠從而阻止了共適應(yīng)的發(fā)生锹淌。因此匿值,一個(gè)隱藏層神經(jīng)元不能依賴其它特定神經(jīng)元去糾正其錯(cuò)誤。(來(lái)源:賽爾譯文 Dropout分析)

Dropout可以被認(rèn)為是集成非常多的大神經(jīng) 網(wǎng)絡(luò)的實(shí)用Bagging方法赂摆。當(dāng)每個(gè)模型是一個(gè)大型神經(jīng)網(wǎng)絡(luò)時(shí),這似乎是不切實(shí)際的,因?yàn)橛?xùn)練和 評(píng)估這樣的網(wǎng)絡(luò)需要花費(fèi)很多運(yùn)行時(shí)間和內(nèi)存挟憔。 Dropout提供了一種廉價(jià)的Bagging集成近似,能夠訓(xùn)練和評(píng)估指數(shù)級(jí)的神經(jīng)網(wǎng)絡(luò)钟些。 操作方法:將一些單元的輸出乘零就能有效地刪除一個(gè)單元。

(1)具體工作過(guò)程:

Dropout以概率p關(guān)閉神經(jīng)元绊谭,相應(yīng)的政恍,以大小為q=1-p的概率開啟其他神經(jīng)元。每個(gè)單個(gè)神經(jīng)元有同等概率被關(guān)閉达传。當(dāng)一個(gè)神經(jīng)元被丟棄時(shí)篙耗,無(wú)論其輸入及相關(guān)的學(xué)習(xí)參數(shù)是多少,其輸出都會(huì)被置為0宪赶。 丟棄的神經(jīng)元在訓(xùn)練階段的前向傳播和后向傳播階段都不起作用:因?yàn)檫@個(gè)原因宗弯,每當(dāng)一個(gè)單一的神經(jīng)元被丟棄時(shí),訓(xùn)練階段就好像是在一個(gè)新的神經(jīng)網(wǎng)絡(luò)上完成搂妻。 訓(xùn)練階段蒙保,可以使用伯努利隨機(jī)變量、二項(xiàng)式隨機(jī)變量來(lái)對(duì)一組神經(jīng)元上的Dropout進(jìn)行建模叽讳。

(2)dropout類型: 正向dropout追他、反向dropout。 反向Dropout有助于只定義一次模型并且只改變了一個(gè)參數(shù)(保持/丟棄概率)以使用同一模型進(jìn)行訓(xùn)練和測(cè)試岛蚤。相反邑狸,直接Dropout,迫使你在測(cè)試階段修改網(wǎng)絡(luò)涤妒。因?yàn)槿绻悴怀艘员壤蜃觪单雾,神經(jīng)網(wǎng)絡(luò)的輸出將產(chǎn)生更高的相對(duì)于連續(xù)神經(jīng)元所期望的值(因此神經(jīng)元可能飽和):這就是為什么反向Dropout是更加常見(jiàn)的實(shí)現(xiàn)方式。

(3)dropout與其他規(guī)則

故反向Dropout應(yīng)該與限制參數(shù)值的其他歸一化技術(shù)一起使用她紫,以便簡(jiǎn)化學(xué)習(xí)速率選擇過(guò)程

正向Dropout:通常與L2正則化和其它參數(shù)約束技術(shù)(如Max Norm1)一起使用硅堆。正則化有助于保持模型參數(shù)值在可控范圍內(nèi)增長(zhǎng)。 反向Dropout:學(xué)習(xí)速率被縮放至q的因子贿讹,我們將其稱q為推動(dòng)因子(boosting factor)渐逃,因?yàn)樗苿?dòng)了學(xué)習(xí)速率。此外民褂,我們將r(q)稱為有效學(xué)習(xí)速率(effective learning rate)茄菊。總之赊堪,有效學(xué)習(xí)速率相對(duì)于所選擇的學(xué)習(xí)速率更高:由于這個(gè)原因面殖,限制參數(shù)值的正則化可以幫助簡(jiǎn)化學(xué)習(xí)速率選擇過(guò)程。 (來(lái)源:賽爾譯文 Dropout分析)

(4)優(yōu)勢(shì):

看作是對(duì)輸入內(nèi)容的信息高度智能化哭廉、自適應(yīng)破壞的一種形式,而不是 對(duì)輸入原始值的破壞脊僚。

Dropout不僅僅是訓(xùn)練一個(gè)Bagging的集成模型,并且是共享隱藏單元的集成模型。這意味著無(wú)論其他隱藏單元是否在模型中,每個(gè)隱藏單元必須都能夠表現(xiàn)良好遵绰。隱藏單元必須準(zhǔn)備好進(jìn)行模型之間的交換和互換辽幌。

計(jì)算方便是Dropout的一個(gè)優(yōu)點(diǎn)增淹。訓(xùn)練過(guò)程中使用Dropout產(chǎn)生 n 個(gè)隨機(jī)二進(jìn)制 數(shù)與狀態(tài)相乘,每個(gè)樣本每次更新只需 O(n)的計(jì)算復(fù)雜度。

Dropout的另一個(gè)顯著優(yōu)點(diǎn)是不怎么限制適用的模型或訓(xùn)練過(guò)程舶衬。幾乎在所有 使用分布式表示且可以用隨機(jī)梯度下降訓(xùn)練的模型上都表現(xiàn)很好埠通。包括前饋神經(jīng)網(wǎng) 絡(luò)赎离、概率模型,如受限玻爾茲曼機(jī)(Srivastava et al., 2014),以及循環(huán)神經(jīng)網(wǎng)絡(luò)(Bayer and Osendorfer, 2014; Pascanu et al., 2014a)逛犹。許多其他差不多強(qiáng)大正則化策略對(duì)模 型結(jié)構(gòu)的限制更嚴(yán)格。

(5)劣勢(shì):

Dropout是一個(gè)正則化技術(shù),它減少了模型的有效容量梁剔。為了抵消這種影響,我們必須增大模型規(guī)模虽画。不出意外的話,使 用Dropout時(shí)最佳驗(yàn)證集的誤差會(huì)低很多,但這是以更大的模型和更多訓(xùn)練算法的迭 代次數(shù)為代價(jià)換來(lái)的。對(duì)于非常大的數(shù)據(jù)集,正則化帶來(lái)的泛化誤差減少得很小荣病。在 這些情況下,使用Dropout和更大模型的計(jì)算代價(jià)可能超過(guò)正則化帶來(lái)的好處码撰。

只有極少的訓(xùn)練樣本可用時(shí),Dropout不會(huì)很有效。在只有不到 5000 的樣本 的Alternative Splicing數(shù)據(jù)集上 (Xiong et al., 2011),貝葉斯神經(jīng)網(wǎng)絡(luò) (Neal, 1996)比Dropout表現(xiàn)更好 (Srivastava et al., 2014)个盆。當(dāng)有其他未分類的數(shù)據(jù)可用時(shí),無(wú)監(jiān) 督特征學(xué)習(xí)比Dropout更有優(yōu)勢(shì)脖岛。 .

2、batch Normalization

batch normalization的主要目的是改善優(yōu)化,但噪音具有正則化的效果,有時(shí)使Dropout變得沒(méi)有必要颊亮。 參數(shù)訓(xùn)練過(guò)程中多層之間協(xié)調(diào)更新的問(wèn)題:在其他層不改變的假設(shè)下,梯度用于如何更新每一個(gè)參數(shù)柴梆。但是,一般情況下會(huì)同時(shí)更新所有層终惑。 這造成了很難選擇一個(gè)合適的學(xué)習(xí)速率,因?yàn)槟骋粚又袇?shù)更新的效果很大程度上取決 于其他所有層绍在。 batch normalization可應(yīng)用于網(wǎng)絡(luò) 的任何輸入層或隱藏層。設(shè) H 是需要標(biāo)準(zhǔn)化的某層的minibatch激勵(lì)函數(shù),布置為 設(shè)計(jì)矩陣,每個(gè)樣本的激勵(lì)出現(xiàn)在矩陣的每一行中雹有。標(biāo)準(zhǔn)化 H,我們替代它為

其中 μ 是包含每個(gè)單元均值的向量,σ 是包含每個(gè)單元標(biāo)準(zhǔn)差的向量偿渡。 反向傳播這些操作,計(jì)算均值和標(biāo)準(zhǔn)差,并應(yīng)用它們于標(biāo)準(zhǔn)化 H。這意味著,梯度不會(huì)再簡(jiǎn)單地增加 hi 的標(biāo)準(zhǔn)差或均值;標(biāo)準(zhǔn)化操作會(huì) 除掉這一操作的影響,歸零其在梯度中的元素霸奕。

以前的方法添加代價(jià)函數(shù)的懲罰,以鼓勵(lì)單位標(biāo)準(zhǔn)化激勵(lì)統(tǒng)計(jì)量,或是 在每個(gè)梯度下降步驟之后重新標(biāo)準(zhǔn)化單位統(tǒng)計(jì)量溜宽。 前者通常會(huì)導(dǎo)致不完全的標(biāo)準(zhǔn)化, 而后者通常會(huì)顯著地消耗時(shí)間,因?yàn)閷W(xué)習(xí)算法會(huì)反復(fù)改變均值和方差而標(biāo)準(zhǔn)化步驟 會(huì)反復(fù)抵消這種變化。 batch normalization重新參數(shù)化模型,以使一些單元總是被定 義標(biāo)準(zhǔn)化,巧妙地回避了這兩個(gè)問(wèn)題质帅。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末适揉,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子临梗,更是在濱河造成了極大的恐慌涡扼,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,946評(píng)論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件盟庞,死亡現(xiàn)場(chǎng)離奇詭異吃沪,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)什猖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,336評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門票彪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)红淡,“玉大人,你說(shuō)我怎么就攤上這事降铸≡诤担” “怎么了?”我有些...
    開封第一講書人閱讀 169,716評(píng)論 0 364
  • 文/不壞的土叔 我叫張陵推掸,是天一觀的道長(zhǎng)桶蝎。 經(jīng)常有香客問(wèn)我,道長(zhǎng)谅畅,這世上最難降的妖魔是什么登渣? 我笑而不...
    開封第一講書人閱讀 60,222評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮毡泻,結(jié)果婚禮上胜茧,老公的妹妹穿的比我還像新娘。我一直安慰自己仇味,他們只是感情好呻顽,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,223評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著丹墨,像睡著了一般廊遍。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上带到,一...
    開封第一講書人閱讀 52,807評(píng)論 1 314
  • 那天昧碉,我揣著相機(jī)與錄音,去河邊找鬼揽惹。 笑死被饿,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的搪搏。 我是一名探鬼主播狭握,決...
    沈念sama閱讀 41,235評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼疯溺!你這毒婦竟也來(lái)了论颅?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,189評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤囱嫩,失蹤者是張志新(化名)和其女友劉穎恃疯,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體墨闲,經(jīng)...
    沈念sama閱讀 46,712評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡今妄,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,775評(píng)論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片盾鳞。...
    茶點(diǎn)故事閱讀 40,926評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡犬性,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出腾仅,到底是詐尸還是另有隱情乒裆,我是刑警寧澤,帶...
    沈念sama閱讀 36,580評(píng)論 5 351
  • 正文 年R本政府宣布推励,位于F島的核電站鹤耍,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏吹艇。R本人自食惡果不足惜惰蜜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,259評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望受神。 院中可真熱鬧,春花似錦格侯、人聲如沸鼻听。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,750評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)撑碴。三九已至,卻和暖如春朝墩,著一層夾襖步出監(jiān)牢的瞬間醉拓,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,867評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工收苏, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留亿卤,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,368評(píng)論 3 379
  • 正文 我出身青樓鹿霸,卻偏偏與公主長(zhǎng)得像排吴,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子懦鼠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,930評(píng)論 2 361

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