強(qiáng)化學(xué)習(xí)中的無(wú)模型控制

在這里插入圖片描述
目錄

??在上一篇文章強(qiáng)化學(xué)習(xí)中的無(wú)模型預(yù)測(cè)中蟆肆,有說(shuō)過(guò)這個(gè)無(wú)模型強(qiáng)化學(xué)習(xí)的預(yù)測(cè)問(wèn)題挑胸,通過(guò)TD号醉、n-step TD或者MC的方法能夠獲得值函數(shù)画饥,那拿到value之后如何獲取policy呢?

??Model-Free Control in Reinforcement Learning

??在model free control中的第一個(gè)概念就是on-policyoff-policy漆腌,在現(xiàn)實(shí)中的很多問(wèn)題都是這樣的,我們得不到environment的白盒模型阶冈,我們就需要去與環(huán)境互動(dòng)闷尿,獲取經(jīng)驗(yàn)數(shù)據(jù),然后基于經(jīng)驗(yàn)數(shù)據(jù)進(jìn)行學(xué)習(xí)女坑√罹撸或者是MDP的內(nèi)部模型已知,但是狀態(tài)空間匆骗、動(dòng)作太大了無(wú)法對(duì)其采樣劳景。model free的方法就可以去解決這個(gè)問(wèn)題。

On-and Off-Policy Learning

  • 兩類(lèi)model-free RL

??在model-free這個(gè)設(shè)定下面有兩個(gè)概念碉就,一個(gè)是on-policy learning一個(gè)是off-policy learning盟广。

  • On-policy learning

??On policy “Learn on the job” ,意思是說(shuō)馬上要給policy喂進(jìn)來(lái)的數(shù)據(jù)都是剛剛采出來(lái)的數(shù)據(jù)瓮钥。

??Learn about policy \pi from experience sampled from \pi筋量。

  • Off-policy learning

??Off-policy “Look over someone’s shoulder” 當(dāng)前學(xué)習(xí)的策略\pi的數(shù)據(jù)從另外一個(gè)策略\mu采樣出來(lái)的。

??Learn about policy \pi from experience sampled from another policy \mu碉熄。

Model-Free Policy Iteration

??如果我們用state value去更新的話(huà)桨武,我們就需要去知道state transition,而基于state-action value的情況就好很多:

  • Greedy policy improvement over V(s) requires model of MDP:

\pi^{\text{new}}(s) = \argmax_{a \in A} \{ R(s,a)+\gamma \sum_{s^{\prime} \in S} \mathcal{P}_{sa}(s^{\prime})V^{\pi}(s^{\prime})\}

??But we don't know the state transition probability. 如果我們基于state-action value更新的話(huà)我們就不需要知道state transition probability锈津。

  • Greedy policy improvement over Q(s,a) is model-free

\pi^{new}(s) = \argmax_{a \in A} Q(s,a)

??因此計(jì)算state-value 和計(jì)算state-action value有本質(zhì)的區(qū)別呀酸。之后的方法基本上都是基于state-action value的。

Generalized Policy Iteration with Action-Value Function

??在給定某一個(gè)policy之后琼梆,我們就可以去算Q_{\pi}性誉。以前的文章馬爾可夫決策過(guò)程與動(dòng)態(tài)規(guī)劃算的是state value,這里算的是state-action value叮叹。得到這個(gè)Q之后我們就能夠依據(jù)\pi^{new}(s) = \argmax_{a \in A} Q(s,a)得到我們的策略艾栋。

在這里插入圖片描述

Control Policy

??基于Q value 我們具體怎么去做control policy?就是我們具體怎么來(lái) choose action蛉顽?

Example of Greedy Action Selection

??在Greedy Action中每次都去選擇state-action value最大的那一個(gè):

\pi^{new}(s) = \argmax_{a \in A} Q(s,a)

??但是這里有問(wèn)題蝗砾,就是當(dāng)你采樣到了一個(gè)動(dòng)作之后,拿到了reward,你之后就不會(huì)去選擇探索其它的動(dòng)作了悼粮。

??The policy would be suboptimal if there is no exploration.

\varepsilon-Greedy Policy Exploration

??最簡(jiǎn)單的辦法就是讓這個(gè)policy有一些隨機(jī)闲勺,或者稱(chēng)之為exploration。于是就變成了:

  • With probability 1-\varepsilon, choose the greedy action.
  • With probability \varepsilon, choose an action at random.

??于是在狀態(tài)s下選擇動(dòng)作a的概率\pi(a|s)可表示為如下形式:

