日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满av-国产精品中文字幕免费观看-亚洲成人久久一区二区三区-国内少妇偷人精品视频无缓冲-一区二区国产精品日本一区二区三区在线网

ARTICLE DETAIL

資訊詳情

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

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

Actor-Critic實戰(zhàn):優(yōu)勢函數、GAE與A2C訓練循環(huán)拆解 強化學習學到 Actor-Critic 這一節(jié)基本算是從會跑 demo跨到能理解現代 RL 工程的分水嶺。前面講策略梯度時REINFORCE 用一整條軌跡的回報去估計梯度方差大到需要幾十次采樣才能勉強收斂講到值函數近似時又發(fā)現只學 Q 值沒法直接輸出策略。Actor-Critic 把這兩條線擰在一起一個網絡負責決定動作一個網絡負責評價動作好不好用評價網絡的輸出給決策網絡的梯度降方差。A2C、A3C、PPO、DDPG、TD3、SAC 這一整串現在還在被廣泛使用的算法骨架都是它。這篇文章是2026 新版強化學習從入門到精通系列的第 42 篇重點不再停留在概念解釋上而是把 Actor-Critic 的網絡結構、優(yōu)勢函數、GAE、損失函數組合、訓練循環(huán)這些真正影響能不能跑通的部分拆開講。文中的每段代碼都可以直接復制運行環(huán)境用 PyTorch GymnasiumCartPole 這類任務在純 CPU 上幾分鐘就能看到曲線抬起來不需要顯卡。讀者對象很明確已經寫過 REINFORCE 或 DQN、知道策略梯度和貝爾曼方程大概在講什么、但自己動手寫 Actor-Critic 時總是卡在為什么 loss 是這三項加在一起優(yōu)勢函數到底怎么算critic 學崩了怎么辦這幾個問題上的人。看完之后應該能獨立寫出一個可訓練的 A2C并且知道把它換成 PPO 需要動哪幾行。1. Actor-Critic 核心能力速覽先把這套架構的關鍵信息壓縮成一張表后面所有內容都是圍繞這張表展開的細節(jié)。需要注意Actor-Critic 不是某一個算法而是一類架構范式表里列的是這個范式的共性以及它在主流算法上的具體投影。能力項說明架構組成Actor 策略網絡輸出動作分布Critic 價值網絡輸出狀態(tài)價值或動作價值解決的核心問題策略梯度方差過大、單步更新效率低、無法在線學習梯度估計方式用 Critic 給出的價值作為基線或優(yōu)勢替代蒙特卡洛回報支持的動作空間離散動作Categorical與連續(xù)動作Gaussian / Tanh-Gaussian均可典型代表算法A2C、A3C、PPO、TRPO、DDPG、TD3、SAC網絡結構可共享主干shared trunk也可完全分離separate networks更新方式同策略A2C/PPO或異策略DDPG/TD3/SAC需要經驗回放采樣效率同策略版本中等異策略版本較高訓練穩(wěn)定性依賴優(yōu)勢歸一化、梯度裁剪、價值損失系數等工程手段硬件門檻小型任務純 CPU 可跑Atari 級別建議單卡 GPU并行環(huán)境吃 CPU 核數依賴環(huán)境Python 3.10、PyTorch 2.x、Gymnasium 1.x版本以實際安裝為準典型調試周期CartPole 級別分鐘級MuJoCo 級別小時級適合場景連續(xù)控制、機器人仿真、游戲 AI、推薦策略優(yōu)化、對話策略學習這里要提前說清楚一個容易混淆的點很多教程把 Actor-Critic 當成一個具體算法講實際上它更像一個模板。你在模板里換掉優(yōu)勢估計方式就得到 A2C換掉更新約束就得到 PPO把 Critic 從狀態(tài)價值換成動作價值并加經驗回放就得到 DDPG。理解模板比背算法名有用得多因為真實項目里你幾乎總要改一點東西。2. 從策略梯度到 Actor-Critic為什么必須有一個 Critic先把動機講透否則后面看到三項 loss 相加會覺得是拍腦袋湊出來的。最原始的策略梯度定理給出的是這樣一個式子梯度等于策略對數概率乘以回報的期望。用采樣估計時我們用一整條軌跡的累計回報 G_t 去乘 log π(a|s)。問題在于 G_t 是一個隨機變量同一狀態(tài)下采樣十次可能得到十個差別很大的回報梯度方向跟著劇烈抖動。為了讓這個估計穩(wěn)定下來一個很自然的想法是減去一個與動作無關的基線 b(s)因為減去它不會改變期望只會改變方差。數學上可以證明E[?log π(a|s) · b(s)] 0所以基線是免費的降方差工具。那么最優(yōu)的基線是什么理論上是狀態(tài)價值函數 V(s)。把 G_t 換成 G_t - V(s)方差會顯著下降。而這個 G_t - V(s) 恰好就是優(yōu)勢函數 A(s,a) 的一個無偏估計它衡量的是在狀態(tài) s 下采取動作 a比平均水平的動作好多少。到這里Actor 的更新方向就變成了往優(yōu)勢為正的動作上加概率往優(yōu)勢為負的動作上減概率。接下來的問題是怎么拿到 V(s)。用蒙特卡洛方式統(tǒng)計回報當然可以但那樣必須等回合結束學習是離線的、慢的。Critic 網絡的作用就是用函數近似的方式直接學 V(s)而且可以只依賴單步的 TD 誤差來更新實現真正的在線學習。這就是 Actor-Critic 的核心交換用 Critic 引入偏差bias換來方差的大幅下降和在線更新能力。用一句話概括兩者分工Actor 負責試Critic 負責評。Critic 的評價越準Actor 的更新方向越穩(wěn)Actor 的策略越好Critic 面對的數據分布越集中學起來也越容易。這種互相依賴也帶來了這套架構最典型的失敗模式——兩個網絡一起崩后面第 9 章會專門講怎么拆解。關于偏差和方差的取舍還有一個重要的工程變量用 TD(0) 的單步誤差偏差大但方差小用蒙特卡洛回報方差大但無偏中間的 n-step 回報和 GAE 就是在兩者之間滑動。這個滑動的旋鈕直接決定了訓練曲線是平滑爬升還是劇烈震蕩是 Actor-Critic 調參里性價比最高的一個參數。3. 環(huán)境準備與最小可運行工程骨架Actor-Critic 對環(huán)境的依賴其實很輕它不需要 CUDA 編譯、不需要下載大模型權重甚至不需要顯卡。真正容易出問題的地方在于包版本不匹配導致的 API 變更尤其是 Gymnasium 從 Gym 分叉出來之后step 的返回值從四項變成五項很多老教程直接復制過來就會報解包錯誤?;A依賴如下。版本號這里不寫死因為不同機器上的 CUDA 與 PyTorch 對應關系不同寫死反而容易踩坑原則是 PyTorch 官方安裝向導給出的組合優(yōu)先。# 創(chuàng)建獨立環(huán)境避免和已有項目沖突 conda create -n actor_critic python3.10 -y conda activate actor_critic # 安裝核心依賴具體版本以本機可用的 CUDA 組合為準 pip install torch --index-url https://download.pytorch.org/whl/cpu pip install gymnasium numpy matplotlib tensorboard如果機器上有顯卡并且想跑圖像輸入的任務把第一行的 CPU 源換成官方對應的 CUDA 源即可。對于 CartPole、Pendulum、MountainCarContinuous 這類低維狀態(tài)任務CPU 訓練速度快過 GPU因為數據傳輸開銷會蓋過并行計算收益這一點在后面的資源占用章節(jié)還會提到。建議的工程目錄結構如下把網絡定義、算法實現、訓練腳本、配置分離后面要換成 PPO 或者換環(huán)境時改動量會小很多actor_critic_demo/ ├── configs/ │ └── a2c_cartpole.yaml ├── models/ │ └── networks.py # Actor / Critic 定義 ├── algos/ │ ├── a2c.py # A2C 更新邏輯 │ └── gae.py # 優(yōu)勢估計 ├── train.py # 訓練主循環(huán) ├── evaluate.py # 評估與可視化 └── requirements.txt驗證環(huán)境是否裝好跑一段最小檢查腳本就夠了。這段腳本同時能確認 Gymnasium 的 API 版本因為reset返回(obs, info)、step返回五項這個約定是從 Gymnasium 開始統(tǒng)一的如果你的環(huán)境返回四項說明裝的是老版本 Gym后面的代碼需要相應調整。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 返回項數正確reward , reward) env.close()運行結果里如果打印出step 返回項數正確環(huán)境就沒問題了。如果這里報too many values to unpack說明裝的是老版 Gym最簡單的處理是統(tǒng)一升級到 Gymnasium而不是在代碼里寫兼容分支后者會讓后面所有邏輯都變臟。4. Actor 與 Critic 的網絡結構設計網絡結構是 Actor-Critic 里最容易被輕視的部分。很多人直接把別人的 MLP 抄過來層數、激活函數、初始化全都不動結果在某個任務上怎么調都學不動。實際上 Actor 和 Critic 對輸出的要求完全不同一個是概率分布參數一個是標量價值兩者的輸出層設計必須分開考慮。4.1 離散動作空間的 Actor離散動作下Actor 輸出的是每個動作的 logit經過 softmax 得到概率再用Categorical分布采樣。輸出層不要加 softmax因為 PyTorch 的Categorical內部會做 log_softmax提前做一次會導致數值不穩(wěn)定這是新手最常犯的錯誤之一。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激活函數這里選 Tanh 而不是 ReLU原因是 ReLU 在狀態(tài)輸入歸一化不理想時容易產生大片死區(qū)而策略網絡對梯度方向很敏感死區(qū)會導致某些動作永遠采不到探索直接退化。這不是絕對規(guī)則但在連續(xù)控制和低維狀態(tài)任務上Tanh 的魯棒性明顯更好代價是訓練稍慢一點。4.2 連續(xù)動作空間的 Actor連續(xù)動作要輸出一個高斯分布的均值和對數標準差。均值通常經過 tanh 壓到 [-1, 1]再按動作上下限縮放對數標準差用可學習參數并且要 clamp 到一個合理區(qū)間否則訓練中期可能出現標準差指數爆炸采樣出來的動作全是邊界值。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用獨立參數而不是網絡輸出是因為在大部分連續(xù)控制任務里探索噪聲的水平與具體狀態(tài)關系不大獨立參數收斂更穩(wěn)。如果你做的是狀態(tài)相關性很強的任務比如機械臂在接近目標時需要精細動作可以讓網絡輸出 log_std但要額外做 clamp。4.3 Critic 的輸出與價值尺度Critic 輸出一個標量 V(s)結構比 Actor 簡單但初始化很關鍵。如果 Critic 初始輸出偏離真實回報的量級太遠第一批優(yōu)勢估計會全是噪聲Actor 會朝錯誤方向更新一大步之后再想糾正就很困難。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)很重要不寫的話價值張量是[batch, 1]后面和回報張量相減會發(fā)生廣播形狀悄悄變成[batch, batch]損失看起來在下降但學的是完全錯誤的東西。這類形狀 bug 不會報錯只會讓訓練莫名其妙地不收斂排查成本極高。4.4 共享主干還是分離主干經典實現里常見兩種寫法一種讓 Actor 和 Critic 共享前面的特征提取層只分開輸出頭另一種完全獨立。共享主干的優(yōu)勢是參數少、特征復用、在小任務上收斂快缺點是梯度會互相干擾如果兩個損失量級差異大容易一方主導把另一方的特征壓掉。完全分離則沒有干擾但參數量翻倍。我的建議是CartPole、Acrobot 這種幾十維狀態(tài)的任務可以共享圖像輸入或高維連續(xù)控制一律分離。判斷標準很簡單如果訓練曲線出現策略熵快速塌縮但回報不漲很可能是共享主干被價值損失帶偏了改成分離往往立刻好轉。5. 優(yōu)勢函數與 GAE 實現優(yōu)勢函數的估計質量直接決定 Actor-Critic 的表現上限。這一節(jié)從最簡單的單步 TD 誤差一路推到 GAE每一步都給出可運行的代碼。5.1 TD 誤差與 n-step 回報最基礎的優(yōu)勢估計就是 TD 誤差A r γV(s) - V(s)。它的偏差來自 Critic 本身不準但因為只用一步真實獎勵方差極小。另一個極端是蒙特卡洛A G_t - V(s)無偏但方差大。中間的 n-step 回報用 n 步真實獎勵加上第 n 步的價值估計def compute_nstep_returns(rewards, values, dones, gamma0.99, n5): rewards/values/dones 均為長度 T 的列表values 多一個 bootstrap 項 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 步的價值估計作為 bootstrap idx min(t n, T) R (gamma ** n) * values[idx] returns.append(R) return returns這段代碼里有個細節(jié)值得注意for...else結構只有在循環(huán)正常走完沒有被break時才執(zhí)行 bootstrap。如果軌跡中途終止就不該再加 bootstrap 項否則會把下一回合的價值錯誤地算進來。這類終止處理錯誤在外行看來只是曲線抖一點實際上是系統(tǒng)性偏差。5.2 GAE 的遞推實現GAE 的做法是把所有 n-step 優(yōu)勢做指數加權平均用一個參數 λ 控制偏差方差權衡。λ0 退化成單步 TDλ1 退化成蒙特卡洛。工程上最常用的是 0.95 左右。遞推公式是A_t δ_t γλ(1-done_t)A_{t1}其中 δ_t 就是單步 TD 誤差。從后往前算一遍即可復雜度 O(T)。def compute_gae(rewards, values, dones, gamma0.99, lam0.95): rewards: [T] values: [T1]最后一項是 bootstrap 價值 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兩個輸出都要用advantages拿去算策略損失returns拿去算價值損失。有些人圖省事直接用 advantages 當價值目標這是錯的因為價值網絡學的是 V(s) 而不是優(yōu)勢兩者差了一個基線。5.3 優(yōu)勢歸一化拿到優(yōu)勢后必須做一步歸一化這是 A2C/PPO 里最廉價也最有效的穩(wěn)定手段import torch def normalize_advantages(adv: torch.Tensor, eps: float 1e-8): return (adv - adv.mean()) / (adv.std() eps)歸一化的作用是把梯度步長控制在合理范圍。不做這一步時如果某批次優(yōu)勢全是正數且數值很大一次更新就能把策略推得很遠直接破壞探索歸一化之后優(yōu)勢的均值是 0、方差是 1更新量級與回報絕對大小解耦換環(huán)境時不用重新調學習率。這個技巧在 reward 尺度差異大的任務上幾乎是必須的。6. 完整 A2C 訓練實現把前面的模塊拼起來就是一段可以直接跑的 A2C。選擇 A2C 而不是 PPO 作為第一個完整實現是因為它沒有重要性采樣比率和 clip邏輯干凈出錯時定位容易。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()這段代碼里有幾個設計選擇值得單獨說。策略損失用采樣時記錄的logp_list而不是重新前向計算這是同策略算法的標準做法但要記得 detach 優(yōu)勢否則梯度會流進價值網絡導致雙重反傳。價值損失用 MSE如果獎勵尺度很大可以換成 Huber避免離群回報把 Critic 拉飛。熵獎勵的符號是減去因為我們希望最大化熵也就是讓損失里包含負的熵項。梯度裁剪的 0.5 是個經驗值。A2C 在 CartPole 上即使不裁剪一般也能跑但在連續(xù)控制任務里一次異常大的優(yōu)勢就能讓策略參數跳變裁剪是最省事的保險。裁剪閾值不要設得太小0.1 以下會讓學習明顯變慢因為大部分正常梯度也會被削。在普通筆記本 CPU 上這段代碼大概 100 到 200 次 update 就能讓平均回報爬到 400 以上200 次全滿。如果跑到 500 次還在 20 左右徘徊基本可以判定是環(huán)境 API 或優(yōu)勢計算出了問題直接跳到第 9 章排查。7. 算法族對比與選型Actor-Critic 這個模板衍生出的算法很多實際項目里選型的關鍵不是哪個最新而是樣本從哪來、動作空間是什么、允許的調參時間有多少。下面這張表把常用的幾個放在一起對比。算法策略類型采樣方式動作空間經驗回放主要特點典型用途A2C隨機策略同策略同步多環(huán)境離散/連續(xù)否結構簡單易于調試教學、基線對比A3C隨機策略同策略異步多線程離散/連續(xù)否異步更新現已較少使用歷史參考PPO隨機策略同策略多輪復用離散/連續(xù)否clip 約束穩(wěn)定工業(yè)界主力大模型 RLHF、游戲 AIDDPG確定性策略異策略僅連續(xù)是確定性策略加目標網絡連續(xù)控制基線TD3確定性策略異策略僅連續(xù)是雙 Critic、延遲更新、目標平滑連續(xù)控制常用SAC隨機策略異策略僅連續(xù)是最大熵框架探索充分機器人、樣本昂貴場景選型的實操判斷可以這樣走如果你能拿到大量并行仿真環(huán)境同策略的 PPO 是最省心的選擇它的調參空間相對寬容社區(qū)實現也最多如果真實環(huán)境采樣代價高、一步要花幾秒那就得走異策略路線用經驗回放提高樣本利用率連續(xù)動作優(yōu)先考慮 SAC 或 TD3如果動作是離散的且環(huán)境便宜A2C 足夠作為第一版基線。從 A2C 遷移到 PPO 的改動量其實很小核心是把采一批數據更新一次改成采一批數據分多個 epoch 更新同時加上重要性采樣比率和 clip。下面這段是 PPO 的策略損失核心可以對照第 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必須是采樣時記錄的、并且在多個 epoch 內保持不變。很多人把它每個 epoch 重新算一遍clip 就失效了算法退化成沒有約束的策略梯度訓練曲線會突然崩掉。這個坑在復現 PPO 時出現頻率極高。8. 訓練監(jiān)控、資源占用與常見問題排查Actor-Critic 的調試核心是分而治之先把 Critic 單獨看好再看 Actor。因為 Actor 的更新方向完全依賴 Critic 給出的優(yōu)勢如果價值估計本身在亂飄后面所有調參都是在錯誤的地基上做微調。8.1 必須監(jiān)控的四個指標第一是平均回合回報看趨勢不看單點用最近 20 到 100 回合的滑動平均。第二是策略熵它反映探索程度CartPole 上健康的曲線是從 0.69 左右緩慢下降到 0.3 附近如果十幾輪就掉到 0.05說明策略過早確定通常需要加大熵系數或降低學習率。第三是價值損失它應該整體下降但允許波動如果持續(xù)上升說明價值目標尺度有問題。第四是梯度范數裁剪前的梯度范數突然放大到幾十上百往往是某批次優(yōu)勢異?;虺霈F了數值問題。把這幾項寫進日志接 TensorBoard 是最省事的做法from torch.utils.tensorboard import SummaryWriter writer SummaryWriter(runs/a2c_cartpole) # 在每個 update 結束時記錄 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)任務上瓶頸幾乎全在環(huán)境交互而不在網絡計算。一個 128×128 的 MLP 單次前向在 CPU 上是微秒級而env.step往往要幾十微秒到毫秒級。所以在 CartPole 上把模型搬到 GPU 反而更慢因為每次都要做一次主機到設備的拷貝。判斷標準很直接用time.perf_counter()把采樣耗時和更新耗時分別打出來如果采樣占 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)當任務換成圖像輸入情況就反過來了。Atari 的 84×84×4 幀堆疊輸入特征提取網絡的前向和反向會成為主要開銷這時候 GPU 才有意義同時顯存占用主要取決于批量大小和網絡寬度。觀測這一點最方便的方式是torch.cuda.max_memory_allocated()在訓練循環(huán)里定期打印比看任務管理器準確得多。并行環(huán)境是另一個資源維度。A2C 原本就設計成多環(huán)境同步采樣用gymnasium.vector.SyncVectorEnv起 8 個環(huán)境采樣吞吐能提升數倍但 CPU 占用也會同步上升。這里要注意并行環(huán)境的數量不是越多越好超過物理核心數之后上下文切換開銷會吃掉收益一般取物理核心數的一半到全部之間。8.3 常見問題與排查表問題現象可能原因排查方式解決方案回報長期停在隨機水平優(yōu)勢符號寫反或未 detach打印單批次優(yōu)勢均值檢查是否恒正或恒負修正優(yōu)勢計算確保adv.detach()策略熵幾輪內塌到接近 0學習率過大或熵系數過小觀察 entropy 曲線下降速度降 lr 到 1e-3 以下熵系數提到 0.01 以上價值損失不降反升回報尺度與初始化不匹配打印values_pred.mean()與ret_t.mean()輸出層小初始化或對回報做縮放張量形狀報錯或結果異常Critic 輸出未 squeeze檢查values_pred.shape加.squeeze(-1)訓練前期正常后期突然崩潰梯度爆炸記錄裁剪前梯度范數開啟梯度裁剪閾值 0.5 左右換環(huán)境后完全不學觀測未歸一化檢查 obs 數值范圍加 running mean/std 歸一化多環(huán)境并行后變慢環(huán)境數超過物理核數對比不同 env 數的采樣耗時降到物理核心數以內PPO 復現后曲線不如 A2Cold_logp 每個 epoch 重算檢查 old_logp 是否在 epoch 內固定采樣時記錄一次全程復用連續(xù)動作全落在邊界log_std 無約束打印 std 數值clamp log_std 到 [-20, 2]這張表里最值得展開的是觀測未歸一化這一條。CartPole 的觀測數值都在個位數不歸一化也能跑所以很多人養(yǎng)成了不歸一化的習慣。一旦換到 Pendulum 或者 MuJoCo觀測里同時存在 0.01 量級和 10 量級的維度網絡會幾乎只對大量級維度敏感小量級維度相當于被屏蔽表現為怎么調都不學。加一層 running 均值方差歸一化通常一次就解決。9. 最佳實踐與下一步Actor-Critic 這一套東西寫對一次之后復用價值很高。下面是幾條從實際調試里總結出來的、能明顯減少踩坑時間的做法。第一條永遠先在 CartPole 上跑通再換環(huán)境。這不是偷懶而是建立一條已知正確的基線。當你在 MuJoCo 上調了兩天沒結果時把同一份代碼切回 CartPole 跑 50 輪如果也不學問題在算法實現如果正常問題在超參或環(huán)境適配。這個二分能把排查范圍瞬間砍掉一半。第二條把 Critic 的學習率和 Actor 分開設置。共享一個優(yōu)化器看似簡潔但兩者對步長的敏感度不同Critic 通常需要更快地跟上回報變化Actor 則需要更保守。實踐里 Critic 學習率取 Actor 的 2 到 3 倍是常見起點尤其在價值損失下降明顯滯后于策略改進的時候。第三條保留一套最小可運行配置。把能跑通的那組超參寫進configs/目錄并加注釋說明適用環(huán)境之后每次實驗都從它 fork 出來而不是在當前腳本上反復改數字。Actor-Critic 調參很容易陷入改了 A 又影響 B的循環(huán)有基線配置才能判斷某次改動是真的有效還是隨機波動。第四條批量任務和長訓練要加斷點保存。訓練腳本里定期保存模型參數、優(yōu)化器狀態(tài)和當前 update 序號配合日志落盤。強化學習的訓練曲線經常在某個階段突然變好或變差如果沒保存中間狀態(tài)想回到那個點重新實驗就只能從頭再來這在需要跑幾小時的任務上代價很大。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]第五條評估階段一定要關掉探索。訓練時用隨機策略采樣是為了探索評估時應該用分布的均值或 argmax并且固定隨機種子跑多個回合取平均。用帶噪聲的策略去評估得到的回報會明顯偏低且波動很大容易誤判模型沒學好。關于下一步的擴展方向比較自然的路徑有兩條。一條是往 PPO 走把第 6 章的采樣和更新拆成兩段加上重要性采樣比率和 clip這套代碼幾乎可以直接用在語言模型的 RLHF 微調流程里那邊的 reward model 扮演的就是 Critic 的角色只是評價對象從狀態(tài)變成了整段回復。另一條是往異策略走引入經驗回放緩沖區(qū)、目標網絡和雙 Critic去處理真實采樣代價高的連續(xù)控制問題。如果要在這兩條路上做選擇判斷依據就一句話你的環(huán)境能不能便宜地并行采樣。能就走同策略不能就走異策略。這個判斷比看任何算法排行榜都可靠。Actor-Critic 的骨架在這兩條路上是共通的先把它吃透后面換算法只是替換幾個模塊的事。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
婷婷五月天成人网| 17c嫩草51久久91嫩草| 日韩三级在线观看网站| 中文无码一二三区| 蜜臀99久久国产| 日本操嫩b网| 蜜臀在线免费观看在线免费观看| 亚洲清纯综合| 97色婷婷| 国产suv一区二区三区6| 国产97色在线| 91超碰丝袜制服| 一区二区三区高清天码| 色好看av| 性爱综合一区二区| 91精品久久久久久久久久| 五月丁香黄色网| 激情99| 国产91专区| 大香蕉视频一二三区| 麻豆国产尤物AV| 超碰碰碰碰| 色一情一乱一乱一区91Av| 九九热超碰| 亚洲情色综合网| 久久久久久亚洲Av无码精| 资源在线观一 二| 麻豆天美在线| 精品久久一区二区三区四区五区| 亚洲色图欧洲| 殴美牲| 欧美色另类| 久久亚洲精品成人av| 91路www| 看黄片视频免费| 久久久男人的天堂| · —级AA伦aa坐爱午夜极速ⅴA一区天天噪天天噪天天噪 | 国产精品秘 福利姬在线观看| 亚洲吊色| 亚洲无码久久久久久久| 日本大香蕉综合网| 免费看污网站| 国产传媒操逼视频| 亚洲色性| 顶级少妇BT天堂| 五月丁香黄色网| 亚洲熟女乱熟乱熟妇综合网二区| av在线一区二区三区| 亚洲美女 晚间男人天堂| 久久东京伊人一本到鬼色| 久久精品国产久精国产| 性爱乱伦一区| 99999国产精品| 激情四射婷婷四五月天| 精品久久久久av影院| 亚洲国产蜜臀系列在线观看| 丰满人妻一区二区三区四| 亚洲人体视频在线观看| 后入日本1234| 青青草十区九区爱夜| 91一区二区三区蜜桃| 欧美白嫩在线放| 在线岛| 国产精品大屁股999| av一区二区三区 中文| 999精品女人| 欧洲Au麻豆| 免费看国产曰批40分钟怎么下载| 黄页网站成人免费| 久久九七| 9999免费精彩视频| 欧美日产国产在线成人第一区| 91亚洲丝袜| 五月丁香啪啪网| 夜夜欧美| 日本东京热大香蕉a片| 日本一级二级三级网站| 蜜乳Av成人片网站| 亚洲区 欧美区| 亚洲人成色9999精品久久 | 亚洲欧美一区二区网址| 亚洲91射| 日韩欧美大片免费高清啪啪| 熟女熟妇一区二区三四区| 人妻日日夜夜精品| 亚洲九月丁香| 中国AAAAAA黄色片| 久久激情四射婷婷丁香五月天| 欧美嫩性色| 乱欲一区二区| 国产探花精品在线| 久久伊人最新网址视频| 96久久久久| 日韩99神马视频播放| 在线99热| 久久精品国产亚洲AV高级北京| 九七超碰| 日韩性色| 天天日骚逼熟女| 91网站18在线| 日韩AV色图| 国产一级黄色片在线观看| 欧美激情久操网| 啊啊啊啊啊啊啊啊要喷了| 日日夜夜狠狠| 欧美日韩国内不卡| 9丨亚洲一区二区在线| 九九九久| 国产精品情侣啪啪| 色五月综合| 久久激情亚洲精品无码?V| 日逼97| 骚逼自拍99| 久久水蜜臀亚洲AV无码精品| 亚洲综合春色| 日本少妇va7777| 丁香五月激情网| 国产精品无码AV网站| 伊人丁香五月婷婷| 天天视频网站黄| 亚洲性天堂| 久久久96精品| 九草九九九| 一区,二区,三区视频| 男人下部插入女人下部 | 中文字幕十五区| 久久久com| 精品久久人妻成人网| 国产亚洲精品农村妇女| 秋霞久久亚洲精品成人| 日韩肏逼视频| 精品国模无码| 日韩性爱啪啪视频| 韩美日操逼| 可免费观看的av毛片中日美韩| 亚洲情欲| 碰碰在线视频| 亚洲 欧美 中文 日韩超碰| 激情婷婷五月天| 99色在线视频| 日本久操视频| 色九月综合| 91久久国产综合久久| 欧美黑人性猛交91| 久久国产精品熟女人妻| 久久原创中文| 四虎精品亚洲| 日韩少妇无码| 久久久国产av美女私房| 免费人成在线观看网站品爱网| 综合av社区| 乱伦熟女专区| 欧美日韩日产免费网站看| 精品高清av中文字幕| 欧美一二三级精品在线| 精品一二三区久久AAA片| 国产aⅴ无码片毛片一级网站| 日韩欧美亚洲一区二区三区影院| 91久久久久久久| 女人爽到高潮潮喷18禁网站| 黑操B| 久久有碼| 啊啊啊在线看| 亚洲 欧美 色图| 日韩一级二级三级免费看完整版| 伊人久久综合影院| www超碰| 旡码电影特区| 欧美天天影院| 精品人妻中文字幕高清| 性爱免费视频成人| 99精品热| 吉川爱美亚洲二区在线 | 中文乱码字幕观看| a片 xxxx受爽视频| 国产美女裸体秘 永久无遮挡| 麻花豆传媒剧国产MV出差| 国产高清在线观看欧美| 日本亚洲熟女视频| 精品人妻1237| 欧美日韩中国x| 99超碰碰| 人人操我人人干| 簧片免费看视频| 99热亚洲天堂| 91麻豆一二三区| 99re视频这里只有精品| 眼镜人妻101.com| 国产精品视频精品一二| 天天天乱色综合全| 欧洲综合色| 日欧美色| 97亚洲国产| 舔足天天操天天射| 亚洲精品官网在线观看| 区一在线观看| 精品人妻一区二区三区蜜桃视频| 翔田千里爆乳巨臀无码| 大香蕉97久久| 91九色丨风韵犹存| 国产精品宅男免费| 欧美狠狠鲁| 2017超碰| 日韩性爱小视频| 久久久夜夜嗨免费视频| 亚洲蜜臀懂色| 97欧美在线| 黄片aaaaa一区| 天天综合网入口~91| 久久99干一本高清| 人人潮人人摸| 狼人综合婷婷激情四射 | 中文字幕在线免费观看2| 丁香六月东京热| 97一区二区蜜臀| 久湿久久| 亚洲国产成人精品久久久国产成人一区二区三. | 欧美日韩成人在线| 亚洲涩图欧美| 美国aaaaa一级黄片| 日本不卡三级网在线播放| 欧美伊人电影| 熟女视频久久| 2019亚洲男人天堂| 亚洲免费在线探花| 美女91在线观看| 激情小说亚洲| 超碰超碰95| 五十路熟女在线不卡观看一区二区| 自拍偷拍 日韩欧美| 日本一级二级三级网站| 乱操9999| 美國A片| 欧美在线55555| 五月天婷婷在线看 | 操逼天美3区| 亚洲中文字幕有码视频一区二区三区| 91精品丝袜久久久久久| 920日本午夜免费| 亚洲天堂少妇| 亚洲第一在线视频| 亚洲天天精品| 久热香蕉精品在线视频| 久久同城AV| 美国精品国产精品| 麻豆一区在线| 成人a大片在线观看| 成人AV素股で擦久久| 亚州一区二区| 91撸色网 玖玖网 欧美| CCYY草草影院地址入口| 美女黄码视频午夜| 国产精品久久久久久 百度| 激情综合网一盗摄| 亚洲操人| 综合网 欧美| 乱精品一区字幕二区| 亚洲成人AB| 丁香六月啪啪| 男女无套 免费网站| 亚洲综合网电影91| 无码天堂| 中文字幕女同在线| 欧美黑人精品在线播放| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 男人的天堂色偷偷青青草视频婷婷网| 午夜国产综合视频在线观看| 玖玖爱综合| 国产精品成人久久一区二区三区| 国产热av| 日本天天吊| а√天堂资源官网在线资源| 国产熟妇一区二区| 你懂得91| 男人天堂欧美| 久热久操| 9999免费精彩视频| 日本久久超碰| 99色婷婷中文字幕乱色| 亚洲情色中文字幕一区| 精品人妻一区二区三区免费视频| 日韩美一区| 国产黄色视频久久| 大香蕉青青9| www.夜夜操| 日本色色色网站免费看不卡| 国产a级精品| 91快色色色色色| 亚洲天堂另类| 中国小夫妻勾搭露脸淫荡对白 | 青娱乐亚洲自拍| 亚洲男人天堂视频| 天天干2区3区| 欧美一级做a爰片免费视频| 中文字幕一区二区三区50路| 国产青青美女玩逼视频| 色狠狠色| 欧美强奸乱能| 麻豆久久一区二区三区| 超碰1997| 亚洲色欲一区二区三区| 欧美国产伊人久久久久| 日韩在线国产字幕| 春色综合免费| 久久不卡一区二区| 色99视频| 国产啊v在线免费播放| 伊人九九| 美熟女逼导航AV操逼| 99青草| 国产欧美岛国精品一区| 探花精品 一区二区| 一区二区亚州激情久婷婷欧美| 成人婷婷丁香| 性色av网站| 亚洲一区二区三区在线激情| 久久成人东京热人妻| 日韩国语字幕| 国产成年免费大片黄在线观看| 亚洲高潮影院| 色天堂在线观看| 中文字幕一区 二 区 三 四 五 区日 日 骚 | 婷婷五月天激情小说| 久草视频观看视频在线| 欧美组图日韩亚洲中文字幕| 91色欧美| 精品人妻一区二区三区夜夜| 青娱乐亚洲热| 9 9精品一区二区三区| 国产成人无码a| 97干在线视频| 丝袜美腿操av| 大香蕉在线SuP| 久久久久久久久久黄色网| 综合五月婷婷| 五月综合激情| 中日韩熟女| 日本三级A片网站com| 狠狠干91| 特色a在线上| 亚洲大色鬼| 色综和网| 色踪合AV| 97精品97久久| 欧日韩在线观看| 久超超碰| 美欧老女人97| 99re8免费高清在线| 国产蜜臀精品一区免费尤物| 九九无码| 长长久久免费视频| 五月丁香网站| 日韩中文字幕视频在线观看| 亚洲啪啪视频一区二区| 亚洲va有码在线天堂| 欧美精品23| 超碰免费人妻人人| 日韩精品国产一区二区| 熟女精品va中文字幕| 蜜乳AV一区| 日日操丁香五月天| 91精品国产一区三一| 蜜臀av网址| 中文字幕午夜精品久久久| 日本顶级天天操狠狠操夜夜操中文字幕| 欧美色图亚洲色图成人在在线| 国产伦精品一区二区三区视频女| 男人天堂久久精品| 91丝袜美腿网站| 欧美日韩淫加| 农村妇女精品一区二区| 青草影院内射高潮| www.久久超碰| 久久啊啊啊| 久久激情婷婷| 欧美特大AA级黄片| 欧美日韩色综合网| 亚洲国产一级精品毛一级精品看免费视频| 凸凹视频在线观看| 婷婷五月天伊人| 亚州操操穴网| 久久草视频污视频| 亚洲区小说| 日本欧美不卡| 欧美区亚洲区偷拍区 | 欧美劲爆视频一区二区| 亚洲男人的天堂亚洲| 亚洲美女精品| 欧美操逼视频二区| 美国三级日本三级久久99| 33044男人的天堂深夜备| 国产传媒日韩| 日本黄色大片一级视频免费麻豆| 国产九九九九九九九九| 日韩一区二区熟女| 天美传媒av一区二区| 美女好片色日本| 精品无码欧美三级| 爱媛媛久久国产福利| 91欧美高清| 99国产精品免费| 91九色丰满高潮| 精品久9| 中文字幕AV乱伦| av凤凰久久久| 熟女在线视频| 999久久久久久久久| 欧美色图色综合| 高清无码 国产精品| 色欧美天天| 97视频900| 色色九区| 日韩探花精品在线视频| AV天堂男人的天堂| 欧美性夜| 亚洲欧综合另类无码一区| 国产一区二区三区中文字幕| 91强在线播放| 久9re热视频这里只有精品| 人妻人人做人人澡人人爽欧美一区| 91干熟女| 天美传媒AV国产在线| 精品人妻一区二区三区鲁大师| 18啪啪手机免费性爱| 色情综合网| 欧美性暴力猛交XXXX | 日本九九九九| 亚洲国产中文字幕| 91影库| 人人操AV| 深夜激情| 男女性感激情网站| 亚洲综合春色| 无码人妻精品一区二区三区九九| 四虎在线观看视频| 色欲天天综合网| 黄色十八禁| 欧洲黄色网| 九九成人视频| 中文字幕人乱码中文字的预防方法| 免费国产视频| 色五月婷婷五月天| 偷拍99| 国内精品嫩模A∨私拍小视频| 91精品丝袜久久久久久| 中文字幕午夜精品久久久| 一级乱伦网站| 五月天婷婷欧美三区| 亚欧美色图| 最新中文字幕精品在线| 98精品国产乱码久久久久久| 久久久一区二区三区三州| 无码免费一区二区三区啪啪| 97鸡把在线视频| 亚州AV无码国产精品| 中文字幕十五区| 色在线综合| 中文字幕一二三区| 91亚洲情色| 9 9精品一区二区三区| 国产搭汕a级片| 成人性爱电影一区二区| 果冻传媒A片一二三区| 亚洲欧美综合| 18一区二区三区| 综合伊人网12色| 日本一区二区电影网站| 中文字幕第9页萱萱影音先锋| 精品 码产区一区二-1080P高清在线www-B029AV | 激情色图| www.色操逼| 97中文字幕一区| 国产九九九九九九九九| 天天碰久久入| 六月婷婷色综合| 久久久久成人网| 久9热| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 天天干美少妇一区| 超碰97护士| 91超碰人人| 另类亚洲一区二区三区| 亚洲中文字幕av| 精品人妻一区二区三区免费视频| 欧美一级黄片免费播放| 久久久久密臀视频| 成人麻豆av电影网站| 狠狠狠一区二区三区| 97色欧洲| 欧美视频边做饭边橾| 色啪网| 91总综合网| 丁香久久| 天天干天天日天天射黄色大片| 国产精品操| 夜夜爽爽爽| 美女干逼2| 色欧美在线| 国模无码一区二区三区在线| 青青草五月天| 欧美日韩性爱操大逼| 蜜臀Av一区二区三区| 女优视频第10页| 被窝影院午夜看片无码| 日本精品久久久久久久| 五月天综合在线| а√天堂资源官网在线资源| 国产一区二区三区,在线观看观看| 久久鲁干| 性夜影院爽黄A爽免费动漫| #NAME?| 激情丁香五月婷婷| 亚洲日本激情| 婷婷10月天青娱乐| 一区二区三区四区五区高清无码永久视频 | 国产成人无码啪| 欧美色91| 成人日本精品九区| 在线v中文字幕一区二区三区| 亚洲无 码A片在线观看麻豆| 中美日韩毛片| 99热精品在线| 大学生美女口爆| 伊人色综合欧美| 精品国产乱码久久久久久影片| 熟女这里只有精品6| 久久久精品九| 美女毛片999| 五月婷婷影院| 狠狠色噜噜狠狠狠狠狠色综合久久 | 亚洲污一污二| 中文字幕黑人大片| 亚洲超碰AV| 100啪啪视频大全| 亚洲图片视频小说| 日影院久久婷婷夜夜网| 九色 人妻 大香蕉| 韩日无码在线观看| 在线综合 亚洲 欧美中文字幕| 欧美色91| 蜜桃臀久久| 啊啊啊啊在线观看网址| 日本福利社| 久久精品国产亚洲AV无码电影| 大JI巴好深好爽又大又粗视频| 九七人妻在线| 久久精品人体| 亚洲欧美成人在线| AAAAAAAAA黄片| 青青草五月天| 久久久亚洲精品电影免费看| 综合熟女| 天天色综亚洲91污| 中文字幕精品日韩中文字幕| 日本韩国国产精品一区| 操东北女人| 啪啪啪男女亚洲中文字幕99| 久久色一区二区| 亚洲天堂女优在线| 国产人妻精品久久久一区二区三区| 精品国产久热在线观看| 日本视频一区二区三区| 日本一级婬片试看三分钟| 国产美女在线精品免费看| 超碰人人干天天射| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 加勒比无码一区二区三区| 色色色色综合网| 国产精品免费美女视频| 被男人吃奶很爽的毛片| 欧美成熟性爱精品| 俞拍久久国应视频| 91色插| 中文字幕激情小说| 久久久啊啊啊| 日韩在线电影| 亚洲动态色图| 91欧美亚洲| 精品福利| 亚洲综合另类| 51国产午夜精品视频| 亚洲第一页第二页激情| 久久国产熟女影院| 亲子敌伦对白在线播放| 大JI巴好深好爽又大又粗视频| 91亚洲网| 成人午夜高潮av猛片| AAAA欧美日韩| 日本孕妇一区二区视频操逼免费看 | 91老司机精品| 一区二区影视| 天天视频黄| 国产探花日韩援交| 97人妻免费中文字幕| 午夜舔阴达高潮视频免费看| 欧美日韩大香蕉| 大香蕉一级黄色片久久| 中文字幕高清精品一区| 久久夜黄色无码A级大片| 欧美一级A片不卡视频。| 丝袜剧情| 婷婷91| 视频二区美腿丝袜制服人妻欧美| 18一区二区三区| 色av中文字幕| 亚州精品人妻一二三区| 久久免费中文字幕在线观看| 青青草白白色| 精品久操| 在线播放欧洲免费av| 黄页av| 欧美呦呦性爱| 国产 v乱码一区二| 久久婷婷色综合一区二区三区| 毛片17S| 精品亚州18| 91九色丰满高潮| 中文字幕99999| 免费无码国产精品v片在线观看| 亚洲国产欧美一区二区潘金莲| 粉嫩av在线一区二区| 亚洲色图欧美色图日韩色图| 大香蕉av在线| 2020中文字幕| 蜜臀亚洲综合一二三四区| 91美女视频。| 午夜a成v人电影| www…国产操逼| 熟妇女人妻呻吟久久AV| 四虎在线免费视频| 九九九久久久| 日韩免费性爱视频在线观看| 亚洲精品丝袜-不卡成人免费…… 久久久久成人蜜桃精品 | 国产夜夜操| 中文精品少妇天堂| 操逼视频国产无套| 婷婷色五月激情| 国产精品。| 亚洲欧洲日韩中文字幕一区| 26uuu偷拍亚洲欧洲综合| 91热爆在线| wwe 天天干.com| 亚洲男人天堂视频| 91大神精品长腿在线观看网站| 操操逼视频| 99成人| 久久只有精品一区二区三区| 亚洲欧美在线丝袜| 综合久久六月久久婷婷| 欧美18禁91| 国产精品日日摸天天碰| 日韩99精品视频综合区| 96AV精品| 日韩欧视频| 在免费jIzzjIzz在线视频| 综合激情五月丁香| 蜜臀无码一区二区| 8x福利精品第一福利视频导航| 97色色色| 骚货操死你| 亚洲二区精品在线观看| 国产熟妇一区二区| 2023天天操夜夜操| 人妻少妇精品一区二区三区| 欧美极品色| 在线亚洲 欧美 日本专区| 国产又粗又长又爽又色| 淫骚熟女一区二区三区| 亚洲欧洲日韩中文字幕一区| 伊人网综合在线视频| 大鸡吧尹人在线| 91精品人妻一品二品三品| 亚洲av综合色区图片亚洲| 日本伦理一区二区| 欧美日韩1234| 蜜桃久久综合视频| 凹凸精品熟女在线观看| 九九九九久久久| 日日躁天天躁狠狠躁| 国产一区二区啪啪视频| 91欧美巨乳| 久久黄片国产一区二区| 国产久久日韩网站导航| 精品少妇一区二区三区| 国产一区二区三区精品观看啪| 欧美 青青草| 日本性感人妻91| 东京日日夜夜| 久操97| 在线观看十八禁| 天天综合91| 国产自产91区13区| 国产在线综合福利网站| 麻豆性爱视频在线播放| 国产精品露脸在线观看| 日本大香蕉| 亚洲av噜噜噜噜噜噜| 人妻天天爽夜夜爽精品2| 人人搞人人插人人操| 亚洲最大的黄色电影网站。| 久久无码一区二区二三区性色| 国产成人AV麻豆| 国产日韩区| 久久久精品中文字幕麻豆| 午夜福利在线合集| 五月天AV资源| 亚洲不卡AV在线| 日本操逼视频在线| 日韩欧美丝袜诱惑| 殴美在线AⅤ| 后入精品| 超91综合网| 日本性感人妻91| 97欧美精品综合| 久久五月天婷婷丁香中文字幕| 强奸熟女一区二区三区| 免费A V在线| 玖玖久久久| 夜夜操av亚洲一区二区| 精品高清一区二区三区三州| 中文字幕无码不卡啪啪| 日本午夜久久电影| 激情小说在线视频| 色欲色香天天天综合网www-亚洲综合国| 韩日性爱av| 1024午夜激情男人的天堂| 你懂得91| 天天看天天日天天操| 久久国模av| 国产精品老师| 亚洲欧美日韩免费观看| 日噜夜夜夜夜夜夜夜夜夜夜爽爽爽爽爽爽爽爽爽爽爽爽 | 国产免费小视频| 中文字幕视频一区视频二区| 91伊人久| 欧美综色欧| 99久久99久久综合| 日韩av免费一级电影| 男人的天堂日韩| 久久HD| 囯戸精品高潮呻吟旡码| 亚洲精品 欧美精品| 久热九九| 亚洲国产av中文字幕久久 | 久久久男人的天堂| 午夜人妻精品综合在线| 久久首页| 射综合网| 天欧美在线| 少妇国产不卡| 欧美成人黄网色网站| 97资源站日韩| 欧美韩国你懂得在线| 99精品热| 亚洲成人性爱网站在线播放| 四虎在线视频| 亚洲999综合| 亚洲 图片 综合91| 黄色小视频日本txt| 91丝袜在线观看| 韩国女主播青草在线| 国产亚洲在线观看| 在线A日本| 青青草中文字幕| 夜夜嗨一区| 成人久久精品| 看看小穴| 色婷婷视频| 久草电影网| 60秒免费小视频| 少妇免费视频| 强免费黄色网址| 蜜乳中文字幕a在线| 精品玖九九久| 日韩专区久久久| 欧美后入视频| 69精品人人人人| 亚洲天堂人妻熟妇视频| 久久亚洲国产成人| 啊啊啊操死我| 操久久久久| 91色图片| 五月香婷婷| 国产亚州高清国产拍精| 伊人久久综合影院| 亚洲av噜噜噜噜噜噜| 天天在线91| 亚洲aV无码成人在线观看| 26uuu性| 青青青国产手线观看视频2| 久久婷婷成人综合色怡春院| 青青草影视蜜久久| 久久久久久久久久久999| 亚洲熟妇丝袜在线观看| 日本有码影片下载 | 色情综合网| 九九综合久久| 中国探花熟女| 久久艹逼视频| 国产极品精品美女视频| 91在线秘 男同| 豆花视频操逼网址| 美女熟妇色| 亚洲va有码在线天堂| 操逼日批| 亚洲成人性| .精品人妻一区二区三| 天天干天天操天天操夜夜操天天操 | 一二三区精品视频| 黑人在线91| 亚洲精品人体| 亚洲另类天堂| 成人五级久久| 国产操偷| 亚洲最大网站av| 亚洲图片偷拍视频区| 丁香五月天堂| 一区二区偷拍拍视频| 久久理论字幕视频| 亚洲综合图文| 久噜噜| 久久久久深夜无码| 九九九不卡| 91狠狠综合| 亚洲欧洲日本精品中文a∨| 亚欧成人综合影院| 91强热人妻| 丁香五月性爱| 五月天色图影视| 啊嗯好大视频在线观看| 97精品国产手机| 熟妇高潮二区三区| 易易A毛视频| 中文字幕一区二区视频在线观看 | 69人妻精品一区二区绯色| 懂色AV一区二区三区| 中文字幕一区 二 区 三 四 五 区日 日 骚 | 日亚韩精品视频二区三| 综合婷婷| 超碰国产情侣自拍网| 日本大香蕉| 中文字幕久久精品一区| 熟妇高潮精品一区二区三区下载| 99久在线精品99re8a| 亚洲久草AV色图| 色欧洲| 91夜色| 肉嘟嘟www视频在线观看高清| 夂久色| 东北女人的毛片| 78m成人视线| 国产精品日本无码A片| 5月婷婷6月六月丁香| 熟妇人妻精品一区二区视频色欲| 亚洲人妻熟妇三十三区| 国产一区二区在线看| 欧美在线91| 精品少妇人妻av久久免费| 中文字幕一区二区三区视频播放| 大色综合| 免费?级毛片无码?∨蜜芽试看| 伊人婷婷五月天| 无码99| 国产丝袜一区二区三区| 色综合V| 婷婷色影院| 撸撸成人在线视频| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 超碰激情808| 欧美精品欧美精品系列 | 懂色AV中文| 水滴偷拍| 草草影院日本第一页| 激情五月天网| 97er欧美性| 欧美中文综合| 日韩AC| 亚州久久9| 日韩欧美日韩| 五月婷视频| 亚洲精品97中文字幕| 精品无码一区二区三区| 婷婷五月天色色| 亚洲综合九| 人人模人人看| 丁香五月综合| 久久久九精品| 国产精品嫩草久久久久| 欧美一区二区观看在线| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 德国一二三不卡| 欧美色97| 国产三级电影免费观看| 色大师网站www永久网站视频| 欧美天天综合网| 99热只有| 成人草草视频| 国产精品免费视频人成| 秋霞一区二区三区四区五区六区七区| 97精品网| 人人操人人摸人| 殴洲老熟女| 一本色道无码DVD中文字幕| 欧日韩不卡视.频| 久久精品中文字幕女同| 欧美日韩另类在线| 久久手机视直播| 久久久久久久| 国产免费操逼| 麻豆乱码久久精| 亚洲无 码A片在线观看麻豆| 丁香五月激情综合| 亚洲交换| 成人a级高清视频在线观看| 国产乱婷婷精品二区三区| 国产99999| 久久女人一区二区三区| 91N综合网| 色情乱伦AV| 人妻熟女一区二区| 影音先锋乱伦资源| 日本东京热大香蕉a片| 99re免费视频精品全部| 亚洲不卡AV在线| 97Ai亚洲| 久久婷婷色综合一区二区三区| 欧美性夜| 日韩精品 资源| 色吧91| 亚洲欧洲美腿丝袜| 久久黄片国产一区二区| 一牛一区二区三区久久| 熟女这里只有精品6| 一级黄碟在线看| 日本 色 导航| 国产视频大全| 亚洲欧美日韩夜夜| 久草毛片| 久/久精品99看9| 美女诱惑久久| 欧美最婬乱婬爆婬性视频 | 水野优香在线观看| yiqicaoav| 五月婷婷hd| 久久亚洲欧美中文字幕国语 | 97超碰中文在线| 青青草原狼av| 情趣丝袜无码操逼视频| 久超超碰| 免费伦费视频在线观看| 亚洲色图欧美色18直播在线| 乱人伦 国语对白:视频直接看| 91亚洲在线| 97自拍一区| 亚洲性爱电影| AV男人天堂网| 中亚精品极乱| 麻豆91熟妇人妻中文字幕茄子| 亚洲夜色在线| 亚洲AV无码翔田千里网站| 国产精品久久久777| 色色香蕉| 精品国产乱码久久久久久久| 久久久久久久久久久久久久久性生活视频 | 97一区二区蜜臀| 大香蕉www.超碰| 亚洲天天精品| 五月天婷婷欧美三区| 夫妻天天操岛国视频| 啊啊啊啊啊啊好湿好爽视频| 91爆操视频| 国产熟女高潮一区二区三区| 激情婷婷五月天| 精品人妻中文字幕4399| 欧美综合自拍亚洲综合图| 亚洲男人天堂Av| 伦伦成年午夜免费视频| 中国和日本人色哪个不下载能放| 少妇蜜汁| 日本三级日本三级99| 国产精品天堂| 亚洲综合贴图91| 亚洲天堂东京热| 亚洲男人综合| 神马久久免费电影观看| 看黑丝美女操逼青青网站| 日韩免费福利在线观看| 日韩成人人妻网站| 狠狠热这里都是精品| 综合欧美日本三级| 国产拍偷精品网站| 欧美亚州综合网图片| 超碰夫妻97| 六月色婷婷| 婷婷视频在线免费观看| 色欲久久久久综合网| com 首页 18岁 禁区 女优 免费 精选 同城| 少妇国产不卡| 色婷婷狠狠18禁| Sekablack无码一区| 午夜传煤十二区精品| 日本精品久久久久久久| 97天天爽| 99久久9| 精品国产www久久| 东京热毛片177b2viP| AV色五月天| 91久久18禁| 深夜操逼网| 日韩性爱电影一区| 爽极品影院| 久操电影| 亚洲综合色图欧美| 日本中文字幕一区| xxx亚洲午夜天堂| 九九色图| 一区二区免费电影久久| 久久久无码视频| 欧美天天综合站| 日韩内射视频| 久热69九色熟妇97| 亚欧精品久久久久久久久久久| 欧美人妻久久精品二区三区 | 日本成人A片网站| 欧美色图亚洲色| 欧美色图片欧美色图| 多毛小伙内射老太婆| 五月天AV资源| 亚洲综合校园春色| 成人熟女区| 五月天社区| 国产免费久久久久| 亚洲欧洲国产综合av| 精品九九国产无码| 久久av无码| 欧美一级AAAAAAA| 欧美中出| 人妖欧美一区二区| 97在线视频观看免费| 亚洲999综合| 久久99草| 亚州高清色综合| 欧美一级欧美三级在线观看| 暖暖精品二区三区观看| 亚洲欧洲偷拍一区| 婷婷五月天激情小说| 天天日天天舔天天喷天天射| 亚洲天堂无码| 欧美十八禁网站| 熟妇操花| 91色色色| 免费观看啪视频| 久久精品色欧美aⅴ一区二区| 人妻系列无码专区中文有码| 天美精品原创av片国产| 亚洲久久久久| 极品国产内射| 国产一国产一级毛片古装| 国产传媒av天美传媒在线| 青娱乐休闲视频在线观看| 欧美综合另类| 操逼网站网站| 三级精品三级在线观看| 成人免费视瓶| 乱伦1色页| 国产真实野战在线视频| 亚欧成人中文字幕一区| 久精品无码av一区二免费国产在线观看| 欧美精品1区2区3区| 午夜福利成人免费视频| 婷婷五月色| 偷拍亚洲高清图片| 超碰久久性爱| 男人 天堂 日 亚洲| 精品一区99999| 国产sv美女内射| 欧美天天综合网| wwwxxx日本爽| 亚欧国产无码精品在线| 凸凹视频在线观看| 精品国产精品一区二区| 国产黄a三级三级三级av在线看| 97久久久久久久精| 97人人中文网| 韩国嫰模上门援交视频| 亚洲,欧美,综合网| 人人妻人人澡人人爽久久av| 91亚州| 天天摸夜夜添无码小视频| 亚洲精品第一| 开心激情婷婷| 九九夜精品九九在线| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 芊芊操逼视频无码| 柠檬AV导航| 色五月综合| 裸模AV女优| 97爱爱官网| 色欲久久久久综合网| 国产操操日韩三级黄| 大香蕉黄色一区| 艾草av| 久久久久幕乱码| 色99久草| 国产日韩无码一区二区三区久久区| 久久久久久国产手机AV| 日本一级黄色电影| 嗯阿好爽好紧| 天天色综合影视网| 精品久久无码午夜福利| 欧美性爱一级操| 国产自产91区13区| 97中文综合| 中文字幕国产| 亚洲精品色| 蜜桃丰满熟妇av无码区不卡| 亚洲国产精品成人久久蜜臀| 性爱视频啪啪啪啪| 超碰狠狠操| 午夜福利在线合集| 久久久极品| 91人妻精华帖| 精品一区二区啪啪啪| 人妻天天爽夜夜爽2| 日韩性爱啪啪视频| 国产情侣自拍在线播放| 欧美成人精品一区二区三区| 夜夜嗨一区| 亚洲精品乱码线路中文字幕| 久久久久九九九| 青苹果影院男人的天堂| 亚洲狠狠入| 在线观看AV片| 日夜啪电影| 台湾佬中文娱乐网久久久久久久久久com | 老子午夜伦不卡影院| 在线看污网站| 国产大陆天天艹| 素人播放一区| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 久久久久久久97| 国产亚洲日本精品在线| 啊啊啊97视频| 亚州综合色| 狠狠色婷婷7777久| 国产情色第一第二页在线观看| 日韩av性爱在线播放| 伊人久久婷婷| 五十路人妻在线| 欧美一级特黄淫片在线观看| 99热精品青草在线| 蜜臀AV午夜精品久| 亚洲精品乱码久久久久久蜜桃麻豆| 国产亚洲色婷婷99精品91| 69XX一中文字幕人妻91| 97视频免费在线| 一个国产在线综合网站| 青青草原综合久久大伊人精品| 亚洲图片激情小说| 东京热免费视频|