科普 | Google Brain研究工程師:為什么隨機(jī)性對(duì)于深度學(xué)習(xí)如此重要换怖?

作者:Eric Jang沉颂,Google Brain研究工程師
譯者:任杰驥 徐君(君君)

在一個(gè)怡人的午后悦污,我開(kāi)始嘗試著用通俗易懂的語(yǔ)言向我媽媽解釋隨機(jī)性對(duì)于深度學(xué)習(xí)的重要性。盡管我媽媽還是對(duì)于深度學(xué)習(xí)一知半解彻坛,但是我認(rèn)為我的努力部分成功了,我迷上了這種方式并將他應(yīng)用在了我的實(shí)際工作中小压。
我想將這篇稍具技術(shù)性的小文章送給在深度學(xué)習(xí)領(lǐng)域的實(shí)踐者怠益,希望大家能夠?qū)ι窠?jīng)網(wǎng)絡(luò)內(nèi)部的運(yùn)行過(guò)程有更好的理解。

如果你是一個(gè)剛剛?cè)腴T的新手烤咧,那么你有可能會(huì)覺(jué)得一大堆技術(shù)被隨意的一股腦的用在了訓(xùn)練神經(jīng)網(wǎng)絡(luò)上抢呆,例如dropout正則化、擴(kuò)增梯度噪聲昌阿、異步隨機(jī)下降恳邀。那這些技術(shù)有什么相同的呢?答案是他們都利用了隨機(jī)性刷钢。

隨機(jī)性是深度神經(jīng)網(wǎng)絡(luò)正常運(yùn)行的關(guān)鍵:
1乳附、隨機(jī)噪聲使得神經(jīng)網(wǎng)絡(luò)在單輸入的情況下產(chǎn)生多輸出的結(jié)果;
2阱缓、隨機(jī)噪音限制了信息在網(wǎng)絡(luò)中的流向,促使網(wǎng)絡(luò)學(xué)習(xí)數(shù)據(jù)中有意義的主要信息厂抖;
3祭犯、隨機(jī)噪聲在梯度下降的時(shí)候提供了“探索能量”滚停,使得網(wǎng)絡(luò)可以尋找到更好的優(yōu)化結(jié)果键畴。

單輸入多輸出


讓我們假設(shè)你正在訓(xùn)練一個(gè)深度神經(jīng)網(wǎng)絡(luò)去實(shí)現(xiàn)分類突雪。


對(duì)于圖中的每一個(gè)區(qū)域涡贱,網(wǎng)絡(luò)會(huì)學(xué)習(xí)將圖像映射到一系列的詞語(yǔ)標(biāo)簽上问词,例如“狗”或者“人”。這樣的分類表現(xiàn)很不錯(cuò)辰狡,并且這樣的深度神經(jīng)網(wǎng)絡(luò)不需要在推理模型中加入隨機(jī)性垄分。畢竟任何一張狗的圖片應(yīng)該被映射到“狗”這個(gè)詞語(yǔ)標(biāo)簽上,這沒(méi)有任何的隨機(jī)性叫倍。

現(xiàn)在讓我們來(lái)假設(shè)你在訓(xùn)練一個(gè)深度神經(jīng)網(wǎng)絡(luò)下圍棋嘿般,在下圖這樣的情況下涯冠,深度神經(jīng)網(wǎng)絡(luò)需要落下第一個(gè)棋子蛇更。如果我們還是使用確定不變的策略,那么將無(wú)法得出一個(gè)好的結(jié)果砸逊。你可能會(huì)問(wèn)掌逛,為什么啊篓像?因?yàn)樵谶@樣的情況下最優(yōu)的“第一步”選擇不是唯一的皿伺,對(duì)于棋盤上的每一個(gè)位置來(lái)說(shuō),他們都和對(duì)面位置具有旋轉(zhuǎn)對(duì)稱性奠滑,所以具有相同的機(jī)會(huì)成為較優(yōu)的選擇。這是一個(gè)多元最優(yōu)問(wèn)題摊崭。如果神經(jīng)網(wǎng)絡(luò)的策略是確定并且是單輸入單輸出的話杰赛,優(yōu)化過(guò)程會(huì)迫使網(wǎng)絡(luò)選擇移向所有最佳答案的平均位置,而這個(gè)結(jié)果不偏不倚的落在了棋盤的中心阔墩,這恰恰在圍棋里被認(rèn)為是一個(gè)糟糕的先手瓶珊。