\pi(a | s)=\left\{\begin{array}{ll} {\epsilon / m+1-\epsilon} & {\text { if } a^{*}=\arg \max _{a \in A} Q(s, a)} \\ {\epsilon / m} & {\text { otherwise }} \end{array}\right.

\varepsilon-Greedy Policy Improvement

??那\varepsilon-Greedy Policy能不能往前推進(jìn)我們的state value呢扣猫?我們需要去證明一下:

  • Theorem:For any \varepsilon-greedy policy \pi ,the \varepsilon-greedy policy \pi^{\prime} w.r.t Q^{\pi} is an improvement, i.e. V^{\pi^{\prime}}(s) \geq V^{\pi}(s)菜循。

\begin{aligned} V^{\pi^{\prime}}(s)=Q^{\pi}\left(s, \pi^{\prime}(s)\right) &=\sum_{a \in A} \pi^{\prime}(a | s) Q^{\pi}(s, a) \\ &=\frac{\epsilon}{m} \sum_{a \in A} Q^{\pi}(s, a)+(1-\epsilon) \max _{a \in A} Q^{\pi}(s, a) \\ & \geq \frac{\epsilon}{m} \sum_{a \in A} Q^{\pi}(s, a)+(1-\epsilon) \sum_{a \in A} \frac{\pi(a | s)-\epsilon / m}{1-\epsilon} Q^{\pi}(s, a) \\ &=\sum_{a \in A} \pi(a | s) Q^{\pi}(s, a)=V^{\pi}(s) \end{aligned}

??其中m表示\text { actions }個(gè)數(shù),這里其實(shí)就是在證明申尤,用\pi^{\prime}得到的state value與之前的\pi得到的state value是有所改進(jìn)的癌幕。上述公式中推導(dǎo)比較難懂的就是\sum_{a \in A} \frac{\pi(a | s)-\epsilon / m}{1-\epsilon},這一步了昧穿。這里把:

\pi(a | s)=\left\{\begin{array}{ll} {\epsilon / m+1-\epsilon} & {\text { if } a^{*}=\arg \max _{a \in A} Q(s, a)} \\ {\epsilon / m} & {\text { otherwise }} \end{array}\right.

??帶入到\sum_{a \in A} \frac{\pi(a | s)-\epsilon / m}{1-\epsilon}就會(huì)發(fā)現(xiàn)勺远,其實(shí)這也是個(gè)概率,一旦它是個(gè)概率时鸵,那么一定會(huì)小于等于\max _{a \in A} Q^{\pi}(s, a)胶逢。這里也就證明了其實(shí) \varepsilon-greedy 是做到了policy improvement 這一步。

Monte-Carlo Control

??一種比較經(jīng)典的Control方法就是MC Control

在這里插入圖片描述

??其算法也是大體分為兩步Policy evaluationPolicy improvement

  • Policy evaluation: Monte-Carlo policy evaluation,Q \approx Q^{\pi}饰潜。
  • Policy improvement: \varepsilon-greedy policy improvement初坠。

MC Control vs. TD Control

??MC Control中看一整個(gè)episode,然后estimate value然后做更新彭雾,TD Control只是看一小個(gè)片段進(jìn)行更新碟刺。

  • Temporal-difference (TD) learning has several advantages over Monte-Carlo (MC) :Lower varianceOnline冠跷、Incomplete sequences南誊。

On-Policy SARSA

??其算法流程主要分為以下4步:

  1. 在狀態(tài) s, 采取action a ;
  2. 環(huán)境反饋 reward r ;
  3. 轉(zhuǎn)移到下一個(gè)state s^{\prime};
  4. state s^{\prime}, 采取 action a^{\prime}

??用SARSA更新action-value functions

Q(s,a) \leftarrow Q(s,a) + \alpha(r + \gamma Q(s^{\prime},a^{\prime})-Q(s,a))

在這里插入圖片描述

??SARSA算法的整個(gè)流程如下所示:

在這里插入圖片描述

??上述sarsa算法需要注意state-action中的‘A’都是基于current policy采樣出來(lái)的蜜托。SARSA是一種非常典型的On-Policy方法抄囚,但是Off-Policy的算法往往更重要。

Off-Policy學(xué)習(xí)方式

??我們能否從 policy \mu(a|s) 采出來(lái)的數(shù)據(jù) \left\{s_{1}, a_{1}, r_{2}, s_{2}, a_{2}, \dots, s_{T}\right\} \sim \mu 去學(xué)習(xí)策略 \pi(a|s) 橄务?當(dāng)\mu(a|s) = \pi(a|s)這個(gè)算法就是on policy的幔托,因此off-policy的算法都可以做on-policy,其兼容性更強(qiáng)一點(diǎn)蜂挪。

為什么我們需要off-policy的學(xué)習(xí)方式?

??其實(shí)主要就是在數(shù)據(jù)利用上面會(huì)方便很多重挑,on-policy的方法需要當(dāng)前智能體去采樣,然后學(xué)習(xí)一次之后智能體的策略就發(fā)生了改變棠涮,那這些數(shù)據(jù)就無(wú)法使用了谬哀。然而在現(xiàn)實(shí)生活中我們能夠拿到很多很好的數(shù)據(jù),是其他智能體所產(chǎn)生了严肪,為了很好地去利用這些數(shù)據(jù)史煎,我們需要off-poicy的采樣方式谦屑。

  • Learn from observing humans or other agents

??比如在自動(dòng)駕駛中,我們可以先學(xué)習(xí)一點(diǎn)人類(lèi)經(jīng)驗(yàn)數(shù)據(jù)篇梭,相當(dāng)于做個(gè)預(yù)訓(xùn)練氢橙。

  • Re-use experience generated from old policies

??雖然是自己之前的數(shù)據(jù),但是由于現(xiàn)在的參數(shù)和之前的參數(shù)不一樣恬偷,所以off policy的方法可以重復(fù)使用之前的訓(xùn)練數(shù)據(jù)悍手。

??強(qiáng)化學(xué)習(xí)需要的data是非常大的,因?yàn)樗腥齻€(gè)自由度的分布函數(shù)R(s)袍患、P_{sa}(s^{\prime})坦康、\pi(a|s)。想要從數(shù)據(jù)中把這些分布關(guān)系給學(xué)到协怒,就需要大量地去采樣這些樣本涝焙,然后通過(guò)強(qiáng)化學(xué)習(xí)算法學(xué)到其中的關(guān)聯(lián)。

在這里插入圖片描述

??因此使用之前的data就比較重要了孕暇。

??還有一點(diǎn)就是商業(yè)上面就沒(méi)辦法使用當(dāng)前采樣出來(lái)的數(shù)據(jù)直接進(jìn)行訓(xùn)練。比如像淘寶用強(qiáng)化學(xué)習(xí)做的推薦系統(tǒng)赤兴。

  • Learn about optimal policy while following exploratory policy

  • Learn about multiple policies while following one policy

Importance Sampling

??那off-policy怎么來(lái)做off policylearning呢妖滔?通常的做法都是引入Importance SamplingQ值的更新可表達(dá)為以下形式:

Q(s,a) \leftarrow Q(s,a) + \alpha(r + \gamma Q(s^{\prime},a)-Q(s,a))

??我們是拿后面采樣出來(lái)的Q(s^{\prime},a)桶良,去更新前面采樣所得到的Q(s,a)座舍,前面采樣策略與后面采樣策略不一樣,那肯定就會(huì)有些問(wèn)題陨帆。這個(gè)時(shí)候重要性采樣就非常重要了曲秉。

??Importance Sampling can estimate the expectation of a different distribution

\begin{aligned} \mathbb{E}_{x \sim p}[f(x)] &=\int_{x} p(x) f(x) d x \\ &=\int_{x} q(x) \frac{p(x)}{q(x)} f(x) d x \\ &=\mathbb{E}_{x \sim q}\left[\frac{p(x)}{q(x)} f(x)\right] \end{aligned}

??Re-weight each instance by \beta(x) = \frac{p(x)}{q(x)}

??這里把從分布p中采樣的數(shù)據(jù)求期望疲牵,轉(zhuǎn)變成了從分布q中去采樣數(shù)據(jù)求期望承二。這里只是把每個(gè)數(shù)據(jù)的權(quán)重做了些許改變,因此在Importance Sampling里面我們往往也會(huì)去計(jì)算\beta(x) = \frac{p(x)}{q(x)}纲爸,甚至有機(jī)器學(xué)習(xí)專(zhuān)門(mén)去學(xué)習(xí)這個(gè)\beta(x),然后去做一個(gè)比較好的Importance Sampling

??在機(jī)器學(xué)習(xí)里面晤郑,我們經(jīng)常會(huì)優(yōu)化這樣一個(gè)式子:

\min _{\theta} \frac{1}{|D|} \sum_{x \in D} \mathcal{L}\left(y, f_{\theta}(x)\right)=\mathbb{E}_{x \sim p(x)}\left[\mathcal{L}\left(y, f_{\theta}(x)\right)\right]

??但很多時(shí)候我們拿到的數(shù)據(jù)并不滿(mǎn)足p(x)分布泥技,而滿(mǎn)足q(x)分布,因此做個(gè)重要性采樣就很好地解決這個(gè)問(wèn)題颓哮。

Importance Sampling for Off-Policy Monte-Carlo

??通過(guò)重要性采樣我們?nèi)匀恍枰ビ?jì)算值函數(shù)家妆。比如我們?nèi)绾问褂貌呗?img class="math-inline" src="https://math.jianshu.com/math?formula=%5Cmu" alt="\mu" mathimg="1">所獲得的return去評(píng)估策略\pi? 依據(jù)Importance Sampling我們可以weight return G_{t},對(duì)于一個(gè)episode冕茅,

