感知機

感知機

  • 感知機模型
  • 感知機學(xué)習(xí)策略
  • 感知機學(xué)習(xí)算法
  • 算法的收斂性
  • 感知機學(xué)習(xí)算法的對偶形式

感知機實現(xiàn)二分類模型

  • 梯度下降法
  • scikit-learn 感知機學(xué)習(xí)

感知機(perceptron)是二類分類的線性分類模型,其輸入為實例的特征向量猖任,輸出為實例的類別辕棚,取+1和–1二值整吆。感知機對應(yīng)于輸入空間(特征空間)中將實例劃分為正負兩類的分離超平面,屬于判別模型。感知機學(xué)習(xí)旨在求出將訓(xùn)練數(shù)據(jù)進行線性劃分的分離超平面参咙,為此,導(dǎo)入基于誤分類的損失函數(shù)硫眯,利用梯度下降法對損失函數(shù)進行極小化蕴侧,求得感知機模型。

感知機模型

  1. 假設(shè)輸入空間(特征空間)是 X \subseteq R^n两入,輸出空間是 Y = \{+1, -1\}净宵,輸入 x \in X 表示實例的特征向量,對應(yīng)于輸入空間(特征空間) 的點裹纳;輸出 y \in Y 表示實例的類別择葡。由輸入空間到輸出空間的如下函數(shù):
    f(x) = sign(\omega \cdot x + b)
    稱為感知機。其中 \omegab 稱為感知機模型參數(shù)剃氧。 \omega \in R^n 叫作權(quán)值(weight)或權(quán)值向量(weight vector)敏储,b \in R 叫作偏置(bias),\omega \cdot x 表示 \omegax 的內(nèi)積朋鞍。
    sign 是符號函數(shù)已添,即
    sign(x) = \begin{cases} +1, & x \ge 0 \\ -1, & x \lt 0 \end{cases}
    感知機是一種線性分類模型,屬于判別模型滥酥。

  2. 感知機有如下幾何解釋:線性方程 \omega \cdot x + b =0更舞,對應(yīng)于特征空間 R^n 中的一個超平面 S,其中\omega 是超平面的法向量坎吻,b 是超平面的截距缆蝉。這個超平面將特征空間劃分為兩個部分。位于兩部分的點(特征向量)分別被分為正禾怠、負兩類返奉。因此,超平面 S 稱為分離超平面(separating hyperplane)吗氏。


