機(jī)器學(xué)習(xí)算法-蒸餾學(xué)習(xí)

姓名:陳婷

學(xué)號:19021210968

轉(zhuǎn)載:https://baijiahao.baidu.com/s?id=1598625949059208402&wfr=spider&for=pc

【嵌牛導(dǎo)讀】深度學(xué)習(xí)作為當(dāng)今人工智能領(lǐng)域皇冠上最璀璨的明珠胆敞,如果要想將其推向工業(yè)級的應(yīng)用族吻,則往往需要可望而不可及的強(qiáng)大算力拉馋!而這種算力則是由價(jià)格高昂的硬件谬擦、龐大而復(fù)雜的分布式計(jì)算環(huán)境榄鉴、精妙高效的算法作為支撐的。由于基礎(chǔ)架構(gòu)的限制(分布式計(jì)算節(jié)點(diǎn)的通信侨糟、同步耀态、任務(wù)調(diào)度等問題)、對模型進(jìn)行優(yōu)化求解的障礙轧粟、集成學(xué)習(xí)環(huán)境下各模型的貢獻(xiàn)缺乏好的決策甚疟,使得盲目的堆砌計(jì)算資源也可能觸碰到模型性能的天花板(例如:分布式隨機(jī)梯度下降(distrtibuted SGD))。如果優(yōu)化模型逃延,將精華部分蒸餾出來,這就是我們今天要講的算法轧拄。

【嵌牛鼻子】深度學(xué)習(xí) 模型遷移 遷移學(xué)習(xí)??Hinton??蒸餾學(xué)習(xí)

【嵌牛提問】 我們?yōu)槭裁葱枰诰€蒸餾揽祥?蒸餾算法提出的意義與能夠解決的問題?蒸餾算法實(shí)現(xiàn)流程檩电?

【嵌牛正文】

Hinton 團(tuán)隊(duì)最近發(fā)表了一篇關(guān)于「在線蒸餾」的新論文拄丰。論文里講了什么呢?

近年來俐末,隨著深度學(xué)習(xí)技術(shù)的蓬勃發(fā)展料按,我們?nèi)粘I畹拿總€(gè)角落都充滿了「人工智能」的影子,并由此催生了許多新的業(yè)態(tài)卓箫、以人工智能應(yīng)用為核心產(chǎn)品的初創(chuàng)公司也如雨后春筍般在科技行業(yè)中嶄露頭角载矿。是的,這也許是人工智能(特別是深度學(xué)習(xí))最好的時(shí)代烹卒。

然而闷盔,深度學(xué)習(xí)作為當(dāng)今人工智能領(lǐng)域皇冠上最璀璨的明珠弯洗,如果要想將其推向工業(yè)級的應(yīng)用,則往往需要可望而不可及的強(qiáng)大算力逢勾!而這種算力則是由價(jià)格高昂的硬件牡整、龐大而復(fù)雜的分布式計(jì)算環(huán)境、精妙高效的算法作為支撐的溺拱√颖矗可想而知,除了 Google迫摔、Amazon沐扳、阿里巴巴、百度等掌握強(qiáng)大計(jì)算資源的科技巨頭外攒菠,想獲得這樣的計(jì)算資源對于小型企業(yè)或者個(gè)人用戶可謂是天方夜譚迫皱。實(shí)際上,在很多普通的高等院校和科研單位中辖众,擁有像 Titan X 或 GTX 1080 Ti 這樣的民用顯卡已經(jīng)是很奢侈的事情卓起。更重要的是,由于基礎(chǔ)架構(gòu)的限制(分布式計(jì)算節(jié)點(diǎn)的通信凹炸、同步戏阅、任務(wù)調(diào)度等問題)、對模型進(jìn)行優(yōu)化求解的障礙啤它、集成學(xué)習(xí)環(huán)境下各模型的貢獻(xiàn)缺乏好的決策奕筐,使得盲目的堆砌計(jì)算資源也可能觸碰到模型性能的天花板(例如:分布式隨機(jī)梯度下降(distrtibuted SGD))。

