99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

Actor-Critic實(shí)戰(zhàn):優(yōu)勢(shì)函數(shù)、GAE與A2C訓(xùn)練循環(huán)拆解

Actor-Critic實(shí)戰(zhàn):優(yōu)勢(shì)函數(shù)、GAE與A2C訓(xùn)練循環(huán)拆解 強(qiáng)化學(xué)習(xí)學(xué)到 Actor-Critic 這一節(jié)基本算是從會(huì)跑 demo跨到能理解現(xiàn)代 RL 工程的分水嶺。前面講策略梯度時(shí)REINFORCE 用一整條軌跡的回報(bào)去估計(jì)梯度方差大到需要幾十次采樣才能勉強(qiáng)收斂講到值函數(shù)近似時(shí)又發(fā)現(xiàn)只學(xué) Q 值沒(méi)法直接輸出策略。Actor-Critic 把這兩條線擰在一起一個(gè)網(wǎng)絡(luò)負(fù)責(zé)決定動(dòng)作一個(gè)網(wǎng)絡(luò)負(fù)責(zé)評(píng)價(jià)動(dòng)作好不好用評(píng)價(jià)網(wǎng)絡(luò)的輸出給決策網(wǎng)絡(luò)的梯度降方差。A2C、A3C、PPO、DDPG、TD3、SAC 這一整串現(xiàn)在還在被廣泛使用的算法骨架都是它。這篇文章是2026 新版強(qiáng)化學(xué)習(xí)從入門(mén)到精通系列的第 42 篇重點(diǎn)不再停留在概念解釋上而是把 Actor-Critic 的網(wǎng)絡(luò)結(jié)構(gòu)、優(yōu)勢(shì)函數(shù)、GAE、損失函數(shù)組合、訓(xùn)練循環(huán)這些真正影響能不能跑通的部分拆開(kāi)講。文中的每段代碼都可以直接復(fù)制運(yùn)行環(huán)境用 PyTorch GymnasiumCartPole 這類(lèi)任務(wù)在純 CPU 上幾分鐘就能看到曲線抬起來(lái)不需要顯卡。讀者對(duì)象很明確已經(jīng)寫(xiě)過(guò) REINFORCE 或 DQN、知道策略梯度和貝爾曼方程大概在講什么、但自己動(dòng)手寫(xiě) Actor-Critic 時(shí)總是卡在為什么 loss 是這三項(xiàng)加在一起優(yōu)勢(shì)函數(shù)到底怎么算critic 學(xué)崩了怎么辦這幾個(gè)問(wèn)題上的人。看完之后應(yīng)該能獨(dú)立寫(xiě)出一個(gè)可訓(xùn)練的 A2C并且知道把它換成 PPO 需要?jiǎng)幽膸仔小?. Actor-Critic 核心能力速覽先把這套架構(gòu)的關(guān)鍵信息壓縮成一張表后面所有內(nèi)容都是圍繞這張表展開(kāi)的細(xì)節(jié)。需要注意Actor-Critic 不是某一個(gè)算法而是一類(lèi)架構(gòu)范式表里列的是這個(gè)范式的共性以及它在主流算法上的具體投影。能力項(xiàng)說(shuō)明架構(gòu)組成Actor 策略網(wǎng)絡(luò)輸出動(dòng)作分布Critic 價(jià)值網(wǎng)絡(luò)輸出狀態(tài)價(jià)值或動(dòng)作價(jià)值解決的核心問(wèn)題策略梯度方差過(guò)大、單步更新效率低、無(wú)法在線學(xué)習(xí)梯度估計(jì)方式用 Critic 給出的價(jià)值作為基線或優(yōu)勢(shì)替代蒙特卡洛回報(bào)支持的動(dòng)作空間離散動(dòng)作Categorical與連續(xù)動(dòng)作Gaussian / Tanh-Gaussian均可典型代表算法A2C、A3C、PPO、TRPO、DDPG、TD3、SAC網(wǎng)絡(luò)結(jié)構(gòu)可共享主干shared trunk也可完全分離separate networks更新方式同策略A2C/PPO或異策略DDPG/TD3/SAC需要經(jīng)驗(yàn)回放采樣效率同策略版本中等異策略版本較高訓(xùn)練穩(wěn)定性依賴(lài)優(yōu)勢(shì)歸一化、梯度裁剪、價(jià)值損失系數(shù)等工程手段硬件門(mén)檻小型任務(wù)純 CPU 可跑Atari 級(jí)別建議單卡 GPU并行環(huán)境吃 CPU 核數(shù)依賴(lài)環(huán)境Python 3.10、PyTorch 2.x、Gymnasium 1.x版本以實(shí)際安裝為準(zhǔn)典型調(diào)試周期CartPole 級(jí)別分鐘級(jí)MuJoCo 級(jí)別小時(shí)級(jí)適合場(chǎng)景連續(xù)控制、機(jī)器人仿真、游戲 AI、推薦策略?xún)?yōu)化、對(duì)話(huà)策略學(xué)習(xí)這里要提前說(shuō)清楚一個(gè)容易混淆的點(diǎn)很多教程把 Actor-Critic 當(dāng)成一個(gè)具體算法講實(shí)際上它更像一個(gè)模板。你在模板里換掉優(yōu)勢(shì)估計(jì)方式就得到 A2C換掉更新約束就得到 PPO把 Critic 從狀態(tài)價(jià)值換成動(dòng)作價(jià)值并加經(jīng)驗(yàn)回放就得到 DDPG。理解模板比背算法名有用得多因?yàn)檎鎸?shí)項(xiàng)目里你幾乎總要改一點(diǎn)東西。2. 從策略梯度到 Actor-Critic為什么必須有一個(gè) Critic先把動(dòng)機(jī)講透否則后面看到三項(xiàng) loss 相加會(huì)覺(jué)得是拍腦袋湊出來(lái)的。最原始的策略梯度定理給出的是這樣一個(gè)式子梯度等于策略對(duì)數(shù)概率乘以回報(bào)的期望。用采樣估計(jì)時(shí)我們用一整條軌跡的累計(jì)回報(bào) G_t 去乘 log π(a|s)。問(wèn)題在于 G_t 是一個(gè)隨機(jī)變量同一狀態(tài)下采樣十次可能得到十個(gè)差別很大的回報(bào)梯度方向跟著劇烈抖動(dòng)。為了讓這個(gè)估計(jì)穩(wěn)定下來(lái)一個(gè)很自然的想法是減去一個(gè)與動(dòng)作無(wú)關(guān)的基線 b(s)因?yàn)闇p去它不會(huì)改變期望只會(huì)改變方差。數(shù)學(xué)上可以證明E[?log π(a|s) · b(s)] 0所以基線是免費(fèi)的降方差工具。那么最優(yōu)的基線是什么理論上是狀態(tài)價(jià)值函數(shù) V(s)。把 G_t 換成 G_t - V(s)方差會(huì)顯著下降。而這個(gè) G_t - V(s) 恰好就是優(yōu)勢(shì)函數(shù) A(s,a) 的一個(gè)無(wú)偏估計(jì)它衡量的是在狀態(tài) s 下采取動(dòng)作 a比平均水平的動(dòng)作好多少。到這里Actor 的更新方向就變成了往優(yōu)勢(shì)為正的動(dòng)作上加概率往優(yōu)勢(shì)為負(fù)的動(dòng)作上減概率。接下來(lái)的問(wèn)題是怎么拿到 V(s)。用蒙特卡洛方式統(tǒng)計(jì)回報(bào)當(dāng)然可以但那樣必須等回合結(jié)束學(xué)習(xí)是離線的、慢的。Critic 網(wǎng)絡(luò)的作用就是用函數(shù)近似的方式直接學(xué) V(s)而且可以只依賴(lài)單步的 TD 誤差來(lái)更新實(shí)現(xiàn)真正的在線學(xué)習(xí)。這就是 Actor-Critic 的核心交換用 Critic 引入偏差bias換來(lái)方差的大幅下降和在線更新能力。用一句話(huà)概括兩者分工Actor 負(fù)責(zé)試Critic 負(fù)責(zé)評(píng)。Critic 的評(píng)價(jià)越準(zhǔn)Actor 的更新方向越穩(wěn)Actor 的策略越好Critic 面對(duì)的數(shù)據(jù)分布越集中學(xué)起來(lái)也越容易。這種互相依賴(lài)也帶來(lái)了這套架構(gòu)最典型的失敗模式——兩個(gè)網(wǎng)絡(luò)一起崩后面第 9 章會(huì)專(zhuān)門(mén)講怎么拆解。關(guān)于偏差和方差的取舍還有一個(gè)重要的工程變量用 TD(0) 的單步誤差偏差大但方差小用蒙特卡洛回報(bào)方差大但無(wú)偏中間的 n-step 回報(bào)和 GAE 就是在兩者之間滑動(dòng)。這個(gè)滑動(dòng)的旋鈕直接決定了訓(xùn)練曲線是平滑爬升還是劇烈震蕩是 Actor-Critic 調(diào)參里性?xún)r(jià)比最高的一個(gè)參數(shù)。3. 環(huán)境準(zhǔn)備與最小可運(yùn)行工程骨架Actor-Critic 對(duì)環(huán)境的依賴(lài)其實(shí)很輕它不需要 CUDA 編譯、不需要下載大模型權(quán)重甚至不需要顯卡。真正容易出問(wèn)題的地方在于包版本不匹配導(dǎo)致的 API 變更尤其是 Gymnasium 從 Gym 分叉出來(lái)之后step 的返回值從四項(xiàng)變成五項(xiàng)很多老教程直接復(fù)制過(guò)來(lái)就會(huì)報(bào)解包錯(cuò)誤?;A(chǔ)依賴(lài)如下。版本號(hào)這里不寫(xiě)死因?yàn)椴煌瑱C(jī)器上的 CUDA 與 PyTorch 對(duì)應(yīng)關(guān)系不同寫(xiě)死反而容易踩坑原則是 PyTorch 官方安裝向?qū)Ыo出的組合優(yōu)先。# 創(chuàng)建獨(dú)立環(huán)境避免和已有項(xiàng)目沖突 conda create -n actor_critic python3.10 -y conda activate actor_critic # 安裝核心依賴(lài)具體版本以本機(jī)可用的 CUDA 組合為準(zhǔn) pip install torch --index-url https://download.pytorch.org/whl/cpu pip install gymnasium numpy matplotlib tensorboard如果機(jī)器上有顯卡并且想跑圖像輸入的任務(wù)把第一行的 CPU 源換成官方對(duì)應(yīng)的 CUDA 源即可。對(duì)于 CartPole、Pendulum、MountainCarContinuous 這類(lèi)低維狀態(tài)任務(wù)CPU 訓(xùn)練速度快過(guò) GPU因?yàn)閿?shù)據(jù)傳輸開(kāi)銷(xiāo)會(huì)蓋過(guò)并行計(jì)算收益這一點(diǎn)在后面的資源占用章節(jié)還會(huì)提到。建議的工程目錄結(jié)構(gòu)如下把網(wǎng)絡(luò)定義、算法實(shí)現(xiàn)、訓(xùn)練腳本、配置分離后面要換成 PPO 或者換環(huán)境時(shí)改動(dòng)量會(huì)小很多actor_critic_demo/ ├── configs/ │ └── a2c_cartpole.yaml ├── models/ │ └── networks.py # Actor / Critic 定義 ├── algos/ │ ├── a2c.py # A2C 更新邏輯 │ └── gae.py # 優(yōu)勢(shì)估計(jì) ├── train.py # 訓(xùn)練主循環(huán) ├── evaluate.py # 評(píng)估與可視化 └── requirements.txt驗(yàn)證環(huán)境是否裝好跑一段最小檢查腳本就夠了。這段腳本同時(shí)能確認(rèn) Gymnasium 的 API 版本因?yàn)閞eset返回(obs, info)、step返回五項(xiàng)這個(gè)約定是從 Gymnasium 開(kāi)始統(tǒng)一的如果你的環(huán)境返回四項(xiàng)說(shuō)明裝的是老版本 Gym后面的代碼需要相應(yīng)調(diào)整。import gymnasium as gym import torch print(torch:, torch.__version__) print(cuda available:, torch.cuda.is_available()) env gym.make(CartPole-v1) obs, info env.reset(seed42) print(obs shape:, obs.shape) print(action space:, env.action_space) obs, reward, terminated, truncated, info env.step(env.action_space.sample()) print(step 返回項(xiàng)數(shù)正確reward , reward) env.close()運(yùn)行結(jié)果里如果打印出step 返回項(xiàng)數(shù)正確環(huán)境就沒(méi)問(wèn)題了。如果這里報(bào)too many values to unpack說(shuō)明裝的是老版 Gym最簡(jiǎn)單的處理是統(tǒng)一升級(jí)到 Gymnasium而不是在代碼里寫(xiě)兼容分支后者會(huì)讓后面所有邏輯都變臟。4. Actor 與 Critic 的網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)網(wǎng)絡(luò)結(jié)構(gòu)是 Actor-Critic 里最容易被輕視的部分。很多人直接把別人的 MLP 抄過(guò)來(lái)層數(shù)、激活函數(shù)、初始化全都不動(dòng)結(jié)果在某個(gè)任務(wù)上怎么調(diào)都學(xué)不動(dòng)。實(shí)際上 Actor 和 Critic 對(duì)輸出的要求完全不同一個(gè)是概率分布參數(shù)一個(gè)是標(biāo)量?jī)r(jià)值兩者的輸出層設(shè)計(jì)必須分開(kāi)考慮。4.1 離散動(dòng)作空間的 Actor離散動(dòng)作下Actor 輸出的是每個(gè)動(dòng)作的 logit經(jīng)過(guò) softmax 得到概率再用Categorical分布采樣。輸出層不要加 softmax因?yàn)?PyTorch 的Categorical內(nèi)部會(huì)做 log_softmax提前做一次會(huì)導(dǎo)致數(shù)值不穩(wěn)定這是新手最常犯的錯(cuò)誤之一。import torch import torch.nn as nn class DiscreteActor(nn.Module): def __init__(self, obs_dim: int, action_dim: int, hidden: int 128): super().__init__() self.body nn.Sequential( nn.Linear(obs_dim, hidden), nn.Tanh(), nn.Linear(hidden, hidden), nn.Tanh(), ) self.head nn.Linear(hidden, action_dim) def forward(self, obs: torch.Tensor): logits self.head(self.body(obs)) return logits激活函數(shù)這里選 Tanh 而不是 ReLU原因是 ReLU 在狀態(tài)輸入歸一化不理想時(shí)容易產(chǎn)生大片死區(qū)而策略網(wǎng)絡(luò)對(duì)梯度方向很敏感死區(qū)會(huì)導(dǎo)致某些動(dòng)作永遠(yuǎn)采不到探索直接退化。這不是絕對(duì)規(guī)則但在連續(xù)控制和低維狀態(tài)任務(wù)上Tanh 的魯棒性明顯更好代價(jià)是訓(xùn)練稍慢一點(diǎn)。4.2 連續(xù)動(dòng)作空間的 Actor連續(xù)動(dòng)作要輸出一個(gè)高斯分布的均值和對(duì)數(shù)標(biāo)準(zhǔn)差。均值通常經(jīng)過(guò) tanh 壓到 [-1, 1]再按動(dòng)作上下限縮放對(duì)數(shù)標(biāo)準(zhǔn)差用可學(xué)習(xí)參數(shù)并且要 clamp 到一個(gè)合理區(qū)間否則訓(xùn)練中期可能出現(xiàn)標(biāo)準(zhǔn)差指數(shù)爆炸采樣出來(lái)的動(dòng)作全是邊界值。class ContinuousActor(nn.Module): def __init__(self, obs_dim: int, action_dim: int, hidden: int 256): super().__init__() self.body nn.Sequential( nn.Linear(obs_dim, hidden), nn.Tanh(), nn.Linear(hidden, hidden), nn.Tanh(), ) self.mean_head nn.Linear(hidden, action_dim) self.log_std nn.Parameter(torch.zeros(action_dim)) def forward(self, obs: torch.Tensor): mean torch.tanh(self.mean_head(self.body(obs))) log_std torch.clamp(self.log_std, min-20, max2) std log_std.exp() return mean, stdlog_std用獨(dú)立參數(shù)而不是網(wǎng)絡(luò)輸出是因?yàn)樵诖蟛糠诌B續(xù)控制任務(wù)里探索噪聲的水平與具體狀態(tài)關(guān)系不大獨(dú)立參數(shù)收斂更穩(wěn)。如果你做的是狀態(tài)相關(guān)性很強(qiáng)的任務(wù)比如機(jī)械臂在接近目標(biāo)時(shí)需要精細(xì)動(dòng)作可以讓網(wǎng)絡(luò)輸出 log_std但要額外做 clamp。4.3 Critic 的輸出與價(jià)值尺度Critic 輸出一個(gè)標(biāo)量 V(s)結(jié)構(gòu)比 Actor 簡(jiǎn)單但初始化很關(guān)鍵。如果 Critic 初始輸出偏離真實(shí)回報(bào)的量級(jí)太遠(yuǎn)第一批優(yōu)勢(shì)估計(jì)會(huì)全是噪聲Actor 會(huì)朝錯(cuò)誤方向更新一大步之后再想糾正就很困難。class Critic(nn.Module): def __init__(self, obs_dim: int, hidden: int 128): super().__init__() self.body nn.Sequential( nn.Linear(obs_dim, hidden), nn.Tanh(), nn.Linear(hidden, hidden), nn.Tanh(), ) self.head nn.Linear(hidden, 1) # 輸出層用小初始化讓初始 V(s) 接近 0 nn.init.orthogonal_(self.head.weight, gain1.0) nn.init.zeros_(self.head.bias) def forward(self, obs: torch.Tensor): return self.head(self.body(obs)).squeeze(-1)這里的squeeze(-1)很重要不寫(xiě)的話(huà)價(jià)值張量是[batch, 1]后面和回報(bào)張量相減會(huì)發(fā)生廣播形狀悄悄變成[batch, batch]損失看起來(lái)在下降但學(xué)的是完全錯(cuò)誤的東西。這類(lèi)形狀 bug 不會(huì)報(bào)錯(cuò)只會(huì)讓訓(xùn)練莫名其妙地不收斂排查成本極高。4.4 共享主干還是分離主干經(jīng)典實(shí)現(xiàn)里常見(jiàn)兩種寫(xiě)法一種讓 Actor 和 Critic 共享前面的特征提取層只分開(kāi)輸出頭另一種完全獨(dú)立。共享主干的優(yōu)勢(shì)是參數(shù)少、特征復(fù)用、在小任務(wù)上收斂快缺點(diǎn)是梯度會(huì)互相干擾如果兩個(gè)損失量級(jí)差異大容易一方主導(dǎo)把另一方的特征壓掉。完全分離則沒(méi)有干擾但參數(shù)量翻倍。我的建議是CartPole、Acrobot 這種幾十維狀態(tài)的任務(wù)可以共享圖像輸入或高維連續(xù)控制一律分離。判斷標(biāo)準(zhǔn)很簡(jiǎn)單如果訓(xùn)練曲線出現(xiàn)策略熵快速塌縮但回報(bào)不漲很可能是共享主干被價(jià)值損失帶偏了改成分離往往立刻好轉(zhuǎn)。5. 優(yōu)勢(shì)函數(shù)與 GAE 實(shí)現(xiàn)優(yōu)勢(shì)函數(shù)的估計(jì)質(zhì)量直接決定 Actor-Critic 的表現(xiàn)上限。這一節(jié)從最簡(jiǎn)單的單步 TD 誤差一路推到 GAE每一步都給出可運(yùn)行的代碼。5.1 TD 誤差與 n-step 回報(bào)最基礎(chǔ)的優(yōu)勢(shì)估計(jì)就是 TD 誤差A(yù) r γV(s) - V(s)。它的偏差來(lái)自 Critic 本身不準(zhǔn)但因?yàn)橹挥靡徊秸鎸?shí)獎(jiǎng)勵(lì)方差極小。另一個(gè)極端是蒙特卡洛A G_t - V(s)無(wú)偏但方差大。中間的 n-step 回報(bào)用 n 步真實(shí)獎(jiǎng)勵(lì)加上第 n 步的價(jià)值估計(jì)def compute_nstep_returns(rewards, values, dones, gamma0.99, n5): rewards/values/dones 均為長(zhǎng)度 T 的列表values 多一個(gè) bootstrap 項(xiàng) T len(rewards) returns [] for t in range(T): R 0.0 for k in range(n): if t k T: break R (gamma ** k) * rewards[t k] if dones[t k]: break else: # 未終止則加上第 n 步的價(jià)值估計(jì)作為 bootstrap idx min(t n, T) R (gamma ** n) * values[idx] returns.append(R) return returns這段代碼里有個(gè)細(xì)節(jié)值得注意for...else結(jié)構(gòu)只有在循環(huán)正常走完沒(méi)有被break時(shí)才執(zhí)行 bootstrap。如果軌跡中途終止就不該再加 bootstrap 項(xiàng)否則會(huì)把下一回合的價(jià)值錯(cuò)誤地算進(jìn)來(lái)。這類(lèi)終止處理錯(cuò)誤在外行看來(lái)只是曲線抖一點(diǎn)實(shí)際上是系統(tǒng)性偏差。5.2 GAE 的遞推實(shí)現(xiàn)GAE 的做法是把所有 n-step 優(yōu)勢(shì)做指數(shù)加權(quán)平均用一個(gè)參數(shù) λ 控制偏差方差權(quán)衡。λ0 退化成單步 TDλ1 退化成蒙特卡洛。工程上最常用的是 0.95 左右。遞推公式是A_t δ_t γλ(1-done_t)A_{t1}其中 δ_t 就是單步 TD 誤差。從后往前算一遍即可復(fù)雜度 O(T)。def compute_gae(rewards, values, dones, gamma0.99, lam0.95): rewards: [T] values: [T1]最后一項(xiàng)是 bootstrap 價(jià)值 dones: [T]float終止為 1 返回 advantages [T] 和 returns [T] T len(rewards) advantages [0.0] * T last_adv 0.0 for t in reversed(range(T)): if t T - 1: next_value values[T] else: next_value values[t 1] delta rewards[t] gamma * next_value * (1 - dones[t]) - values[t] last_adv delta gamma * lam * (1 - dones[t]) * last_adv advantages[t] last_adv returns [advantages[t] values[t] for t in range(T)] return advantages, returns兩個(gè)輸出都要用advantages拿去算策略損失returns拿去算價(jià)值損失。有些人圖省事直接用 advantages 當(dāng)價(jià)值目標(biāo)這是錯(cuò)的因?yàn)閮r(jià)值網(wǎng)絡(luò)學(xué)的是 V(s) 而不是優(yōu)勢(shì)兩者差了一個(gè)基線。5.3 優(yōu)勢(shì)歸一化拿到優(yōu)勢(shì)后必須做一步歸一化這是 A2C/PPO 里最廉價(jià)也最有效的穩(wěn)定手段import torch def normalize_advantages(adv: torch.Tensor, eps: float 1e-8): return (adv - adv.mean()) / (adv.std() eps)歸一化的作用是把梯度步長(zhǎng)控制在合理范圍。不做這一步時(shí)如果某批次優(yōu)勢(shì)全是正數(shù)且數(shù)值很大一次更新就能把策略推得很遠(yuǎn)直接破壞探索歸一化之后優(yōu)勢(shì)的均值是 0、方差是 1更新量級(jí)與回報(bào)絕對(duì)大小解耦換環(huán)境時(shí)不用重新調(diào)學(xué)習(xí)率。這個(gè)技巧在 reward 尺度差異大的任務(wù)上幾乎是必須的。6. 完整 A2C 訓(xùn)練實(shí)現(xiàn)把前面的模塊拼起來(lái)就是一段可以直接跑的 A2C。選擇 A2C 而不是 PPO 作為第一個(gè)完整實(shí)現(xiàn)是因?yàn)樗鼪](méi)有重要性采樣比率和 clip邏輯干凈出錯(cuò)時(shí)定位容易。import gymnasium as gym import numpy as np import torch import torch.nn as nn import torch.optim as optim from torch.distributions import Categorical class ActorCritic(nn.Module): def __init__(self, obs_dim, action_dim, hidden128): super().__init__() self.shared nn.Sequential( nn.Linear(obs_dim, hidden), nn.Tanh(), nn.Linear(hidden, hidden), nn.Tanh(), ) self.actor nn.Linear(hidden, action_dim) self.critic nn.Linear(hidden, 1) nn.init.orthogonal_(self.actor.weight, gain0.01) nn.init.zeros_(self.actor.bias) nn.init.orthogonal_(self.critic.weight, gain1.0) nn.init.zeros_(self.critic.bias) def forward(self, x): h self.shared(x) return self.actor(h), self.critic(h).squeeze(-1) def act(self, obs): logits, value self.forward(obs) dist Categorical(logitslogits) action dist.sample() return action, dist.log_prob(action), value, dist.entropy() def collect_rollout(env, model, rollout_steps20): obs_list, act_list, logp_list [], [], [] rew_list, done_list, val_list [], [], [] obs, _ env.reset() ep_return, ep_returns 0.0, [] for _ in range(rollout_steps): obs_t torch.as_tensor(obs, dtypetorch.float32) with torch.no_grad(): action, logp, value, _ model.act(obs_t) next_obs, reward, terminated, truncated, _ env.step(action.item()) done terminated or truncated obs_list.append(obs_t) act_list.append(action) logp_list.append(logp) rew_list.append(reward) done_list.append(float(done)) val_list.append(value.item()) ep_return reward obs next_obs if done: ep_returns.append(ep_return) ep_return 0.0 obs, _ env.reset() with torch.no_grad(): _, last_value model(torch.as_tensor(obs, dtypetorch.float32)) return (obs_list, act_list, logp_list, rew_list, done_list, val_list, last_value.item(), ep_returns) def train(): env gym.make(CartPole-v1) obs_dim env.observation_space.shape[0] action_dim env.action_space.n model ActorCritic(obs_dim, action_dim) optimizer optim.Adam(model.parameters(), lr3e-3) gamma, lam 0.99, 0.95 value_coef, entropy_coef 0.5, 0.01 returns_history [] for update in range(200): (obs_list, act_list, logp_list, rew_list, done_list, val_list, last_val, ep_returns) collect_rollout(env, model) returns_history.extend(ep_returns) values val_list [last_val] advs, rets [], [] last_adv 0.0 for t in reversed(range(len(rew_list))): delta rew_list[t] gamma * values[t 1] * (1 - done_list[t]) - values[t] last_adv delta gamma * lam * (1 - done_list[t]) * last_adv advs.append(last_adv) advs.reverse() rets [advs[i] values[i] for i in range(len(advs))] adv_t torch.tensor(advs, dtypetorch.float32) adv_t (adv_t - adv_t.mean()) / (adv_t.std() 1e-8) ret_t torch.tensor(rets, dtypetorch.float32) logp_t torch.stack(logp_list) obs_t torch.stack(obs_list) logits, values_pred model(obs_t) dist Categorical(logitslogits) entropy dist.entropy().mean() policy_loss -(logp_t * adv_t.detach()).mean() value_loss nn.functional.mse_loss(values_pred, ret_t) loss policy_loss value_coef * value_loss - entropy_coef * entropy optimizer.zero_grad() loss.backward() nn.utils.clip_grad_norm_(model.parameters(), 0.5) optimizer.step() if (update 1) % 10 0 and returns_history: avg np.mean(returns_history[-20:]) print(fupdate {update1:03d} | avg return {avg:.1f} | fentropy {entropy.item():.3f} | value loss {value_loss.item():.3f}) env.close() if __name__ __main__: train()這段代碼里有幾個(gè)設(shè)計(jì)選擇值得單獨(dú)說(shuō)。策略損失用采樣時(shí)記錄的logp_list而不是重新前向計(jì)算這是同策略算法的標(biāo)準(zhǔn)做法但要記得 detach 優(yōu)勢(shì)否則梯度會(huì)流進(jìn)價(jià)值網(wǎng)絡(luò)導(dǎo)致雙重反傳。價(jià)值損失用 MSE如果獎(jiǎng)勵(lì)尺度很大可以換成 Huber避免離群回報(bào)把 Critic 拉飛。熵獎(jiǎng)勵(lì)的符號(hào)是減去因?yàn)槲覀兿M畲蠡匾簿褪亲寭p失里包含負(fù)的熵項(xiàng)。梯度裁剪的 0.5 是個(gè)經(jīng)驗(yàn)值。A2C 在 CartPole 上即使不裁剪一般也能跑但在連續(xù)控制任務(wù)里一次異常大的優(yōu)勢(shì)就能讓策略參數(shù)跳變裁剪是最省事的保險(xiǎn)。裁剪閾值不要設(shè)得太小0.1 以下會(huì)讓學(xué)習(xí)明顯變慢因?yàn)榇蟛糠终L荻纫矔?huì)被削。在普通筆記本 CPU 上這段代碼大概 100 到 200 次 update 就能讓平均回報(bào)爬到 400 以上200 次全滿(mǎn)。如果跑到 500 次還在 20 左右徘徊基本可以判定是環(huán)境 API 或優(yōu)勢(shì)計(jì)算出了問(wèn)題直接跳到第 9 章排查。7. 算法族對(duì)比與選型Actor-Critic 這個(gè)模板衍生出的算法很多實(shí)際項(xiàng)目里選型的關(guān)鍵不是哪個(gè)最新而是樣本從哪來(lái)、動(dòng)作空間是什么、允許的調(diào)參時(shí)間有多少。下面這張表把常用的幾個(gè)放在一起對(duì)比。算法策略類(lèi)型采樣方式動(dòng)作空間經(jīng)驗(yàn)回放主要特點(diǎn)典型用途A2C隨機(jī)策略同策略同步多環(huán)境離散/連續(xù)否結(jié)構(gòu)簡(jiǎn)單易于調(diào)試教學(xué)、基線對(duì)比A3C隨機(jī)策略同策略異步多線程離散/連續(xù)否異步更新現(xiàn)已較少使用歷史參考PPO隨機(jī)策略同策略多輪復(fù)用離散/連續(xù)否clip 約束穩(wěn)定工業(yè)界主力大模型 RLHF、游戲 AIDDPG確定性策略異策略?xún)H連續(xù)是確定性策略加目標(biāo)網(wǎng)絡(luò)連續(xù)控制基線TD3確定性策略異策略?xún)H連續(xù)是雙 Critic、延遲更新、目標(biāo)平滑連續(xù)控制常用SAC隨機(jī)策略異策略?xún)H連續(xù)是最大熵框架探索充分機(jī)器人、樣本昂貴場(chǎng)景選型的實(shí)操判斷可以這樣走如果你能拿到大量并行仿真環(huán)境同策略的 PPO 是最省心的選擇它的調(diào)參空間相對(duì)寬容社區(qū)實(shí)現(xiàn)也最多如果真實(shí)環(huán)境采樣代價(jià)高、一步要花幾秒那就得走異策略路線用經(jīng)驗(yàn)回放提高樣本利用率連續(xù)動(dòng)作優(yōu)先考慮 SAC 或 TD3如果動(dòng)作是離散的且環(huán)境便宜A2C 足夠作為第一版基線。從 A2C 遷移到 PPO 的改動(dòng)量其實(shí)很小核心是把采一批數(shù)據(jù)更新一次改成采一批數(shù)據(jù)分多個(gè) epoch 更新同時(shí)加上重要性采樣比率和 clip。下面這段是 PPO 的策略損失核心可以對(duì)照第 6 章的 A2C 看差異def ppo_policy_loss(new_logp, old_logp, advantages, clip_ratio0.2): ratio torch.exp(new_logp - old_logp) surr1 ratio * advantages surr2 torch.clamp(ratio, 1.0 - clip_ratio, 1.0 clip_ratio) * advantages return -torch.min(surr1, surr2).mean()這里old_logp必須是采樣時(shí)記錄的、并且在多個(gè) epoch 內(nèi)保持不變。很多人把它每個(gè) epoch 重新算一遍clip 就失效了算法退化成沒(méi)有約束的策略梯度訓(xùn)練曲線會(huì)突然崩掉。這個(gè)坑在復(fù)現(xiàn) PPO 時(shí)出現(xiàn)頻率極高。8. 訓(xùn)練監(jiān)控、資源占用與常見(jiàn)問(wèn)題排查Actor-Critic 的調(diào)試核心是分而治之先把 Critic 單獨(dú)看好再看 Actor。因?yàn)?Actor 的更新方向完全依賴(lài) Critic 給出的優(yōu)勢(shì)如果價(jià)值估計(jì)本身在亂飄后面所有調(diào)參都是在錯(cuò)誤的地基上做微調(diào)。8.1 必須監(jiān)控的四個(gè)指標(biāo)第一是平均回合回報(bào)看趨勢(shì)不看單點(diǎn)用最近 20 到 100 回合的滑動(dòng)平均。第二是策略熵它反映探索程度CartPole 上健康的曲線是從 0.69 左右緩慢下降到 0.3 附近如果十幾輪就掉到 0.05說(shuō)明策略過(guò)早確定通常需要加大熵系數(shù)或降低學(xué)習(xí)率。第三是價(jià)值損失它應(yīng)該整體下降但允許波動(dòng)如果持續(xù)上升說(shuō)明價(jià)值目標(biāo)尺度有問(wèn)題。第四是梯度范數(shù)裁剪前的梯度范數(shù)突然放大到幾十上百往往是某批次優(yōu)勢(shì)異常或出現(xiàn)了數(shù)值問(wèn)題。把這幾項(xiàng)寫(xiě)進(jìn)日志接 TensorBoard 是最省事的做法from torch.utils.tensorboard import SummaryWriter writer SummaryWriter(runs/a2c_cartpole) # 在每個(gè) update 結(jié)束時(shí)記錄 writer.add_scalar(train/avg_return, avg_return, update) writer.add_scalar(train/entropy, entropy.item(), update) writer.add_scalar(train/value_loss, value_loss.item(), update) writer.add_scalar(train/grad_norm, grad_norm, update) writer.close()8.2 資源占用怎么觀察低維狀態(tài)任務(wù)上瓶頸幾乎全在環(huán)境交互而不在網(wǎng)絡(luò)計(jì)算。一個(gè) 128×128 的 MLP 單次前向在 CPU 上是微秒級(jí)而env.step往往要幾十微秒到毫秒級(jí)。所以在 CartPole 上把模型搬到 GPU 反而更慢因?yàn)槊看味家鲆淮沃鳈C(jī)到設(shè)備的拷貝。判斷標(biāo)準(zhǔn)很直接用time.perf_counter()把采樣耗時(shí)和更新耗時(shí)分別打出來(lái)如果采樣占 80% 以上優(yōu)化方向就是并行環(huán)境而不是換硬件。import time t0 time.perf_counter() rollout collect_rollout(env, model) t1 time.perf_counter() # ... 更新邏輯 ... t2 time.perf_counter() print(fsample: {t1-t0:.3f}s | update: {t2-t1:.3f}s)當(dāng)任務(wù)換成圖像輸入情況就反過(guò)來(lái)了。Atari 的 84×84×4 幀堆疊輸入特征提取網(wǎng)絡(luò)的前向和反向會(huì)成為主要開(kāi)銷(xiāo)這時(shí)候 GPU 才有意義同時(shí)顯存占用主要取決于批量大小和網(wǎng)絡(luò)寬度。觀測(cè)這一點(diǎn)最方便的方式是torch.cuda.max_memory_allocated()在訓(xùn)練循環(huán)里定期打印比看任務(wù)管理器準(zhǔn)確得多。并行環(huán)境是另一個(gè)資源維度。A2C 原本就設(shè)計(jì)成多環(huán)境同步采樣用gymnasium.vector.SyncVectorEnv起 8 個(gè)環(huán)境采樣吞吐能提升數(shù)倍但 CPU 占用也會(huì)同步上升。這里要注意并行環(huán)境的數(shù)量不是越多越好超過(guò)物理核心數(shù)之后上下文切換開(kāi)銷(xiāo)會(huì)吃掉收益一般取物理核心數(shù)的一半到全部之間。8.3 常見(jiàn)問(wèn)題與排查表問(wèn)題現(xiàn)象可能原因排查方式解決方案回報(bào)長(zhǎng)期停在隨機(jī)水平優(yōu)勢(shì)符號(hào)寫(xiě)反或未 detach打印單批次優(yōu)勢(shì)均值檢查是否恒正或恒負(fù)修正優(yōu)勢(shì)計(jì)算確保adv.detach()策略熵幾輪內(nèi)塌到接近 0學(xué)習(xí)率過(guò)大或熵系數(shù)過(guò)小觀察 entropy 曲線下降速度降 lr 到 1e-3 以下熵系數(shù)提到 0.01 以上價(jià)值損失不降反升回報(bào)尺度與初始化不匹配打印values_pred.mean()與ret_t.mean()輸出層小初始化或?qū)貓?bào)做縮放張量形狀報(bào)錯(cuò)或結(jié)果異常Critic 輸出未 squeeze檢查values_pred.shape加.squeeze(-1)訓(xùn)練前期正常后期突然崩潰梯度爆炸記錄裁剪前梯度范數(shù)開(kāi)啟梯度裁剪閾值 0.5 左右換環(huán)境后完全不學(xué)觀測(cè)未歸一化檢查 obs 數(shù)值范圍加 running mean/std 歸一化多環(huán)境并行后變慢環(huán)境數(shù)超過(guò)物理核數(shù)對(duì)比不同 env 數(shù)的采樣耗時(shí)降到物理核心數(shù)以?xún)?nèi)PPO 復(fù)現(xiàn)后曲線不如 A2Cold_logp 每個(gè) epoch 重算檢查 old_logp 是否在 epoch 內(nèi)固定采樣時(shí)記錄一次全程復(fù)用連續(xù)動(dòng)作全落在邊界log_std 無(wú)約束打印 std 數(shù)值clamp log_std 到 [-20, 2]這張表里最值得展開(kāi)的是觀測(cè)未歸一化這一條。CartPole 的觀測(cè)數(shù)值都在個(gè)位數(shù)不歸一化也能跑所以很多人養(yǎng)成了不歸一化的習(xí)慣。一旦換到 Pendulum 或者 MuJoCo觀測(cè)里同時(shí)存在 0.01 量級(jí)和 10 量級(jí)的維度網(wǎng)絡(luò)會(huì)幾乎只對(duì)大量級(jí)維度敏感小量級(jí)維度相當(dāng)于被屏蔽表現(xiàn)為怎么調(diào)都不學(xué)。加一層 running 均值方差歸一化通常一次就解決。9. 最佳實(shí)踐與下一步Actor-Critic 這一套東西寫(xiě)對(duì)一次之后復(fù)用價(jià)值很高。下面是幾條從實(shí)際調(diào)試?yán)锟偨Y(jié)出來(lái)的、能明顯減少踩坑時(shí)間的做法。第一條永遠(yuǎn)先在 CartPole 上跑通再換環(huán)境。這不是偷懶而是建立一條已知正確的基線。當(dāng)你在 MuJoCo 上調(diào)了兩天沒(méi)結(jié)果時(shí)把同一份代碼切回 CartPole 跑 50 輪如果也不學(xué)問(wèn)題在算法實(shí)現(xiàn)如果正常問(wèn)題在超參或環(huán)境適配。這個(gè)二分能把排查范圍瞬間砍掉一半。第二條把 Critic 的學(xué)習(xí)率和 Actor 分開(kāi)設(shè)置。共享一個(gè)優(yōu)化器看似簡(jiǎn)潔但兩者對(duì)步長(zhǎng)的敏感度不同Critic 通常需要更快地跟上回報(bào)變化Actor 則需要更保守。實(shí)踐里 Critic 學(xué)習(xí)率取 Actor 的 2 到 3 倍是常見(jiàn)起點(diǎn)尤其在價(jià)值損失下降明顯滯后于策略改進(jìn)的時(shí)候。第三條保留一套最小可運(yùn)行配置。把能跑通的那組超參寫(xiě)進(jìn)configs/目錄并加注釋說(shuō)明適用環(huán)境之后每次實(shí)驗(yàn)都從它 fork 出來(lái)而不是在當(dāng)前腳本上反復(fù)改數(shù)字。Actor-Critic 調(diào)參很容易陷入改了 A 又影響 B的循環(huán)有基線配置才能判斷某次改動(dòng)是真的有效還是隨機(jī)波動(dòng)。第四條批量任務(wù)和長(zhǎng)訓(xùn)練要加斷點(diǎn)保存。訓(xùn)練腳本里定期保存模型參數(shù)、優(yōu)化器狀態(tài)和當(dāng)前 update 序號(hào)配合日志落盤(pán)。強(qiáng)化學(xué)習(xí)的訓(xùn)練曲線經(jīng)常在某個(gè)階段突然變好或變差如果沒(méi)保存中間狀態(tài)想回到那個(gè)點(diǎn)重新實(shí)驗(yàn)就只能從頭再來(lái)這在需要跑幾小時(shí)的任務(wù)上代價(jià)很大。def save_checkpoint(path, model, optimizer, update, best_return): torch.save({ model: model.state_dict(), optimizer: optimizer.state_dict(), update: update, best_return: best_return, }, path) def load_checkpoint(path, model, optimizer): ckpt torch.load(path, map_locationcpu) model.load_state_dict(ckpt[model]) optimizer.load_state_dict(ckpt[optimizer]) return ckpt[update], ckpt[best_return]第五條評(píng)估階段一定要關(guān)掉探索。訓(xùn)練時(shí)用隨機(jī)策略采樣是為了探索評(píng)估時(shí)應(yīng)該用分布的均值或 argmax并且固定隨機(jī)種子跑多個(gè)回合取平均。用帶噪聲的策略去評(píng)估得到的回報(bào)會(huì)明顯偏低且波動(dòng)很大容易誤判模型沒(méi)學(xué)好。關(guān)于下一步的擴(kuò)展方向比較自然的路徑有兩條。一條是往 PPO 走把第 6 章的采樣和更新拆成兩段加上重要性采樣比率和 clip這套代碼幾乎可以直接用在語(yǔ)言模型的 RLHF 微調(diào)流程里那邊的 reward model 扮演的就是 Critic 的角色只是評(píng)價(jià)對(duì)象從狀態(tài)變成了整段回復(fù)。另一條是往異策略走引入經(jīng)驗(yàn)回放緩沖區(qū)、目標(biāo)網(wǎng)絡(luò)和雙 Critic去處理真實(shí)采樣代價(jià)高的連續(xù)控制問(wèn)題。如果要在這兩條路上做選擇判斷依據(jù)就一句話(huà)你的環(huán)境能不能便宜地并行采樣。能就走同策略不能就走異策略。這個(gè)判斷比看任何算法排行榜都可靠。Actor-Critic 的骨架在這兩條路上是共通的先把它吃透后面換算法只是替換幾個(gè)模塊的事。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
91精品熟女| 五月丁香婷婷中文网| 五月激情综合网| 深爱丁香网| 在线视频九色97| 亚欧州精品视频| 天干干夜夜操| 深爱五月月天| 亚洲成人av在线播放| 五月天激情四射| 久久五月丁香六月婷| 亚州婷婷五月激情综合| 五月婷婷香蕉| 五月婷婷丁香| 天天拍天天操| 久久久久久激情| 六月五月久久丁香| 六月婷婷之青青草| 婷婷五月激情四月综合| 手机在线日韩视频中文字幕| 亚洲激情六月丁香| 色婷婷小视频| 久久婷综| 激情综合网激情五月婷婷| 97精品综合久久| 欧美性色五月天| 亚卅毛片| 四虎成人精品永久免费AV九九| 日韩AV在线影片| 色婷婷丁香| 亚洲色综合性| 性色99| 激情综合网五月天天| 91久草五月天婷婷| 婷婷第一页| 九月丁香八月婷婷加勒比| 日操五月婷| .青娱乐天天操B| 99热1| 26uuu最新地址| 久久这里只有精品无码| 天天狠狠色噜噜| 开心婷婷中文字慕| 色色色色色色色综合| 91肏| 久久激情网| 操逼综合网| 91919191919久久成人视频| 婷婷色在线| 欧美影院| 九九色色| 国产精品国产成人国产三级| 成人做爰黄A片免费看直播室男男 久草热8精品视频在线观看 | 精品动漫 无码av| 久草婷婷网| 色丁香五月婷婷| 丁香五月综合婷婷| 婷婷色在线| 婷婷天天色| 99热综合在线| 婷婷伊人綜合中文字幕小说| www婷婷色| 野战J办公桌椅H| 亚洲无AV在线中文字幕| 五月丁香婷久久| 午夜微拍福利| 熟女网站久久| 丁香五月视频在线观看| 五月网网站| 综合五月天天天天天五月| 蜜乳.comcom| 亚洲九九九九| 亚洲无码yw| 五月丁香色综合| 五月婷婷亚洲色视频| 五月丁香六月婷婷网| 玖玖热视频| 激情综合一| 玖玖五月| 91 九色大美女| 99久久超级| 亚洲成人av中文| 91免费试看| 五月香蕉婷婷| 婷婷六月久久| 亚洲在线综合| Aaa久久| 精品九九网| 婷婷五月色综合| 五月天丁香六月综合| 欧美成人Va| 激情的五月| 婷婷五月天激情丁香| 99爱视频| www.一区二区三区| 丁香五月天激情五月天激情五月天激情网 | 9久久婷婷国产综合精品性色| 黄色AV日韩| 情欲禁地| 超碰chaompinm| 99热九九这里只有精品10| 翔田千里无码| 五月天婷婷久久视频| 99色在线观看视频者| 99热精品观看| 丁香婷婷婷五月| 五月天综合激情网| 爆乳熟女-区二区三区| 91肏| 色七七色九九| 狠狠操狠狠色| 这里只有精品99www| 色五月偷偷| 婷婷涩涩网| 五月婷婷啪啪综合网| 99九九视频| www.久久久久| 天天做天天爽| 热久91| 欧美狠狠一在草| 思思热国产在线| 超碰chaompinm| AV中文字幕夜夜操b天天摸bb| 99免费热在线精品| 丁香五月天啪啪| 沈娜娜av| 五月花亭亭| 97碰在线视频| 91超碰九色| 欧州色色| 综合九九日本| 免费视频这里只有精品| 九色综合网| 久久丝丝热| 五月丁香婷婷综合网| 日韩黄色中文字幕| 六月婷婷狠狠做| 丁香六月激情综合| 五月天婷婷一起草| 91chinese在线| 国产熟女大叫受不了| 狠狠狠夜夜夜| 国产精品视频网| 99热中国| 婷婷五月丁香激情图片| 五月丁香婷婷成人网| 欧美日韩成卜| 激情五月www| 日本精品久久久久中文字幕| 天天拍天天操| 五月丁香婷婷激情久久| 婷婷大香焦| 激情五月天之五月婷婷| 性欧美大战久久久久久久83| 五月婷婷亞洲中文| 丁香五月婷综合| 深爱激情久久| 拍色综合| aa久久| 色婷婷五月天成人网| 婷婷深爱五月天| 色婷婷丁香社综合| 色玖玖爱| 天天草婷婷五月| 无码99| 2015好吊操| 丁香五月AV| 99热只有精品在线播放| 色婷婷丁香女女| 国产高清精品色| 久久国产性爱A V| 伊人99热| 丁香五月日本| 国产在线视频1234| 日日干天天爽| 色色色国产| 韩日AV片| 国产成人网站在线观看| 丁香婷婷成人在线播放| 伊人网碰碰| 天天日,天天干,天天操| 激情五月丁香激情综合网| www.wuyuetian啪啪| 六月婷婷狠狠做| 无码人妻一区二区一牛影视| 丁香婷婷色五月| 色婷婷六月性| 2021日韩无码| 日韩成人综合网| 婷婷综合视频| 色五月婷婷在线观看| 視频福利乱色| 日本不卡一区二区三区| 综合五月天| 大香蕉AV在线| 人人操人人添人人摸97| 性爱综合网| 性生活视频98791| 99热日韩| 国产综合A片| 久久天堂网| 激情五月婷婷在线区| 一区无码| 无遮挡国产高潮视频免费观看| 六月婷婷久久大全| bbwcuckold精品熟妇| 色欲色欲久久宗合网| 五月婷婷视频在线观看| 九九久久五月天综合伊人| 婷婷性爱视频在线| 丁香网五月天| 激情开心五月天| 五月天婷婷乱| 亚洲 25P| 日本色图综合| 免费看片操逼| 五月Huangsewang| 亚洲午夜一区二区| 99免费热视频在线| 99热精品一| 99视频精品| 国产综合A片| 五月天激情四射| 超91热| 激情综合网址| 久久综合五月天| 影音先锋 91工厂| 丁香蜜臀黄色婷婷五月天| 教师性爱毛片| 亚洲乱码日产精品BD| 人人澡玖玖一| 丁香五月激情综合| 超级碰碰91| 综合五月激情| 伊人五月网| 91精品丝袜久久久久久| AV操逼网| 五月天婷综合| 在线观看av网站| 国产五月视频| 97色婷婷| 一本道在线电影| 久久狠狠干| 丁香五月狠狠综合欧美| 天天做天天爱天天日| 超碰伊人碰婷婷五月| 国产精品99久久久久久久女警| 激情五月天社区| xx综合网| 天天操天天爽天天爱| 九九色精品| 色色色色色五月| 琪琪色网址| A久久| 午夜成人天堂久久无码日韩久久| 日本啪啪网| 色婷婷久久综合中文久久一本| 情五月亚洲婷婷| 五月天丁香看婷婷| 久久综合色五月| 欧美三级大片AA在线看| 欧美日韩一区二区三区四区| 色九四色| 欧美久久久久久久久中文字幕| 成人无码精品1区2区3区免费看| 国产精产国品一二三在观看| 少妇人妻丰满做爰XXX| 婷婷久热| 天天精品视频免费观看| 激情五月激情综合网| 99欧美| 97操操| 色婷婷AAA| 另类激情五月在线视频欧美| 91久久综合亚洲鲁鲁五月天| 欧美丁香婷婷五月| 少妇人妻偷人精品无码视频新浪| 国产欧美日韩综合精品一区二区| 久久九九99视频| 日韩在线看AV| 欧美在线视频9| 男人天堂 久久| 五月色婷婷夜色| 中文字幕+中文在线| 丁香六月激情毛片| 欧美激情综合| 婷婷五月丁香激情色情| 激情综合激情五月一起草| 五月激情婷婷开心| 五月丁香六月激情综合| 日本色久| 久热99| 五月丁香婷婷成人网| 国产熟妇的荡欲午夜视频| 国产3p露脸普通话对白| 婷婷丁香五月天大香蕉| 色婷婷AAA| 99re这里只有精品视频6| 丁香五月老师| 五月天色综合| 无码日本精品XXXXXXXXX| 人人人操 超碰| 丁香五月大香蕉在线99| 色五月天激情| 五月丁香亚洲婷婷| 激情五月五月婷婷| 综久久久| 五月婷六月综合在线观看| 最新精品视频99| 婷婷干五月综合在线播放| 99精品在线| 五月丁香婷婷六月| 久久精品天| 激情丁香社区| 婷婷五月天激情综合网| 青草激情综合| 久久日婷婷| 九九综合伊人| 五月天激情视频五月天| 婷婷五月丁香五月| 97热精品| 婷婷开心激情五月激情网| 99热e| 狠狠CAO日日穞夜夜穞AV| 婷婷伊人綜合中文| 久久中文人妻系列| 深夜男女福利刺激影院一区完整| 四色五月婷婷| peg 2区三区四区的| 五月婷婷丁香在线| 久久久GOGO无码啪啪艺术 | 五月婷婷丁香啪啪| 亚洲久久婷婷| 五月激情小说| 婷婷五月天最新综合你懂的| 夜夜资源站| 久久艹 五月天| 久99久精品视频| 亚洲 无码 中文字幕 中出| 五月色网| 丁香五月人妻| 99爱在线免费视频| 久久99网| 五月天激情久色| 天天操天天干天天日| 亚洲AV无码成人精品区电影网| 婷婷色无码| 4399在线日本A片| 九久热| 婷婷五月天.com| 久热9| 久久免费试看120秒| www.狠狠狠狠| 97五月天| 永久99免费视频网站| 九九热在线精品| 九 九九九AV| 色欲丁香久久| 国产成人精品123区免费视频| 色热久| 国产欧美va| 色亭亭丁香五月天| 婷婷色欧美激情| 色婷婷成人做爰A片免费看网站| www.91操| 狠狠干综合| 91色色色18| 日本五月天婷婷丁香| 9精品国产在热久久| www.五月激情红色| 碰99在线| 五月婷婷啪啪| 夫妻超碰在线| 91丨九色丨丰满人妖| 五月婷婷性爱视频| 婷婷综合激情| 在线成人网址| 九九这里有精品| 国产噜一噜天天噜| 精品国产一区二区三区四区阿崩| 久噜久噜| 九月av在线| 直接看的AV| 九色激情网| 婷婷六月色开 | 激情国产五月| 我要色综合五月婷婷| 丁香婷婷久久| 五月丁香美女| 玖玖综合色区在线观看| 五月六月伦理| 91色久| 日本高清不卡免费一区二区三区| 日韩999| 碰人人97| 日本99婷婷| 久久人妻伦理| 99黄色在线视频精品熟女| 五月天狠狠| 色情五月天丁香社区| www.天天日| 色五月婷婷在线视频| 婷婷99综合| 色婷婷五月天成人网| 337久久| 天天日夜夜拍| 大香蕉综合网| renrencaoav| 九九九九中文字幕| 97色婷婷| 日本五月婷| www.99久| 久热伊人91| 超碰超碰在线| 丁香五月天激情网| 天天操天天爱天天日| 五月天婷久久| 爱射综合| 婷婷成人五月天成人文学| 日韩无码专区| 久婷狼色诱惑在线| 亚洲天天| 99视频网址| 亚洲精品小视频| 久人操| 精国产品一区二区三区A片 | 999热在线视频| 丁香色情五月天| 婷婷五月激情综合网| 9l视频自拍9l九色9l成人| 第2色五月婷| 婷婷亚洲久久| 久cao香蕉影院| 精品成人久久久久久久_一二三四视| 五月青青草综合| 99亚洲精品视频| 91中文狠狠综合| 婷色五月天| 五月开心激情网| 超碰久热| 免费AV在线| 91人妻九色大屁股| 99热在线观看| 五月天色社区| 十一月婷婷激情四射| 激情婷婷另类| 三区激情四射av| 五月丁香久久网| 9精品国产在热久久| 激情五月婷婷| 激情欧美五月丁香| 噜噜久| 综合狠狠五月婷婷| 婷婷综合激情五月中文字幕| 亚洲欧美婷婷五月色综合| 激情五月婷婷丁香综合网| 五月天激情小说网| 伊人久久婷婷| 色五月色五天色情网| 激情五月天伊人av| 日本成人噜噜| 久久婷婷激情视频| 久久婷婷五月综合色丁香| 欧美成性色| 日本一级黄色电影| 亚洲综合字幕色色| 天天综合激情| 天天在线天天综合网色| 激情影院内射| 亚洲熟妇AV综合网五月丁香伊人| 成年AAAA色情| 开心五月丁香啪| 99精品热| 五月天激情电影| 久久婷狠狠色| 热久精品| 国产精产国品一二三在观看| 99噜噜噜在线播放| 国产肥白大熟妇BBBB视频| 天天天天干| 大香蕉综合在线| 色婷五月天| 丰满老熟妇BBBBB搡BBB| 国产午夜伦鲁鲁| 激情五月婷婷| 91人人看| 日本系列_4页_777FP| 成人资源在线| www.五月婷婷久久.com| 妇激情基地| 国产99美少妇| site:feetmall.com| 五月天婷婷五月| 五月婷婷婷婷网| 五月天亚洲综合网| 久久激情五月| 丁香五月婷婷五月基地| 99玖玖人人| 五月丁香啪啪综合| 《》【无码】想被搞到爽AV应募而来的超M素人 西纯子 10musume-011723-01 | 五月婷婷激情网| 全部老头和老太XXXXX| 激情文学综合婷婷五月天丁香花| 五婷婷综合网| 亚洲无码播放| 丰满人妻一区三区三区| 九九热这里只有精品6| 日本女人久久| 国产精品日本一区二区在线播放 | 超碰免费成人| 激情综合五月天| 啪啪操网| 亚洲激情综合色站| 激情VA视频| 97香蕉碰碰人妻国产欧美| 99婷婷| 5Www色5夜| 五月丁香激情婷婷| 色丁香在线视频| 五月婷婷天天| 91久久精品国产91性色TV| 天啪色| aaaaa不卡| www.色擼擼.com| 激情五月婷黄版| 婷婷五月天激情网| 色九综合| 色五月婷婷视频| 激情视频综合| 99久久人人| 五月婷婷色播视频| 五月婷婷婷| 亚洲色婷婷五月天| 中文AV在线观看| 日日天天操| 无码区婷婷五月花开| 99色| 五月丁香色色网| 丁香五月综合网亚洲综合欧美狠狠| 丁香五月六月综合激情| 超碰日韩人妻在线| 五月婷婷高清| 色欲av伊人久久大香线蕉影院| 人妻无码视频网| 少妇高潮一区二区三区99欧美| 五月综合六月婷婷| 日韩黄在免| a网站免费观看| 五月花免费视频| 亚洲综合激情五月久久| 五月丁香啪啪| 九九综合精品| 色吊丝永久访问网址| 综合色色婷婷| 337p大胆噜噜噜噜噜91Av| av在线免费网站 | 色国产五月| 成人在线网| 免费观看2018www黄色操逼网站| 色综合五月婷婷狠狠干| 人妻丰满精品一区二区A片| 五月丁香啪啪网| 五月激情小说| 日韩视频女神99| 99热这里只有精品3| 99精品丁香五月| 热无码A∨| av大香蕉| 久久综合丁香| 人妻22p| 色色五月婷婷久久| 少妇性按摩无码中文A片| 五月丁香亭亭电影久久| 麻豆五月丁香婷婷| 91a片爽| 激情婷婷五月天在线观看| 欧美成人精品A片免费一区99| 青草性爱视频| 免费无码毛片一区二区A片| 99噜噜噜在线播放| 久久婷婷伊人| 狠狠色激情综合| 9999久久久久| 狠狠色狠狠操| 欧美噜噜久久久XXX| 成人网在线视频| 日本97在线| 六月婷婷色综合| 综合玖玖偷拍| 99热| 久久激情网| 激情婷婷六月天| 久色网| 香蕉久久国产AV一区二区| 这里只有精品99视频| 蜜桃人妻无码AV天堂三区| 天堂婷婷五月在线| 丁香五月之久操视频| 五月丁香黄色| 婷婷五月激情在线| 操逼六区| 伊人五月天综合网| 少妇大叫太大太粗太爽了A片| 五月丁香六月婷婷在线播放| 开心五月婷婷综合在线精品素人| 婷婷射图| 热99视频精品| 操比激情五月| 97久久超碰| 青青热久精品视频在线观看| 久久AV无码精品人妻系列试探| 丁香六月婷婷姐网| 99超级碰碰| www.婷婷五月| 婷婷色情六月| 91欧美| 九九亚洲天堂| 亚洲欧洲午夜成人精品av| 六月婷婷成人| 婷婷丁香五月基地| 五月丁香久久| 丁香五月婷婷乱| 庭庭久久内射| 久久丁香综合香蕉| 99热这里只有精品1025| 99热精品一| 综合色99| 色婷婷AV在线观看| 囯产精品久久欠久久久久久九大| 日本操B视频| 新97人人上人人| 亚洲无AV在线中文字幕| 在线观看中文字幕| 亚洲综合色丁香五月天| 五月天综合激情网| 综合久久激情久久| 婷婷丁香五月亚洲| 婷婷射图| 色色哒五月婷婷六月丁香| 97操视频| 五月婷婷导航| 久久五月婷综合| 超碰99在线观看| 久久人妻在线| 五月的婷婷六月丁香| 综合99久久天天综合| 香蕉久久av一区二区三区| 丁香五月天激情视频| 热99视频| 久久黄色网扯| 久热中文字幕| 碰97久久| 91刘玥视频在线观看| 99热综合| 久久激情视频| 99综合一区| 五月宗合激情网| 天天舔夜夜操www com| 五月天小说激情| AA片在线观看视频在线播放| 夜夜爽天天爽| 色婷操逼| 婷婷天堂综合| 能看的av| 开心五月网| 天天综合天天玩夜夜玩天天玩夜夜玩 | 精品人妻伦一二三区久久| 日亚二欧美| 激情色情五月天| 丁香五月婷婷姐| 影音先锋xfplay资源男人网| 婷婷五月av| 激情文学第四色婷婷丁香五月| 热99.com婷婷| 久久久九九九 99| 亚洲AV成人一区二区在线观看| 无码AV免费精品一区二区三区| 依人大香蕉| 99热这里只有精| 九九热超碰| 一区视频网站| 六月 丁香 视频| 120分钟婬片免费看| 成人免费高清在线播放| 夜夜骑夜夜操| 丁香五月天视频| 色5月丁香婷婷| 停婷丁五月在线| 五月丁香综合激情| 操人久久| 男女99免费视频| www.五月婷婷久久.com| 色婷婷香蕉| 五月婷婷六月丁香| 色狠狠色噜噜AV天堂五区| 久久激情综合| 久久六月婷婷| 丁香婷婷综合喷| 奇米影视777在线_在线观看午夜_h小视频在线观看_岛国大片 | 天天日天天色| 国产成人一区二区三区在线观看| 大战熟女丰满人妻AV| 国产在线网| 4438全国最大视频成人网站在线观看| 激情五月婷婷丁香综合网| 天色色综合网| 欧美日本国产欧美日本韩国99| 色10月婷婷视频| 婷婷丁香五月天欧美| 婷婷五月天亚洲激情戏精品| 五月网在线| 色婷婷www| 婷婷丁香成人| 三日本无码| 丁香五月婷婷色偷偷| 99色五月| 精品一区二区三区四区五区六区介绍| 亚洲天码视频www蛋播视频| 日本欧美成人片AAAA| 99操无码视频观看| 国产精品18久久久| 中文字幕在线人妻| 婷婷天堂综合| 丁香五月综合在线播放 | 开心婷婷中文字慕| 狠狠狠狠狠狠狠狠狠狠狠色宗合图片| 色色色色色色网站| 亚洲天堂色色| 婷婷五月天亚洲综合网| www.久久久久久久| 五月色婷婷综合丁香精品无遮挡| 操一操干一干| 老师的粉嫩小又紧水又多A片视频 粉嫩AV久久一区二区三区 | 亚洲日韩久久婷婷伊人| 久久久jd| 激情综合网,婷婷五月天| 97操碰碰无码视频| 99热热热天天人人人超超碰| 亚洲综合1024| 五月丁香AV在线| 99热伊人| 波多野结衣成人作品在线| 狠狠艹狠狠艹| 色婷婷综合影院| 亚洲亚洲人成综合网络| 99精品久久久| 婷婷五月丁香综合人妻| 激情五月天综合| 久久久精品婷婷五月天| 精品九九在线观看视频| 五月天亚洲色| 精品9197碰| 操逼毛片国语对白| 色狠狠色噜噜AV天堂五区消防| 99爱视频在线| 欧美日韩国产一区| 思思国产99| 丁香五月天堂网| 97婷婷狠狠| 丁香狠狠色婷婷久久无码视频| 成人看片网站| 五月天丁香啪啪综合| 99色在线视频| 婷婷五月综合中文字幕| 日本人妻丁香婷婷久久寝取熟女五月| 变态另类9| 亚洲九九婷婷| 色婷婷社区| 成人片黄网站色大片免费毛片| 日韩九区| 色99视频| 成人短视频在线免费观看| 亚洲久久婷婷| 激情网 久久| 国产欧美婷婷五月| 五月天婷婷色| 婷婷91| 99热热这里只精品996小说| 日本色99网站| 狠色狠色狠色狠色狠色网| 五月婷婷AV| 久操人妻| 成人短视频在线| 26UUU欧美激情一区二区| 狠狠干婷婷| 91亚洲天堂| 久久这里只| 激情婷婷激情在线不卡| 精品少妇蜜臀91| 天天色2017| 婷婷五月天成人综合网| 黄色片久久| 亚洲爱爱无码婷婷色五月| 激情丁香五月| 五月婷婷综合热| 婷婷视频网| 久久五月视频| 五月天色色网站| 噜噜色五月| 91久久99久久91熟女精品| 在线婷婷| 五月综合激情婷婷六月色窝| www.sd-xiangsu.cpm| 五月花激情| 天天插天天狠| 99在线精品免费视频| 四色女婷婷| 日本97在线观看| 色色色色网站| 久久丁香| 日日鲁鲁鲁夜夜爽爽狠狠视频97 | 精品久久99| 色波激情五月天| 日韩中文字幕| 亚洲免费婷婷| 久9久9热久热| 激情五月天丁香| 婷婷五月天激情亚洲小说| 香港九九六区八区99| 婷婷五月天视频亚洲| 五月香婷婷| 成人免费120分钟啪啪| 丁香六月成人网| 超碰A V在线| 99干日本| 五月开心六月婷婷在线播放网站| 日韩AV在线免费| 色偷偷色婷婷| 天天上天天爽| 亚洲AV成人无码电影| 91精品婷婷国产综合久久| 99色色热| 99草在线免费观看视频| 久久精品系列| 99热这是里只有精品| 91干99| 久操热| 天堂草在线观看| 天天操五月天| 五月婷婷综合网| 天天射影院| 久久在这里有精品| 青青999| 日本三级日本三级99| 丁香五月天的网址。| 日韩久久色| 青青草大香| 亚洲色夜| 天天狠狠色| 97中文在线| 中文字幕五月久久婷婷| www.超碰在线| 天天做天天爱| 激情com| 亚洲视频无| 成人做爰A片免费看网站找不到了 噼里啪啦在线观看免费完整版视频 | 国外亚洲成AV人片在线观看| 久久3p| 狠狠五月激情婷婷直播片| 婷婷精品| 婷婷综合一二三| www婷婷色| 色色色图| 日本在线99| 可以免费看AV网站| 天天做天天视天天谢| 五月婷婷色白丝| 成人综合网站| 五月激情视频| 99视频| 91色情播放| 就爱操www com| 视频综合网| 26uuu丁香婷婷五月| 99丁香五月| 六月丁香激情网| 五月丁香六月色| 热这里| 色色网站在线免费观看视频| 91婷婷丁香| 91视频综合网| 亚洲无码免费看| 《亚洲操B久久免费在线观看,亚洲操B久久在线播放》在线播放 - 高清资源 - 97 | 综合激情在线视频| 五月色色激情网| 亚洲AAAA网| 安息电影在线观看完整版| 色丁香婷婷| 亭亭五月基地在线| 成人国产网站| 欲色人妻| 五月丁香色停停啪啪啪| 亚洲狠9| 大地9中文在线观看免费高清| 人妻AV在线| 91蜜桃婷婷狠狠久久综合9色| 六月婷婷综合激情| 婷婷涩涩五月天| 在线只有精品| 丁香五月手机在线| 99热热这里只精品996小说| 丁香五月天啪啪a日本| 五月天婷婷黄色| 色婷婷香蕉丁丁网| 九九草热在线观看| 日日夜夜狠狠干| 蜜乳中文字| 五月婷婷丁香综合| 婷婷激情社区| 久久总和99| www超碰| 97久久视频| 五月色综合| 亚洲精品又粗又大又爽A片| 欧美三级A做爰在线观看| 五月天激情网站| 人人爱人人草| 99热精品在线| 欧美色片中文字幕久久久久| 一区操| 丁香99| 91 原创 在线 九色| 青青草原伊人网| 丁香五月欧美色综合| 国产日比| 狠狠狠狠狠狠草| 五月丁香激情综合网官网| 五月熟妇婷婷久久| 五月涩涩网| 噜噜狠狠色综合久| www.久久久.com| 色五月激情五月| 五月综合激情网| 91综合在线观看首页| 在线视频99| 久久婷婷五月天| 久久人妻系列| 色五月婷婷大香蕉| 伊人五月综合网| 韩日另类| 天天se在线视频| 天天情天天狠天天透| 另类婷婷丁香| 丁香婷婷久久综合在线| 婷婷久久五月天| 精品久久久人妻| 激情内射人妻1区2区3区| 婷婷丁香综合在线| www.99在线| 超碰renrenai| 欧美影院| 丁香五月av| 激情文学 综合 九月| 天堂色婷婷| 五月天婷婷在线啪啪视频| 亚州激情网| 婷婷五月在线视频| 婷婷在线精品| 日韩三级视频一区二区| 丁香婷婷六月天| 五月色无码| 大天天伊人| 中文字幕日产A片在线看| 久久久人人操A V| 亚洲国产精品成人免费一区久久久在线观看AAAA | 婷婷色色婷婷| 五月天激情网站| 色婷婷久久7777| www.激情五月天。com| 丁香网五月天激情| 色婷婷视频在线| 九九热内射| 在线观看熟女少妇| 天天透天天爱| 国产全是老熟女太爽了| 色色色在线观看| 成人精品在线观看| 色 色 色综合com| 无码少妇高潮喷水A片免费| 玖玖婷婷色| 深爱婷婷色| 91一起操| 色五月综合97| 国产五月天激情小说| 丁香九月综合| 丁香五月天日韩无码| 五月亭亭六月色| 182TV大香蕉| 久草婷婷视频| 五月丁香啪啪啪啪| 99视频内射三四| 婷婷五月天丁香久久| 丁香五月激情欧欧美| www.狠狠| 玖玖在线| 在线观看亚洲视频影院| 五月丁香色色色| 思思热再线视频| 99热在线观看| 五月天婷婷av| PORNY九色9l自拍视频成人| 日本nghangse中文字幕| 日本欧美国产| 777米奇影视第四色| 久久这里精彩免费在线观看| 99爱视频| 丁香五月玖玖| 五月天欧美激情| 午夜69成人做爰视频| 亚洲另类在线观看| 91婷婷色五月| 亚洲旡码| 大香蕉婷婷久久| 97资源碰碰在线| 九九無妻| 久久色五月天| 欧美影院| 久综合九综合99| 激情五月亚洲| 性爱激情五月| 婷婷丁香五月高清| 亚洲成人日韩无码精品| 激情黄色小说五月天| 免费看欧美成人A片无码| 91九色网| 来吧亚洲综合网| 欧美人人操| 色色激情网| 美欧日韩国产成人在战| 成片免费播放| 五月丁香婷婷色色| 色噜噜综合网| 另类五月婷婷| 狠狠久久婷五月综合色| 色操b| 男人的天堂av俄罗斯热| www.久久av.com| 中文字幕成人影视| 日本三级中国三级99| 婷婷五月无码| 99re热在线观看| 97人人做| 91九色精品熟女内射| 另类五月婷婷| 青青草原亚洲久| 九九99精品视频在线观看| 91N 一起草| 极品另类| 丁香婷婷大香蕉| 玖玖婷婷五月天| 亚洲AV成人无码久久精品老人法拉利| 婷婷丁香久久网| 情色婷婷五月天| 色色五月婷婷| 欧美性猛交99久久久久99按摩| 日韩99色99| 激情图片婷婷丁香五月| 在线播放成人网站| 亚洲精99| 国产女18毛片多18精品| 舔色婷婷| 色色亚洲无码| 99热97美女| 91久操| 婷婷五月免费在线| 婷婷久久五月天中文字幕在线观看| 99热最新精品| 色婷婷丁香五月观看| 91久久国产自产拍夜夜91久久精品文字>91麻豆精品国产 | 五月天色婷婷网| 噜噜干日本| 无码激情AAAAA片-区区| 国产精品国产| aaaaaa片| 操比激情五月| 婷婷精品| 天天插天天插天天插天天插| 青青草tp| 色婷婷AV久久| 超碰免费人人| 九九热视频免费| 色噜噜狠狠色综合AV兰草影视| 91操人人操| 九九这里是免费的视频5| 色色色在线播放| 久久婷婷丁香| av婷婷六月丁香社区在线观看| 殴美日比视频| 另类小说五月天综合网| 色噜噜狠狠色综合网| 202丰满熟女妇大| 久久66成人网站| 五月丁香婷婷综合| 五月丁香婷婷99| 欧美精品99久久久| 激情五月综合网最新 | 激情五月六月婷婷| 人人爱人人摸人人澡| 色婷婷狠狠| 精品九九婷婷| 五月激香蕉网| 亚洲成人免费在线| 成人在线精品| 99免费视频网| 丁香六月av| 综合久久影院| 黄久久久| 91精品刘玥| 免费无码毛片一区二区A片| 99热综合网| 岛国AV网站| 激情综合色五月六月婷婷| 婷婷99狠狠| 伊人五月天97| 伊人久久大香线蕉AV最新午夜| 在线观看国产高清视频免费网站| 999婷婷综合| 另类激情中文| 天天色亚洲| 婷婷五月天a| 日日懆天天懆| 人妻内射麻豆视频| 婷婷五月天激情网| 国产精品人妻在线网址| 午夜成人在线免费视频| 色婷婷yy久| 亚洲一二三网| 91人久| 欧亚成人A片一区二区| 91无码视频| 日本啪啪天堂| 九月色婷婷综合| 这里只有精品免费| 色色色色色色网| 色婷婷丁香五月综合| 99热成人在线| 色婷亚洲| 人妻精品久久久久久| 99在线视频精品| 玖久精品视频9| 色狠狠伊人久久五月丁香| 亚洲va日| 日韩一区二区在线播放| 色色色国产| 99久久久国产大片| 激情涩涩网| 五月伊人网| 九九热a| 99re热视频这里只有综合亚洲| 激情五月天黄色小说| 99色色热热| 亚洲婷婷月丁香五月| 丁香九月综合| 思思久ren热| 婷婷综合网伊人| 五月精品免费XXX| 五月天婷婷高清无码| 五月丁香狠狠| 99免费在线视频| 婷婷操超碰| 婷香五月激情视频| 色噜噜狠狠色综无码久久合欧美| 99操视频| 日韩一区二区A片免费观看| 丁香婷婷激情四射五月| 少妇AB又爽又紧无码网站| 国产成人精品一区二区三区视频| 九九热狼人| 操逼综合网| 噜噜操操| 91超级碰碰碰| 色婷婷五月天成人网| 五月婷婷人妻| 九九综合伊人| 欧洲色| 大香蕉丁香婷婷| 伊人丁香五月婷婷潮吹| 99人人操人人操人人精| 国庆精品久久| 我要看激情五月天| 亚洲无线视频| 五月激情综合网| 无码人妻丰满熟妇奶水区码| 在线观看视频1区| 丁香六月啪啪啪| 五月丁香亚洲校园欧美| 亚洲天天免费| 色久丁香五| 九九热AV| 亚洲中字AV电影在线网站| 亚洲成人无码免费| 五月婷婷黄色| 五月天开心婷婷久久| 99热中文字幕久久| 97色婷婷| 91午夜婷婷狠狠久久综合9色| 99日在线观看视频| 九九人人操| 色五月婷婷影院| 五月婷婷亚洲色视频| 久碰视频| 丁香六月婷| 久久视频婷婷视频| 婷婷深爱五月| 91丨九色丨熟女高潮| 久久一级片| 99热6这里只有精品6| 裸体美女丁香五月天。 | 精品人妻伦一二三区久久| 丁香亭亭激情四射| 成人精品在线| 这里只有精品免费| 激情五月天色网站| 人人妖人人97| 嫩草视频在线观看| www激情婷婷com| 婷婷成人五月天| 欧美日韩日韩成人| 五月天婷婷基地| 欧美色爱五月天| 五月丁香狠狠爱| 性爱五月丁香| 婷婷丁香五月综合激情视频| 亚洲人妻av| 狠狠色丁香久久| 天天综合中文| 日本不卡一区二区三区| 亚洲无码yw| aaa日韩| 99视频在线观看地址| 99re思思| 婷婷五月天AV在线| 丁香五月色色婷| 色播五月丁香综合| 9久视频| 五月天婷婷色色网| 特级片神马电影| 做爰丰满少妇1313| 亚洲永久免费| 色婷婷激情| 欧洲精品爱爱| 色综合天天天天做夜夜| 色五月av| 国产精品大香蕉| 五月婷婷综合激情网| 大香蕉99| 99∨VTV| 天堂综合久久| 丁XX 成人| www.婷婷五月天,com| 涩涩网五月天| WWW.桔色成人.COM| 涩涩五月天综合| 99色在线观看| 婷婷五月69| 五月综合视频| 久久婷婷五月天激情新地址| 人人摸人人干| 在线看av| 天天日本夜夜谢| 9伊人网| 免费黄色AV| 久热69| 日本人妻A片成人免费看片| 五月丁香色| 色婷婷香蕉|