《改善深層神經(jīng)網(wǎng)絡(luò):超參數(shù)調(diào)試、正則化以及優(yōu)化》筆記(1)

一颅夺、前言

本文主要分為 3 周分別了講解其中視頻講到的難重點(diǎn),第一周分為 2 個(gè)重要的部分:正則化和梯度檢驗(yàn)蛹稍。筆者將自己在學(xué)習(xí)過程中的不理解的地方記錄下倆吧黄,希望能夠幫助到各位讀者,也希望文章有錯(cuò)漏的地方稳摄,還請各位讀者海涵指正稚字。

二、第一周——深度學(xué)習(xí)的使用方法

2.1 模型性能判斷方法

還記得在西瓜書的第一章中厦酬,周志華老師就講了可以使用測試集的性能來評估模型的預(yù)測性能胆描,同時(shí)也說了模型的誤差可以被分解為 偏差方差仗阅、噪聲這 3 個(gè)元素昌讲。
假設(shè)有訓(xùn)練集誤差 E1 和 驗(yàn)證集E2,那么通常的判斷方法有 2 個(gè):

  • 高方差:E1低减噪、E2高
  • 高偏差:E1高短绸、E2更高
    PS:其實(shí)這里推薦大家去看吳恩達(dá)的機(jī)器學(xué)習(xí)公開課,那里對偏方差的講解更好一點(diǎn)
    那么如何解決因?yàn)檫@ 2 個(gè)結(jié)果帶來的影響呢筹裕?
  • 偏差:查看訓(xùn)練集的性能醋闭,如果此時(shí)偏差高一般選擇新的網(wǎng)絡(luò)
  • 方差:查看驗(yàn)證集的性能,如果此時(shí)方差偏高可以通過增加訓(xùn)練數(shù)據(jù)或者正則化來降低

2.2 正則化

2.2.1 正則化基礎(chǔ)

上面說到正則化可以降低方差朝卒,那么這一節(jié)來講講正則化证逻。
我們一般會(huì)在損失函數(shù)中加入正則化項(xiàng),一般的正則化項(xiàng)有 L1范數(shù)L2范數(shù)抗斤,其實(shí)分別對應(yīng)的就是曼哈頓距離歐式距離囚企,讀者自行百度就明白這 2 個(gè)范數(shù)的計(jì)算方式和表達(dá)方式了
假設(shè)我們使用歐式距離來作為正則化,那么損失函數(shù)可以就是:
J(w,b)=\frac{1}m\sum_{i=1}^m{L(\hat{y},y)} + \frac{\lambda}{2m}||W||_2^2
其中瑞眼,\lambda是正則化參數(shù)龙宏,||w||_2^2是矩陣 W 的L2范數(shù),作者這里說不加上 b 的原因是因?yàn)?b 的影響很小伤疙,可加可不加银酗。

在神經(jīng)網(wǎng)絡(luò)中的損失函數(shù)中通過包含了第 1 層的W^{[1]}到第 l 層的W^{[l]},參數(shù)b同理徒像,因?yàn)閾p失函數(shù)是以矩陣為單位來計(jì)算的花吟,那么如果正則化項(xiàng)使用矩陣來表示的話是如下所示:
\frac{\lambda}{2m}\sum_{1}^{L}|W^{[l]}|^2
其中|W^{[l]}|^2我們稱為范數(shù)平方,被定義為矩陣中所有元素的平方和厨姚。
而矩陣W^{[l]}的維度通常是(n^{l}, n^{l-1})衅澈,這里對 n 定義不明的同學(xué)請看前面的文章,我們使用弗羅貝尼烏斯范數(shù)來稱呼矩陣的范數(shù)平方谬墙,并用下標(biāo)F著名今布,關(guān)于弗羅貝尼烏斯范數(shù)可在參數(shù)小節(jié)中查閱