所以伞芹,隨機(jī)性對(duì)于一個(gè)想輸出多元最優(yōu)估計(jì)的網(wǎng)絡(luò)十分重要,而不是一遍遍重復(fù)輸出相同的結(jié)果扎唾。當(dāng)行動(dòng)空間暗含對(duì)稱性的情況下南缓,隨機(jī)性一個(gè)十分關(guān)鍵的因素,在隨機(jī)性的幫助下纸镊,我們可以打破夾雜中間不能自拔的對(duì)稱悖論概疆。

同樣的,如果我們想訓(xùn)練一個(gè)神經(jīng)網(wǎng)絡(luò)去作曲或者畫畫凯旭,我們當(dāng)然不希望它總是演奏相同的音樂(lè)使套,描繪單調(diào)重復(fù)的場(chǎng)景童漩。我們期待得到變化的韻律,驚喜的聲音和創(chuàng)造性的表現(xiàn)差凹。在結(jié)合隨機(jī)性的深度神經(jīng)網(wǎng)絡(luò)中,一方面保持了網(wǎng)絡(luò)的確定性危尿,但是另一方面將其輸出變成為概率分布的參數(shù)谊娇,使得我們可以利用卷積采樣方法畫出具有隨機(jī)輸出特性的樣例圖片。

DeepMind的阿法狗采用了這樣的原則:基于一個(gè)給定的圍棋盤圖片赠堵,輸出每一種走棋方式的獲勝的概率法褥。這種網(wǎng)絡(luò)輸出的分布建模被廣泛應(yīng)用與其他深度強(qiáng)化學(xué)習(xí)領(lǐng)域。

隨機(jī)性與信息論


在剛剛接觸概率論與數(shù)理統(tǒng)計(jì)時(shí)揍愁,我十分糾結(jié)于理解隨機(jī)性的物理含義莽囤。拋一枚硬幣時(shí)切距,結(jié)果的隨機(jī)性來(lái)自哪里?隨機(jī)性是否僅僅是確定性混沌饵沧?是否可以做到絕對(duì)的隨機(jī)赌躺?

老實(shí)地說(shuō)羡儿,我還是沒(méi)有完全弄明白這些問(wèn)題掠归。

信息論中將隨機(jī)性定義為信息的缺失。具體來(lái)說(shuō)一個(gè)物體的信息便是在計(jì)算機(jī)程序里能確定描述它的最小字節(jié)數(shù)肤粱。例如π的前一百萬(wàn)個(gè)字節(jié)可以被表示為字節(jié)長(zhǎng)度為1,000,002個(gè)字符厨相,但是同樣也可以被完整的用70個(gè)字符表示出來(lái)鸥鹉,如下用萊布尼茨公式所示:

r=0.0
for n in range(1000000):
     r+=(-1.0)**n/(2.0*n+1.0)
print(4*r)

上面的公式是π的一百萬(wàn)個(gè)數(shù)據(jù)的壓縮表示毁渗。而更為精確的公式可以將π的前一百萬(wàn)個(gè)數(shù)據(jù)表示為更少的比特单刁。從這個(gè)角度去解釋的話,隨機(jī)性是不可以被壓縮的量肺樟。π的前一百萬(wàn)個(gè)量可以被壓縮說(shuō)明它們不是隨機(jī)的逻淌。經(jīng)驗(yàn)證據(jù)表明π是一個(gè)正規(guī)數(shù)(normal number)恍风,π中編碼的信息時(shí)無(wú)窮的。

我們現(xiàn)在考慮用數(shù)字a表示π的前萬(wàn)億個(gè)位數(shù)凯楔,如a=3.14159265...锦募。如果我們?cè)谄渲屑由弦粋€(gè)隨機(jī)數(shù)r屬于(-0.01,0.01),我們將會(huì)得到一個(gè)處于3.14059...和3.14259...之間的數(shù)虐骑。那么a+r里的有效信息只有三位數(shù)赎线,因?yàn)榧有噪S機(jī)噪聲破壞了百位小數(shù)以后數(shù)位攜帶的信息垂寥。

迫使深度神經(jīng)網(wǎng)絡(luò)學(xué)到簡(jiǎn)潔表示

這個(gè)隨機(jī)性的定義(指"隨機(jī)性定義為信息的缺失",譯者注)與隨機(jī)性有什么聯(lián)系呢狭归?

隨機(jī)性嵌入到深度神經(jīng)網(wǎng)絡(luò)的另一種途徑是直接將噪聲嵌入到網(wǎng)絡(luò)本身文判,這與用深度神經(jīng)網(wǎng)絡(luò)去模擬一個(gè)分布不同戏仓。這種途徑使得學(xué)習(xí)任務(wù)變得更加困難亡鼠,因?yàn)榫W(wǎng)絡(luò)需要克服這些內(nèi)在的“擾動(dòng)”灰嫉。