感知機學(xué)習(xí)策略

  1. 給定數(shù)據(jù)集 T = \{(x_1,y_1), (x_2,y_2),...,(x_N,y_N)\}芽偏,其中,x_i \in x \in R^n弦讽,y_i \in Y \in \{+1, -1\}污尉,i=1,2,...,N膀哲,如果存在某個超平面 S
    \omega \cdot x +b =0
    能夠?qū)?shù)據(jù)集的正實例點和負實例點完全正確地劃分到超平面的兩側(cè),即對所有 y_i=+1 的實例 i 被碗,有 \omega \cdot x +b >0某宪,對所有 y_i=-1 的實例 i,有 \omega \cdot x +b < 0锐朴,則稱數(shù)據(jù)集 T 為線性可分數(shù)據(jù)集(linearly separable data set)兴喂;否則,稱數(shù)據(jù)集 T 線性不可分焚志。

  2. 損失函數(shù)的一個自然選擇是誤分類點的總數(shù)衣迷。但是,這樣的損失函數(shù)不是參數(shù) \omega,b 的連續(xù)可導(dǎo)函數(shù)酱酬,不易優(yōu)化壶谒。

  3. 損失函數(shù)的另一個選擇是誤分類點到超平面 S 的總距離,這是感知機所采用的膳沽。為此汗菜,首先寫出輸入空間R^n 中任一點 x_0 到超平面 S 的距離:
    \frac{1}{\mid\mid \omega \mid\mid}\mid \omega \cdot x_0 +b \mid
    其次,對于誤分類的數(shù)據(jù) (x_i,y_i) 來說挑社, -y_i(\omega\cdot x_i +b) > 0 成立陨界,因為當 \omega\cdot x_i +b > 0 時,y_i = -1痛阻,當 \omega\cdot x_i +b < 0 時普碎,y_i = +1。因此录平,誤分類點 x_i 到超平面 S 的距離是:
    -\frac{1}{\mid\mid \omega \mid\mid} y_i(\omega \cdot x_i +b )
    這樣,假設(shè)超平面 S 的誤分類點集合為 M缀皱,那么所有誤分類點到超平面 S 的總距離為:
    -\frac{1}{\mid\mid \omega \mid\mid} \sum_{x_i \in M} y_i(\omega \cdot x_i +b )
    不考慮 \frac{1}{\mid\mid \omega \mid\mid}斗这,就得到感知機學(xué)習(xí)的損失函數(shù)。這個損失函數(shù)就是感知機學(xué)習(xí)的經(jīng)驗風(fēng)險函數(shù)啤斗。

  4. 證明空間 R^n 中任一點 x_0 到超平面 S 的距離:
    設(shè)點 x_0 到超平面 S 的距離為 d表箭,點 x_0 在超平面 S 的投影為 x_1,則 \omega \cdot x_1 + b =0
    由于向量 \overline{x_0x_1}S 平面的法向量 \omega 平行钮莲, 所以
    \begin{array} \\\mid \omega \cdot \overline{x_0x_1}\mid &=& \mid \omega \mid \mid \overline{x_0x_1}\mid \\ &=& \sqrt{(\omega^1)^2+...+(\omega^n)^2}d \\ &=& \mid\mid \omega \mid\mid d \end{array}

    \begin{array} \\\omega \cdot \overline{x_0x_1} &=& \omega^1(x_0^1-x_1^1) + \omega^2(x_0^2-x_1^2)+...+\omega^n(x_0^n-x_1^n) \\ &=&\omega^1x_0^1+\omega^2x_0^2+...+\omega^nx_0^n-(\omega^1x_1^1+\omega^2x_1^2+...+\omega^nx_1^n) \\ &=&\omega^1x_0^1+\omega^2x_0^2+...+\omega^nx_0^n - (-b) \end{array}
    所以
    \begin{array} \\\mid\mid \omega \mid\mid d &=& \mid \omega^1x_0^1+\omega^2x_0^2+...+\omega^nx_0^n + b \mid \\ &=& \mid \omega \cdot x_0 + b \mid \end{array}

    d = \frac{1}{\mid\mid \omega \mid\mid}\mid \omega \cdot x_0 +b \mid

感知機學(xué)習(xí)算法

  1. 給定數(shù)據(jù)集 T = \{(x_1,y_1), (x_2,y_2),...,(x_N,y_N)\}免钻,其中,x_i \in x \in R^n崔拥,y_i \in Y \in \{+1, -1\}极舔,i=1,2,...,N,求參數(shù) \omega, b链瓦,使其為以下?lián)p失函數(shù)極小化問題的解:
    min_{\omega, b}L(\omega, b) = -\sum_{x_i \in M}y_i(\omega \cdot x_i + b)
    其中 M 為誤分類點的集合拆魏。

  2. 感知機學(xué)習(xí)算法是誤分類驅(qū)動的盯桦,具體采用隨機梯度下降法(stochastic gradient descent)。假設(shè)誤分類點集合 M 是固定的渤刃,那么損失函數(shù) L(\omega,b) 的梯度由
    \nabla_\omega L(\omega, b) = - \sum_{x_i \in M}y_ix_i \\ \nabla_b L(\omega, b) = - \sum_{x_i \in M}y_i
    給出拥峦。隨機選取一個誤分類點 (x_i, y_i), 對 \omega, b 進行更新:
    \omega \leftarrow \omega + \eta y_ix_i \\ b \leftarrow b + \eta y_i
    式中 \eta(0 \lt \eta \le 1) 是步長卖子,在統(tǒng)計學(xué)習(xí)中又稱為學(xué)習(xí)率(learning rate)略号。這樣,通過迭代可以期待損失函數(shù) L(\omega,b) 不斷減小洋闽,直到為0玄柠。

  3. 感知機模型 f(x)=sign(\omega \cdot x + b)
    1>> 選取初值 \omega, b
    2>> 在訓(xùn)練集中選取數(shù)據(jù)(x_i, y_i)
    3>> 如果 y_i(\omega \cdot x_i + b) \le 0,則 \omega \leftarrow \omega + \eta y_ix_i喊递,b \leftarrow b + \eta y_i
    4>> 轉(zhuǎn)至 2>>随闪,直至訓(xùn)練集中沒有誤分點。