如果我們使用的是L2范數(shù)正則化,那么我們可以推導(dǎo)出一個(gè)L2正則化后的梯度公式拭抬。
首先我們在不加正則化項(xiàng)前提下部默,計(jì)算出的對W^{[l]}導(dǎo)數(shù)成為dW^{[l]},那么增加了正則化項(xiàng)的導(dǎo)數(shù)我們表示為dW^{[l]}_L造虎,那么有如下式子:
dW^{[l]}_L = dW^{[l]} + \frac{\lambda}{m}W^{[l]}\\ W^{[l]} = W^{[l]} - \alpha dW^{[l]}_L = W^{[l]} - \alpha (dW^{[l]} + \frac{\lambda}{m}W^{[l]})
最后有可得到
W^{[l]} = (1 - \frac{\alpha \lambda}{m})W^{[l]} - \alpha dW^{[l]}
從上式可以明顯看得出灶泵,使用了正則化之后的梯度公式比原來多了系數(shù)(1 - \frac{\alpha \lambda}{m}),該系數(shù)小于 1犬金,也就是先讓矩陣W縮小在去減去梯度,所以L2正則化也叫權(quán)重衰減

這里我們知道了如何進(jìn)行L2正則化犁功,但是從代碼上看是怎么進(jìn)行的呢?因?yàn)槲覀兺瞥龅墓綗o法直接用于代碼婚夫,下面舉個(gè)例子說明
比如我們在要計(jì)算第 3 層dW_3浸卦,那么第三層的正則化項(xiàng)是a = \frac{\lambda}{m}W_3,那么在計(jì)算dW_3時(shí)我們就需要在等式后面加上a

我們一般在驗(yàn)證集調(diào)試超參\lambda

2.2.1 正則化原理

我們可以直觀的理解案糙,當(dāng)\lambda設(shè)置得足夠大的時(shí)候限嫌,可以將矩陣W 衰減到足夠小,假設(shè)此時(shí)使用的是tanh激活函數(shù)时捌,那么因?yàn)閃矩陣很小怒医,所以輸出Z也很小。由tanh函數(shù)的性質(zhì)可知奢讨,如果輸入是數(shù)值在很小的時(shí)候稚叹,相當(dāng)于線性函數(shù)。而此時(shí) Z 很小禽笑,那么此時(shí)激活函數(shù)相當(dāng)于線性函數(shù)入录,多個(gè)線性函數(shù)疊加還是線性函數(shù),所以此時(shí)模型擬合接近線性函數(shù)佳镜。
當(dāng)模型在過擬合和線性函數(shù)之間存在一個(gè)適當(dāng)?shù)木仃嘩使之?dāng)M合程度最為適合僚稿,所以這就可以正則化其效果的原理

2.2.2 dropout隨機(jī)失活

dropout是一種類似正則化的手段,但它并不是通過增加正則項(xiàng)蟀伸,而是通過其他的方法來使模型達(dá)到正則化的效果蚀同。
為了說明其步驟,視頻中以某個(gè)神經(jīng)網(wǎng)絡(luò)的第 3 層為例子啊掏。
在每一輪的前向計(jì)算中蠢络,我們對每一層的生成一個(gè)隨機(jī)矩陣,第 3 層我們假設(shè)隨機(jī)生成了一個(gè)矩陣

d3 = np.random.rand(a3.shape[0], a3.shape[1])

該矩陣是一個(gè)只有 0 和 1 的矩陣迟蜜,其中矩陣元素為 1 的概率是0.8刹孔, 為 0 的概率是 0.2,為超參 keep-porb 控制娜睛,那么在這里 keep-porb 等于 0.8

通過 d3 * a3髓霞,我們可以消去一些神經(jīng)網(wǎng)絡(luò)節(jié)點(diǎn)的輸出,從而使得網(wǎng)絡(luò)更加精簡畦戒,從結(jié)論上看方库,假設(shè)為 1 的概率是0.8,那么相乘只有 a3也是原來的0.8倍障斋,即 d3 * a3 可以看做是 0.8a3纵潦,為了消除對下一層的影響徐鹤,我們需要繼續(xù)使用 a3 /= 0.8(這里是0.8是keep-porb )
下層是z4 = w4 * a3 + b4,為了不影響 z4的期望值邀层,即不想影響該層次的梯度下降返敬,所以需要還原a3的值,不要讓第三層加入dropout后影響該層的梯度