為此变骡,「深度學(xué)習(xí)泰斗」Geoffrey E.Hinton 近年來在知識蒸餾(或者「暗知識提取」)方面做了一系列工作离赫,試圖通過這種從高計(jì)算能力要求、同時(shí)也具有高表現(xiàn)的模型中提取出一些隱含的知識塌碌,并且將其作為先驗(yàn)渊胸,通過設(shè)計(jì)新的網(wǎng)絡(luò)結(jié)構(gòu)和目標(biāo)函數(shù)將這種知識「傳授」給規(guī)模較小的深度學(xué)習(xí)網(wǎng)絡(luò),實(shí)現(xiàn)對網(wǎng)絡(luò)模型的壓縮台妆,以顯著縮小的網(wǎng)絡(luò)規(guī)模和計(jì)算需求展現(xiàn)出盡量高的模型表現(xiàn)翎猛。最近,為了將這種思想部署在分布式環(huán)境中接剩,用以突破如今常常被使用的分布式 SGD(同步和異步形式)的瓶頸切厘,Hinton 團(tuán)隊(duì)又發(fā)布了名為「LARGE SCALE DISTRIBUTED NEURAL NETWORK TRAINING THROUGH ONLINE DISTILLATION」(通過在線蒸餾的神經(jīng)網(wǎng)絡(luò)大規(guī)模分布式訓(xùn)練)的論文。在筆者看來懊缺,Hinton 的這一系列工作進(jìn)一步降低了深度學(xué)習(xí)模型應(yīng)用的門檻疫稿,之前的研究對深度學(xué)習(xí)模型在移動(dòng)終端上的部署、這篇論文對提高大規(guī)模計(jì)算集群上的模型表現(xiàn)和計(jì)算效率都有深遠(yuǎn)意義。

論文地址:

知識蒸餾的前世今生

要想理解「在線蒸餾」的概念而克,我們有必要回顧一下 Hinton 從 2014 年開始對 dark knowledge extraction(暗知識提劝凶场) 和 knowledge distillation(知識蒸餾)的相關(guān)工作,甚至更早的 Caruana et.al 所做的模型壓縮的工作员萍。

為了提升神經(jīng)網(wǎng)絡(luò)模型的性能腾降,Caruana 等人早在 2006 年(那時(shí)深度學(xué)習(xí)還沒有大火)就提出了一種壓縮大規(guī)模復(fù)雜網(wǎng)絡(luò)的方法。由于集成學(xué)習(xí)在傳統(tǒng)的機(jī)器學(xué)習(xí)領(lǐng)域大獲成功碎绎,許多深度學(xué)習(xí)研究人員很自然地想要利用集成學(xué)習(xí)的思想螃壤,將大量的模型聚合到一個(gè)神經(jīng)網(wǎng)絡(luò)中,通過暴力的訓(xùn)練筋帖,為不同的模型賦予不同的權(quán)值奸晴,對這些模型的輸出進(jìn)行加權(quán)平均得到最終的結(jié)果,以便充分利用它們各自對于不同的任務(wù)所具有的優(yōu)勢日麸。然而寄啼,這種暴力的訓(xùn)練過程和臃腫的網(wǎng)絡(luò)結(jié)構(gòu)需要消耗巨大的計(jì)算資源、造成額外的能源消耗代箭。Caruana 等人提出了 MUNGE 的數(shù)據(jù)增強(qiáng)算法墩划,將大規(guī)模模型學(xué)習(xí)到的函數(shù)壓縮進(jìn)規(guī)模更小、訓(xùn)練更便捷的模型中嗡综。