算法的收斂性

為了方便推導(dǎo)骚勘,將偏置 b 并入權(quán)重向量 \omega铐伴,記作 \hat{\omega} = (\omega^T, b)^T,同樣也將輸入向量加以擴充俏讹,記作 \hat{x}=(x^T, 1)^T当宴。這樣, \hat{x} \in R^{N+1}泽疆,\hat{\omega} \in R^{N+1}户矢。顯然,\hat{\omega} \cdot \hat{x} = \omega \cdot x + b殉疼。

  1. 設(shè)數(shù)據(jù)集 T = \{(x_1,y_1), (x_2,y_2),...,(x_N,y_N)\} 是線性可分的梯浪,其中,x_i \in x \in R^n瓢娜,y_i \in Y \in \{+1, -1\}挂洛,i=1,2,...,N,則


    <1> 存在滿足條件 \mid\mid \hat{\omega}_{opt}\mid\mid =1 的超平面 \hat{\omega}_{opt} \cdot \hat{x}=\omega_{opt} \cdot x + b_{opt} = 0 將訓(xùn)練數(shù)據(jù)集完全正確分開眠砾;且存在 \gamma > 0虏劲,對所有 i=1,2,...,N,有 y_i(\hat{\omega}_{opt} \cdot \hat{x_i}) = y_i(\omega_{opt} \cdot x_i + b_{opt}) \ge \gamma褒颈。


    <2>R = max_{1 \le i \le N}\mid\mid \hat{x_i} \mid\mid柒巫,則感知機 f(x)=sign(\omega \cdot x + b) 在訓(xùn)練數(shù)據(jù)集上的誤分類次數(shù) k 滿足不等式 k \le (\frac{R}{\gamma})^2

  2. 證明 <1>:由于訓(xùn)練數(shù)據(jù)集是線性可分的谷丸,存在超平面可將訓(xùn)練數(shù)據(jù)集完全正確分開堡掏,取此超平面為 \hat{\omega}_{opt} \cdot \hat{x}=\omega_{opt} \cdot x + b_{opt} = 0,使 \mid\mid \hat{\omega}_{opt}\mid\mid =1刨疼。由于對有限的 i=1,2,...,N布疼,均有
    \hat{\omega}_{opt} \cdot \hat{x_i}=\omega_{opt} \cdot x_i + b_{opt} > 0
    所以存在
    \gamma = min_i\{\omega_{opt} \cdot x_i + b_{opt}\}
    使
    \hat{\omega}_{opt} \cdot \hat{x_i}=\omega_{opt} \cdot x_i + b_{opt} \ge \gamma

  3. 證明 <2>:感知機算法從 \hat{\omega}_0=0 開始摊趾,如果實例被誤分類,則更新權(quán)重游两。令 \hat{\omega}_{k-1} 是第 k 個誤分類實例之前的擴充權(quán)重向量砾层,即
    \hat{\omega}_{k-1} = (\omega_{k-1}^T, b_{k-1})^T
    則第 k 個誤分類實例的條件是
    y_i(\hat{\omega}_{k-1} \cdot \hat{x}_i) = y_i(w_{k-1}\cdot x_i + b_{k-1}) \le 0
    (x_i, y_i) 是被 \hat{\omega}_{k-1} = (\omega_{k-1}^T, b_{k-1})^T 誤分類的數(shù)據(jù), 則 \omegab 的更新是
    \omega_k \leftarrow \omega_{k-1} + \eta y_i x_i \\ b_k \leftarrow b_{k-1} + \eta y_i

    \hat{\omega}_k = \hat{\omega}_{k-1} + \eta y_i \hat{x}_i
    下面推導(dǎo)兩個不等式
    1>> \hat{\omega}_k \cdot \hat{\omega}_{opt} \ge k \eta \gamma
    \begin{array} \\\hat{\omega}_k \cdot \hat{\omega}_{opt} & = & \hat{\omega}_{k-1} \cdot \hat{\omega}_{opt} + \eta y_i \hat{\omega}_{opt} \cdot \hat{x}_i \\ & \ge & \hat{\omega}_{k-1} \cdot \hat{\omega}_{opt} + \eta \gamma \\ & \ge & \hat{\omega}_{k-2} \cdot \hat{\omega}_{opt} + 2\eta \gamma \\ & \ge & \hat{\omega}_{k-3} \cdot \hat{\omega}_{opt} + 3\eta \gamma \\ & ... \\ & \ge & k\eta \gamma \end{array}


    2>> \mid\mid \hat{\omega}_k\mid\mid^2 \le k \eta^2 R^2
    \begin{array} \\\mid\mid \hat{\omega}_k\mid\mid^2 & =& \mid\mid \hat{\omega}_{k-1}\mid\mid^2 + 2\eta y_i \hat{\omega}_{k-1} \cdot \hat{x}_i + \eta^2\mid\mid \hat{x}_i \mid\mid^2 \\ & \le & \mid\mid \hat{\omega}_{k-1}\mid\mid^2 + \eta^2\mid\mid \hat{x}_i \mid\mid^2 \\ & \le & \mid\mid \hat{\omega}_{k-1}\mid\mid^2 + \eta^2R^2 \\ & \le & \mid\mid \hat{\omega}_{k-2}\mid\mid^2 + 2\eta^2R^2 \\ & \le & \mid\mid \hat{\omega}_{k-3}\mid\mid^2 + 3\eta^2R^2 \\ & ... \\ &\le & k\eta^2R^2 \end{array}
    結(jié)合以上兩個不等式得
    k\eta \gamma \le \hat{\omega}_k \cdot \hat{\omega}_{opt} \le \mid\mid \hat{\omega}_k \mid\mid \mid\mid \hat{\omega}_{opt} \mid\mid \le \sqrt{k} \eta R \\ k^2 \gamma^2 \le kR^2 \\ k \le (\frac{R}{\gamma})^2

  4. 上述證明表明贱案,誤分類的次數(shù) k 是有上界的肛炮,經(jīng)過有限次搜索可以找到將訓(xùn)練數(shù)據(jù)完全正確分開的分離超平面。也就是說宝踪,當訓(xùn)練數(shù)據(jù)集線性可分時侨糟,感知機學(xué)習(xí)算法原始形式迭代是收斂的。