那么問題來了被济,剛剛說的是前向傳播如何使用dropout救赐,那么在后向傳播dropout又該如何處理涧团,其實(shí)是一樣只磷,我們只需要使用在前向傳播中生成的隨機(jī)二值矩陣來乘dA即可,然后再讓dA/keep-prob

筆者在做作業(yè)的過程中發(fā)現(xiàn)如果按照給的keep-prob訓(xùn)練出來的模型準(zhǔn)確率只有70%多泌绣,但在調(diào)整keep-prob在0.5以下的時(shí)候真確率提高到了90%钮追,這可謂讓筆者體驗(yàn)到了調(diào)參的重要性

要注意的是。在測試時(shí)不使用dropout阿迈。因?yàn)槲覀儾黄谕敵龅慕Y(jié)果是隨機(jī)元媚,如果輸出結(jié)果不是隨機(jī)的,那么就不會(huì)影響預(yù)測苗沧。我們在前面 a3 /= 0.8是確保在測試時(shí)不執(zhí)行dropout也能讓激活函數(shù)的期望輸出在不會(huì)發(fā)生變化刊棕,這樣就不用在測試階段添加額外的參數(shù),這段話是視頻中給出的待逞,但比較晦澀

這里筆者說一下自己的通俗理解:筆者參考中《理解dropout》的說法甥角,理解的dropout是讓模型在訓(xùn)練時(shí)擺脫各個(gè)神經(jīng)元之間的依賴性,不讓模型的某個(gè)神經(jīng)元只在特定的特征下起作用识樱,這樣就可以讓每一個(gè)神經(jīng)元都能夠在所有的特征下都能起作用嗤无。那么這樣的話,我們?nèi)绻?xùn)練時(shí)加入了dropout怜庸,則無法體現(xiàn)出dropout的結(jié)果当犯,因?yàn)闇y試時(shí)輸出的跟訓(xùn)練時(shí)輸出的一樣

2.2.3 其他正則化方法

2.2.3.1 數(shù)據(jù)擴(kuò)增
1、將圖片水平翻轉(zhuǎn)并加入訓(xùn)練集
2割疾、隨意縮放和裁剪圖像并加入訓(xùn)練集

2.2.3.2 提前停止
在驗(yàn)證集是畫出損失函數(shù)的下降圖形嚎卫,橫軸是迭代次數(shù),縱軸是損失函數(shù)宏榕,對訓(xùn)練集和驗(yàn)證集都畫出圖像拓诸,通常驗(yàn)證集是先降后升,我們可以在降到最低點(diǎn)時(shí)停止訓(xùn)練担扑,此時(shí)獲得一組參數(shù)W恰响。但提前停止有缺點(diǎn)就是無法進(jìn)行正交化,正交化在后面會(huì)講解到

2.3 歸一化輸入

我們先看看歸一化輸入的執(zhí)行過程涌献,我們知道執(zhí)行過程后比較容易理解歸一化的原理及作用

2.3.1 步驟

歸一化輸入的步驟有 2 個(gè)胚宦,設(shè)我們數(shù)據(jù)集如下