受此啟發(fā)乙帮,時(shí)隔 8 年后,當(dāng)深度學(xué)習(xí)迎來春天极景、人們沉醉于大規(guī)模深度學(xué)習(xí)網(wǎng)絡(luò)帶來的人工智能在計(jì)算機(jī)視覺察净、自然語言處理等方面的成功應(yīng)用的時(shí)候,宗師 Hinton 則認(rèn)為盼樟,是時(shí)候回過頭來看看 Caruana 的文章氢卡,思考如何將這些「丑陋的」大規(guī)模的模型壓縮到小而快的模型中去。

由此晨缴,Hinton 提出了「dark knowledge」的概念异吻。在他看來,這種被稱為「暗知識」的東西才是深度學(xué)習(xí)本質(zhì)上學(xué)到的知識(或許這也是尋求深度學(xué)習(xí)可解釋性的一種途徑)喜庞。Dark knowledge,顧名思義棋返,就是隱藏在深度學(xué)習(xí)表面上所展現(xiàn)出來的網(wǎng)絡(luò)結(jié)構(gòu)延都、節(jié)點(diǎn)之間的連接權(quán)重、網(wǎng)絡(luò)的輸出這些看得到的數(shù)據(jù)之下的知識睛竣。如果能夠找到一種途徑晰房,使得我們能夠獲取這種知識,并且將其包裝成一種先驗(yàn)概率,遷移到更小的模型中去殊者,是否能夠提升小模型的性能呢与境?事實(shí)上,筆者認(rèn)為猖吴,這也可以看作是在遷移學(xué)習(xí)的框架下摔刁,將大規(guī)模網(wǎng)絡(luò)視作信息充分的 source domain,將小規(guī)模網(wǎng)絡(luò)視作需要大規(guī)模網(wǎng)絡(luò)補(bǔ)充信息的 target domain海蔽,而我們提取到的 dark knowledge 則是兩個(gè)任務(wù)之間的 common knowledge共屈。

然而,該從哪里下手党窜,獲取這種知識呢拗引?Hinton 敏銳地觀察到:我們在絕大多數(shù)的預(yù)測任務(wù)的深度學(xué)習(xí)網(wǎng)絡(luò)中,都會使用 softmax layer 為大量的標(biāo)簽分配概率分布幌衣。然而這種處理方式存在一個(gè)負(fù)作用:與正確標(biāo)簽相比矾削,模型為所有的誤標(biāo)簽都分配了很小的概率;然而實(shí)際上對于不同的錯(cuò)誤標(biāo)簽豁护,其被分配的概率仍然可能存在數(shù)個(gè)量級的懸殊差距哼凯。例如:在圖片分類問題中,我們要將圖片分成貓择镇、狗挡逼、老虎三類。在一次訓(xùn)練中腻豌,我們給三類分配的概率分別為 [0.0010, 0.0001, 0.9989]家坎,從而最終得到 [0,0吝梅,1] 的 one-hot 編碼作為分類結(jié)果(即 hard-target)虱疏,我們認(rèn)為圖片所代表的是一只老虎。然而苏携,softmax 函數(shù)輸出的概率往往包含著類別之間潛在的相關(guān)性做瞪。在這個(gè)例子中梭冠,我們可以看到扇救,圖片可能是貓的概率比圖片是狗的概率更接近圖片是老虎的概率,這說明貓和老虎之間存在的內(nèi)在聯(lián)系更加強(qiáng)大荷愕。類似地纱扭,Hinton 也舉例說:在識別一輛寶馬汽車的圖片時(shí)牍帚,分類器將該圖片識別為清潔車的概率是很小的,然而這種概率比起將其識別為胡蘿卜的可能是會大出很多乳蛾。由于在宏觀上由于這些概率都很小暗赶,這一部分的知識很容易在訓(xùn)練過程中淹沒鄙币,這無疑是浪費(fèi)了重要的可以用于將大規(guī)模網(wǎng)絡(luò)的知識遷移到小規(guī)模網(wǎng)絡(luò)中去的寶貴先驗(yàn)概率。