感知機學(xué)習(xí)算法的對偶形式

  1. 對偶形式的基本想法是瘩燥,將 \omegab 表示為實例 x_i 和標記 y_i 的線性組合的形式秕重,通過求解其系數(shù)而求得 \omegab

  2. 設(shè) \omega,b 均為 0厉膀,對誤分類點 (x_i, y_i), 通過
    \omega \leftarrow \omega + \eta y_ix_i \\ b \leftarrow b + \eta y_i
    逐步修改 \omega, b溶耘,設(shè)修改 n 次,則 \omega, b 關(guān)于 (x_i, y_i) 的增量分別是 \alpha_iy_ix_i\alpha_iy_i服鹅,這里的 \alpha_i = n_i \eta 凳兵,最后學(xué)習(xí)到的 \omega, b 可以分別表示為
    \omega = \sum_{i=1}^N\alpha_i y_i x_i \\ b = \sum_{i=1}^N\alpha_i y_i
    這里,\alpha \ge 0企软,i=1,2,…,N 庐扫,當 \eta=1 時,表示第i個實例點由于誤分而進行更新的次數(shù)仗哨,即 n_i形庭。實例點更新次數(shù)越多,意味著它距離分離超平面越近厌漂,也就越難正確分類碘勉。換句話說,這樣的實例對學(xué)習(xí)結(jié)果影響最大桩卵。

  3. 感知機模型 f(x)=sign(\sum_{j=1}^N\alpha_j y_j x_j \cdot x + b),其中 \alpha = (\alpha_1, \alpha_2, ..., \alpha_N)^T倍宾。
    1>> 選取初值 \alpha=0,b=0
    2>> 在訓(xùn)練集中選取數(shù)據(jù)(x_i, y_i)
    3>> 如果 y_i(\sum_{j=1}^N\alpha_j y_j x_j \cdot x_i + b) \le 0雏节,則 \alpha_i \leftarrow \alpha_i + \etab \leftarrow b + \eta y_i
    4>> 轉(zhuǎn)至 2>>高职,直至訓(xùn)練集中沒有誤分點钩乍。

  4. 對偶形式中訓(xùn)練實例僅以內(nèi)積的形式出現(xiàn)。為了方便怔锌,可以預(yù)先將訓(xùn)練集中實例間的內(nèi)積計算出來并以矩陣的形式存儲寥粹,這個矩陣就是所謂的Gram矩陣(Gram matrix)
    G = [x_i \cdot x_j ]_{N \times N}
    例如 x_1=(3,3)^T, x_2=(4,3)^T, x_3=(1,1)^T变过,那么其Gram矩陣為
    \left[\begin{matrix} 18 & 21 & 6 \\ 21 & 25 & 7 \\ 6 & 7 & 2 \end{matrix}\right]