原始數(shù)據(jù)集
  1. 零均值化
    第一步是對數(shù)據(jù)集進(jìn)行零均值化,設(shè)有參數(shù)
    u = \frac{1}{m}\sum^{m}_{i=1}x^{i}
    接著我們對每一個(gè)訓(xùn)練數(shù)據(jù)進(jìn)行減去該參數(shù),即
    x'^{i} = x^{i} - u
    其實(shí)就相當(dāng)于移動(dòng)數(shù)據(jù)集枢劝,使他們的均值為 0 井联,也就是如下圖

    零均值化

  2. 歸一化方差
    第二部就是歸一化方差,設(shè)有參數(shù)
    \sigma = \frac{1}{m}\sum^{m}_{i=1}(x'^i)^2
    我們上面已經(jīng)完成了零均值化您旁,那么可以得到如下
    \sigma = \frac{1}{m}\sum^{m}_{i=1}(x^{i} - u)^2
    從上式可知烙常,\sigma是方差,然后我們讓每一個(gè)數(shù)據(jù)都除以\sigma鹤盒,得到:
    x''^i = \frac{x'^i}{\sigma}
    需要注意蚕脏,如果用x''^i來調(diào)整訓(xùn)練數(shù)據(jù),那么用相同的 μ 和 σ^2來歸一化測試集侦锯。當(dāng)然歸一化測試集使用的參數(shù)u\sigma都是從訓(xùn)練集得來的

2.3.2 原理

在不歸一化數(shù)據(jù)的情況下驼鞭,如果特征x_1的范圍是在[0, 1],而特征x_2在[0, 1000]尺碰。那么訓(xùn)練出來的w_1w_2的數(shù)量級(jí)就會(huì)相差非常遠(yuǎn)挣棕,從而看起來是類似的一個(gè)圖形,圖中的b和w應(yīng)該分別是w_2w_1

未歸一化

這樣的話亲桥,如果我們學(xué)習(xí)率確定得不對洛心,對模型的訓(xùn)練完全沒有好處,比如有可能引起振蕩之類的情況题篷。
如果我們歸一化數(shù)據(jù)集后可以得到如下的圖像
歸一化

無論在哪個(gè)點(diǎn)词身,只要我們設(shè)置的學(xué)習(xí)率不太奇怪,我們總能夠找到最優(yōu)點(diǎn)

2.4 梯度

這一節(jié)將的是梯度悼凑,梯度如果在訓(xùn)練不好的情況下虎發(fā)生梯度消失和梯度爆炸偿枕,如果不理解這 2 個(gè)概念可以參考鏈接《梯度消失和梯度爆炸》
這里簡單說下引起梯度爆炸的 2 個(gè)原因

2.4.1 解決方法

初始化權(quán)值過大容易引起梯度爆炸,過小會(huì)引起梯度消失户辫。
一般的渐夸,我們有公式如下:
z = w_1x_1 + w_2x_2 + w_3x_3 + ... + w_nx_n
當(dāng)n越多時(shí),也就是特征越多時(shí)渔欢,希望w越小
可以這樣初始化墓塌,第 i 層一般有 n^{i-1} 個(gè)輸入,我們可以用這樣來初始化 W矩陣

WL = np.random.randn(shape) * \sqrt {\frac{1}{n^{i-1}}}

不同的激活函數(shù)有不同的初始化方法奥额,對于tanh就有其他初始化公式 苫幢,比如Xavier初始化

如果是ReLu,設(shè)置為 \sqrt {\frac{2}{n^{i-1}}} 效果更好垫挨。此時(shí)也叫HE初始化

這2個(gè)初始化的作用十分明顯韩肝,筆者目前上了尚未理解,后面理解了再來講述

我們這里的隨機(jī)分布一般使用的是高斯分布

當(dāng)然了九榔,

2.4.2 梯度檢驗(yàn)

梯度檢驗(yàn)是為了確保后向傳播的計(jì)算是正確的哀峻,保證我們的參數(shù)能夠完成優(yōu)化 涡相。
在講梯度檢驗(yàn)之前,先看看導(dǎo)數(shù)的單邊公差跟雙邊公差

  1. 單邊公差剩蟀,公式如下:
    f'(x) = \lim_{ \Delta x\to\ 0} \frac{f(x + \Delta x) - f(x)}{\Delta x}
  2. 雙邊公差催蝗,公式如下:
    f'(x) = \lim_{ \Delta x\to\ 0} \frac{f(x+\Delta x) - f(x-\Delta x)}{2\Delta x}

一般雙邊公差比單邊公差更加接近梯度,在梯度檢驗(yàn)時(shí)我們使用雙邊公差

進(jìn)行梯度檢驗(yàn)時(shí)育特,我們需要將矩陣W^{[1]}b^{[1]}....W^{[l]}b^{[l]} 轉(zhuǎn)換為向量\theta(視頻中沒有說到 b矩陣也需要轉(zhuǎn)換丙号,但這里必須的理解是需要轉(zhuǎn)換b矩陣的)

那么損失函數(shù)將變成
J(W, b) \Rightarrow J(\theta)
在運(yùn)算完J(W, b)后我們得到dW^{[1]}db^{[1]}...dW^{[l]}db^{[l]},同樣地我們需要將這些都轉(zhuǎn)換為與\theta同維度的向量d\theta缰冤,因?yàn)?img class="math-inline" src="https://math.jianshu.com/math?formula=dW" alt="dW" mathimg="1">和W的維度是一樣的犬缨,b矩陣同理。

展開可得:
J(\theta) = J(\theta _1, \theta _2, \theta _3,...)

視頻中沒有說明如何轉(zhuǎn)換锋谐,也沒說明J(\theta)的具體公式是什么遍尺。舉個(gè)例子說明一下筆者的理解:即W _1b_1一起轉(zhuǎn)換成\theta _1截酷,其余同理

那么對于每一個(gè)\theta _i涮拗,我們?nèi)ビ?jì)算其雙邊公差:
d\theta_{approx}[i] = \frac{J(\theta _1,\theta _2,...\theta _i+\varepsilon,...) - J(\theta _1,\theta _2,...\theta _i,...)}{2\varepsilon}

