久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

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

gym環(huán)境庫(kù)實(shí)戰(zhàn):接口詳解、CartPole與自定義環(huán)境全攻略

gym環(huán)境庫(kù)實(shí)戰(zhàn):接口詳解、CartPole與自定義環(huán)境全攻略 很多剛接觸強(qiáng)化學(xué)習(xí)的同學(xué)第一個(gè)崩潰點(diǎn)往往不在算法推導(dǎo)而在環(huán)境接口。網(wǎng)上教程張嘴就是env.step(action)可一旦你真去寫(xiě)reset返回什么、step返回幾個(gè)值、action_space到底是個(gè)什么對(duì)象每一步都可能把人卡住。gym 環(huán)境庫(kù)就是這套交互標(biāo)準(zhǔn)的核心載體它把智能體怎么跟任務(wù)世界打交道這件抽象的事固化成了幾個(gè)極其具體的方法和數(shù)據(jù)結(jié)構(gòu)。你不需要懂每個(gè)環(huán)境內(nèi)部的物理引擎也不用關(guān)心游戲畫(huà)面怎么渲染只要會(huì)按接口規(guī)范操作就能在幾十個(gè)現(xiàn)成任務(wù)上快速驗(yàn)證強(qiáng)化學(xué)習(xí)算法。這篇文章我會(huì)先講清楚 gym 環(huán)境庫(kù)在整個(gè)強(qiáng)化學(xué)習(xí)里的定位然后手把手帶你把 CartPole 跑起來(lái)再?gòu)挠^測(cè)空間、動(dòng)作空間、內(nèi)置環(huán)境、自定義環(huán)境、訓(xùn)練循環(huán)這些角度逐一拆開(kāi)揉碎。適合剛學(xué)強(qiáng)化學(xué)習(xí)、想看明白別人代碼里環(huán)境部分在干嘛的同學(xué)也適合準(zhǔn)備自己造環(huán)境、跑實(shí)驗(yàn)的讀者。讀完你會(huì)發(fā)現(xiàn)環(huán)境庫(kù)沒(méi)那么玄乎它更像是一張寫(xiě)得明明白白的接口合同剩下的只是熟練。1. 為什么所有強(qiáng)化學(xué)習(xí)例程都從 gym.make 開(kāi)始環(huán)境接口的歷史角色1.1 算法實(shí)現(xiàn)與任務(wù)環(huán)境為什么要解耦強(qiáng)化學(xué)習(xí)的最基本框架是智能體不斷在環(huán)境里試錯(cuò)觀察狀態(tài)、做出動(dòng)作、拿到獎(jiǎng)勵(lì)、再看新?tīng)顟B(tài)。聽(tīng)起來(lái)很簡(jiǎn)單但一旦落到代碼里麻煩就來(lái)了。不同任務(wù)的世界觀完全不同控制一根倒立桿要看桿的角度玩射擊游戲要看畫(huà)面像素讓小車爬坡要看位置和速度。如果每個(gè)任務(wù)都自己寫(xiě)一套接口那么每換一個(gè)任務(wù)算法代碼就要跟著改一遍這幾乎等于沒(méi)法做研究也沒(méi)法做工程復(fù)用。環(huán)境庫(kù)存在的意義就是把任務(wù)怎么做和算法怎么學(xué)這兩件事徹底分開(kāi)。算法側(cè)只認(rèn)一個(gè)抽象的環(huán)境對(duì)象不需要知道里面是物理仿真還是游戲模擬器只要負(fù)責(zé)接收觀測(cè)、給出動(dòng)作、消費(fèi)獎(jiǎng)勵(lì)。環(huán)境側(cè)只需要按照統(tǒng)一規(guī)范把狀態(tài)、獎(jiǎng)勵(lì)、終止信號(hào)交出來(lái)至于狀態(tài)是怎么算出來(lái)的它不關(guān)心。于是同一套策略網(wǎng)絡(luò)、同一套更新公式就能從一個(gè)任務(wù)無(wú)縫切到另一個(gè)任務(wù)。這也是為什么你在各種強(qiáng)化學(xué)習(xí)教程里都看到gym.make它更像是整個(gè)實(shí)驗(yàn)流程的入口文件。1.2 gym 環(huán)境庫(kù)的合同到底是什么我把 gym 的接口理解成一份合同你遵守這份合同就能跟它底下的幾十種任務(wù)無(wú)縫協(xié)作。合同的核心是五個(gè)要素。第一是環(huán)境構(gòu)造通常用gym.make(環(huán)境名)直接加載一個(gè)現(xiàn)成任務(wù)。第二是reset()回合開(kāi)始前把環(huán)境恢復(fù)到初始狀態(tài)并給你一個(gè)初始觀測(cè)。第三是step(action)你把智能體當(dāng)前回合要做的動(dòng)作傳進(jìn)去環(huán)境模擬一步后返回新的觀測(cè)、獎(jiǎng)勵(lì)、是否結(jié)束等信息。第四是observation_space和action_space這兩個(gè)屬性告訴你狀態(tài)和動(dòng)作的合法范圍與數(shù)據(jù)結(jié)構(gòu)算法網(wǎng)絡(luò)怎么搭、輸出層怎么設(shè)計(jì)全看它們。第五是render()和close()負(fù)責(zé)可視化與資源釋放。類比一下它就像家電的標(biāo)準(zhǔn)化插座。你不需要知道每一臺(tái)電器內(nèi)部的電路怎么走只需要把插頭做成統(tǒng)一規(guī)格插上去就能用。環(huán)境庫(kù)就是那個(gè)統(tǒng)一規(guī)格的插座算法是電器任務(wù)是電源。協(xié)議一旦固定下來(lái)維護(hù)成本直線下降。2. 把第一個(gè)環(huán)境跑起來(lái)CartPole 的完整交互循環(huán)2.1 安裝與版本先確認(rèn)你拿到的是哪一代接口安裝 gym 非常簡(jiǎn)單一條命令的事pip install gym裝完以后我強(qiáng)烈建議你先做一件事打印一下環(huán)境本身并執(zhí)行一次reset和一次step確認(rèn)自己手上的接口是哪個(gè)版本。因?yàn)?gym 社區(qū)經(jīng)歷過(guò)好幾次 API 調(diào)整不同教程基于不同版本代碼經(jīng)常對(duì)不上。import gym env gym.make(CartPole-v1) print(env.reset()) print(env.step(env.action_space.sample()))如果你的輸出像這樣說(shuō)明你拿的是新版接口(array([ 0.034, 0.018, -0.023, 0.014]), {}) (array([ 0.035, -0.032, -0.023, 0.055]), 1.0, False, False, {})新版reset()返回兩個(gè)值初始觀測(cè)和一個(gè) info 字典step()返回五個(gè)值觀測(cè)、獎(jiǎng)勵(lì)、終止標(biāo)志、截?cái)鄻?biāo)志、info。如果你的輸出比這少或者只剩一個(gè)觀測(cè)說(shuō)明教程是在老版本接口上寫(xiě)的。判斷清楚版本再動(dòng)手比硬著頭皮跑通代碼重要得多。很多報(bào)錯(cuò)根本不是邏輯問(wèn)題而是接口字段數(shù)量對(duì)不上。2.2 最小交互循環(huán)裝好之后我們用 CartPole 寫(xiě)一個(gè)最小可運(yùn)行的交互循環(huán)。CartPole 的任務(wù)很直白一根桿子立在可移動(dòng)的小車上你要通過(guò)對(duì)小車施加向左或向右的力讓桿子盡量保持豎直不倒下。import gym env gym.make(CartPole-v1) obs, info env.reset(seed42) print(初始觀測(cè):, obs, 額外信息:, info) for step in range(5): action env.action_space.sample() # 隨機(jī)選一個(gè)合法動(dòng)作 obs, reward, terminated, truncated, info env.step(action) done terminated or truncated print(f第{step 1}步 | 動(dòng)作: {action} | 觀測(cè): {obs} | 獎(jiǎng)勵(lì): {reward} | 結(jié)束: {done}) if done: obs, info env.reset() break env.close()這段代碼的關(guān)鍵點(diǎn)有三個(gè)動(dòng)作要直接從action_space.sample()里取保證它一定合法terminated和truncated要用or合并成done因?yàn)檫@倆任何一種情況都意味著本回合結(jié)束回合結(jié)束之后一定要調(diào)用reset()讓環(huán)境回到新的初始狀態(tài)才能開(kāi)始下一回合。2.3 理解 step 返回的值觀測(cè)、獎(jiǎng)勵(lì)、終止、截?cái)?、額外信息step返回的五個(gè)值乍看簡(jiǎn)單但每個(gè)都有講究。第一個(gè)是觀測(cè)也就是智能體在下一步能看到的世界狀態(tài)。CartPole 的觀測(cè)是一個(gè)四維向量每一項(xiàng)都有明確的物理含義維度含義大致范圍0小車位置-4.8 到 4.81小車速度-Inf 到 Inf2桿與豎直方向夾角-24° 到 24°3桿頂端角速度-Inf 到 Inf第二個(gè)是獎(jiǎng)勵(lì)。CartPole 的獎(jiǎng)勵(lì)很簡(jiǎn)單每存活一步就加 1。所以一回合如果堅(jiān)持了 200 步總回報(bào)就是 200。第三個(gè)和第四個(gè)是結(jié)束標(biāo)志。這里有一個(gè)很多新手容易忽略的區(qū)分terminated表示環(huán)境自己判定任務(wù)結(jié)束比如桿倒了、車沖出了邊界truncated表示環(huán)境還沒(méi)結(jié)束但因?yàn)檫_(dá)到最大步數(shù)或外部條件被強(qiáng)制截?cái)唷@习姹纠镞@倆合并成一個(gè)done新版本拆開(kāi)了對(duì)訓(xùn)練過(guò)程影響不小后面我會(huì)詳細(xì)說(shuō)。第五個(gè)是 info 字典一般用來(lái)放調(diào)試信息比如某些游戲的真實(shí)計(jì)分、剪枝后額外使用的數(shù)據(jù)。正常情況下訓(xùn)練用不到它但如果你做算法調(diào)優(yōu)它是很好的參照。3. 讀懂 spaces 模塊觀測(cè)空間與動(dòng)作空間就是算法的邊界條件3.1 主流空間類型和它們的形狀語(yǔ)義observation_space和action_space是環(huán)境給算法的最重要提示你的輸入是什么形狀你的輸出該怎么約束。這兩個(gè)屬性不是普通元組而是 gym 的 spaces 對(duì)象寫(xiě)算法之前必須先搞懂它們。最常見(jiàn)的幾種空間類型如下空間類型含義典型場(chǎng)景Discrete(n)離散整數(shù)動(dòng)作取值 0 到 n-1CartPole 的左右推、走迷宮的方向Box(low, high, shape)連續(xù)向量或矩陣每個(gè)元素有上下界Pendulum 的連續(xù)扭矩、圖像像素矩陣MultiDiscrete(nvec)多個(gè)離散維度組合同時(shí)控制多個(gè)可調(diào)檔位MultiBinary(n)元素只能取 0 或 1 的向量開(kāi)關(guān)組合類控制問(wèn)題Dict(spaces)多個(gè)子空間組成的字典混合觀測(cè)比如同時(shí)有傳感器和圖像為什么要強(qiáng)調(diào)這是 spaces 對(duì)象因?yàn)楣庥行螤钸€不夠你還需要知道取值邊界、到底離散還是連續(xù)、采樣一個(gè)隨機(jī)合法動(dòng)作怎么弄。這些信息都封裝在對(duì)象的方法和屬性里了。3.2 從 space 對(duì)象能提取什么信息實(shí)際寫(xiě)代碼的時(shí)候我?guī)缀趺看味紩?huì)先做這樣一個(gè)打印import gym import numpy as np env gym.make(CartPole-v1) print(動(dòng)作空間:, env.action_space) print(觀測(cè)空間:, env.observation_space) print(離散動(dòng)作數(shù):, env.action_space.n) print(觀測(cè)形狀:, env.observation_space.shape) random_action env.action_space.sample() print(隨機(jī)動(dòng)作:, random_action, type(random_action)) sample_obs env.observation_space.sample() print(隨機(jī)觀測(cè):, sample_obs) print(觀測(cè)下界:, env.observation_space.low) print(觀測(cè)上界:, env.observation_space.high)以 CartPole 為例你會(huì)看到動(dòng)作空間是Discrete(2)說(shuō)明合法的動(dòng)作只有 0 和 1觀測(cè)空間是Box(4,)形狀是(4,)。這里observation_space.low和high非常有用它直接給出了每個(gè)維度的取值范圍。如果你要做輸入歸一化或者要判斷一個(gè)狀態(tài)是否越界這兩個(gè)數(shù)組就是依據(jù)。另一個(gè)容易踩坑的點(diǎn)是類型。Discrete采樣出來(lái)的動(dòng)作是整數(shù)類型而很多神經(jīng)網(wǎng)絡(luò)的輸出是浮點(diǎn)概率分布或浮點(diǎn)標(biāo)量。如果你要自己把 softmax 輸出的概率轉(zhuǎn)成動(dòng)作記得用int()轉(zhuǎn)一下否則傳進(jìn)step可能會(huì)直接報(bào)錯(cuò)或者被環(huán)境庫(kù)靜默強(qiáng)制轉(zhuǎn)換造成難以排查的行為異常。4. 內(nèi)置環(huán)境群像從 CartPole 到像素級(jí)街機(jī)每個(gè)任務(wù)都是一道強(qiáng)化學(xué)習(xí)考題4.1 幾個(gè)典型內(nèi)置環(huán)境的對(duì)照與教學(xué)點(diǎn)gym 自帶的環(huán)境非常多從最簡(jiǎn)控制問(wèn)題到像素級(jí)游戲都有。環(huán)境多不是重點(diǎn)重點(diǎn)是你應(yīng)該從每個(gè)任務(wù)里讀出它想考你什么。我整理了幾個(gè)經(jīng)典型號(hào)供你挑訓(xùn)練用環(huán)境動(dòng)作空間觀測(cè)空間獎(jiǎng)勵(lì)特征它考你什么CartPole-v1離散 2Box(4,)每步 1最基礎(chǔ)的狀態(tài)表示與穩(wěn)定控制Pendulum-v1連續(xù) 1 維Box(3,)每步都有負(fù)分連續(xù)動(dòng)作控制、負(fù)獎(jiǎng)勵(lì)設(shè)計(jì)MountainCar-v0離散 3Box(2,)每步 -1到達(dá)山頂才結(jié)束稀疏獎(jiǎng)勵(lì)與延遲獎(jiǎng)勵(lì)需要探索LunarLander-v2離散 4Box(8,)分段獎(jiǎng)勵(lì)成功 100多維度狀態(tài)、多階段目標(biāo)、燃料控制像素級(jí)街機(jī)環(huán)境離散若干圖像 Box取決于游戲規(guī)則視覺(jué)輸入、CNN、高維觀測(cè)學(xué)習(xí)拿 Pendulum 來(lái)說(shuō)它的目標(biāo)是讓擺錘倒立起來(lái)動(dòng)作是連續(xù)扭矩。它返回的 reward 永遠(yuǎn)是一個(gè)負(fù)的二次型數(shù)值越接近理想狀態(tài)越接近 0。也就是說(shuō)這不是攢分越高越好的環(huán)境而是虧損越少越好。你評(píng)估算法時(shí)就得用回合總回報(bào)的回升趨勢(shì)來(lái)判斷而不是看單步獎(jiǎng)勵(lì)是否為正。MountainCar 則更陰險(xiǎn)。小車在谷底發(fā)動(dòng)機(jī)功率不夠直接沖坡永遠(yuǎn)上不去需要先來(lái)回?fù)u晃積蓄動(dòng)能。每步扣 1 分只有到達(dá)山頂才結(jié)束。這個(gè)環(huán)境是天然的稀疏獎(jiǎng)勵(lì)試金石很多初學(xué)者用最簡(jiǎn)單的隨機(jī)策略跑這個(gè)任務(wù)會(huì)發(fā)現(xiàn)永遠(yuǎn)結(jié)束不了從而誤以為環(huán)境卡死了。其實(shí)這正是它的教學(xué)目的讓你理解獎(jiǎng)勵(lì)稀疏時(shí)探索有多難。4.2 跑陌生環(huán)境之前先來(lái)一次環(huán)境體檢我養(yǎng)成了一個(gè)習(xí)慣拿到任何陌生環(huán)境不急著寫(xiě)算法先做一次體檢。體檢腳本大概長(zhǎng)這樣import gym import numpy as np env gym.make(環(huán)境名) obs, info env.reset(seed0) print(空間信息:, env.observation_space, env.action_space) returns [] for episode in range(10): obs, info env.reset() total_reward 0 done False while not done: action env.action_space.sample() obs, reward, terminated, truncated, info env.step(action) total_reward reward done terminated or truncated returns.append(total_reward) print(f回合 {episode 1} 總回報(bào): {total_reward}) print(隨機(jī)策略平均回報(bào):, np.mean(returns)) print(隨機(jī)策略回報(bào)標(biāo)準(zhǔn)差:, np.std(returns))這個(gè)過(guò)程能讓你在 5 分鐘內(nèi)知道動(dòng)作空間有多大、觀測(cè)數(shù)據(jù)長(zhǎng)什么樣、隨機(jī)策略大概能拿多少分、回合最長(zhǎng)能跑多少步。這個(gè)東西稱不上高級(jí)但能避免你在一個(gè)自身設(shè)計(jì)有問(wèn)題的任務(wù)上盲目調(diào)算法。比如某個(gè)環(huán)境隨機(jī)策略回報(bào)的標(biāo)準(zhǔn)差極大說(shuō)明單次回合的隨機(jī)性很高訓(xùn)練時(shí)就要適當(dāng)多采幾條軌跡。5. 手寫(xiě)一個(gè)自定義環(huán)境從空實(shí)現(xiàn)到可訓(xùn)練五步走完整過(guò)程5.1 自定義環(huán)境的骨架五個(gè)必須實(shí)現(xiàn)的方法很多場(chǎng)景下內(nèi)置環(huán)境不夠用比如你想研究一個(gè)全新的業(yè)務(wù)調(diào)度問(wèn)題、想給本科生設(shè)計(jì)一個(gè)可視化教學(xué)環(huán)境這時(shí)候就得自己寫(xiě)環(huán)境。別怕只要照著骨架填內(nèi)容就行。我以一個(gè) 5×5 網(wǎng)格尋寶為例智能體從左上角出發(fā)目標(biāo)是右下角的寶藏每走一步可以用上、下、左、右四個(gè)動(dòng)作。狀態(tài)是當(dāng)前所在格子編號(hào)碰到寶藏給 1 分走 50 步?jīng)]拿到就截?cái)唷mport gym import numpy as np from gym import spaces class GridWalkingEnv(gym.Env): def __init__(self, size5): super().__init__() self.size size self.action_space spaces.Discrete(4) self.observation_space spaces.Discrete(size * size) self.start_state 0 self.goal_state size * size - 1 self.state None self.steps 0 self.max_steps 50 def reset(self, *, seedNone, optionsNone): super().reset(seedseed) self.state self.start_state self.steps 0 return self._get_obs(), {} def _get_obs(self): return self.state def step(self, action): row, col divmod(self.state, self.size) if action 0: row max(0, row - 1) # 上 elif action 1: row min(self.size - 1, row 1) # 下 elif action 2: col max(0, col - 1) # 左 elif action 3: col min(self.size - 1, col 1) # 右 self.state row * self.size col self.steps 1 reward 1.0 if self.state self.goal_state else 0.0 terminated self.state self.goal_state truncated self.steps self.max_steps info {} return self._get_obs(), reward, terminated, truncated, info def render(self): for row in range(self.size): line for col in range(self.size): idx row * self.size col if idx self.state: line A elif idx self.goal_state: line G else: line . print(line) def close(self): pass這個(gè)類看起來(lái)不長(zhǎng)但它把 gym 環(huán)境的全部契約都實(shí)現(xiàn)了reset返回(obs, info)step返回(obs, reward, terminated, truncated, info)并且定義了action_space和observation_space。5.2 從能跑到科學(xué)可信獎(jiǎng)勵(lì)設(shè)計(jì)、隨機(jī)性、終止條件代碼能跑只是第一步自定義環(huán)境真正難的是設(shè)計(jì)是否合理。首先看獎(jiǎng)勵(lì)。上面這個(gè)尋寶環(huán)境用的是 0/1 獎(jiǎng)勵(lì)只有到達(dá)終點(diǎn)才給 1 分。如果你直接拿它訓(xùn)練智能體前幾百回合大概率什么都學(xué)不到因?yàn)殡S機(jī)走 5×5 網(wǎng)格碰到終點(diǎn)的概率太低了。常見(jiàn)的改進(jìn)是增加距離懲罰每走一步扣 0.01或者給接近終點(diǎn)的狀態(tài)一點(diǎn)塑形獎(jiǎng)勵(lì)讓策略梯度有信號(hào)可循。但也別獎(jiǎng)勵(lì)給得太密太密會(huì)誘導(dǎo)智能體原地刷獎(jiǎng)勵(lì)而不是真正走向終點(diǎn)。其次看隨機(jī)性。如果你的環(huán)境里涉及隨機(jī)初始化比如隨機(jī)放置起點(diǎn)和終點(diǎn)一定要把隨機(jī)數(shù)的生成交給self.np_random而不是直接用 Python 的random模塊。因?yàn)閞eset()里調(diào)用了super().reset(seedseed)gym 會(huì)幫你維護(hù)一個(gè)可復(fù)現(xiàn)的隨機(jī)源。直接調(diào)用super().reset(seedseed)這件事尤其重要很多私有環(huán)境寫(xiě)完后 seed 無(wú)效問(wèn)題就出在這里。第三看終止條件。我故意在尋寶環(huán)境里加了max_steps50就是為了讓訓(xùn)練不會(huì)無(wú)限循環(huán)。如果你不設(shè)這個(gè)上限一個(gè)永遠(yuǎn)完不成任務(wù)的環(huán)境會(huì)讓訓(xùn)練腳本掛在那里表面上看起來(lái)是算法還在學(xué)實(shí)際上已經(jīng)死循環(huán)了。terminated和truncated的語(yǔ)義也要分開(kāi)找到寶藏是terminated步數(shù)超限是truncated這兩者對(duì)后續(xù)算法的影響不同。5.3 環(huán)境注冊(cè)與直接使用兩種加載方式自定義環(huán)境寫(xiě)完后有兩種用法。第一種也是最簡(jiǎn)單的方式直接實(shí)例化這個(gè)類不用通過(guò)gym.make。這樣在調(diào)試單腳本時(shí)最方便你可以直接在文件里 new 一個(gè)對(duì)象然后調(diào)reset、step跑循環(huán)。缺點(diǎn)是沒(méi)法套用 gym 的包裝器和統(tǒng)一配置。第二種是注冊(cè)到環(huán)境注冊(cè)表這樣就可以像內(nèi)置環(huán)境一樣gym.make(GridWalk-v0)加載。方法是在模塊里調(diào)用注冊(cè)函數(shù)from gym.envs.registration import register register( idGridWalk-v0, entry_point你的模塊名:GridWalkingEnv, max_episode_steps50, )注冊(cè)的好處是統(tǒng)一管理你可以通過(guò)max_episode_steps給環(huán)境加上默認(rèn)的時(shí)間截?cái)噙€能配合后續(xù)要講的并行環(huán)境工具一并用。但我得提醒你如果只在單個(gè)腳本里做實(shí)驗(yàn)注冊(cè)反而多一層負(fù)擔(dān)不如直接實(shí)例化省得處理模塊路徑問(wèn)題。6. 寫(xiě)訓(xùn)練循環(huán)時(shí)的環(huán)境側(cè)細(xì)節(jié)重置、截?cái)?、并行與隨機(jī)種子的連鎖反應(yīng)6.1 最容易寫(xiě)錯(cuò)的循環(huán)結(jié)構(gòu)環(huán)境代碼本身寫(xiě)清楚了還要寫(xiě)對(duì)使用它的訓(xùn)練循環(huán)。我見(jiàn)過(guò)太多新手在循環(huán)結(jié)構(gòu)上陰溝翻船。標(biāo)準(zhǔn)的智能體與環(huán)境交互大致是這樣obs, info env.reset() for step in range(max_steps_per_episode): action agent.act(obs) next_obs, reward, terminated, truncated, info env.step(action) agent.learn(obs, action, reward, next_obs, terminated, truncated) obs next_obs if terminated or truncated: obs, info env.reset() break這里有個(gè)順序問(wèn)題obs必須在reset()之后立刻拿到接著在步進(jìn)后立刻更新為next_obs而不是在圖省事的情況下把reset()放在循環(huán)開(kāi)頭。如果每步都調(diào)一次reset()環(huán)境永遠(yuǎn)不會(huì)有進(jìn)展如果不及時(shí)更新obs智能體拿到的就是上一時(shí)刻的狀態(tài)時(shí)序就亂了。6.2 時(shí)間限制與回合統(tǒng)計(jì)的陷阱當(dāng)我們從環(huán)境拿到terminatedTrue或truncatedTrue時(shí)很多訓(xùn)練算法都會(huì)把它們統(tǒng)一當(dāng)成回合結(jié)束來(lái)處理。在簡(jiǎn)單代碼里這問(wèn)題不大但如果你寫(xiě)的是帶自舉的算法比如 DQN 或者帶有價(jià)值網(wǎng)絡(luò)的強(qiáng)化學(xué)習(xí)就必須區(qū)分。道理很簡(jiǎn)單terminatedTrue意味著任務(wù)真正結(jié)束之后沒(méi)有下一狀態(tài)價(jià)值目標(biāo)里不應(yīng)該加未來(lái)回報(bào)truncatedTrue只是步數(shù)到了上限任務(wù)本身還可以繼續(xù)這時(shí)候如果也把未來(lái)回報(bào)砍掉會(huì)嚴(yán)重低估這個(gè)狀態(tài)的價(jià)值。CartPole 里 500 步的截?cái)嗑褪且粋€(gè)典型例子。很多用老接口done一把抓的訓(xùn)練腳本在 CartPole 上長(zhǎng)期訓(xùn)練后會(huì)出現(xiàn)價(jià)值估計(jì)偏差根子就在這里。我建議在訓(xùn)練循環(huán)里把這兩個(gè)標(biāo)志分開(kāi)存進(jìn) info或者至少讓 loss 計(jì)算時(shí)分別處理。如果你的算法庫(kù)不區(qū)分那就把截?cái)酄顟B(tài)單獨(dú)標(biāo)記下來(lái)在計(jì)算回報(bào)時(shí)按未來(lái)還有延續(xù)的方式處理。6.3 多環(huán)境并行與隨機(jī)種子的管理單環(huán)境交互的樣本速度往往不夠。實(shí)際訓(xùn)練里通常一次性開(kāi)多個(gè)并行的環(huán)境副本讓智能體同時(shí)采集大量軌跡再用這些樣本更新網(wǎng)絡(luò)。多環(huán)境并行在接口上不算復(fù)雜核心是向量化多個(gè)環(huán)境實(shí)例打包成一個(gè)向量環(huán)境對(duì)象一次step同時(shí)推進(jìn)所有副本。并行環(huán)境的隨機(jī)種子管理是重災(zāi)區(qū)。如果你給每個(gè)環(huán)境設(shè)置同一個(gè) seed它們初始狀態(tài)完全一樣采集到的軌跡天然重復(fù)訓(xùn)練多樣性大打折扣。正確做法是讓每個(gè)副本獲得不同的 seeddef make_env(rank, seed_base0): def _thunk(): env gym.make(CartPole-v1) env.reset(seedseed_base rank) return env return _thunk同時(shí)np.random.seed、Python 內(nèi)置random.seed、環(huán)境的 random source 是三套互相獨(dú)立的隨機(jī)體系。很多實(shí)驗(yàn)復(fù)現(xiàn)不出來(lái)不是因?yàn)樗惴ㄓ须S機(jī)性而是只給環(huán)境設(shè)了 seed忘了給 PyTorch 或 NumPy 設(shè)置種子。想要可復(fù)現(xiàn)所有隨機(jī)源都要在入口統(tǒng)一初始化。7. 踩過(guò)的坑和繞過(guò)的彎gym 環(huán)境使用的七條經(jīng)驗(yàn)7.1 版本接口不同引發(fā)的連鎖問(wèn)題我見(jiàn)過(guò)最浪費(fèi)時(shí)間的一次 debug是把老教程里的done四元組硬套到新版本環(huán)境上。step返回五個(gè)值之后解包直接報(bào)錯(cuò)。這種問(wèn)題表面上是語(yǔ)法錯(cuò)誤實(shí)際上是整個(gè)接口語(yǔ)義的升級(jí)。遇到這種情況先打印一下當(dāng)前環(huán)境的返回結(jié)構(gòu)再對(duì)照教程去改比盲猜快得多。7.2 渲染用于檢查不要開(kāi)著訓(xùn)練render()確實(shí)能讓你看到智能體在做什么但代價(jià)是大量 CPU 和內(nèi)存開(kāi)銷。我早期經(jīng)常開(kāi)著渲染訓(xùn)練覺(jué)得看著它在學(xué)很有感覺(jué)結(jié)果一個(gè)步驟從毫秒級(jí)拖到幾百毫秒訓(xùn)練速度掉了一個(gè)數(shù)量級(jí)。正確做法是訓(xùn)練時(shí)完全關(guān)閉渲染實(shí)在想看就把模式調(diào)成rgb_array隔一段時(shí)間手動(dòng)采樣一幀存下來(lái)觀察。7.3 陌生環(huán)境先跑隨機(jī)策略這一步我已強(qiáng)調(diào)過(guò)但值得再放一遍任何新環(huán)境先跑 10-20 回合隨機(jī)策略記錄獎(jiǎng)勵(lì)均值和回合長(zhǎng)度。這不是浪費(fèi)時(shí)間而是在給算法設(shè)定一個(gè)下限參照。如果隨機(jī)策略的平均回報(bào)是負(fù)分而你的算法跑了一百回合還在負(fù)分附近說(shuō)明訓(xùn)練可能沒(méi)生效如果隨機(jī)策略就能拿到正分說(shuō)明任務(wù)太簡(jiǎn)單可能檢驗(yàn)不出算法的提升。這個(gè)參照幾乎能幫你在所有環(huán)境上快速判斷訓(xùn)練是否進(jìn)入正軌。7.4 獎(jiǎng)勵(lì)尺度會(huì)直接影響超參不同環(huán)境的獎(jiǎng)勵(lì)量級(jí)差得很遠(yuǎn)CartPole 是每步 1Pendulum 是每步負(fù)的小數(shù)某些環(huán)境一回合能拿上百分。同一個(gè)學(xué)習(xí)率在 CartPole 上可能沒(méi)問(wèn)題換到 LunarLander 就震蕩到飛起。盡可能先把獎(jiǎng)勵(lì)歸一化或者在算法層面對(duì) reward 做標(biāo)準(zhǔn)化。自定義環(huán)境時(shí)盡量把獎(jiǎng)勵(lì)控制在容易比較的量級(jí)能少很多調(diào)參的苦。7.5 空間類型別想當(dāng)然很多人拿到環(huán)境后不打印observation_space直接按自己的想象給神經(jīng)網(wǎng)絡(luò)輸入。比如把Box(4,)當(dāng)成(4,1)輸入或者把Discrete(4)的動(dòng)作空間當(dāng)成連續(xù)值回歸。我的習(xí)慣是先打印空間的 shape、low、high再寫(xiě)網(wǎng)絡(luò)結(jié)構(gòu)。動(dòng)作層尤其要留意離散動(dòng)作用分類頭連續(xù)動(dòng)作用帶 tanh 或 scale 的輸出層一旦弄混算法怎么訓(xùn)都不收斂。7.6 自定義環(huán)境要刻意制造隨機(jī)性一個(gè)完全確定性的自定義環(huán)境訓(xùn)練出來(lái)是沒(méi)法泛化的。比如前面的網(wǎng)格尋寶如果起點(diǎn)固定、終點(diǎn)固定、地圖固定算法可能學(xué)會(huì)的只是一條記憶路徑換個(gè)地圖立刻失效。合理的做法是把起點(diǎn)和終點(diǎn)在每次reset時(shí)隨機(jī)擺放但記得用self.np_random生成隨機(jī)數(shù)保證 seed 可控。7.7 先做環(huán)境測(cè)試再寫(xiě)完整算法最后一個(gè)經(jīng)驗(yàn)來(lái)自一次慘痛教訓(xùn)。我花了很長(zhǎng)時(shí)間寫(xiě)了一個(gè)定制環(huán)境直接上手訓(xùn)練完整算法結(jié)果怎么調(diào)都不收斂最后發(fā)現(xiàn)自己寫(xiě)的終止條件有 bug某些狀態(tài)下reward沒(méi)給對(duì)導(dǎo)致智能體學(xué)到的是原地不動(dòng)。從那以后我每次寫(xiě)完環(huán)境都會(huì)先拿隨機(jī)策略反復(fù)跑幾十回合逐字段打印觀測(cè)、獎(jiǎng)勵(lì)、結(jié)束標(biāo)志確認(rèn)環(huán)境行為符合預(yù)期才敢把 agent 接上去。這個(gè)習(xí)慣給我省下的時(shí)間遠(yuǎn)超寫(xiě)測(cè)試本身花掉的時(shí)間。說(shuō)到底gym 環(huán)境庫(kù)的價(jià)值不只是提供一堆現(xiàn)成游戲它真正教會(huì)我的是把任務(wù)和算法分層思考的能力。無(wú)論你以后是繼續(xù)研究新算法還是把強(qiáng)化學(xué)習(xí)落地到具體業(yè)務(wù)這套先理解接口、再做環(huán)境體檢、最后動(dòng)手訓(xùn)練的流程都通用。希望這篇拆解能讓你下次看到gym.make時(shí)少一點(diǎn)迷茫多一點(diǎn)底氣。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
91老司机精品| 国产激情综合| 九久久精品| 啊啊啊操一区| 亚洲国男人的天堂| 无码78| 日韩人妻制服丝袜av| 亚洲欧美日韩电影网站一区 | 麻豆一区二区三区在线看| 五月天激情综合网| 岛国黄色短视频| 免费试看60秒| 伊色久人大在线| 久久精品夜色国产亚洲AV| 99激情视频| 91午夜无码| 欧美熟妇精品黑人巨大91| 国产性刺激| 国产精品交换一区二区| 日本www操操操| 久久久久国产精品久久久| 精品美女久久一二三| 五月丁香婷婷综合| 性做久久久久久免费观看软件| 国产熟女精品一区二区| 午夜精品久久久久久久久久久久久| 蜜臀人妻少妇久久在线观看| 大稥蕉免费视频这里只有精品| 美女操逼福利视频| 九九干| gogogo免费高清看中国国语| 亚洲丝袜诱惑| 4虎在线观看| 9美女超碰在线免费观看| 91色黑人少妇| 日本裸体久久色噜噜| 久久欧美按摩999| 99综合| 中国探花熟女| 午夜精品99久久久久传媒| 久久婷婷五月天| 激情色播| 亚洲 欧美 中文 日韩超碰 | 欧美亚洲天天| 色与欲影视天天看综合网| 91超碰碰在线| 久久久精品网站| 易易A毛视频| 青青久日| 日韩啪啪视频| 人人操人人操人人操人人操人人操人人人11.CM| 2023天天操夜夜操| 黄人人操人人操| 日韩极品无码B| 国产精品爆乳懂色蜜乳| 最新亚洲黄色免费电影| 久久久精品无码亚免费| 五月天啪啪| 97久久精品亚洲| 国产欧美美女免费观看视频| 97一区二区三区视频| 日本熟妇自慰性高潮一区二区三区| 欧美亚洲AN| 黑人与人妻| 熟女久久| 亚洲中文字幕熟女| 天天干人人干天天日97| 色吧五月| 九九热视频这里只有精品| 国产精品久久久久绯色| 久久亚州大香蕉| 国产成人精品网站| 无码精品久久| 激情综合久久| 都市激情人妻一区二区青青操视频 | A片三级无码| 久久草大香蕉| 国产亚洲日本| 午夜男女爽爽爽影院视频| 福利在线观看一区二区| 91亚·色| 丝袜高跟澳门91视频| 97精品视频| 日本性爱欧美性爱| 婷婷久久久| 伊人991| 美女好片色日本| 91欧洲国产成人久久精品网站| 国模无码人体一区二区三| 日va操| 少妇二级| 91高清日| 国产精品久久久久久片| 成人熟女视频一区二区三区| 美女久久久久久久久久久| 99老司机精品视频在线观看| 蜜臀AV成人精品蜜臀AV久久| 日韩精品一区二区人人人| 变态乱伦伪娘灌肠一区二区| 97干天天| 久久91| 免费黄色A片| 99在线视频播放| 高清孕妇孕交 交| 中文精品一区二去| 日韩15p| 国产性久久久| 亚洲色丰满少妇高潮| 久久专区| 天美一二三在线观看Av| 性爱综合一区二区| 亚洲一区二区三区久久 亚洲一区二区| 啊啊啊在线观看免费视频| 成人九九| 欧美黄色片AAAAA| 91 丝袜在线观看| 无码 黑人一区二区三区| 国产欧美伊人| 久久久久久97| 99热97| 人人操人人肉久久精品| 亚州色交| 久久69| 3571色综合一区二区二区| 综合亚州欧美| 成人片在线播放| 色色青青久久| 三级片网站在线播放| 久久久久久久综合,国产| 艹精品| 97频视在线| 欧美αv.com| 久久精品国产久精国产| 亚洲天堂99| 久久久精品网| 亚洲综合影片| 大香网伊人久久综合| 亚洲丨在线| 久久人人看| 亚洲资源站| 色哟哟-国产专区| 四虎国产精品永久在线囯在线| 九九热免费国产视频婷婷伊人五月 | 亚洲一卡二卡在线免费| 亚洲高清91| 看看小穴| 隔壁邻居波多野结衣中文字幕| 极品少妇99| 欧美日韩一区二区三区四区蜜桃| 97国产中文| 九九热免费国产视频婷婷伊人五月 | 天天日少妇逼AV| 亚洲一二三四区| 欧洲Au麻豆| 另类TS人妖一区二区三区| 97欧美色资源| 国产农村一一级特黄毛片| 蜜臀久久99精品久久久久久酒店 | 3p国产色噜噜一区| 精品97久久| 精品一区96| 91香蕉视频在线观看免费| 国产女人9999| 国产人妻精品久久久一区二区三区| 2017天天拍大香蕉| 久久久九精品| 欧美另类色| 少妇3P性爱自拍| 综合色91| 国产和美国毛片| 天天爽天天| 国产av激情无码久久天堂| 碰超人人在线一区二区三区| 亚洲国产欧美日韩人妻日中文| 大香蕉视频一二三区| 亚洲少妇自拍中文字幕懂色| 嗯嗯,好大,好爽,好骚| 亚洲操人| av在线不卡一区二区三区| 精品1区2区3区| 日本最新免费韩国1区2区视频播放| 屁屁影院一区二区三区国产| 一本色道无码DVD中文字幕| 熟妇无码视频三区| 欧美成人一区二区| 熟女色图在线| 久久欧美1卡2卡3| 天天躁日日躁AAAXX| 一区二区免费电影久久| 免费视频一二三区| 欧美天天影院| 97超色| 国产60区。| 9九九九九视频在线观看| 国产欧美精选激情视频| 91免费看一区二区三区| 超碰人妻久久| 亚洲无码日韩电影| 熟妇色99| 天天日夜干| 青青草一本道福利视频| av久日| 青青国产在线拍揄自揄拍| 东京热激情视频一二三区| 性爱乱伦网址| 天天草天天干天天日| 亚洲一区二区三区中文字幕| 欧美国产精品| 日韩精品一区二区日韩| 国产精品在线网站| 午夜久久一区二区无码中出| 色哟哟-国产专区| 国内精品不卡无毒99999| 丁香五月天啪啪| 大香蕉婷婷| 超碰av在线| 色色无码| 97视频在线免费看| 最新9久久久9免费视频| 丰满熟妇大乳做爰| 久草这里只有精品 | 国产不良强奸视频免费看| 国产又黄又爽| 午夜亚洲WWW湿好大| 精品国产91av一区二区三区 | 超碰碰碰碰| www.av在线观看| 婬女免费一二三区A片| 久久精品国产亚洲AV片多多| 亚洲精品精品一区二区| 国产人妻精品久久久一区二区三区 | 国产又色又粗又黄又爽| 天天色,天天干,天天干| 婷婷亚洲综合| 中文乱码99| 欧洲精品网| 果冻传媒A片一二三区| 日韩本不卡视频在线观看 | 欧美黄色片在线播放| 亚洲av综合色| 男人兔费天堂| 亚洲黄色网址| 97美日韩视频| 中文字幕美女91| 在线无码网站| 大香蕉丝袜一级片| 99青草| 精品人妻一区春色| 国产精品自拍视频 | 超碰综合色| 亚洲综合校园春色| 97超碰欧美中文字幕| 久久永久无码人妻视频| www.色婷婷色综合| 亚洲天堂另类小说男人| 性感美女啊啊啊在线| 特色a在线上| 国精精品无码一二三区水多多| 99久久网站| surenchaopeng| 大香蕉人妻久久| 在线色导航| 欧美黑人猛交春色影视大全| 精品无av| 思思热免费在线视频| 亚洲激情网一二三四区| 亚洲欧美日韩电影网站一区 | 色欲天天综合久久久无码网中文| 国产高清无码一区三区二区| 91蜜臀熟女| 成人天天爽| 超碰在线一区| 亚洲日本韩国在线| 天天操天天看| 超清福利精品视频在线| 97舔舔| 91熟女少妇| 九九精品99| 懂色综合久久久| 男人天堂无码| 在线国产一区二区av| 亚洲永久永久永久永久一级一级一级精品 | 激情一区二区三区在线观看| 精品夜夜澡人妻无码AV| 亚洲综合一区二区| 欧美日韩亚洲国产中文永久天天看| WWW.操逼.COM| 亚洲情色五月天| 酒色综合网| 天天干,夜夜爽| 997色在线| 中国一区二区亚洲人妻| 久久精品国产精品| 精品国产人成在线| 天美一区在线| 日本熟女中文| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 在线播放成人网站| 日1区2区3区2020| 国产强奸超碰AV| 国产精品不卡一区二区三区| 一区二区影院| 久欲AV| 欧美日韩香蕉| 蜜臀在线网站| 人妻少妇久久久| 九九热精品| 亚洲少妇喷视频看| 久久精品国产AV一区二区三区| 欧美爆操91| 色色网91| 日韩av情韩国爱禁区av一区二区| 人妻少妇av在线观看| 麻豆一区二区三区在线看 | 天天澡天天爽日日av| 日本丝袜人妻内射| 中文字幕精品三级久久久| 欧美疯狂做爰xxxx| 超碰色图| 九九玖玖精品| 国产三级多多影院2022国产AA一级毛片无码 | 日本国产欧美高清在线| 清纯唯美亚洲另类| 久久综合18p| 色哟哟AⅤ| 91丝袜激情在线| 日韩不卡毛片Av免费高清| 久久久久久久久久久精| 五月天婷婷基地| 激情小说日韩无码| 亚洲人精品久久久| 欧美日韩222| 国产区91柔拿会所技师| 日韩超碰97| 18岁禁 茉莉成人久久| 熟女精品va中文字幕| 麻豆天天躁天天揉揉AV| 制服中出中文人人精品| AV天天在线观看| 蜜乳Av成人片网站| 麻豆天美91| 日本免费一区二区不卡| 国产白嫩精品久久| 亚洲激情网一二三四区| 亚洲一级特黄大片在线播放91| 精品一区二区三区18| 成人色女网| 日韩黄色成人性爱| 大香蕉免费乱伦视频| 欧洲乱码一区二区| 欧美精品另类人妖xxxx| 六六久久日韩不卡| 日韩丰满熟妇| 欧美色图20p| 欧美区亚洲区偷拍区| 1000午夜黄色| 欧美性区| 中文字幕加勒比海高清无码免费视频| 1024日韩| 91三级理论片播放器| 97欧美视频| 爱丝福利| 欧美肥臀在线| 国产自产22区| 国产精品高朝久久久久久久| 99青青草国产视频| 欧美美女啪啪视频| 2020视频1区2区3区| 嫖老熟女A片一二三区| 一区操逼| 秋霞一级鲁丝片A片| 黄色工厂这里只有精品| 成年人免费观看网站| 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 操淫穴亚洲五月丁香 | 亚洲各类熟们中文字幕| 久久久夜夜嗨免费视频| 日韩一级免费性爱| 天堂8在线新版官网| 一本一道波多野毛片中文在线| 麻豆久久精品亚洲精品88| 精品无码少妇| 亚洲Av诱惑| 四虎AV在线播放| 欧美午夜熟妇黑人精品91| 久久熟女久| 成人片视频| 成人黄页| 欧美熟妇色| 欧美日韩狠狠爱| 丝袜加勒比| 97se亚洲| 女人久久久| 啊啊啊啊好爽好舒服一区二区易域| 超碰吊日色| 国产精品另类| 久久六六| 亚洲h片在线免费观看| 草草影院最新网址| 91精品国产高清久久久久久,亚洲成人| 温婉少妇玩3p| 婷婷啪啪| 91 丝袜在线| #NAME?| 久久精品99| 天天日天天干天天摸天天操| 亚洲高清综合网| 日日夜夜精品视频| www.伪伪| 99色热| 国产专区路线| 久久精品日韩专区免费观看| 中文字幕激情小说| 日本东京热久久久电影| 久草免费在线一区二区| 青青草吊丝| 久久久久久久久久精| 蜜汁欧美| 1级午夜影院费免区| 免費黃色視頻觀看一| 麻豆视频test| 青青草女人天天干| 国模无码人体一区二区三| a v网站在线播放| 午夜精品久久久久久久男人的天堂 | 国产高清视频无码在线| 欧日a| 免费看污网站| 欧美丝袜亚洲| 岛国片在线播放| 亚洲色啪| 无毛精品| 日韩免费看在线黄色片| 色色热| 制服中出中文人人精品| 97视频在线播放| 亚洲一级特黄大片在线播放91| 人妻啊啊人妻啊| 成人天天爽| 国产又黄又爽| 色性综合| 岛国天天午夜影院传媒网| 极品欧美一区二区三区| 天天插天天插| 蜜臀va69| av无码av无码专区| 99热在线不卡| 风月影院十八禁| 午夜欧美女人操逼| www.男人天堂| 国产亚洲精品美女久久久| 综合五月天| 中文字幕精品专区搜索结果91| 亚洲中文字幕精品一区| 另类视频在线| 亚洲色欧| www.超碰在线| 国产一区二区在线看| 国产91啪| 伦理弟一页| 成人免费毛片| 亚洲少妇诱惑| 狠狠操使劲操| 99超碰色| 91欧美亚洲| 亚洲AV成人在线| 十八禁电影伊人网| 天堂8在线新版官网| 麻豆传媒一区二区在线观看| 黄片aaaaa一区| av麻豆啪啪| 亚洲码在线中文在线观看| www老逼91| 麻豆成人影音在线| 91视频观看网站| 欧美国产精品久久九九| 国产精品久久9| 视频国产欧美在线播放| 免费看污网站| 99久久久无码精品国产人| 色九九九综合| 亚洲中文字母在线播放| 素人伊尹大香蕉免费下载视频| 大地资源在线观看中文第二页| 欧美激情久久久久| 99热这里只有精品地址| 欧色网址| 刺激性视频黄页| 波多野42部激情无码喷潮| 99国产精品久久久久久久成人热| 欧美一级A片不卡视频。| 日本熟妇精品九九| 五月丁香婷婷综合网| 日本熟妇人妻一区二区三区| 99国内精品| av爱爱爱| 丰满熟妇大乳做爰| 99re6久热只有精品6在线直播 | 中字乱伦AV| 97国产超碰| 黄总AV色图| 天天视频综合在线观看视频| 91欧美www| 大香蕉综合| 欧美丝袜制服久久| 好属操| 欧美国产有色电影| 精品色色| av强奸乱轮| 97久久久久| 日韩99神马视频片| 久色网| 人人玩人人添人人澡免费| 精品二区三四区五电影 | 欧美97视频| 婷婷丁香久久| 懂色av色欲av蜜臀av| 国产免费小视频| 日韩午夜国产| 欧美一区91大爱| 综合免费无码中文| 人人妻人人爱人人玩| 亚洲性少妇| 9九九九九视频在线观看| 无码人妻精品一区二区中文| 日韩有码专区| 997色在线| 欧美操逼视频二区| 久久久久成人蜜桃精品| 欧美系列在线一区二区| 一级性爱视频免费在线| 深喉吞精| 丰满熟妇大乳做爰| 鸥美极品| 大香蕉综合久久| 67914亚洲精品| 日日碰狠狠添天天爽超| 亚洲va有码在线天堂| 97精品久久| 久久久啊啊啊| 欧美色爱综合| 99热欧美| 女人18精品一区二区三区| 五月开心久久AV官网| 中文字幕一区二区三区蜜臀| 97天天摸天天碰| 五月丁香啪啪网| 亚洲综合精品国产一区| 搡老女人老妇女AAA一VU麻豆 | 午夜精品久久久99| 另类亚洲图色| 欧美最婬乱婬爆婬性视频 | 国产传媒操逼视频| 99老司机精品视频在线观看| 看免费的黄片| 日韩人妻一区二区| 天天日天天操天天射河南省| 久久97超碰| 欧美激情专区| 亚洲熟女综合网| 无人区高清电影免费观看一区二区三 www.qmcai2.com | 久久亚州精品成人Av无| 强奸乱伦AV一天堂网| 香蕉欧美| 高清无码久操视频| 欧洲亚洲国产综合在线| 人人贴人人摸| 太久视频| 国模精品娜娜一二三区| 婷婷九月色| 五月婷婷五月天| 91精品综合久久久久久五月丁香| 婷婷五月花| 爱爱60秒免费视频| 色婷婷综合久久久久中文一区二区| julia在线观看久久| 91欧美偷拍| 国产精品视频| 91天天爽| 欲香欲色| 99re国产精品视频| **一级毛片国产| 日韩AV电影网站| 宗合情欲网| 久久久免费懂色| 男人的天堂久久| 国产精品人妻无码久久久互動交流| 国产福利电影| 熟女六十路| 小草精彩毛片| 射丝袜大香蕉| 欧综合网| 园内精品自拍视频在线播放| 天天色播| 欧美色图成人网一区二区| 色97综合中文字幕| 91色拍| 国产精品麻豆视频网站| 这里有精品| 激情终合网| 亚洲清纯综合| 中文字幕美女91| 日本午夜久久电影| 精产国品一区二三产品| 四虎影视国产精品| AV乱伦专区| 丁香啪啪| 97丝袜亚洲在线播放| 亚洲美女精品九九视频| 国产日产精品久久快鸭的功能介绍| 国产女生在线| 97露脸精品丝袜| 国产一区在线看| 日韩性爱毛片操骚逼| 久久免费精彩视频| 国产中文日韩欧美一区二区三区人妻丝袜美腿 | 伊人热综合| 人人色人人操在线| 日本人妻天堂网站在线播放| 深夜视频| 中文字幕日本久久| 999九九精品| 白丝被操91| 又黄又爽在线观看视频| 精品高清牛人盗摄一区二区三区中文字幕A片免费在线观看 | 色噜噜国产在线| 阿姨一区二区免费视频-高清正片西瓜视频下载app-T450AV | 大香网站| 久干网| 亚洲无码成人精品| 超碰国产情侣自拍网| 国产sv美女内射| 国产色呦呦| 97se综合| 欧美天天干| 伊人久久大香蕉线AV五月天| 欧美成人一级麻豆| 91久久国产综合久久| 亚洲精品电影| 国产67194| 精品少妇一区二区| 六月婷婷色综合| 久久9免费视频| 亚洲天堂7777| 色香综合天天影视综合| 一级啊性爱在线视频| av久日| 色综合av男人天堂| 九九九九九九九| 亚洲国产一级精品毛一级精品看免费视频 | 成人欧美日超碰| 国产福利在线视频网站| 人妻熟妇久草在线| 色爱三区| 国产精品久久久亚洲第一牛牛_在线观看| 黄片免费看黄片免费看| 中文字幕无码不卡啪啪| 妺妺跟我一起洗澡没忍住| 婷婷探花久久精品一区| 91久久久久久久久18| 亚州欧美在线| 天天摸天天插天天日| 天天看天天日天天操| 欧美日韩免费专区在线| 8x福利精品第一福利视频导航| 精品久久久久久久久久久久| 亚洲 欧美 偷拍 唯美| 性欧美精| 色五月首页| 97超碰超碰| 操操操操网黑人| 很黄很色的视频在线观看| 超碰碰小说97| 精品视频久久久久九九九九9999| 蜜臀一区二区三区在线| 热久日综合| 国产成人无码高清| 国产精品操| 中文字幕人妻色偷偷久久皮 | 亚洲天堂无码| 亚洲精品99999| 婷婷色网| 综合色99| 天天视频网站黄| 久久久国产护士丝袜美腿一| 吻戏激情性巴克| 成人小说视频在线精品欧美| 国产夫妻性生活视频| 色综合美国| 国产精品呦一区二区三区| 超碰97极品9| 麻豆国产av网| 日本在线视频导航| 亚洲日韩av专区无码| 99热日| 久草视频制服诱惑| 九九性爱网| 欧美中文字幕日韩在线| 婷婷精品久久av影视| 日韩伦理久 久久 清纯| 欧美成人性爱视频大全| 日韩欧美午夜一区二区| 人妻丝袜日本| 少好三P| 国产极品久久久| 大香蕉宗合网在线| 成人福利视频网| 久久久久久久免费A片国产成a人亚洲精∨品无码 | 欧美在线色| 热久久91婷婷| 丁香九月激情| 操逼操逼逼操操逼91 | 免费亚洲黄色视频在线观看 | 麻豆AV96熟妇人妻| 色性综合| 中日高清无码操逼视频| 欧美精品99久久久**| 97超碰欧美| a啊啊啊啊啊啊啊啊一区二区| 无码视频一区二区| 精品网站9999| 欧美日韩超碰在线| 另类在线| 人妻熟女av国产网站| 国产精品呦一区二区三区| 久久久久久网址| 熟妇熟女一区二区三区| 97se亚洲| 亚洲色图片区| 蜜桃香蕉久草精品在线| 国产精品久久久久久9999| 啊啊啊在线观看免费视频| 欧美制服另类丝袜| 大香蕉伊人色偷偷在线| 色综合色综合网| 综合欧美日本三级| 日韩AV熟女乱伦| 福利在线观看一区二区| 久久久久久久国产视频| 欧美日韩操逼动图| 嗯啊抽插大香蕉网页| 伊人久久综合精品欧美| 一区二区三区视频国产免费| 91精品久久久| 国产操操日韩三级黄| 九月丁香婷婷色| 无码精品久久久天天影视| 精品九九国产无码| 2019天天干天天操| 亚洲国产成人精品无码专区| 国产黄色av大片网站| 欧美啪啪女女| 依人大香蕉| 日韩亚洲美州欧洲综三区一品在线| 夜色五月天| 欧美熟妇视频| 91视频成人福利网站在线一区 | 亚洲成人精品在线一区| 亚洲国产欧美另类自拍| 国产高清成人mv在线观看| 亚洲中文日韩精品| 色五月婷婷在线| 久久99国产综合精品女同| 人人爽夜夜操| 国产99999久久精品| 日日骚av| 啊啊啊想要| 免费观看性欧美一级| 夜夜天天噜狠狠爱2021| 精品超碰国产| 青青青操| 久湿久久| 久久久性爱| 欧美性爱18观看| 蜜乳AV网址| 淮穴色AV| 夜草欧美| 91bbbbbb| 人人玩人人添人人澡免费| 1024人妻熟女一区二区三区| 丰满人妻-区二区三区免费| 日日橹狠狠爱欧美超碰| 中文字幕熟女人妻丝袜丝| 久久精品国产亚洲AV先锋| 国产中文大片资源中文字幕| 综合色久| 免费看污网址| 天天网综合| 八人操人人摸人人看| 久久黄黄| 日本熟妇自慰性高潮一区二区三区| 国产精品自拍视频| 日人妻视频91| 亚洲综合网图| 超碰吊日色| 精品九九国产无码| 麻豆2区1区天美| 青青草国产一区二区三区| 久久精品一区二区三区四区五区| 夜夜天天噜狠狠爱2021| ′ !γ}丶。。久久精品欧美一区二区三区 | 精品在线78| 日韩无码三级影院| 青草青青久久久久久国产| 精彩久久中文| 国产精品人人爽人人做可爱福利| 色色热| 欧美爱国产综合、| 天天草夜夜草高潮片| 午夜男人天堂| 78m啪啪啪| 久久亚洲精品成人av| 黄色十八禁网站| 97色97干| 色色99| 国内外激情在线| 91快色色色色色| 久久綜合很很很| 国产亚洲99久久精品熟| 久久久98网站免费视频| av橘色网站| 网页导航五月天免费一二三区| 亚洲色图加勒比| 天天澡天天爽日日AV| 99视频自拍| 综合亚洲网| 国产精品熟女乱伦| 超碰天天去日穴| 日韩欧美国产高清视频| 久久久免费懂色| 色官网色综合| 日本九九久久99| 欧美 日韩 亚洲 春色| 亚洲综合888| 国产色产精品在线观看| 97视频网站在线观看| 国产99热| 99超碰色| 人人操人人插 - 百度 - 百度| 日韩乱码Av| 欧美狠狠| 久艹伊人精品综合在线| 国产亚洲福利第一页丝袜| 久艹伊人精品综合在线| 久久久国产av美女私房| 四虎884a| 国产男人又猛又粗又爽| 天美传媒精品一区二区三区| 日韩激情啪啪| 成人青青草原伊人| 久久五月份| 久久在线观看免费视频| 中文字幕88av在线| 上海一级黄片| 亚洲不卡一| 五月激情在线| 日韩成人性日韩成人性爱视频在线免费观看 | 九月色婷婷| 91狠狠综| 欧美少妇性乱| 日本理论在线| 久久久久久久性爱| 爱欲AV| 在线观看岛国有码| 超碰人人干天天射| 中文字幕91综合| 操逼视频免费日韩无码| 国产精品色| 亚洲成人贴图| 9 7超碰在线免费观看| 性色生活片久久毛片婬片免费放女人一级毛片 | 日本操嫩b网| 青青草综合在线| 精品91摸| 国产中文精品一区二区在线观看| 99999亚洲另类| 97超碰色五月| 99热99在线播放激情| 色九九久九九| 青青草视频在线观看一区二区| 亚洲成人日韩小说| 人妻丝袜一区二区三区在线| 看黑丝美女操逼青青网站| 亚洲 国产 精品一区| 精品无吗m| 韩国国产欧美情侣视频在线| 91在线视频免费中出| 午夜偷拍久久熟女| 在线97视频| 锕锕好爽 死我在线观看| 国产一区96在线| 久久夜黄色无码A级大片| 91丝袜| 久久久成人精品| 97精品国产97久久久久久户外免费| 99久久婷婷丁香| 超碰色综合| 国产三级中文字幕粉嫩| 天堂精品小草| 亚洲少妇色| 亚洲精品一区二区三区在线播放| 亚洲国产成人综合碰碰三级经典| 久久噜| 久草婷婷| 91女网站| 天天干天天干天天干| 日韩人妻中文视频| 操操逼视频| 欧美色亚洲| 亚州欧美另类| 色香综合天天影视综合| 久久久久ab| 很黄很污的免费网站| 婷婷激情四射| 一个人免费HD91视频| 日日插夜夜| 婷婷色色五月天福利| 日本在线伊人啪啪| 97在线播放 | 人人色人人操在线| 日人妻视频91| 国产亚洲日韩在线三区黑人| 欧美成熟性爱精品| 国产美女高潮| 蜜桃久久一区二区| 日韩一级二级三级| 一二三四区电影| 我想要啊 啊 啊| 亚洲啪啪啪啪视香蕉| 99黄页网站| 亚洲人妖网| 亚洲人91| 98超碰日本| 色在线69堂| 欧美天天在线| 好爽要喷了| 久艹视频在线| 青青操日韩| 97鸡把在线视频| 噜噜噜噜久久久精品免费| 大香蕉一人| 99re6在线视频播放免费精品| 人妻人久久精品中文字幕| 精品中文一区二区| 无码九九| 欧洲一区二区| 婷婷午夜清品久久久久久久性色视频观| 97射欧美| 久久综合97| 亚洲色婷婷久久久综合日本| 日韩性爱长视频免费| 不卡av免费在线网址| 色综合国产在线观看| 成年人黄色视频免费| 色色色日本| 黑人狂躁日本妞一区二区三区| AV网站高清无码在线观看| 偷拍自拍在线视频观看| 久久久久久AⅤ无码免费肉站| 亚洲精品无码少妇久久| www.夜夜| 熟啊v色欧美热| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 中国少妇啪啪视频| 欧美97| 欧美亚洲一级在线观看| 粉嫩绯色AV一区二区在线| 色99色| 91麻豆天美国产| 亚洲诱惑天堂 | 天天爽人人综合免费7799| 91一区二区| 久久婷婷在线观看视频| 大香蕉92| 九九九免费视频| www.av在线视频| 色五月网址| 欧美少妇内射| 清纯唯美综合亚洲| 97亚洲综合| 三级网色| 综合色图亚洲欧美| 91爱做| 欧美色性情| 久久久久免费看少妇A片特黄| 青草av在线| 欧美香蕉视xxx| 性欧美| 国产又黄又爽又刺激久久久久久| 国产在线视视频有精品| 超碰国产情侣自拍网| 中文字幕精品专区搜索结果91| 9118禁| 九月丁香综合网| 九九九九88| 国产日韩美女小穴视频网站不卡| 精品蜜乳AV免费观看| 乱伦熟女区| 97 视频在线| 久久超碰97| 久久这里只精品99re66图| 91天美传媒精品| 欧美资源| 91一起操| 999熟女精品| 国产不良强奸视频免费看| 天天干,天天日| 欧美骚少妇| 午夜激情成人在线观看| 情侣开房子拍 日韩无码 女的很漂亮| 囯产精品强| 色欲三区| 人人操天天爽| 婷婷爽人人婷婷爽视频| 激情久久av一区av二区av| 歐美性天天| 干我久操| 日韩美女久久一区二区三区| 伊人97| 中文字幕jul-617人妻熟女| 超碰在线97国产| 无码久久国产| 日本三级韩三级99久久| 欧美一区二区| 717影院理论午夜伦八戒| 大屁股国产在线视频| 国产乱色国产精品免费视| 免費人妻夜夜爽天天爽爽一区| 欧美天天综合网| 亚洲天堂,男人| 天天天干977| 超碰在线成人| 精品少妇一区二区| 综合久| 欧美精品系列| 色婷婷av在线观看| 91女色| 在线观看一卡二卡| 亚洲国产熟妇综合色专区| 久久久爆乳翘臀一线天伦理视频| 夜夜嗨一区| 91狠狠综合久久| 婷婷久久久精品| 激情婷婷| 啊啊嗯嗯好爽| 人妻精品综合中文字幕在线 | 中文字幕视频2区| 精品日韩人妻视频| 欧美激情超碰777| 強姦亂倫a| 97超碰免费人人性爱| 欧美激情另类一区二区| av线电影| 久久久久国产一区二| 日1区2区3区2020| 日韩三级一区| 日本在线观看网址| 屌妞视频久久久久久久久久久久| 影音先锋日本一区二区| 97精品视频网站| 国产成人www免费人成看片| 亚洲欧美激情小说| 日韩精品99999| 亚欧免费观看视频| 国精综合一二三区影视| 午夜无码精品免费看性色| 久久99干一本高清| 青青草九九九九九| 欧美伊人久久综合网| 欧美最大综合网| 亚洲天堂,男人| 欧美不卡在线一区二区| 午夜精品久久999热蜜桃介男人用| 激情久久久| 国产后入| 青青草成人视频在线观看二区| 日亚韩精品视频二区三| 久久久久久九九九九九 | 亚洲 欧美 偷拍 唯美| 中文字幕日韩情色| 99热97| 午夜寂寞欧美| 久久久精品网站| 91影视亚洲| 亚洲有薄码区日本系列中文字幕| 国产美女口爆吞精视频| 中文字幕二区| 91人人爽人人爽| 操逼啊啊啊91| 欧美色图色综合| 97av,com| 国产精品经典一卡久久久| 91爆操视频| 日本一级特级毛片视频| 久久熟女久| 色呦呦、国产精品| 秋霞欧美性爰视频| 欧美精品久久久久久久丰满| 国产AV线| 熟妇一区二区三区| 操碰97| 啪一啪免费视频| yw尤物av无码点击进入麻豆| 玖玖大干人妻| 久久精品天美| 色婷婷丁香五月天| 约操熟妇| 另类图片欧美激情综合| 国语精品av| 91丝袜美腿片| 97干com| 国产亚洲在线| 国产一级作爱毛片| 操逼逼一区视频| 综合夜夜| 密臀在线视频| 941超碰| 成人五月天色网| 国产不卡片| 小少妇| 六月色色| 亚洲国产高清福利视频| 韩国一级婬片A片无码天美| 丁香五月电影| 黄片免费看的| 亚洲另类欧美精品| 亚洲性网| 一起草在线视频| 风韵犹存大大大大香蕉| 久久视频,这里只有精品| 麻豆天美制片厂网站视频| 亚洲欧美一区二区三区在钱蜜桃| 国产福利影视| 黄色一区二区秘书性感| 少妇一区二区三区精选| 综合影院永久入口国产| 91欧美亚洲| 91性片| 亚洲丝袜少妇在线| 久久欧美激情| 亚洲Av诱惑| 熟女熟妇一区二区三四区| www.久久超碰| 98超碰欧美| 91美女视频。| 日韩BBN| 超碰97伊人| 无码人妻一区二区三区四区老鸭窝| 国产天天噜一噜久久久| 色香综合天天影视综合| 久久久91福利姬| 久久久少妇诱惑精品视频| 日韩丨制服丨中文|在线| 精品欧美日韩在线观看| 亚洲影视第一页| 夜夜嗨一区二区三区三州加勒比 | 日本污ww视频网站| 色色婷婷丁香| 久久精品亚洲婷婷| 91国产大片|