日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

PPO、GAE笔记

發(fā)布時間:2023/12/18 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PPO、GAE笔记 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、 重要性采樣

TRPO和PPO主要思想的數(shù)學(xué)基礎(chǔ)是重要性采樣

  • 重要性采樣: xix_ixi? 是從p(x)p(x)p(x)分布中采樣得到的, 但是p(x)p(x)p(x)的值往往無法直接獲得,需要通過其他分布q(x)q(x)q(x)進行間接采樣獲得。

Ex~p[f(x)]=∫f(x)p(x)dx=∫f(x)p(x)q(x)q(x)dx=Ex~q[f(x)p(x)q(x)]\begin{aligned} \mathbb{E}_{x\sim p}[f(x)] &=\int f(x)p(x) dx \\ &=\int f(x) \frac{p(x)}{q(x)}q(x)dx \\ &=\mathbb{E}_{x\sim q}[f(x)\frac{p(x)}{q(x)}] \end{aligned} Exp?[f(x)]?=f(x)p(x)dx=f(x)q(x)p(x)?q(x)dx=Exq?[f(x)q(x)p(x)?]?

  • 條件

    • ppp分布與qqq分布需要相近,才能得到較好的效果。
  • 用在強化學(xué)習(xí)里面:

    • 由于策略梯度原始公式中的 新策略分布難以得到,因而使用舊策略進行間接采樣,以使得未知項變成可估計的已知項進行計算。


二、 梯度與參數(shù)更新

1. 回報的期望: 最大化全部采樣軌跡上的策略回報值
Rθˉ=∑τR(τ)pθ(τ)\bar{R_\theta}=\sum_\tau R(\tau)p_\theta(\tau) Rθ?ˉ?=τ?R(τ)pθ?(τ)
2. 回報的期望的梯度:(第三個等號用到的公式:?f(x)=f(x)?log?f(x)\nabla f(x) = f(x) \nabla \log f(x)?f(x)=f(x)?logf(x))

?Rθˉ=∑τR(τ)?pθ(τ)=∑τR(τ)pθ(τ)?pθ(τ)pθ(τ)=∑τR(τ)pθ(τ)?log?pθ(τ)=Eτ~pθτ[R(τ)?log?pθ(τ)]≈1N∑n=1NR(τn)?log?pθ(τn)=1N∑n=1N∑t=1TnR(τn)?log?pθ(atn∣stn)\begin {aligned} \nabla \bar{R_\theta}&=\sum_\tau R(\tau) \nabla p_{\theta}(\tau) \\ &= \sum_\tau R(\tau)p_\theta(\tau)\frac{\nabla p_\theta(\tau)}{p_\theta(\tau)} \\ &= \sum_\tau R(\tau)p_\theta(\tau){\nabla \log p_\theta(\tau)}\\ &= \mathbb{E}_{\tau \sim p_\theta{\tau}}[R(\tau){\nabla \log p_\theta(\tau)}] \\ &≈ \frac{1}{N} \sum_{n=1}^{N}R(\tau^n)\nabla \log p_{\theta}(\tau^n) \\ &=\frac{1}{N}\sum_{n=1}^{N} \sum_{t=1}^{T_n} R(\tau^n)\nabla \log p_\theta(a_t^n|s_t^n) \end {aligned} ?Rθ?ˉ??=τ?R(τ)?pθ?(τ)=τ?R(τ)pθ?(τ)pθ?(τ)?pθ?(τ)?=τ?R(τ)pθ?(τ)?logpθ?(τ)=Eτpθ?τ?[R(τ)?logpθ?(τ)]N1?n=1N?R(τn)?logpθ?(τn)=N1?n=1N?t=1Tn??R(τn)?logpθ?(atn?stn?)?