所以計(jì)算出來的d\theta_{approx}是一個(gè)向量。從前面我們已經(jīng)轉(zhuǎn)換出了d\theta迂苛,那么我們可以用L2范數(shù)的計(jì)算方式計(jì)算
a = \frac{||d\theta _{approx} - d\theta||_2}{||d\theta _{approx}||_2+||d\theta||_2}
加入a的值小于或等于10^{-7}三热,那么說明梯度是正確的,加入大于這個(gè)數(shù)三幻,那么我們應(yīng)該注意梯度是否有問題就漾,當(dāng)然這里的10^{-7}筆者理解是一個(gè)經(jīng)驗(yàn)數(shù)值,大家可以按照各自的情況進(jìn)行判斷

使用梯度檢驗(yàn)時(shí)有一些注意事項(xiàng) :

  • 訓(xùn)練時(shí)不要使用梯度檢驗(yàn)念搬,它只用于調(diào)試
  • 如果算法的梯度檢驗(yàn)失敗抑堡,檢查所有項(xiàng) ,如果 2 個(gè)向量之間值相差太大朗徊,要查看哪個(gè) i 值相差最大
  • 如果在梯度檢驗(yàn)的過程中使用正則化首妖,需要將正則項(xiàng)加入梯度檢驗(yàn)中
  • 梯度檢驗(yàn)和dropout不能同時(shí)使用,因?yàn)閐ropuout會(huì)使代價(jià)函數(shù)很難計(jì)算爷恳,此時(shí)我們可以先將Keep-prob設(shè)置為1
  • 在隨機(jī)初始化進(jìn)行梯度檢驗(yàn)有缆,再訓(xùn)練網(wǎng)絡(luò)

2.4.3 轉(zhuǎn)換方法

我們上面說過,需要將參數(shù)矩陣W和b轉(zhuǎn)換為一個(gè)一維向量温亲,但視頻中沒有提高如何轉(zhuǎn)換嗎棚壁,這里筆者從作業(yè)中看到轉(zhuǎn)換的代碼,如下