\left\{s_{1}, a_{1}, r_{2}, s_{2}, a_{2}, \dots, s_{T}\right\} \sim \mu

??Multiply importance ratio along with episode:

G_{t}^{\pi / \mu}=\frac{\pi\left(a_{t} | s_{t}\right)}{\mu\left(a_{t} | s_{t}\right)} \frac{\pi\left(a_{t+1} | s_{t+1}\right)}{\mu\left(a_{t+1} | s_{t+1}\right)} \cdots \frac{\pi\left(a_{T} | s_{T}\right)}{\mu\left(a_{T} | s_{T}\right)} G_{t}

??表示在策略\pi下會(huì)以更多或者更小的概率去看到G_{t}伤极,然后再以這個(gè)新的G_{t}去更新算法:

V\left(s_{t}\right) \leftarrow V\left(s_{t}\right)+\alpha\left(G_{t}^{\pi / \mu}-V\left(s_{t}\right)\right)

??當(dāng)\mu為0的時(shí)候上述公式處理起來(lái)就會(huì)比較困難蛹找,但是往往這種情況出現(xiàn)地比較少,通常不給予考慮塑荒。重要性采樣所帶來(lái)的問(wèn)題就是多引入了一個(gè)變量熄赡,因此其方差會(huì)增加。TD算法相比較MC算法會(huì)減少方差齿税,因此很自然的一個(gè)想法是:可以將TD算法引入Importance Sampling來(lái)減少方差彼硫。