為了充分利用這種類類別之間的相關(guān)性蹂随,我們需要通過某種方式去改變概率分布十嘿,使其更加平緩。而 Hinton 僅僅對我們經(jīng)常使用的 softmax 函數(shù)進(jìn)行了一點(diǎn)點(diǎn)修改岳锁,就達(dá)到了這一目標(biāo)绩衷,他究竟是怎么做的呢?

事實(shí)上浸锨,如下面的公式所示唇聘,Hinton 向 softmax 函數(shù)添加了一點(diǎn)「佐料」——參數(shù)「T, 溫度」(如今 T 已經(jīng)成為了許多深度學(xué)習(xí)模型的標(biāo)配,例如在生成文本的 RNN 中提高 T 可以增加生成文本的多樣性):

其中柱搜,z 為每一個(gè)類別輸入的 logit迟郎。式中 T=1 時(shí),退化成傳統(tǒng)的 softmax聪蘸;T無窮大時(shí)宪肖,結(jié)果趨近于 1/C,即所有類別上的概率趨近于相等健爬。T>1 時(shí)控乾,我們就能獲得 soft target label。通過提高 T娜遵,softmax層的映射曲線更加平緩蜕衡,因而實(shí)例的概率映射將更為集中,便使得目標(biāo)更加地「soft」设拟。

有了這個(gè) distillation 的內(nèi)核慨仿,Hinton 按照以下的步驟對大規(guī)模網(wǎng)絡(luò)進(jìn)行「蒸餾」:

知識蒸餾示意圖,本圖作者YJango)

1. 訓(xùn)練大模型:先用 hard target(類似于 [0纳胧,0镰吆,1] 的 one-hot 編碼)的樣本訓(xùn)練。

2. 計(jì)算 soft target:利用訓(xùn)練好的大模型來計(jì)算 soft target 跑慕。也就是大模型「軟化后」再經(jīng)過 softmax 的輸出万皿。

3. 重新創(chuàng)建一個(gè)小的網(wǎng)絡(luò),該網(wǎng)絡(luò)最后有兩個(gè) loss核行,一個(gè)是 hard loss牢硅,即傳統(tǒng)的 softmax loss,使用 one-hot label芝雪;另外一個(gè)是 soft loss减余,即 T>1 的 softmax loss,使用我們第二步保存下來的 soft target label绵脯。

整體的 loss 如下式:

其中

為第二步輸出的 soft label佳励。

用「軟化」訓(xùn)練集訓(xùn)練小模型。訓(xùn)練小模型時(shí) T 不變?nèi)匀惠^大蛆挫,訓(xùn)練完之后 T 改為1赃承。

4. 預(yù)測時(shí),將訓(xùn)練好的小模型按常規(guī)方式使用悴侵。

現(xiàn)在我們可以把 Hinton 的方法和下圖所示的最初 knowledge distillation 的由來作個(gè)對比瞧剖。

可見,本質(zhì)上這相當(dāng)于對數(shù)據(jù)進(jìn)行了增強(qiáng)(augmentation)可免,加入了類別之間的關(guān)聯(lián)性的先驗(yàn)信息抓于。將大規(guī)模網(wǎng)絡(luò)學(xué)習(xí)到的這種關(guān)系包裝在數(shù)據(jù)中,用這種更強(qiáng)的數(shù)據(jù)來訓(xùn)練小規(guī)模的模型浇借,充分考慮到了類間的距離和類內(nèi)的方差信息捉撮。從而提升了小規(guī)模模型的性能,達(dá)到了「蒸餾」的效果妇垢。與直接使用預(yù)訓(xùn)練模型的結(jié)構(gòu)和權(quán)重相比巾遭,這是一種相對更「高級」的知識遷移的方式。

在線蒸餾闯估?新瓶裝舊酒灼舍?