def dictionary_to_vector(parameters):
    """
    Roll all our parameters dictionary into a single vector satisfying our specific required shape.
    """
    keys = []
    count = 0
    for key in ["W1", "b1", "W2", "b2", "W3", "b3"]:
        
        # flatten parameter
        new_vector = np.reshape(parameters[key], (-1,1))
        keys = keys + [key]*new_vector.shape[0]
        
        if count == 0:
            theta = new_vector
        else:
            theta = np.concatenate((theta, new_vector), axis=0)
        count = count + 1

    return theta, keys

可以很明顯地看到栈虚,只是簡單地講參數(shù)展開為一維數(shù)據(jù)然后拼接起來

2.4.4 第一周作業(yè)注意事項(xiàng)

  1. 關(guān)于錯(cuò)誤
    因?yàn)閹觳患嫒莸脑蛐渫猓@里的作業(yè)畫圖時(shí)會(huì)出現(xiàn)錯(cuò)誤

c of shape (1, 211) not acceptable as a color sequence for x with size 211, y with size 211

解決方法參考鏈接《課后作業(yè)錯(cuò)誤解決》

  1. 二值化矩陣
    在dropout階段,我們需要生成二值矩陣魂务,可以使用下面的語句來實(shí)現(xiàn)曼验,這里的大概意思就是D1中的元素如果小于keep_prob的話為 0 逆害,否則為 1
np.where(D1 < keep_prob, 0, 1) 
  1. relu導(dǎo)數(shù)
    在這一周的課后作業(yè)中,給的代碼使用了下面的語句來作為relu的導(dǎo)數(shù)
dZ2 = np.multiply(dA2, np.int64(A2 > 0))

其中 np.int64(A2 > 0) 應(yīng)該是生成一個(gè)A2同緯度的矩陣蚣驼,但是這個(gè)矩陣是A2中大于 0 的書保持不變魄幕,其余的數(shù)為 0

參考

弗羅貝尼烏斯范數(shù):https://blog.csdn.net/david_jett/article/details/77040087
理解dropout:http://www.pianshen.com/article/4175293217/
梯度消失和梯度爆炸:https://www.cnblogs.com/XDU-Lakers/p/10553239.html
課后作業(yè)錯(cuò)誤解決:https://www.cnblogs.com/buchiyudemao/p/9028704.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市颖杏,隨后出現(xiàn)的幾起案子纯陨,更是在濱河造成了極大的恐慌,老刑警劉巖留储,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件翼抠,死亡現(xiàn)場離奇詭異,居然都是意外死亡获讳,警方通過查閱死者的電腦和手機(jī)阴颖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來丐膝,“玉大人量愧,你說我怎么就攤上這事∷Т#” “怎么了偎肃?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長浑此。 經(jīng)常有香客問我累颂,道長,這世上最難降的妖魔是什么凛俱? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任紊馏,我火速辦了婚禮,結(jié)果婚禮上蒲犬,老公的妹妹穿的比我還像新娘朱监。我一直安慰自己,他們只是感情好暖哨,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布赌朋。 她就那樣靜靜地躺著,像睡著了一般篇裁。 火紅的嫁衣襯著肌膚如雪沛慢。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天达布,我揣著相機(jī)與錄音团甲,去河邊找鬼。 笑死黍聂,一個(gè)胖子當(dāng)著我的面吹牛躺苦,可吹牛的內(nèi)容都是我干的身腻。 我是一名探鬼主播,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼匹厘,長吁一口氣:“原來是場噩夢啊……” “哼嘀趟!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起愈诚,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤她按,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后炕柔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體酌泰,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年匕累,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了陵刹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,650評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡欢嘿,死狀恐怖衰琐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情际插,我是刑警寧澤碘耳,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站框弛,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏捕捂。R本人自食惡果不足惜瑟枫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望指攒。 院中可真熱鬧慷妙,春花似錦、人聲如沸允悦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽隙弛。三九已至架馋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間全闷,已是汗流浹背叉寂。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留总珠,地道東北人屏鳍。 一個(gè)月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓勘纯,卻偏偏與公主長得像,于是被迫代替她去往敵國和親钓瞭。 傳聞我的和親對象是個(gè)殘疾皇子驳遵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評論 2 349