感知機實現(xiàn)二分類模型

梯度下降法

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris


class Perceptron(object):
    def __init__(self, s):
        # s: 權(quán)重參數(shù)個數(shù)
        # omega: 權(quán)重參數(shù)
        # b: 斜率
        # eta: 學(xué)習(xí)率
        self.omega = np.ones(s, dtype=np.float32)
        self.b = 0
        self.eta = 0.1
    
    # 符號函數(shù)
    def sign(self, x, omega, b):
        return np.dot(x, omega) + b
    
    # 擬合函數(shù),梯度下降
    def fit(self, x_train, y_train):
        while True:
            errors = 0
            for index in range(len(x_train)):
                _x = x_train[index]
                _y = y_train[index]
                if _y * self.sign(_x, self.omega, self.b) <= 0:
                    self.omega = self.omega + self.eta * np.dot(_y, _x)
                    self.b = self.b + self.eta * _y
                    errors += 1
            if errors == 0:
                break


if __name__ == '__main__':
    # 獲取鳶尾花數(shù)據(jù)集
    iris = load_iris()
    df = pd.DataFrame(iris.data, columns=iris.feature_names)
    df['label'] = iris.target
    df.columns = ['sepal length', 'sepal width', 'petal length', 'petal width', 'label']
    # 生成訓(xùn)練樣本涝涤,只取 sepal length媚狰,sepal width 作為樣本特征
    train = np.array(df.iloc[:100, [0, 1, -1]])
    x_train, y_train = train[:, :-1], train[:, -1]
    y_train = np.array([1 if i==1 else -1 for i in y_train])
    # 初始化感知機模型
    pmodel = Perceptron(len(train[0])-1)
    # 擬合訓(xùn)練
    pmodel.fit(x_train, y_train)
    print('omage: ', pmodel.omega)
    print('b: ', pmodel.b)
    # 繪制擬合函數(shù)
    length_points = np.linspace(4, 7, 10)
    width_points = -(pmodel.omega[0] * length_points + pmodel.b)/pmodel.omega[1]
    plt.plot(length_points, width_points, label='fitting')
    plt.plot(train[:50, 0], train[:50, 1], 'bo', color='blue', label='0')
    plt.plot(train[50:100, 0], train[50:100, 1], 'bo', color='orange', label='1')
    plt.xlabel('sepal length')
    plt.ylabel('sepal width')
    plt.legend()