我們到底為什么想要在網(wǎng)絡(luò)中引入噪聲讼撒?一個(gè)基本的直覺(jué)是噪聲能夠限制數(shù)據(jù)通過(guò)網(wǎng)絡(luò)傳輸?shù)男畔⑷萘俊?/p>

我們可以參考自動(dòng)編碼(auto-encoder)模型,這種神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)嘗試通過(guò)“壓縮”輸入數(shù)據(jù)钳幅、在隱含層得到更低維度的表示來(lái)得到有效的編碼炎滞,并且在輸出層重構(gòu)原始數(shù)據(jù)册赛。下面是一個(gè)示意圖:

在訓(xùn)練過(guò)程中,輸入數(shù)據(jù)從左邊通過(guò)網(wǎng)絡(luò)的節(jié)點(diǎn)牡属,在右邊出來(lái)扼睬,非常像一個(gè)管道窗宇。

假設(shè)我們有一個(gè)理論上存在的神經(jīng)網(wǎng)絡(luò),其可以在實(shí)數(shù)(而不是浮點(diǎn)數(shù))上訓(xùn)練侥加。如果該網(wǎng)絡(luò)中沒(méi)有噪聲蝇完,那么深度神經(jīng)網(wǎng)絡(luò)的每一層實(shí)際上都在處理無(wú)窮多的信息量。盡管自動(dòng)編碼網(wǎng)絡(luò)可以把一個(gè)1000維的數(shù)據(jù)壓縮到1維,但是這個(gè)1維的數(shù)可以用實(shí)數(shù)去編碼任意一個(gè)無(wú)窮大維度的數(shù)朋魔,如3.14159265……卿操。因此網(wǎng)絡(luò)不需要壓縮任何數(shù)據(jù),也學(xué)不到任何有意義的特征扇雕。盡管計(jì)算機(jī)不會(huì)真的把數(shù)字以無(wú)窮維精度表示镶奉,但它傾向于給神經(jīng)網(wǎng)絡(luò)提供遠(yuǎn)遠(yuǎn)超過(guò)我們?cè)鞠M臄?shù)據(jù)量。

通過(guò)限制網(wǎng)絡(luò)中的信息容量鸽凶,我們可以迫使網(wǎng)絡(luò)從輸入特征里學(xué)到簡(jiǎn)潔的表示〗ㄇ停現(xiàn)在已經(jīng)有幾種方法是這么做的:

·變分自動(dòng)編碼(VAE)–其在隱含層里加入高斯噪聲亿蒸,這種噪聲會(huì)破壞“過(guò)剩信息”,迫使網(wǎng)絡(luò)學(xué)習(xí)到訓(xùn)練數(shù)據(jù)的簡(jiǎn)潔表示姑食。

·Dropout正則化與變分自動(dòng)編碼的噪聲緊密相關(guān)(可能等價(jià)?) - 其隨機(jī)將網(wǎng)絡(luò)中的部分單元置為0砚蓬,使其不參與訓(xùn)練。與變分自動(dòng)編碼相似祟剔,dropout噪聲迫使網(wǎng)絡(luò)在有限的數(shù)據(jù)里學(xué)習(xí)到有用的信息物延。

·隨機(jī)深度的深度網(wǎng)絡(luò)–思想與dropout類似仅父,但不是在單元層面上隨機(jī)置0,而是隨機(jī)將訓(xùn)練中的某些層刪除耗溜,使其不參與訓(xùn)練省容。

·有一篇非常有趣的文章是《二值化神經(jīng)網(wǎng)絡(luò)》(Binarized NeuralNetworks)腥椒。作者在前向傳播中使用二進(jìn)制的權(quán)重和激活候衍,但在后向傳播中使用實(shí)值的梯度蛉鹿。這里網(wǎng)絡(luò)中的噪聲來(lái)自于梯度-——一種帶噪聲的二值化梯度往湿。二進(jìn)制網(wǎng)絡(luò)(BinaryNets)不需要比常規(guī)的深度神經(jīng)網(wǎng)絡(luò)更加強(qiáng)大煌茴,每個(gè)單元只能編碼一個(gè)比特的信息,這樣正則是為了防止兩個(gè)特征通過(guò)浮點(diǎn)編碼被壓縮在一個(gè)單元里矩乐。