式中

  • NNN表示采樣了NNN條trajectory, TnT_nTn?表示每條trajectory的step數(shù)量。

  • 關(guān)于pθ(τ)p_{\theta}(\tau)pθ?(τ)
    pθ(τ)=p(s1)pθ(a1∣s1)p(s2∣s1,a1)pθ(a2∣s2)p(s3∣s2,a2)...=p(s1)∏t=1Tpθ(at∣st)p(st+1∣st,at)\begin{aligned} p_{\theta}(\tau) &= p(s_1)p_\theta(a_1|s_1)p(s_2|s_1,a_1)p_\theta(a_2|s_2)p(s_3|s_2,a_2) \space\space...\space\space \\ &=p(s_1) \prod_{t=1}^T p_{\theta}(a_t|s_t)p(s_{t+1}|s_t, a_t) \end{aligned} pθ?(τ)?=p(s1?)pθ?(a1?s1?)p(s2?s1?,a1?)pθ?(a2?s2?)p(s3?s2?,a2?)??...??=p(s1?)t=1T?pθ?(at?st?)p(st+1?st?,at?)?
    由兩部分組成一部分是來自環(huán)境的 pθ(st+1∣st,a)p_\theta(s_{t+1}|s_t, a)pθ?(st+1?st?,a), 一部分是來自agent的 pθ(at∣st)p_\theta {(a_t|s_t)}pθ?(at?st?), 其中來自環(huán)境的部分不帶入計算,策略更新只考慮agent這部分。所以最后一步并沒有t+1t+1t+1這部分。

3. 參數(shù)更新:
θ=θ+η?Rθˉ\theta = \theta+\eta \nabla \bar{R_\theta} θ=θ+η?Rθ?ˉ?


三、 實際算法中對策略梯度的處理方法

1. 策略梯度方法:

加入baseline
?Rθˉ=1N∑n=1N(R(τn)?b)?log?pθ(τn)b≈E[R(τ)]\nabla \bar{R_\theta}=\frac{1}{N} \sum_{n=1}^{N}(R(\tau^n)-b)\nabla \log p_{\theta}(\tau^n) \\ b≈\mathbb{E}[R(\tau)] ?Rθ?ˉ?=N1?n=1N?(R(τn)?b)?logpθ?(τn)bE[R(τ)]

bbb 的加入保證reward不是恒大于0的,若reward一直大于0,則會導(dǎo)致未被采樣的action無法得到提升,但其實該action并不是不好而是未被采樣。

2. 狀態(tài)值函數(shù)估計軌跡回報:

R(τn)?bR(\tau^n)-bR(τn)?b 部分使用狀態(tài)值函數(shù)來替代
q(s,a)q(s,a) q(s,a)

3. 優(yōu)勢函數(shù)估計軌跡回報(Actor-Critic):

R(τn)?bR(\tau^n)-bR(τn)?b 部分用以下Advantage function來替代

A(st,at)=q(s,a)?V(s)A(s_t,a_t)= q(s,a)-V(s) A(st?,at?)=q(s,a)?V(s)

4. TD-Error估計軌跡回報:

R(τn)?bR(\tau^n)-bR(τn)?b 部分用以下TD-Error 代替
r(st.at)+v(st+1)?v(s)?r(s_t. a_t)+v(s_{t+1})-v(s)? r(st?.at?)+v(st+1?)?v(s)?