時(shí)間的車輪一眨眼就駛向了 2018 年,隨著移動(dòng)終端上的深度學(xué)習(xí)等應(yīng)用的出現(xiàn)涨薪,網(wǎng)絡(luò)模型壓縮成為了一個(gè)廣受關(guān)注的領(lǐng)域骑素,大量的研究者在 Hinton 的啟發(fā)下,退出了 distillation 的諸多變形刚夺,進(jìn)行了深入的優(yōu)化献丑。Hinton 則一如既往地嘗試開拓更多新的深度學(xué)習(xí)范式;當(dāng)然也可能是谷歌的計(jì)算資源太過充足所以遇到了別人沒有機(jī)會遇到的問題(給跪)光督,Hinton 開始嘗試在大規(guī)模分布式計(jì)算環(huán)境下使用「在線蒸餾(online distillation)」方法阳距。這是由于目前的分布式 SGD 方法遇到了瓶頸。而本地的「蒸餾」算法也因其對數(shù)據(jù)管道的計(jì)算操作過于復(fù)雜而暴露出越來越多的問題结借。

具體而言筐摘,在分布式 SGD 中,由于邊際效益遞減的規(guī)律船老,增加參與訓(xùn)練的機(jī)器數(shù)量而獲得的計(jì)算效率的提升漸漸變小咖熟,直到毫無效果。另一方面柳畔,他們也想使用集成的深度學(xué)習(xí)模型提高預(yù)測的準(zhǔn)確率馍管。為了在不增加測試時(shí)間成本的情況下獲得與集成學(xué)習(xí)同等的收益,他們對一個(gè) n 路集成模型進(jìn)行蒸餾(distill)薪韩,得到一個(gè)單一模型确沸,這包括兩個(gè)階段:

使用 M 機(jī)器來訓(xùn)練分布式 SGD 的 n 路集成模型捌锭,然后使用 M 機(jī)器(T 不變)來訓(xùn)練 student 網(wǎng)絡(luò)(小規(guī)模網(wǎng)絡(luò)),這個(gè)小規(guī)模網(wǎng)絡(luò)會模擬這個(gè) n 路集成模型罗捎。通過在訓(xùn)練過程中使用更多機(jī)器观谦,蒸餾會增加訓(xùn)練時(shí)間和計(jì)算復(fù)雜度,以換取接近更大的 teacher 集成模型的質(zhì)量改進(jìn)桨菜。

Hinton 他們將這種在線的蒸餾方式稱為「codistillation」:即分布式環(huán)境中的每個(gè)節(jié)點(diǎn)之間都可以互為 teacher 和 student豁状,并且互相提取內(nèi)在的知識,用以提升其它節(jié)點(diǎn)的模型性能倒得,具體的算法如下:

如算法 1 中所示泻红,為了突破分布式 SGD 的瓶頸,Hinton 他們利用蒸餾算法提高了模型的訓(xùn)練效率霞掺。使用蒸餾方法更新一個(gè)網(wǎng)絡(luò)的參數(shù)只需要對其他網(wǎng)絡(luò)的預(yù)測結(jié)果谊路,這些網(wǎng)絡(luò)可以利用其他網(wǎng)絡(luò)權(quán)重的副本進(jìn)行本地計(jì)算。

值得注意的是根悼,即使教師模型和學(xué)生模型是同一神經(jīng)網(wǎng)絡(luò)的兩個(gè)實(shí)例凶异,蒸餾也有好處,只要它們有足夠的區(qū)別(比如挤巡,不同的初始化剩彬、以不同的順序接收輸入樣本;可以參見論文第 3 節(jié)的經(jīng)驗(yàn)證據(jù))矿卑。這也說明這種「在線蒸餾」的方法是具有很強(qiáng)的普適性的喉恋。