運行結(jié)果:

scikit-learn 感知機學(xué)習(xí)

import pandas as pd
import numpy as np
from sklearn.datasets import load_iris
from sklearn.linear_model import Perceptron


def fit(x_train, y_train):
    # fit_intercept 訓(xùn)練模型是否需要截距項
    pmodel = Perceptron(fit_intercept=True, max_iter=1000, shuffle=False, eta0=0.01)
    pmodel.fit(x_train, y_train)
    return pmodel


if __name__ == '__main__':
    # 獲取鳶尾花數(shù)據(jù)集
    iris = load_iris()
    df = pd.DataFrame(iris.data, columns=iris.feature_names)
    df['label'] = iris.target
    df.columns = ['sepal length', 'sepal width', 'petal length', 'petal width', 'label']
    # 生成訓(xùn)練樣本,只取 sepal length阔拳,sepal width 作為樣本特征
    train = np.array(df.iloc[:100, [0, 1, -1]])
    x_train, y_train = train[:, :-1], train[:, -1]
    y_train = np.array([1 if i==1 else -1 for i in y_train])
    # 使用 sklearn 感知機模型擬合訓(xùn)練
    pmodel = fit(x_train, y_train)
    print('omage: ', pmodel.coef_)
    print('b: ', pmodel.intercept_)
    # 繪制擬合函數(shù)
    length_points = np.linspace(4, 7, 10)
    width_points = -(pmodel.coef_[0][0] * length_points + pmodel.intercept_)/pmodel.coef_[0][1]
    plt.plot(length_points, width_points, label='fitting')
    plt.plot(train[:50, 0], train[:50, 1], 'bo', color='blue', label='0')
    plt.plot(train[50:100, 0], train[50:100, 1], 'bo', color='orange', label='1')
    plt.xlabel('sepal length')
    plt.ylabel('sepal width')
    plt.legend()

運行結(jié)果:
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末崭孤,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子糊肠,更是在濱河造成了極大的恐慌辨宠,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件货裹,死亡現(xiàn)場離奇詭異嗤形,居然都是意外死亡,警方通過查閱死者的電腦和手機弧圆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進店門赋兵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人墓阀,你說我怎么就攤上這事毡惜。” “怎么了斯撮?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵经伙,是天一觀的道長。 經(jīng)常有香客問我勿锅,道長帕膜,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任溢十,我火速辦了婚禮垮刹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘张弛。我一直安慰自己荒典,他們只是感情好,可當我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布吞鸭。 她就那樣靜靜地躺著寺董,像睡著了一般。 火紅的嫁衣襯著肌膚如雪刻剥。 梳的紋絲不亂的頭發(fā)上遮咖,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天,我揣著相機與錄音造虏,去河邊找鬼御吞。 笑死麦箍,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的陶珠。 我是一名探鬼主播挟裂,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼背率!你這毒婦竟也來了话瞧?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤寝姿,失蹤者是張志新(化名)和其女友劉穎交排,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體饵筑,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡埃篓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了根资。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片架专。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖玄帕,靈堂內(nèi)的尸體忽然破棺而出部脚,到底是詐尸還是另有隱情,我是刑警寧澤裤纹,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布委刘,位于F島的核電站,受9級特大地震影響鹰椒,放射性物質(zhì)發(fā)生泄漏锡移。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一漆际、第九天 我趴在偏房一處隱蔽的房頂上張望淆珊。 院中可真熱鬧,春花似錦奸汇、人聲如沸施符。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽戳吝。三九已至,卻和暖如春婴洼,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背撼嗓。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工柬采, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留欢唾,地道東北人。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓粉捻,卻偏偏與公主長得像礁遣,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子肩刃,可洞房花燭夜當晚...
    茶點故事閱讀 45,060評論 2 355

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