Importance Sampling for Off-Policy TD

??將 Importance Sampling用在TD上面會(huì)更容易一點(diǎn),因?yàn)?code>TD算法只走一步凌箕。因此只有TD target r + \gamma V(s^{\prime})是在做importance sampling拧篮,so only need a single importance sampling correction :

V\left(s_{t}\right) \leftarrow V\left(s_{t}\right)+\alpha\left(\frac{\pi\left(a_{t} | s_{t}\right)}{\mu\left(a_{t} | s_{t}\right)}\left(r_{t+1}+\gamma V\left(s_{t+1}\right)\right)-V\left(s_{t}\right)\right)

??這種方式相比較于Monte-Carlo importance sampling方差會(huì)大大降低,因?yàn)榇藭r(shí)需要在a single step上保持similar牵舱。

??上述importance sampling過(guò)程是一個(gè)unbias過(guò)程串绩,但是variance可能特別大,因?yàn)?img class="math-inline" src="https://math.jianshu.com/math?formula=%5Cmu%5Cleft(a_%7Bt%7D%20%7C%20s_%7Bt%7D%5Cright)" alt="\mu\left(a_{t} | s_{t}\right)" mathimg="1">可能特別小芜壁,一除就變大了礁凡。

??因此在做off-policy的時(shí)候,我們很少會(huì)用傳統(tǒng)的importance的辦法慧妄,它雖然可以做顷牌,但是不做改進(jìn)的話(huà)還是不太好。

Q-Learning

??Q-Learning focusstate-action value上面塞淹,這一點(diǎn)具有特別深遠(yuǎn)的意義窟蓝。我們是在更新Q(s,a) 這樣一個(gè)state-action value function,因?yàn)槿绻覀兏?img class="math-inline" src="https://math.jianshu.com/math?formula=V(s)" alt="V(s)" mathimg="1">的話(huà)饱普,它上來(lái)就需要策略运挫,V^{\pi}(s) = \sum_{a}\pi(a|s)(R+V^{\pi}(s^{\prime}))。而如果更新的是Q(s,a)套耕,其實(shí)take這個(gè)actionpolicy沒(méi)有關(guān)系谁帕,無(wú)論policy是什么,我都會(huì)去更新Q(s,a)箍铲,也就是states_{t}a_{t}policy是解耦合關(guān)系雇卷,之后環(huán)境給及時(shí)獎(jiǎng)勵(lì) r 和下一個(gè)狀態(tài)s_{t+1},這都是和環(huán)境有關(guān)的東西颠猴,我可以采樣关划,但跟policy沒(méi)關(guān)系,就不會(huì)像Importance sampling那樣還需要除一下翘瓮。之后的a_{t+1}不一樣可能會(huì)產(chǎn)生點(diǎn)區(qū)別贮折,前面的 a_{t} 是用 \pi 采樣出來(lái)的,還是\mu采樣出來(lái)的都沒(méi)有關(guān)系资盅。