四、GAE(Generalized Advantage Estimation)

  • GAE的作用

    • GAE的意思是泛化優(yōu)勢估計,因而他是用來優(yōu)化Advantage Function優(yōu)勢函數(shù)的。
    • GAE的存在是用來權(quán)衡variance和bias問題的:
      • On-policy直接交互并用每一時刻的回報作為長期回報的估計∑t′=tTγt′?trt′\sum_{t'=t}^{T} \gamma^{t'-t}r_{t'}t=tT?γt?trt? 會產(chǎn)生較大的方差,Variance較大。
      • 而通過基于優(yōu)勢函數(shù)的AC方法來進行回報值估計,則會產(chǎn)生方差較小,而Bias較大的問題。
  • GAE 推導(dǎo)

    滿足γ\gammaγ-just條件。(未完待續(xù))

  • GAE形式

    GAE的形式為多個價值估計的加權(quán)平均數(shù)。
    TDError=δt=rt+γv(st+1)?v(st)TD Error=\delta_t=r_t+\gamma v(s_{t+1})-v(s_t) TDError=δt?=rt?+γv(st+1?)?v(st?)
    運用GAE公式進行優(yōu)勢函數(shù)的估計:

  • ∑l=0∞(γλ)lδt+1V\sum_{l=0}^\infin(\gamma\lambda)^l \delta_{t+1}^V l=0?(γλ)lδt+1V?

    ? 為了快速估計序列中所有時刻的估計值,采用倒序計算,從t+1時刻估計t時刻:
    At^GAE(γ,λ)=∑l=0∞(γλ)lδt+1V=δtV+γλA^t+1GAE(γ,λ)\hat{A_t}^{GAE(\gamma,\lambda)}=\sum_{l=0}^{\infin}(\gamma\lambda)^l \delta_{t+1}^V=\delta_t^V+\gamma\lambda\hat{A}_{t+1}^{GAE(\gamma,\lambda)} At?^?GAE(γ,λ)=l=0?(γλ)lδt+1V?=δtV?+γλA^t+1GAE(γ,λ)?


    五、PPO關(guān)于策略梯度的目標函數(shù)

    以上所述的策略梯度算法屬于on-policy的算法,而PPO屬于off-policy的算法

    • on-policy: 使用當(dāng)前策略πθ\pi_\thetaπθ?收集數(shù)據(jù),當(dāng)參數(shù)θ\thetaθ更新后,必須重新采樣。
      ?Rθˉ=Eτ~pθτ[R(τ)?log?pθ(τ)]\nabla \bar{R_\theta}=\mathbb{E}_{\tau \sim p_\theta{\tau}}[R(\tau){\nabla \log p_\theta(\tau)}] ?Rθ?ˉ?=Eτpθ?τ?[R(τ)?logpθ?(τ)]

    • off-policy: 可以從可重用的樣本數(shù)據(jù)中獲取樣本來訓(xùn)練當(dāng)前的策略πθ\pi _\thetaπθ?,下式用了重要性采樣。
      ?Rθˉ=Eτ~pθ′τ[pθ(τ)pθ′(τ)R(τ)?log?pθ(τ)]\nabla \bar{R_\theta}=\mathbb{E}_{\tau \sim p_{\theta^\prime}{\tau}}[\frac{p_\theta(\tau)}{p_{\theta^\prime}(\tau)} R(\tau){\nabla \log p_\theta(\tau)}] ?Rθ?ˉ?=Eτpθ?τ?[pθ?(τ)pθ?(τ)?R(τ)?logpθ?(τ)]

    1. PPO目標函數(shù)

    對于PPO而言,軌跡回報通過采用Advantage function的方式進行估計,因而其梯度更新方式為:
    ?Rθˉ=E(st,at)~πθ[Aθ(st,at)?log?pθ(atn∣stn)]=E(st,at)~πθ′[pθ(st,at)pθ′(st,at)Aθ′(st,at)?log?pθ(atn∣stn)]=E(st,at)~πθ′[pθ(at∣st)pθ′(at∣st)pθ(st)pθ′(st)Aθ′(st,at)?log?pθ(atn∣stn)]≈E(st,at)~πθ′[?pθ(at∣st)pθ′(at∣st)Aθ′(st,at)]\begin{aligned} \nabla \bar{R_\theta} &=\mathbb{E}_{(s_t,a_t)\sim\pi_\theta}[A^\theta(s_t,a_t)\nabla \log p_\theta({a_t^n|s_t^n})] \\ &=\mathbb{E}_{(s_t,a_t)\sim\pi_\theta^\prime}[\frac{p_\theta(s_t,a_t)}{p_\theta^\prime(s_t,a_t)}A^{\theta^\prime}(s_t,a_t)\nabla \log p_\theta({a_t^n|s_t^n})] \\ &=\mathbb{E}_{(s_t,a_t)\sim\pi_\theta^\prime}[\frac{p_\theta(a_t|s_t)}{p_\theta^\prime(a_t|s_t)}\frac{p_\theta(s_t)}{p_\theta^\prime(s_t)}A^{\theta^\prime}(s_t,a_t)\nabla \log p_\theta({a_t^n|s_t^n})] \\ &≈\mathbb{E}_{(s_t,a_t) \sim \pi_\theta^\prime}[\frac{\nabla p_\theta(a_t|s_t)}{p_\theta^\prime(a_t|s_t)}A^{\theta^\prime}(s_t,a_t)] \end{aligned} ?Rθ?ˉ??=E(st?,at?)πθ??[Aθ(st?,at?)?logpθ?(atn?stn?)]=E(st?,at?)πθ??[pθ?(st?,at?)pθ?(st?,at?)?Aθ(st?,at?)?logpθ?(atn?stn?)]=E(st?,at?)πθ??[pθ?(at?st?)pθ?(at?st?)?pθ?(st?)pθ?(st?)?Aθ(st?,at?)?logpθ?(atn?stn?)]E(st?,at?)πθ??[pθ?(at?st?)?pθ?(at?st?)?Aθ(st?,at?)]?
    ? 其中,從第二個等式用的是重要性采樣,第三到第四個約等式由于pθ(st)pθ′(st)\frac{p_\theta(s_t)}{p_\theta^\prime(s_t)}pθ?(st?)pθ?(st?)?這一項來源于重要性采樣,前提假設(shè)兩個分布差別不大,近似為1,且不易計算,故省略,后面的?log?pθ(atn∣stn)\nabla \log p_\theta({a_t^n|s_t^n})?logpθ?(atn?stn?) ,根據(jù)公式?f(x)=f(x)?log?f(x)\nabla f(x) = f(x) \nabla \log f(x)?f(x)=f(x)?logf(x)轉(zhuǎn)換。

    ? 因而,定義目標函數(shù)為:
    Jθ′(θ)=E(st,at)~πθ′[pθ(at∣st)pθ′(at∣st)Aθ′(st,at)]J^{\theta^{\prime}} (\theta)=\mathbb{E}_{(s_t,a_t) \sim \pi_\theta^\prime}[\frac{p_\theta(a_t|s_t)}{p_\theta^\prime(a_t|s_t)}A^{\theta^\prime}(s_t,a_t)] Jθ(θ)=E(st?,at?)πθ??[pθ?(at?st?)pθ?(at?st?)?Aθ(st?,at?)]

    2. PPO對于重要性采樣約束的處理

    ? 為了保證$p_\theta(s_t,a_t) $ 與 pθ′(st,at)p_\theta^\prime(s_t,a_t)pθ?(st?,at?) 分布的差別不會太大,采用以下約束:

    • TRPO: 使用約束 KL(θ,θ′)&lt;δKL(\theta,\theta&#x27;)&lt;\deltaKL(θ,θ)<δ,在分布上進行約束。
    • PPO1(Adaptive KL):使用JPPOθ′(θ)=Jθ′(θ)?βKL(θ,θ′)J_{PPO}^{\theta&#x27;}(\theta)=J^{\theta&#x27;}(\theta)-\beta KL(\theta,\theta&#x27;)JPPOθ?(θ)=Jθ(θ)?βKL(θ,θ),在目標函數(shù)上加一個正則項進行約束,注意,這里KL散度衡量的是action之間的距離,而不是參數(shù)θ\thetaθθ′\theta&#x27;θ之間的距離。
    • PPO2 (Clip,論文中推薦的):使用JPPO2θ′(θ)=∑(st,at)min?{([pθ(at∣st)pθ′(at∣st)Aθ′(st,at)],[clip(pθ(at∣st)pθ′(at∣st),1??,1+?)Aθ′(st,at)])}J_{PPO_2}^{\theta&#x27;}(\theta)=\sum_{(s_t,a_t)}\min\{([\frac{p_\theta(a_t|s_t)}{p_\theta^\prime(a_t|s_t)}A^{\theta^\prime}(s_t,a_t)], [clip(\frac{p_\theta(a_t|s_t)}{p_\theta^\prime(a_t|s_t)},1-\epsilon,1+\epsilon)A^{\theta^\prime}(s_t,a_t)])\}JPPO2?θ?(θ)=(st?,at?)?min{([pθ?(at?st?)pθ?(at?st?)?Aθ(st?,at?)],[clip(pθ?(at?st?)pθ?(at?st?)?,1??,1+?)Aθ(st?,at?)])}, 來約束分布距離。

    3. 使用GAE對優(yōu)勢函數(shù)進行優(yōu)化

    def get_gaes(self, rewards, v_preds, v_preds_next):"""GAE:param rewards: r(t):param v_preds: v(st):param v_preds_next: v(st+1):return:"""deltas = [r_t + self.gamma * v_next - v for r_t, v_next, v in zip(rewards, v_preds_next, v_preds)]#計算GAE(lambda = 1), 參見 ppo paper eq(11)gaes = copy.deepcopy(deltas)# 倒序計算GAEfor t in reversed(range(len(gaes) - 1)):gaes[t] = gaes[t] + self.gamma * gaes[t + 1]return gaes

    六、 PPO的目標函數(shù)

    PPO的最終目標函數(shù)由三部分組成,可使用梯度下降求解,而不是像TRPO一樣使用共軛梯度法:

    • 策略梯度目標函數(shù): LtCLIP(θ)L_t^{CLIP}(\theta)LtCLIP?(θ)
    • 值函數(shù)目標函數(shù):LtVF(θ)=(Vθ(st)?Vttarget)2L_t^{VF}(\theta)=(V_\theta(s_t)-V_t^{target})^2LtVF?(θ)=(Vθ?(st?)?Vttarget?)2
    • 策略模型的熵: S[πθ](st)S_[\pi_\theta](s_t)S[?πθ?](st?)

    完整的形式如下:
    LtPPO2(θ)=E^t[LtCLIP(θ)?c1LtVF(θ)+c2S[πθ](st)]L_t^{PPO_2}(\theta)=\hat{\mathbb{E}}_t[L_t^{CLIP}(\theta)-c_1L_t^{VF}(\theta)+c_2S_[\pi_\theta](s_t)] LtPPO2??(θ)=E^t?[LtCLIP?(θ)?c1?LtVF?(θ)+c2?S[?πθ?](st?)]
    這部分相應(yīng)的代碼如下:

    with tf.variable_scope('assign_op'):self.assign_ops = []for v_old, v in zip(old_pi_trainable, pi_trainable):self.assign_ops.append(tf.assign(v_old, v))# inputs for train_op with tf.variable_scope('train_inp'):self.actions = tf.placeholder(dtype=tf.int32, shape=[None], name='actions')self.rewards = tf.placeholder(dtype=tf.float32, shape=[None], name='rewards')self.v_preds_next = tf.placeholder(dtype=tf.float32, shape=[None], name='v_preds_next')self.gaes = tf.placeholder(dtype=tf.float32, shape=[None], name='gaes')act_probs = self.Policy.act_probs act_probs_old = self.Old_Policy.act_probs# agent通過新策略選擇action的概率 probabilities of actions which agent took with policy act_probs = act_probs * tf.one_hot(indices=self.actions, depth=act_probs.shape[1]) act_probs = tf.reduce_sum(act_probs, axis=1)# agent通過舊策略選擇action的概率 probabilities of actions which agent took with old policy act_probs_old = act_probs_old * tf.one_hot(indices=self.actions, depth=act_probs_old.shape[1]) act_probs_old = tf.reduce_sum(act_probs_old, axis=1)with tf.variable_scope('PPO_loss'):"""策略目標函數(shù)"""## ratios = tf.divide(act_probs, act_probs_old)# r_t(θ) = π/πold 為了防止除數(shù)為0,這里截取一下值,然后使用e(log減法)來代替直接除法ratios = tf.exp(tf.log(tf.clip_by_value(act_probs, 1e-10, 1.0)) - tf.log(tf.clip_by_value(act_probs_old, 1e-10, 1.0)))# L_CLIP 裁剪優(yōu)勢函數(shù)值clipped_ratios = tf.clip_by_value(ratios, clip_value_min=1 - clip_value, clip_value_max=1 + clip_value)self.loss_clip = tf.minimum(tf.multiply(self.gaes, ratios), tf.multiply(self.gaes, clipped_ratios))self.loss_clip = tf.reduce_mean(self.loss_clip)"""策略模型的熵"""# 計算新策略πθ的熵 S = -p log(p) 這里裁剪防止p=0self.entropy = -tf.reduce_sum(self.Policy.act_probs * tf.log(tf.clip_by_value(self.Policy.act_probs, 1e-10, 1.0)), axis=1)self.entropy = tf.reduce_mean(self.entropy, axis=0) # mean of entropy of pi(obs)"""值目標函數(shù)"""# L_vf = [(r+γV(π(st+1))) - (V(π(st)))]^2v_preds = self.Policy.v_predsself.loss_vf = tf.squared_difference(self.rewards + self.gamma * self.v_preds_next, v_preds)self.loss_vf = tf.reduce_mean(self.loss_vf)# construct computation graph for loss# L(θ) = E_hat[L_CLIP(θ) - c1 L_VF(θ) + c2 S[πθ](s)]# L = 策略目標函數(shù) + 值目標函數(shù) + 策略模型的熵self.loss = self.loss_clip - c_1 * self.loss_vf + c_2 * self.entropy# minimize -loss == maximize lossself.loss = -self.lossoptimizer = tf.train.RMSPropOptimizer(learning_rate=args.ppo_lr, epsilon=1e-5) self.gradients = optimizer.compute_gradients(self.loss, var_list=pi_trainable) self.train_op = optimizer.minimize(self.loss, var_list=pi_trainable)

    總結(jié)

    以上是生活随笔為你收集整理的PPO、GAE笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 国产精品一区二区精品 | 中文字幕日韩无 | 精品一区二区三区免费 | 99热思思| 国产91沙发系列 | 视频一区二区中文字幕 | 精品三级电影 | 91在线视频免费播放 | 色无极在线| 西欧free性满足hd老熟妇 | 毛片小视频| 欧美 日韩 高清 | 亚洲国产一区二区三区a毛片 | 91九色视频 | 国产日韩精品一区二区三区在线 | 五月天婷婷影院 | 国产精品6| 好吊一区二区三区视频 | 丰满人妻一区二区三区53 | av成人在线看 | 看片在线观看 | 一区二区视屏 | 天天草天天干 | 激情婷婷六月 | 亚洲熟女乱色综合亚洲av | 国产精品久久久久精 | 国产伦精品一区三区精东 | 黄色小说在线视频 | 日韩av在线第一页 | 性视频播放免费视频 | 久久久久亚洲精品中文字幕 | 免费看又黄又无码的网站 | 无码人妻丰满熟妇区五十路百度 | 老湿机69福利区午夜x片 | 国产成人精品一区二区三区四区 | 欧美性欧美zzzzzzzzz | 爱爱爱免费视频 | 欧美手机在线视频 | 狠操av | 丁香七月婷婷 | 久草最新视频 | 久久久久一区二区 | 上床视频在线观看 | 国产按摩一区二区三区 | 久久视频免费看 | 超碰caoporen | 日本在线观看一区 | 激情欧美一区二区三区 | 亚洲一级网 | 精品人妻人人做人人爽夜夜爽 | 爆乳熟妇一区二区三区 | 樱花影院最新免费观看攻略 | 日本一道在线 | 亚洲欧美一区二区三区在线观看 | 国产成人区 | 五月亚洲婷婷 | 美女在线不卡 | 九一国产精品 | 国产视频一区二区三区四区五区 | 先锋影音亚洲 | 91高清网站 | 99re6在线观看 | 欧美久久成人 | 91好色先生tv | 久久久久久久久久网 | 91嫩草欧美久久久九九九 | 国产ts在线播放 | 青青草伊人 | 亚洲欧美偷拍一区 | 爱如潮水3免费观看日本高清 | 国产精品视频一 | 美女又爽又黄视频 | 久久久久亚洲av无码麻豆 | 不卡中文av | 欧美丝袜视频 | 中国美女毛片 | 中日韩精品一区二区三区 | 乱色专区 | 欧美一二三区视频 | 深夜福利视频在线观看 | 亚洲第一成年人网站 | 污污视频在线免费看 | 韩日av| 久久美女视频 | 18我禁在线观看 | 欧美一级性生活视频 | 国产亚洲欧美一区二区三区 | 激情小说激情视频 | 隣の若妻さん波多野结衣 | 探花视频在线免费观看 | 欧美成人免费一级人片100 | 极品在线观看 | 亚洲精品久久久 | 国产中文久久 | 一级特黄色片 | 伊人成人久久 | 欧美激情一二三 | 视频一区二区三区四区五区 | 99久久久国产精品无码免费 |