更加有效的壓縮方案意味著測(cè)試階段的更好的泛化能力回论,這也解釋了為什么dropout對(duì)防止過(guò)擬合如此有效。如果你決定用常規(guī)的自動(dòng)編碼而不是變分自動(dòng)編碼欧漱,你必須用隨機(jī)正則化技巧葬燎,比如dropout谱净,去控制壓縮后的特征的比特?cái)?shù),不然你的網(wǎng)絡(luò)將非掣郧眨可能過(guò)擬合李请。

客觀地說(shuō)导盅,我覺(jué)得變分自動(dòng)編碼網(wǎng)絡(luò)更有優(yōu)勢(shì),因?yàn)樗鼈內(nèi)菀讓?shí)現(xiàn)绅络,并且允許你精確指定每層網(wǎng)絡(luò)有多少比特的信息通過(guò)嘁字。

在訓(xùn)練中避免局部最小值


訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)通常是通過(guò)梯度下降的變體來(lái)完成纪蜒,基本意味著網(wǎng)絡(luò)是通過(guò)降低在整個(gè)訓(xùn)練數(shù)據(jù)集上的平均損失誤差來(lái)迭代參數(shù)。這就像從山上向山下走随珠,當(dāng)你走到山谷最底部的時(shí)候猬错,你會(huì)找到神經(jīng)網(wǎng)絡(luò)的最優(yōu)參數(shù)倦炒。

這種方法的問(wèn)題是,神經(jīng)網(wǎng)絡(luò)的損失函數(shù)表面有很多個(gè)局部最小值和高原(因?yàn)榫W(wǎng)絡(luò)擬合的函數(shù)通常非凸拉讯,譯者注)魔慷。網(wǎng)絡(luò)的損失函數(shù)很容易陷入一個(gè)小坑里著恩,或者陷入一個(gè)斜率幾乎為0的平坦區(qū)域(局部最小值)喉誊,但你覺(jué)得此時(shí)還沒(méi)有得到滿意的結(jié)果。

隨機(jī)性到底如何幫助深度學(xué)習(xí)模型隧熙?我的第三點(diǎn)解釋是基于探索的想法幻林。

因?yàn)橛糜谟?xùn)練深度神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)集通常都非常大沪饺,如果我們?cè)诿看翁荻认陆抵袑?duì)上千兆的數(shù)據(jù)通通計(jì)算梯度,這個(gè)計(jì)算量實(shí)在是太大了件余!事實(shí)上啼器,我們可以使用隨機(jī)梯度下降算法(SGD)。在這個(gè)算法里告丢,我們只需要從數(shù)據(jù)集中隨機(jī)挑選小部分?jǐn)?shù)據(jù)损谦,并且計(jì)算其平均梯度就可以了照捡。

在進(jìn)化中,如果物種的成功延續(xù)用隨機(jī)變量X模擬闯参,那么隨機(jī)的突變或噪聲會(huì)增加X(jué)的方差术羔,其子孫可能會(huì)遠(yuǎn)遠(yuǎn)變得更好(適應(yīng)性,防毒能力)或者遠(yuǎn)遠(yuǎn)變得更差(致命弱點(diǎn)级历,無(wú)法生育)寥殖。

在數(shù)值優(yōu)化中,這種“基因突變”被稱為“熱力學(xué)能量”或“溫度”熏纯,其允許參數(shù)的迭代軌跡并非總走“下山路”樟澜,而是偶爾地從局部最小值跳出來(lái)或者通過(guò)“穿山隧道”叮盘。

這些都與增強(qiáng)學(xué)習(xí)里的“探險(xiǎn)-開(kāi)采”平衡緊密相關(guān)秩贰。訓(xùn)練一個(gè)純確定性的、沒(méi)有梯度噪聲的深度神經(jīng)網(wǎng)絡(luò)柔吼,其“開(kāi)采”能力為0毒费、直接收斂到最近的局部最小點(diǎn),而且網(wǎng)絡(luò)是淺層的愈魏。

使用隨機(jī)梯度(通過(guò)小批量樣本或在梯度本身加入噪聲)是一個(gè)允許優(yōu)化方法去做一些“搜索”和從局部最小值“跳出”的有效途徑觅玻。異步隨機(jī)梯度下降算法是另一個(gè)可能的噪聲源想际,其允許多個(gè)機(jī)器并行地計(jì)算梯度下降。

這種“熱力學(xué)能量”保證可以破壞訓(xùn)練的早期階段中的對(duì)稱性溪厘,從而保證每層網(wǎng)絡(luò)中的所有梯度不同步到相同的值胡本。噪聲不僅破壞神經(jīng)網(wǎng)絡(luò)在行為空間中的對(duì)稱性桩匪,而且破壞神經(jīng)網(wǎng)絡(luò)在參數(shù)空間里的對(duì)稱性打瘪。