??上面說(shuō)了這么多调榄,其實(shí)就是需要注意:No importance sampling is required (why?)

Q\left(s_{t}, a_{t}\right) \leftarrow Q\left(s_{t}, a_{t}\right)+\alpha\left(r_{t+1}+\gamma Q\left(s_{t+1}, a^{\prime}\right)-Q\left(s_{t}, a_{t}\right)\right)

  • The target policy \pi is greedy w.r.t. Q(s,a)

\pi(s_{t+1}) = \argmax_{a^{\prime}}Q(s_{t+1},a^{\prime})

  • The behavior policy \mu is e.g. \varepsilon-greedy policy w.r.t. Q(s,a)

\begin{aligned} r_{t+1} + \gamma Q(s_{t+1},a^{\prime}) &= r_{t+1} + \gamma Q(s_{t+1},\argmax_{a^{\prime}}Q(s_{t+1},a^{\prime}))\\ & = r_{t+1} + \gamma \max_{a^{\prime}}Q(S_{t+1},a^{\prime}) \end{aligned}

??因此Q-learning的更新算法如下所示:

Q\left(s_{t}, a_{t}\right) \leftarrow Q\left(s_{t}, a_{t}\right)+\alpha\left(r_{t+1}+\gamma \max_{a^{\prime}}Q\left(s_{t+1}, a^{\prime}\right)-Q\left(s_{t}, a_{t}\right)\right)

為什么 Q-learning 會(huì)被稱(chēng)作一種off-policy control方法?

  • Learning from SARS generated by another policy \mu
  • The first action a and the corresponding reward rare from \mu
  • The next action a^{\prime} is picked by the target policy \pi(s_{t+1}) = \argmax_{a^{\prime}}Q(s_{t+1},a^{\prime})踊赠。

??上述這么多就是為什么q-learningoff policy卻不用importance sampling.

我的微信公眾號(hào)名稱(chēng):深度學(xué)習(xí)與先進(jìn)智能決策
微信公眾號(hào)ID:MultiAgent1024
公眾號(hào)介紹:主要研究分享深度學(xué)習(xí)、機(jī)器博弈每庆、強(qiáng)化學(xué)習(xí)等相關(guān)內(nèi)容筐带!期待您的關(guān)注,歡迎一起學(xué)習(xí)交流進(jìn)步缤灵!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末伦籍,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子腮出,更是在濱河造成了極大的恐慌帖鸦,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件胚嘲,死亡現(xiàn)場(chǎng)離奇詭異作儿,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)馋劈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門(mén)攻锰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人妓雾,你說(shuō)我怎么就攤上這事口注。” “怎么了君珠?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)娇斑。 經(jīng)常有香客問(wèn)我策添,道長(zhǎng),這世上最難降的妖魔是什么毫缆? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任唯竹,我火速辦了婚禮,結(jié)果婚禮上苦丁,老公的妹妹穿的比我還像新娘浸颓。我一直安慰自己,他們只是感情好旺拉,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布产上。 她就那樣靜靜地躺著,像睡著了一般蛾狗。 火紅的嫁衣襯著肌膚如雪晋涣。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,763評(píng)論 1 307
  • 那天沉桌,我揣著相機(jī)與錄音谢鹊,去河邊找鬼算吩。 笑死,一個(gè)胖子當(dāng)著我的面吹牛佃扼,可吹牛的內(nèi)容都是我干的偎巢。 我是一名探鬼主播,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼兼耀,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼压昼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起翠订,我...
    開(kāi)封第一講書(shū)人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤巢音,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后尽超,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體官撼,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年似谁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了傲绣。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡巩踏,死狀恐怖秃诵,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情塞琼,我是刑警寧澤菠净,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站彪杉,受9級(jí)特大地震影響毅往,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜派近,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一攀唯、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧渴丸,春花似錦侯嘀、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至碟嘴,卻和暖如春溪食,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背娜扇。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工错沃, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留栅组,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓枢析,卻偏偏與公主長(zhǎng)得像玉掸,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子醒叁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355

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