【Embedding】SDNE:深度學(xué)習(xí)在圖嵌入領(lǐng)域的應(yīng)用

今天學(xué)的論文是清華大學(xué)崔鵬老師工作《Structural Deep Network Embedding》(后簡(jiǎn)稱 SDNE)杨何,并發(fā)表于 2016 KDD俺亮,目前為止共有 880 多引用,是一個(gè)非常經(jīng)典的將深度學(xué)習(xí)應(yīng)用于 NetWork Embedding 的算法罩润。

SDNE 算法是一個(gè)由多層非線形函數(shù)組成的深度學(xué)習(xí)模型玖翅,其可以捕捉高度非線性的網(wǎng)絡(luò)結(jié)構(gòu),同時(shí)聯(lián)合優(yōu)化 first-order 和 second-order 學(xué)習(xí)網(wǎng)絡(luò)結(jié)構(gòu)割以,前者用作監(jiān)督信息以捕捉網(wǎng)絡(luò)局部結(jié)構(gòu)金度,后者用作非監(jiān)督信息以捕捉網(wǎng)絡(luò)全局結(jié)構(gòu),所以 SDNE 是一個(gè)半監(jiān)督的深度學(xué)習(xí)模型严沥。

我相信大家看完這段會(huì)有很多疑問(wèn)猜极,至少我看完有以下疑問(wèn):

  • 多層非線性函數(shù)長(zhǎng)什么樣子?具有非線性激活函數(shù)的多層神經(jīng)網(wǎng)絡(luò)消玄?

  • 如何把 first-order 用作監(jiān)督信息魔吐?

  • 同理,second-order 如何用做非監(jiān)督學(xué)習(xí)莱找?

  • 如何聯(lián)合優(yōu)化酬姆?

  • 深度學(xué)習(xí)模型的 Embedding 怎么得到?還是原來(lái)的那個(gè)輸入矩陣嗎奥溺?

  • 引入深度模型是為了擬合高度非線形的網(wǎng)絡(luò)辞色,那速度怎么樣?可以用于大規(guī)模網(wǎng)絡(luò)嗎浮定?

    帶著問(wèn)題相满,我們來(lái)一起讀一下論文。

    1. Introduction

    在真實(shí)網(wǎng)絡(luò)世界中學(xué)習(xí) NetWork Embedding立美,有三大挑戰(zhàn):

    • 高度非線性:網(wǎng)絡(luò)的底層結(jié)構(gòu)是高度非線性的,使用淺層網(wǎng)絡(luò)無(wú)法捕捉高度非線性的網(wǎng)絡(luò)結(jié)構(gòu)碌更;

    • 結(jié)構(gòu)捕捉:既要捕捉網(wǎng)絡(luò)的局部結(jié)構(gòu),又要捕捉網(wǎng)絡(luò)的全局結(jié)構(gòu)痛单;

    • 稀疏性:大部分真實(shí)網(wǎng)絡(luò)都是稀疏的劲腿,僅利用節(jié)點(diǎn)的有限連接是不夠的。

    為了解決這三大問(wèn)題焦人,作者也提出了三大解決方案:

    • 高度非線性:設(shè)計(jì)了一個(gè)由多層非線性函數(shù)組成的深度網(wǎng)絡(luò)來(lái)學(xué)習(xí) NetWork Embedding,深度網(wǎng)絡(luò)有強(qiáng)大的表示能力來(lái)學(xué)習(xí)網(wǎng)絡(luò)的復(fù)雜結(jié)構(gòu)花椭;而多層非線性函數(shù)可以將數(shù)據(jù)映射到一個(gè)高度非線性的潛在空間,可以更好的捕捉到高度非線性的網(wǎng)絡(luò)結(jié)構(gòu)脉幢;

    • 結(jié)構(gòu)捕捉:將 first-order 和 second-order 聯(lián)合應(yīng)用到網(wǎng)絡(luò)的學(xué)習(xí)過(guò)程中歪沃,前者用于捕捉網(wǎng)絡(luò)局部結(jié)構(gòu),后者用于捕捉網(wǎng)絡(luò)全局結(jié)構(gòu)沪曙;

    • 稀疏性:first-order 是基于節(jié)點(diǎn)間的邊連接奕污,即原始網(wǎng)絡(luò)結(jié)構(gòu);而 second-order 是基于兩個(gè)節(jié)點(diǎn)共享的鄰域連接來(lái)捕捉節(jié)點(diǎn)的相似性液走,且具有 second-order 相似性的節(jié)點(diǎn)數(shù)量更多碳默,如下圖所示,所以加入 second-order 一定程度上緩解了網(wǎng)絡(luò)稀疏的問(wèn)題缘眶。

    fisrt order and second order

    2. SDNE

    我們來(lái)看下 SDNE 具體是怎么實(shí)現(xiàn)的嘱根。

    2.1 Autoencoder

    在介紹 SDNE 的模型架構(gòu)前,我們先補(bǔ)充學(xué)習(xí)一個(gè)基礎(chǔ)知識(shí)——自編碼器巷懈。

    自編碼器(AutoEncoder) 是只有一層隱層節(jié)點(diǎn)该抒,并且輸入和輸出具有相同節(jié)點(diǎn)數(shù)的神經(jīng)網(wǎng)絡(luò),其目的是求函數(shù):顶燕。簡(jiǎn)單放一張圖:

    AutoEncoder

    可以看到凑保,不考慮輸入層偏置項(xiàng)的話冈爹,輸入節(jié)點(diǎn)和輸出節(jié)點(diǎn)是一致的喘帚。那么我們?yōu)槭裁匆@么做呢嫉入?

    舉一個(gè)例子:我們傳輸大文件時(shí)有兩種方式:直接傳或者是壓縮后再傳敛滋。我們通常會(huì)選擇后者蚁署,因?yàn)閴嚎s后不但文件的體積會(huì)變小隙疚,并且在傳輸完成后還可以通過(guò)解壓還原出原來(lái)的文件绿渣。

    而自動(dòng)編碼器也類(lèi)似于這種過(guò)程萌衬,為了盡可能復(fù)現(xiàn)輸入數(shù)據(jù)胰苏,自編碼器必須捕捉輸入數(shù)據(jù)的重要特征癌蓖,從而找到能夠代表原數(shù)據(jù)的主要成分瞬哼,這個(gè)過(guò)程有點(diǎn)類(lèi)似主成分分析(Principal Components Analysis,PCA)租副。

    自編碼器沒(méi)有標(biāo)簽數(shù)據(jù)坐慰,所以是一種非監(jiān)督學(xué)習(xí),前半部分為編碼器用僧,后半部分為解碼器。在實(shí)際應(yīng)用中通常會(huì)使用自編碼器的前半部分糟港。

    SDNE 采用的自編碼器比較深秸抚,有多個(gè)隱藏層剥汤,如下圖所示:

    deep encoder

    自編碼器的隱藏層可以表示為:

    其中吭敢, 為輸入值鹿驼, 為第 k 層的 i 個(gè)節(jié)點(diǎn)的輸出值畜晰, 為第 k 層的參數(shù)矩陣凄鼻, 為第 k 層的偏置項(xiàng)扫步。

    得到 后匈子,我們通過(guò)反轉(zhuǎn)編碼器的計(jì)算過(guò)程得到輸出值 ,自編碼器的目標(biāo)是最小化輸入和輸出的重構(gòu)誤差游岳,所以代價(jià)函數(shù)為:

    2.2 FrameWork

    然后我們來(lái)看下 SDNE 的整體框架:

    Framework of SDNE

    以左邊的為例:輸入為鄰接矩陣胚迫,輸出為重構(gòu)后的鄰接矩陣访锻,通過(guò)優(yōu)化重構(gòu)誤差來(lái)捕捉全局結(jié)構(gòu)特征期犬;而中間一排龟虎, 就是我們需要的 Embedding 向量鲤妥,模型通過(guò)拉普拉斯特征變換(Laplacian Eigenmaps)優(yōu)化的代價(jià)函數(shù)使得相鄰節(jié)點(diǎn)的 Embedding 向量距離更近拱雏,從而捕捉節(jié)點(diǎn)的局部特征古涧。

    PS:個(gè)人猜測(cè):這里框架圖雖然畫(huà)了兩個(gè)自編碼器羡滑,SDNE 應(yīng)該是只有一個(gè)自編碼器柒昏。如果是兩個(gè)的話职祷,共享參數(shù)這個(gè)操作相對(duì)復(fù)雜有梆,而記錄鄰居節(jié)點(diǎn)的 Embedding 向量就比較容易了。

    PS:論文中的圖片畫(huà)錯(cuò)了饺汹,所以我 PS 了一下兜辞。

    2.3 Object Functions

    再來(lái)看一下半監(jiān)督模型的目標(biāo)函數(shù)逸吵,目標(biāo)函數(shù)由代價(jià)函數(shù)和正則項(xiàng)構(gòu)成扫皱,SDNE 的代價(jià)函數(shù)分為兩塊啸罢,一塊是 first-order 胎食,另一塊是 second-order 衩匣。

    我們先來(lái)看一下如何在代價(jià)函數(shù)中加入 second-order 來(lái)捕捉全局網(wǎng)絡(luò)結(jié)構(gòu)琅捏。

    second-order 是基于節(jié)點(diǎn)的鄰域建模的递雀,所以我們定義鄰接矩陣:

    其中缀程, 為節(jié)點(diǎn) 和節(jié)點(diǎn) 之間的邊滤奈,這里考慮加權(quán)邊撩满; 描述了節(jié)點(diǎn) 的的鄰域結(jié)構(gòu)。

    我們將 作為自編碼器的輸入忌锯,即 领炫,由于 反映了節(jié)點(diǎn) 的鄰域結(jié)構(gòu)驹吮,所以通過(guò)自編碼器的重構(gòu)可以使得具有類(lèi)似特征的節(jié)點(diǎn)獲得相似的 Embedding 向量碟狞。

    然而,由于網(wǎng)絡(luò)的稀疏性频祝, 將有大量的非零元素常空,所以如果直接使用鄰接矩陣 S 作為自編碼器的輸入則可能會(huì)重構(gòu)出 S 的零元素漓糙。所以為了解決這問(wèn)題昆禽,我們加大了非零元素的懲罰權(quán)重醉鳖,修正后的代價(jià)函數(shù)為:

    其中盗棵, 表示哈達(dá)瑪積(Hadamard product)纹因,類(lèi)似于向量的內(nèi)積辐怕; ,當(dāng) 時(shí)僵井,批什,否則 驻债。

    Hadamard product:設(shè) 暮的,則

    通過(guò)修正后的自編碼器冻辩,以鄰接矩陣 S 為輸入拆祈,以最小化重構(gòu)誤差為約束咙咽,可以將具有相似鄰域結(jié)構(gòu)節(jié)點(diǎn)的 Embedding 向量映射到相鄰位置淤年,即通過(guò) Second-order 捕捉了網(wǎng)絡(luò)的全局結(jié)構(gòu)互亮。

    同樣的炊昆,模型既要捕捉網(wǎng)絡(luò)的全局結(jié)構(gòu)凤巨,也要保證網(wǎng)絡(luò)的局部結(jié)構(gòu)敢茁。

    我們以 first-order 表示網(wǎng)絡(luò)的局部結(jié)構(gòu)伸刃,使得有連接邊的節(jié)點(diǎn) Embedding 向量相近捧颅,所以代價(jià)函數(shù)為:

    為了保證 first-order 和 second-order 相似性碉哑,我們將代價(jià)函數(shù)聯(lián)合起來(lái)扣典,加上正則項(xiàng)后便得到目標(biāo)函數(shù):

    其中激捏, 為超參, 為正則項(xiàng):

    2.4 Optimization

    SDNE 使用反向傳播來(lái)更新網(wǎng)絡(luò)參數(shù)图柏,但由于模型高度非線性,參數(shù)空間中可能存在許多局部最優(yōu)任连。因此蚤吹,為了得到全局最優(yōu),作者使用深度信念網(wǎng)絡(luò)(Deep Belief Network随抠,以下簡(jiǎn)稱 DBN)對(duì)參數(shù)進(jìn)行預(yù)訓(xùn)練裁着。

    簡(jiǎn)單介紹一下 DBN,DBN 是由 Hinton 大佬在 2006 年提出的一個(gè)概率生成模型拱她,其由多個(gè)受限玻爾茲曼機(jī)(Restricted Boltzmann Machines二驰,以下簡(jiǎn)稱 RBM)組成。所以在介紹 DBN 之前我們先來(lái)介紹下 RBM秉沼,下圖 RBM 的結(jié)構(gòu)圖:

    Restricted Boltzmann Machines

    其中唬复, 層顯層的狀態(tài)向量, 層為隱藏層的狀態(tài)向量评疗,兩層之間的權(quán)重為 瞧毙,每個(gè)神經(jīng)元都有自己的一個(gè)偏置項(xiàng)有巧,對(duì)隱層而言偏置項(xiàng)為 甜橱,對(duì)顯層而言偏置項(xiàng)為 镊掖。

    在 RBM 中归薛,隱層被激活的概率為:

    由于是雙向連接崇猫,所以顯層也同樣可以被激活:

    以上就是 RBM 的基本構(gòu)造過(guò)程屋厘,并不復(fù)雜溢谤。

    我們來(lái)看下工作原理:當(dāng)一條數(shù)據(jù)輸入到顯層時(shí)肝集,RBM 會(huì)根據(jù)公式計(jì)算出每個(gè)隱層被開(kāi)啟的概率浮创,并通過(guò)閾值來(lái)判定是否被激活:

    由此便可以得到隱層的每個(gè)神經(jīng)元是否被激活雏掠,給定隱層時(shí)绑青,顯層的計(jì)算方式一致。

    了解工作原理后榜配,我們來(lái)看下 RBM 的訓(xùn)練方式:

    1. 給定的一條數(shù)據(jù)賦值給顯層 ,并計(jì)算出隱層每個(gè)神經(jīng)元被激活的概率 溃论;
    1. 對(duì)計(jì)算的概率分布進(jìn)行 Gibbs 采樣計(jì)算隱層的輸出值:;
    1. 利用隱層的狀態(tài)向量重構(gòu)顯層,即通過(guò) 層推導(dǎo)出 巧涧,可以計(jì)算出顯層的每個(gè)神經(jīng)元被激活的概率 缩筛;
    1. 同樣利用 Gibbs 采樣計(jì)算顯層重構(gòu)值:;
    1. 重構(gòu)值和原本的輸入值的誤差比較大,所以需要利用反向傳播去更新權(quán)重以縮小誤差识藤;
    1. 重復(fù)迭代柱彻,直到達(dá)到終止條件惩阶。

    DBN 可以視為由多個(gè) RBM 串聯(lián)起來(lái)的結(jié)構(gòu)脐嫂,下圖為最終訓(xùn)練得到的模型:

    Structure of DBN

    在訓(xùn)練時(shí)最下面為第一層結(jié)構(gòu)瑞佩,相鄰兩層構(gòu)成一個(gè) RBM炬丸,必須充分訓(xùn)練 RBM 后才能訓(xùn)練下一個(gè) RBM首启,訓(xùn)練過(guò)程如下圖所示:

    train of DBN

    DBM 是深度學(xué)習(xí)訓(xùn)練中非常有效的參數(shù)初始化方法汁蝶。

    我們現(xiàn)在回過(guò)頭來(lái)簡(jiǎn)要的看下 SDNE 的算法:

    SDNE Algorithm

    2.5 Analysis

    這一節(jié)主要分析一下新節(jié)點(diǎn)的 Embedding 和訓(xùn)練復(fù)雜度:

    • 新節(jié)點(diǎn):如果新節(jié)點(diǎn) 與現(xiàn)有節(jié)點(diǎn)有連接即纲,那么有連接向量: 具帮,可以利用已有的模型去訓(xùn)練得到新節(jié)點(diǎn)的 Embedding 向量,時(shí)間復(fù)雜度為 ;如果沒(méi)有連接蜂厅,那目前的工作就沒(méi)辦法了~匪凡;
    • 時(shí)間復(fù)雜度:時(shí)間復(fù)雜度為 ,其中 n 為節(jié)點(diǎn)數(shù)量掘猿,d 為隱藏層最大維度數(shù)锹雏,c 為網(wǎng)絡(luò)的平均度數(shù),I 為迭代次數(shù)术奖。

    3. Experiments

    我們來(lái)看一下 SDNE 在不同數(shù)據(jù)集下礁遵,采用不同評(píng)價(jià)指標(biāo)(MAP、Precision)的性能表現(xiàn):

    image
    image

    SDNE 在多標(biāo)簽分類(lèi)任務(wù)中的表現(xiàn):

    image

    SDNE 在邊預(yù)測(cè)任務(wù)中的表現(xiàn):

    image

    SDNE 在不同稀疏程度的數(shù)據(jù)集中的表現(xiàn):

    image

    SDNE 的可視化:

    image

    SDNE 的參數(shù)敏感性:

    image

    4. Conclusion

    一句話總結(jié):SDNE 是一個(gè)具有多層非線性函數(shù)的半監(jiān)督深度學(xué)習(xí)模型采记,其利用 first-order 和 second-order 分別捕捉網(wǎng)絡(luò)的局部結(jié)構(gòu)和全局結(jié)構(gòu)佣耐,使得訓(xùn)練出來(lái)的 Embedding 更具魯棒性,并在多個(gè)真實(shí)數(shù)據(jù)集中獲得良好的表現(xiàn)唧龄。

    論文到此就結(jié)束了兼砖,回答一部分看完摘要時(shí)提出的疑問(wèn):

    • 深度模型的 Embedding 還是原來(lái)的那個(gè)輸入矩陣嗎?
    先討論這個(gè)問(wèn)題既棺,Embedding 應(yīng)該是 SDNE 中間 層的輸出值讽挟,對(duì)于每一個(gè)節(jié)點(diǎn)其經(jīng)過(guò)多層非線性網(wǎng)絡(luò)后多會(huì)有不同的輸出值。
    
    • first-order 如何用作監(jiān)督信息丸冕?second-order 又如何用作非監(jiān)督學(xué)習(xí)耽梅?如何聯(lián)合優(yōu)化?
    我是這樣理解的:
    
    
    *   second-order 其代價(jià)函數(shù)是輸入的共現(xiàn)矩陣和重構(gòu)的共現(xiàn)矩陣的誤差胖烛,屬于非監(jiān)督學(xué)習(xí)眼姐;
        
        
    *   而 first-order 的代價(jià)函數(shù)是節(jié)點(diǎn)的 Embedding 向量與鄰居節(jié)點(diǎn)的 Embedding 向量的誤差,對(duì)于當(dāng)前節(jié)點(diǎn)而言佩番,其 Label 是鄰居節(jié)點(diǎn)众旗,所以屬于監(jiān)督學(xué)習(xí);
        
        
    *   聯(lián)合優(yōu)化是指趟畏,把兩個(gè)代價(jià)函數(shù)放在一起計(jì)算總體誤差贡歧,區(qū)別于分開(kāi)訓(xùn)練(還記得哪個(gè)模型是分開(kāi)訓(xùn)練的嗎?)赋秀。
    
    • 引入深度模型是為了擬合高度非線形的網(wǎng)絡(luò)利朵,那速度怎么樣?可以用于大規(guī)模網(wǎng)絡(luò)嗎沃琅?
    論文沒(méi)寫(xiě)哗咆,大概率速度會(huì)很慢,雖然論文時(shí)間復(fù)雜度為 益眉,每一輪迭代的時(shí)間復(fù)雜度與節(jié)點(diǎn)數(shù)量成線性關(guān)系晌柬,但我覺(jué)得有兩個(gè) Bug:
    
    
    *   論文中指出 d 為隱層最大維度數(shù)(d is the maximum dimension of the hidden layer)姥份,但我覺(jué)得應(yīng)該算成 sum 而不是 max,當(dāng)然也要考慮是否采用 Negative Sampling年碘、Dropout 等優(yōu)化方式澈歉;
        
        
    *   SDNE 需要 DBN 進(jìn)行預(yù)訓(xùn)練,這個(gè)時(shí)間也應(yīng)該加上去屿衅,雖然 DBN 的預(yù)訓(xùn)練會(huì)加速 SDNE 的收斂埃难,DBN 本身訓(xùn)練過(guò)程就比較慢;
        
        
    
    但 Embedding 通常是離線操作涤久,如果其訓(xùn)練時(shí)間可以接受涡尘,也不一定非要非常快的速度响迂。
    

    5. Reference

    1. 《Structural Deep Network Embedding》
    1. 《深度學(xué)習(xí)之a(chǎn)utoencoder》
    1. Upadhyay, Rishabh. (2017). Accent Classification Using Deep Belief Network.
    1. 《深度學(xué)習(xí)讀書(shū)筆記之RBM(限制波爾茲曼機(jī))》
    關(guān)注公眾號(hào)跟蹤最新內(nèi)容:**阿澤的學(xué)習(xí)筆記**考抄。
    
    
    
    ![阿澤的學(xué)習(xí)筆記](méi)(https://upload-images.jianshu.io/upload_images/21345044-bf1e7097628b4af8.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市蔗彤,隨后出現(xiàn)的幾起案子川梅,更是在濱河造成了極大的恐慌,老刑警劉巖然遏,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贫途,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡待侵,警方通過(guò)查閱死者的電腦和手機(jī)丢早,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)诫给,“玉大人香拉,你說(shuō)我怎么就攤上這事≈锌瘢” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵扑毡,是天一觀的道長(zhǎng)胃榕。 經(jīng)常有香客問(wèn)我,道長(zhǎng)瞄摊,這世上最難降的妖魔是什么勋又? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮换帜,結(jié)果婚禮上楔壤,老公的妹妹穿的比我還像新娘。我一直安慰自己惯驼,他們只是感情好蹲嚣,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布递瑰。 她就那樣靜靜地躺著,像睡著了一般隙畜。 火紅的嫁衣襯著肌膚如雪抖部。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,718評(píng)論 1 305
  • 那天议惰,我揣著相機(jī)與錄音慎颗,去河邊找鬼。 笑死言询,一個(gè)胖子當(dāng)著我的面吹牛俯萎,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播运杭,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼讯屈,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了县习?” 一聲冷哼從身側(cè)響起涮母,我...
    開(kāi)封第一講書(shū)人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎躁愿,沒(méi)想到半個(gè)月后叛本,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡彤钟,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年来候,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片逸雹。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡营搅,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出梆砸,到底是詐尸還是另有隱情转质,我是刑警寧澤,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布帖世,位于F島的核電站休蟹,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏日矫。R本人自食惡果不足惜赂弓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望哪轿。 院中可真熱鬧盈魁,春花似錦、人聲如沸窃诉。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至按脚,卻和暖如春于毙,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背辅搬。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工唯沮, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人堪遂。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓介蛉,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親溶褪。 傳聞我的和親對(duì)象是個(gè)殘疾皇子币旧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355