Hinton 他們在這個(gè)工作中將蒸餾技術(shù)和分布式 SGD 相結(jié)合,從而使一個(gè)分布式 SGD 的工作組內(nèi)的各個(gè)節(jié)點(diǎn)能夠交換檢查點(diǎn)(checkpoint)保存的網(wǎng)絡(luò)信息母廷,利用這種信息作為蒸餾出來的知識轻黑,通過「老師-學(xué)生」的訓(xùn)練,加速學(xué)生網(wǎng)絡(luò)的訓(xùn)練琴昆。在這個(gè)過程中氓鄙,學(xué)生節(jié)點(diǎn)和老師結(jié)點(diǎn)的角色是互換的,因此业舍,各個(gè)網(wǎng)絡(luò)互相促抖拦,進(jìn)從而實(shí)現(xiàn)共同的蒸餾。

其實(shí)舷暮,就算「在線蒸餾」是新瓶裝舊酒态罪,那也是一個(gè)非常恰當(dāng)?shù)模W閃發(fā)光的新瓶子下面。它利用蒸餾技術(shù)复颈,降低了分布式 SGD 的通信開銷,成功提高了預(yù)測的準(zhǔn)確率沥割,提升模型的計(jì)算性能耗啦!

結(jié)語

筆者通過這篇文章和大家一起回顧了知識蒸餾的相關(guān)知識凿菩,并且粗淺地了解了 Hinton 在這個(gè)領(lǐng)域所做的最新工作。我們可以看到帜讲,Hinton 作為一代宗師蓄髓,每次都能夠以超過常人的眼光發(fā)現(xiàn)研究的新方向,并且提出簡單舒帮、美、效果卓越的解決方案陡叠,這與他對自然玩郊、對生物的神經(jīng)系統(tǒng)、對生活枉阵、對所面臨的問題的犀利的觀察是密不可分的译红。這激勵(lì)著所有的人工智能研究者開拓視野、放飛心靈兴溜,充滿創(chuàng)造力地去探索新的未知領(lǐng)域侦厚。雷鋒網(wǎng) AI 科技評論這樣的學(xué)術(shù)媒體也會不斷地把最新的學(xué)術(shù)研究進(jìn)展介紹給大家

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市拙徽,隨后出現(xiàn)的幾起案子刨沦,更是在濱河造成了極大的恐慌,老刑警劉巖膘怕,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件想诅,死亡現(xiàn)場離奇詭異,居然都是意外死亡岛心,警方通過查閱死者的電腦和手機(jī)来破,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來忘古,“玉大人徘禁,你說我怎么就攤上這事∷杩埃” “怎么了送朱?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長旦袋。 經(jīng)常有香客問我骤菠,道長,這世上最難降的妖魔是什么疤孕? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任商乎,我火速辦了婚禮,結(jié)果婚禮上祭阀,老公的妹妹穿的比我還像新娘鹉戚。我一直安慰自己鲜戒,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布抹凳。 她就那樣靜靜地躺著遏餐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪赢底。 梳的紋絲不亂的頭發(fā)上失都,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天,我揣著相機(jī)與錄音幸冻,去河邊找鬼粹庞。 笑死,一個(gè)胖子當(dāng)著我的面吹牛洽损,可吹牛的內(nèi)容都是我干的庞溜。 我是一名探鬼主播,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼碑定,長吁一口氣:“原來是場噩夢啊……” “哼流码!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起延刘,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤漫试,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后碘赖,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體商虐,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年崖疤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了秘车。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,503評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡劫哼,死狀恐怖叮趴,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情权烧,我是刑警寧澤眯亦,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站般码,受9級特大地震影響妻率,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜板祝,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一宫静、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦孤里、人聲如沸伏伯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽说搅。三九已至,卻和暖如春虏等,著一層夾襖步出監(jiān)牢的瞬間弄唧,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工霍衫, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留套才,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓慕淡,卻偏偏與公主長得像,于是被迫代替她去往敵國和親沸毁。 傳聞我的和親對象是個(gè)殘疾皇子峰髓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評論 2 359