最后的思考


我發(fā)現(xiàn)有個(gè)現(xiàn)象非常有趣,即隨機(jī)噪聲事實(shí)上在幫助人工智能算法避免過(guò)擬合傻昙,幫助這些算法在優(yōu)化或增強(qiáng)學(xué)習(xí)中找到解空間。這就提出了一個(gè)有趣的哲學(xué)問(wèn)題:是否我們的神經(jīng)編碼中的固有噪聲是一種特征彩扔,而不是瑕疵(bug)妆档。

有一個(gè)理論機(jī)器學(xué)習(xí)問(wèn)題讓我很有興趣:是否所有的神經(jīng)網(wǎng)絡(luò)訓(xùn)練技巧事實(shí)上是某些通用正則化定理的變形。也許壓縮領(lǐng)域的理論工作將會(huì)對(duì)理解這些問(wèn)題真正有所幫助虫碉。

如果我們驗(yàn)證不同神經(jīng)網(wǎng)絡(luò)的信息容量與手工設(shè)計(jì)的特征表示相比較贾惦,并觀察這些比較如何關(guān)系到過(guò)擬合的趨勢(shì)和梯度的質(zhì)量,這會(huì)是一件非常有趣的事情敦捧。度量一個(gè)帶有dropout或通過(guò)隨機(jī)梯度下降算法訓(xùn)練的網(wǎng)絡(luò)的信息容量當(dāng)然不是沒(méi)有價(jià)值的须板,而且我認(rèn)為這是可以做到的。比如兢卵,構(gòu)建一個(gè)合成矢量的數(shù)據(jù)集习瑰,這些矢量的信息容量(以比特,千字節(jié)等為單位)是完全已知的秽荤,我們可以通過(guò)結(jié)合類似于dropout的技巧甜奄,觀察不同結(jié)構(gòu)的網(wǎng)絡(luò)如何在這個(gè)數(shù)據(jù)集上學(xué)到一個(gè)生成式模型。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末窃款,一起剝皮案震驚了整個(gè)濱河市课兄,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌晨继,老刑警劉巖烟阐,帶你破解...
    沈念sama閱讀 212,816評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異紊扬,居然都是意外死亡蜒茄,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門珠月,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)扩淀,“玉大人,你說(shuō)我怎么就攤上這事啤挎∽ぷ唬” “怎么了卵凑?”我有些...
    開(kāi)封第一講書人閱讀 158,300評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)胜臊。 經(jīng)常有香客問(wèn)我勺卢,道長(zhǎng),這世上最難降的妖魔是什么象对? 我笑而不...
    開(kāi)封第一講書人閱讀 56,780評(píng)論 1 285
  • 正文 為了忘掉前任黑忱,我火速辦了婚禮,結(jié)果婚禮上勒魔,老公的妹妹穿的比我還像新娘甫煞。我一直安慰自己,他們只是感情好冠绢,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布抚吠。 她就那樣靜靜地躺著,像睡著了一般弟胀。 火紅的嫁衣襯著肌膚如雪楷力。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 50,084評(píng)論 1 291
  • 那天孵户,我揣著相機(jī)與錄音萧朝,去河邊找鬼。 笑死夏哭,一個(gè)胖子當(dāng)著我的面吹牛检柬,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播方庭,決...
    沈念sama閱讀 39,151評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼厕吉,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了械念?” 一聲冷哼從身側(cè)響起头朱,我...
    開(kāi)封第一講書人閱讀 37,912評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎龄减,沒(méi)想到半個(gè)月后项钮,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,355評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡希停,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評(píng)論 2 327
  • 正文 我和宋清朗相戀三年烁巫,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宠能。...
    茶點(diǎn)故事閱讀 38,809評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡亚隙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出违崇,到底是詐尸還是另有隱情阿弃,我是刑警寧澤诊霹,帶...
    沈念sama閱讀 34,504評(píng)論 4 334
  • 正文 年R本政府宣布,位于F島的核電站渣淳,受9級(jí)特大地震影響脾还,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜入愧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評(píng)論 3 317
  • 文/蒙蒙 一鄙漏、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧棺蛛,春花似錦怔蚌、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至彤恶,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鳄橘,已是汗流浹背声离。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,121評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留瘫怜,地道東北人术徊。 一個(gè)月前我還...
    沈念sama閱讀 46,628評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像鲸湃,于是被迫代替她去往敵國(guó)和親赠涮。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評(píng)論 2 351

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