精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

使用Actor-Critic的DDPG強化學習算法控制雙關節機械臂

人工智能
在本文中,我們將介紹在 Reacher 環境中訓練智能代理控制雙關節機械臂,這是一種使用 Unity ML-Agents 工具包開發的基于 Unity 的模擬程序。我們的目標是高精度的到達目標位置,所以這里我們可以使用專為連續狀態和動作空間設計的最先進的Deep Deterministic Policy Gradient (DDPG) 算法。

在本文中,我們將介紹在 Reacher 環境中訓練智能代理控制雙關節機械臂,這是一種使用 Unity ML-Agents 工具包開發的基于 Unity 的模擬程序。我們的目標是高精度的到達目標位置,所以這里我們可以使用專為連續狀態和動作空間設計的最先進的Deep Deterministic Policy Gradient  (DDPG) 算法。

現實世界的應用程序

機械臂在制造業、生產設施、空間探索和搜救行動中發揮著關鍵作用。控制機械臂的高精度和靈活性是非常重要的。通過采用強化學習技術,可以使這些機器人系統實時學習和調整其行為,從而提高性能和靈活性。強化學習的進步不僅有助于我們對人工智能的理解,而且有可能徹底改變行業并對社會產生有意義的影響。

而Reacher是一種機械臂模擬器,常用于控制算法的開發和測試。它提供了一個虛擬環境,模擬了機械臂的物理特性和運動規律,使得開發者可以在不需要實際硬件的情況下進行控制算法的研究和實驗。

Reacher的環境主要由以下幾個部分組成:

  1. 機械臂:Reacher模擬了一個雙關節機械臂,包括一個固定基座和兩個可動關節。開發者可以通過控制機械臂的兩個關節來改變機械臂的姿態和位置。
  2. 目標點:在機械臂的運動范圍內,Reacher提供了一個目標點,目標點的位置是隨機生成的。開發者的任務是控制機械臂,使得機械臂的末端能夠接觸到目標點。
  3. 物理引擎:Reacher使用物理引擎來模擬機械臂的物理特性和運動規律。開發者可以通過調整物理引擎的參數來模擬不同的物理環境。
  4. 視覺界面:Reacher提供了一個可視化的界面,可以顯示機械臂和目標點的位置,以及機械臂的姿態和運動軌跡。開發者可以通過視覺界面來調試和優化控制算法。

Reacher模擬器是一個非常實用的工具,可以幫助開發者在不需要實際硬件的情況下,快速測試和優化控制算法。

模擬環境

Reacher 使用 Unity ML-Agents 工具包構建,我們的代理可以控制雙關節機械臂。目標是引導手臂朝向目標位置并盡可能長時間地保持其在目標區域內的位置。該環境具有 20 個同步代理,每個代理獨立運行,這有助于在訓練期間有效地收集經驗。

圖片

狀態和動作空間

了解狀態和動作空間對于設計有效的強化學習算法至關重要。在 Reacher 環境中,狀態空間由 33 個連續變量組成,這些變量提供有關機械臂的信息,例如其位置、旋轉、速度和角速度。動作空間也是連續的,四個變量對應于施加在機械臂兩個關節上的扭矩。每個動作變量都是一個介于 -1 和 1 之間的實數。

任務類型和成功標準

Reacher 任務被認為是片段式的,每個片段都包含固定數量的時間步長。代理的目標是在這些步驟中最大化其總獎勵。手臂末端執行器保持在目標位置的每一步都會獲得 +0.1 的獎勵。當代理在連續 100 次操作中的平均得分達到 30 分或以上時,就認為成功。

了解了環境,下面我們將探討 DDPG 算法、它的實現,以及它如何有效地解決這種環境中的連續控制問題。

連續控制的算法選擇:DDPG

當涉及到像Reacher問題這樣的連續控制任務時,算法的選擇對于實現最佳性能至關重要。在這個項目中,我們選擇了DDPG算法,因為這是一種專門設計用于處理連續狀態和動作空間的actor-critic方法。

DDPG算法通過結合兩個神經網絡,結合了基于策略和基于值的方法的優勢:行動者網絡(Actor network)決定給定當前狀態下的最佳行為,批評家網絡(Critic network)估計狀態-行為值函數(Q-function)。這兩種網絡都有目標網絡,通過在更新過程中提供一個固定的目標來穩定學習過程。

通過使用Critic網絡估計q函數,使用Actor網絡確定最優行為,DDPG算法有效地融合了策略梯度方法和DQN的優點。這種混合方法允許代理在連續控制環境中有效地學習。

import random
 from collections import deque
 import torch
 import torch.nn as nn
 import numpy as np
 
 from actor_critic import Actor, Critic
 
 class ReplayBuffer:
     def __init__(self, buffer_size, batch_size):
         self.memory = deque(maxlen=buffer_size)
         self.batch_size = batch_size
 
     def add(self, state, action, reward, next_state, done):
         self.memory.append((state, action, reward, next_state, done))
 
     def sample(self):
         batch = random.sample(self.memory, self.batch_size)
         states, actions, rewards, next_states, dones = zip(*batch)
         return states, actions, rewards, next_states, dones
 
     def __len__(self):
         return len(self.memory)
 
 
 class DDPG:
     def __init__(self, state_dim, action_dim, hidden_dim, buffer_size, batch_size, actor_lr, critic_lr, tau, gamma):
         self.actor = Actor(state_dim, hidden_dim, action_dim, actor_lr)
         self.actor_target = Actor(state_dim, hidden_dim, action_dim, actor_lr)
         self.critic = Critic(state_dim, action_dim, hidden_dim, critic_lr)
         self.critic_target = Critic(state_dim, action_dim, hidden_dim, critic_lr)
 
         self.memory = ReplayBuffer(buffer_size, batch_size)
         self.batch_size = batch_size
         self.tau = tau
         self.gamma = gamma
 
         self._update_target_networks(tau=1)  # initialize target networks
 
     def act(self, state, noise=0.0):
         state = torch.tensor(state, dtype=torch.float32).unsqueeze(0)
         action = self.actor(state).detach().numpy()[0]
         return np.clip(action + noise, -1, 1)
 
     def store_transition(self, state, action, reward, next_state, done):
         self.memory.add(state, action, reward, next_state, done)
 
     def learn(self):
         if len(self.memory) < self.batch_size:
             return
 
         states, actions, rewards, next_states, dones = self.memory.sample()
 
         states = torch.tensor(states, dtype=torch.float32)
         actions = torch.tensor(actions, dtype=torch.float32)
         rewards = torch.tensor(rewards, dtype=torch.float32).unsqueeze(1)
         next_states = torch.tensor(next_states, dtype=torch.float32)
         dones = torch.tensor(dones, dtype=torch.float32).unsqueeze(1)
 
         # Update Critic
         self.critic.optimizer.zero_grad()
 
         with torch.no_grad():
             next_actions = self.actor_target(next_states)
             target_q_values = self.critic_target(next_states, next_actions)
             target_q_values = rewards + (1 - dones) * self.gamma * target_q_values
 
         current_q_values = self.critic(states, actions)
         critic_loss = nn.MSELoss()(current_q_values, target_q_values)
 
         critic_loss.backward()
         self.critic.optimizer.step()
 
         # Update Actor
         self.actor.optimizer.zero_grad()
 
         actor_loss = -self.critic(states, self.actor(states)).mean()
         actor_loss.backward()
         self.actor.optimizer.step()
 
         # Update target networks
         self._update_target_networks()
 
     def _update_target_networks(self, tau=None):
         if tau is None:
             tau = self.tau
 
         for target_param, param in zip(self.actor_target.parameters(), self.actor.parameters()):
             target_param.data.copy_(tau * param.data + (1 - tau) * target_param.data)
 
         for target_param, param in zip(self.critic_target.parameters(), self.critic.parameters()):
             target_param.data.copy_(tau * param.data + (1 - tau) * target_param.data)

上面的代碼還使用了Replay Buffer,這可以提高學習效率和穩定性。Replay Buffer本質上是一種存儲固定數量的過去經驗或過渡的內存數據結構,由狀態、動作、獎勵、下一狀態和完成信息組成。使用它的主要優點是使代理能夠打破連續經驗之間的相關性,從而減少有害的時間相關性的影響。

通過從緩沖區中抽取隨機的小批量經驗,代理可以從一組不同的轉換中學習,這有助于穩定和概括學習過程。Replay Buffer還可以讓代理多次重用過去的經驗,從而提高數據效率并促進從與環境的有限交互中更有效地學習。

DDPG算法是一個很好的選擇,因為它能夠有效地處理連續的動作空間,這是這個環境的一個關鍵方面。該算法的設計允許有效地利用多個代理收集的并行經驗,從而實現更快的學習和更好的收斂。就像上面介紹的Reacher 可以同時運行20個代理,所以我們可以使用這20個代理進行分享經驗,集體學習,提高學習速度。

完成了算法,下面我們將介紹、超參數選擇和訓練過程。

DDPG算法在Reacher 環境中工作

為了更好地理解算法在環境中的有效性,我們需要仔細研究學習過程中涉及的關鍵組件和步驟。

網絡架構

DDPG算法采用兩個神經網絡,Actor 和Critic。兩個網絡都包含兩個隱藏層,每個隱藏層包含400個節點。隱藏層使用ReLU (Rectified Linear Unit)激活函數,而Actor網絡的輸出層使用tanh激活函數產生范圍為-1到1的動作。Critic網絡的輸出層沒有激活函數,因為它直接估計q函數。

以下是網絡的代碼:

import numpy as np
 import torch
 import torch.nn as nn
 import torch.optim as optim
 
 class Actor(nn.Module):
     def __init__(self, input_dim, hidden_dim, output_dim, learning_rate=1e-4):
         super(Actor, self).__init__()
 
         self.fc1 = nn.Linear(input_dim, hidden_dim)
         self.fc2 = nn.Linear(hidden_dim, hidden_dim)
         self.fc3 = nn.Linear(hidden_dim, output_dim)
 
         self.tanh = nn.Tanh()
 
         self.optimizer = optim.Adam(self.parameters(), lr=learning_rate)
 
     def forward(self, state):
         x = torch.relu(self.fc1(state))
         x = torch.relu(self.fc2(x))
         x = self.tanh(self.fc3(x))
         return x
 
 class Critic(nn.Module):
     def __init__(self, state_dim, action_dim, hidden_dim, learning_rate=1e-4):
         super(Critic, self).__init__()
 
         self.fc1 = nn.Linear(state_dim, hidden_dim)
         self.fc2 = nn.Linear(hidden_dim + action_dim, hidden_dim)
         self.fc3 = nn.Linear(hidden_dim, 1)
 
         self.optimizer = optim.Adam(self.parameters(), lr=learning_rate)
 
     def forward(self, state, action):
         x = torch.relu(self.fc1(state))
         x = torch.relu(self.fc2(torch.cat([x, action], dim=1)))
         x = self.fc3(x)
         return x

超參數選擇

選擇的超參數對于高效學習至關重要。在這個項目中,我們的Replay Buffer大小為200,000,批大小為256。演員Actor的學習率為5e-4,Critic的學習率為1e-3,soft update參數(tau)為5e-3,gamma為0.995。最后還加入了動作噪聲,初始噪聲標度為0.5,噪聲衰減率為0.998。

訓練過程

訓練過程涉及兩個網絡之間的持續交互,并且20個平行代理共享相同的網絡,模型會從所有代理收集的經驗中集體學習。這種設置加快了學習過程,提高了效率。

from collections import deque
 import numpy as np
 import torch
 
 from ddpg import DDPG
 
 def train_ddpg(env, agent, episodes, max_steps, num_agents, noise_scale=0.1, noise_decay=0.99):
     scores_window = deque(maxlen=100)
     scores = []
 
     for episode in range(1, episodes + 1):
         env_info = env.reset(train_mode=True)[brain_name]
         states = env_info.vector_observations
         agent_scores = np.zeros(num_agents)
 
         for step in range(max_steps):
             actions = agent.act(states, noise_scale)
             env_info = env.step(actions)[brain_name]
             next_states = env_info.vector_observations
             rewards = env_info.rewards
             dones = env_info.local_done
 
             for i in range(num_agents):
                 agent.store_transition(states[i], actions[i], rewards[i], next_states[i], dones[i])
             agent.learn()
 
             states = next_states
             agent_scores += rewards
             noise_scale *= noise_decay
 
             if np.any(dones):
                 break
 
         avg_score = np.mean(agent_scores)
         scores_window.append(avg_score)
         scores.append(avg_score)
 
         if episode % 10 == 0:
             print(f"Episode: {episode}, Score: {avg_score:.2f}, Avg Score: {np.mean(scores_window):.2f}")
 
         # Saving trained Networks
         torch.save(agent.actor.state_dict(), "actor_final.pth")
         torch.save(agent.critic.state_dict(), "critic_final.pth")
 
     return scores
 
 if __name__ == "__main__":
     env = UnityEnvironment(file_name='Reacher_20.app')
     brain_name = env.brain_names[0]
     brain = env.brains[brain_name]
 
     state_dim = 33
     action_dim = brain.vector_action_space_size
 
     num_agents = 20
     
     # Hyperparameter suggestions
     hidden_dim = 400
     batch_size = 256
     actor_lr = 5e-4
     critic_lr = 1e-3
     tau = 5e-3
     gamma = 0.995
     noise_scale = 0.5
     noise_decay = 0.998
 
     agent = DDPG(state_dim, action_dim, hidden_dim=hidden_dim, buffer_size=200000, batch_size=batch_size,
                  actor_lr=actor_lr, critic_lr=critic_lr, tau=tau, gamma=gamma)
 
     episodes = 200
     max_steps = 1000
 
     scores = train_ddpg(env, agent, episodes, max_steps, num_agents, noise_scale=0.2, noise_decay=0.995)

訓練過程中的關鍵步驟如下所示:

初始化網絡:代理使用隨機權重初始化共享的 Actor 和 Critic 網絡及其各自的目標網絡。目標網絡在更新期間提供穩定的學習目標。

  • 與環境交互:每個代理使用共享的 Actor 網絡,通過根據其當前狀態選擇動作來與環境交互。為了鼓勵探索,在訓練的初始階段還將噪聲項添加到動作中。采取行動后,每個代理都會觀察由此產生的獎勵和下一個狀態。
  • 存儲經驗:每個代理將觀察到的經驗(狀態、動作、獎勵、next_state)存儲在共享重放緩沖區中。該緩沖區包含固定數量的近期經驗,這樣每個代理能夠從所有代理收集的各種轉換中學習。
  • 從經驗中學習:定期從共享重放緩沖區中抽取一批經驗。通過最小化預測 Q 值和目標 Q 值之間的均方誤差,使用采樣經驗來更新共享 Critic 網絡。
  • 更新 Actor 網絡:共享 Actor 網絡使用策略梯度進行更新,策略梯度是通過采用共享 Critic 網絡關于所選動作的輸出梯度來計算的。共享 Actor 網絡學習選擇最大化預期 Q 值的動作。
  • 更新目標網絡:共享的 Actor 和 Critic 目標網絡使用當前和目標網絡權重的混合進行軟更新。這確保了穩定的學習過程。

結果展示

我們的agent使用DDPG算法成功地學會了在Racher環境下控制雙關節機械臂。在整個訓練過程中,我們根據所有20個代理的平均得分來監控代理的表現。隨著智能體探索環境和收集經驗,其預測獎勵最大化最佳行為的能力顯著提高。

可以看到代理在任務中表現出了顯著的熟練程度,平均得分超過了解決環境所需的閾值(30+),雖然代理的表現在整個訓練過程中有所不同,但總體趨勢呈上升趨勢,表明學習過程是成功的。

下圖顯示了20個代理的平均得分:

圖片

可以看到我們實現的DDPG算法,有效地解決了Racher環境的問題。代理能夠調整自己的行為,并在任務中達到預期的性能。

下一步工作

本項目中的超參數是根據文獻和實證測試的建議組合選擇的。還可以通過系統超參數調優的進一步優化可能會帶來更好的性能。

多agent并行訓練:在這個項目中,我們使用20個agent同時收集經驗。使用更多代理對整個學習過程的影響可能會導致更快的收斂或提高性能。

批歸一化:為了進一步增強學習過程,在神經網絡架構中實現批歸一化是值得探索的。通過在訓練過程中對每一層的輸入特征進行歸一化,批歸一化可以幫助減少內部協變量移位,加速學習,并潛在地提高泛化。將批處理歸一化加入到Actor和Critic網絡可能會導致更穩定和有效的訓練,但是這個需要進一步測試。


責任編輯:華軒 來源: DeepHub IMBA
相關推薦

2023-03-23 16:30:53

PyTorchDDPG算法

2023-10-31 16:40:39

機器學習強化學習

2022-11-02 14:02:02

強化學習訓練

2023-06-25 11:30:47

可視化

2025-05-28 02:25:00

2024-10-12 17:14:12

2024-08-28 13:53:42

多代理強化學習機器人

2023-01-24 17:03:13

強化學習算法機器人人工智能

2020-12-02 13:24:07

強化學習算法

2023-03-09 08:00:00

強化學習機器學習圍棋

2020-08-10 06:36:21

強化學習代碼深度學習

2025-03-11 01:00:00

GRPO算法模型

2022-10-30 15:24:00

無人機盆栽控制器

2020-11-12 19:31:41

強化學習人工智能機器學習

2021-09-17 15:54:41

深度學習機器學習人工智能

2025-06-05 06:36:17

2023-11-07 07:13:31

推薦系統多任務學習

2020-06-05 08:09:01

Python強化學習框架

2023-07-20 15:18:42

2024-12-09 08:45:00

模型AI
點贊
收藏

51CTO技術棧公眾號

欧美 日韩 国产 在线| 天天看天天摸天天操| 碰碰在线视频| 久久精品视频一区二区| 国产欧美精品日韩| 激情四射综合网| 国产不卡av一区二区| 8x福利精品第一导航| 欧洲精品在线播放| 国产免费永久在线观看| 国产精品一级黄| 国产91|九色| 国产黄色小视频网站| 国产精品一区二区三区四区色 | 亚洲黄色网址在线观看| 丁香花免费高清完整在线播放| 嫩草成人www欧美| 久久久精品亚洲| 中文字幕狠狠干| 国产电影一区| 91福利精品第一导航| 99久re热视频精品98| 你懂的视频在线播放| 国产一区二区在线看| 热久久视久久精品18亚洲精品| 男人的天堂久久久| 精品日韩免费| 日韩精品亚洲元码| 无码国产精品久久一区免费| 精品亚洲a∨| 日韩欧美中文字幕在线播放| 欧美日韩视频免费| 九色porny在线| 日本一区二区三区免费乱视频| 高清视频一区| va视频在线观看| 麻豆国产一区二区| 日韩av免费看网站| 精品91久久久| 精品成人久久| 欧美另类老女人| 97在线观看免费高| 欧美电影三区| 自拍偷拍亚洲区| 老头老太做爰xxx视频| 香蕉视频一区| 国产视频欧美视频| 国产偷人妻精品一区| 成人h动漫免费观看网站| 91精品国产91久久久久久最新毛片 | 粉嫩av一区| 久久久综合激的五月天| 国产一区二区不卡视频在线观看| 超碰免费在线97| 国产福利一区二区三区在线视频| 成人精品aaaa网站| 国产精品久久久久久久免费| 麻豆成人综合网| 国产日本欧美在线观看 | 久久精品午夜| 国产ts人妖一区二区三区| 午夜精品久久久久久久久久久久久蜜桃 | 国产成人免费xxxxxxxx| 亚洲最大成人在线| www.麻豆av| 成人免费毛片app| 国产精品美女诱惑| 先锋av资源站| 久久久久久久久免费| 欧美一级二级三级九九九| 精华区一区二区三区| 久久精品免视看| 在线精品日韩| 男女视频在线| 欧美日韩国产在线播放| 欧美私人情侣网站| 国产国产一区| 日韩欧美激情一区| 日本黄色片在线播放| 国产99久久精品一区二区300| 在线观看欧美日韩| 免费国产羞羞网站美图| 在线精品一区二区| 国产成人精品一区二区三区| 91麻豆成人精品国产| 国产91在线|亚洲| 国产一区在线免费| 国产福利电影在线| 亚洲精品国产成人久久av盗摄 | 亚洲成人a**站| 中文精品在线观看| 日韩激情免费| 97精品国产97久久久久久| 国产污视频网站| 韩国av一区二区三区在线观看| 国产91社区| 成在在线免费视频| 亚洲小说欧美激情另类| 久久精品香蕉视频| 99综合久久| 亚洲欧美日韩爽爽影院| 免费成年人视频在线观看| 在线综合欧美| 亚洲专区在线视频| 亚洲av成人精品毛片| 国产精品成人一区二区艾草| 精品这里只有精品| 国产精品久久久久久久久久辛辛| 亚洲精品久久久久久下一站| 人与动物性xxxx| av成人天堂| 91pron在线| 成年人视频网站在线| 亚洲成在线观看| 激情黄色小视频| 亚洲桃色综合影院| 欧美激情视频网址| 亚洲图片欧美在线| 久久中文字幕电影| 日韩精品在线中文字幕| 四虎精品在线观看| 一本一道久久a久久精品逆3p| 国产一级在线视频| 国产自产2019最新不卡| 欧美中日韩免费视频| 91色在线看| 日韩一级免费观看| 色欲AV无码精品一区二区久久| 亚洲免费成人| 99r国产精品视频| 高清免费电影在线观看| 欧美性生交片4| 亚洲第一成人网站| 亚洲精品三级| 国产嫩草一区二区三区在线观看| 国产1区在线| 制服丝袜中文字幕亚洲| 国产白丝一区二区三区| 日韩在线a电影| 欧美午夜精品久久久久免费视| 91九色美女在线视频| 精品国产乱码久久久久久久久 | 伊人久久综合| av成人午夜| 在线看三级电影| 欧美一区二区视频在线观看 | 亚洲国产日产av| 九九久久久久久| 91精品蜜臀一区二区三区在线| 国产美女扒开尿口久久久| www.在线视频.com| 欧美性色aⅴ视频一区日韩精品| 亚洲黄色小说视频| 丝袜国产日韩另类美女| 欧美在线视频二区| 成人自拍视频网| xvideos亚洲人网站| 国产精品无码久久av| 亚洲免费色视频| 久久久久99人妻一区二区三区| 欧美私人啪啪vps| 国内外成人免费视频| 忘忧草在线影院两性视频| 亚洲精品一区av在线播放| 无码人妻一区二区三区线| 国产欧美视频在线观看| xx欧美撒尿嘘撒尿xx| 午夜精品久久久久久久四虎美女版| 成人激情视频在线观看| 呦呦在线视频| 国产婷婷97碰碰久久人人蜜臀 | 日韩天堂在线观看| 欧美日韩在线视频免费| 成人美女视频在线看| 看av免费毛片手机播放| 精品国产1区| 亚洲free性xxxx护士白浆| free性欧美| 一本一本久久a久久精品综合小说 一本一本久久a久久精品牛牛影视 | 亚洲天天综合网| 一区二区三区产品免费精品久久75| 国产大尺度视频| 日韩精品三区四区| 午夜啪啪福利视频| 九色丨蝌蚪丨成人| 国产精品精品视频| h网站久久久| 精品偷拍各种wc美女嘘嘘| 真实的国产乱xxxx在线91| 一区二区三区中文字幕精品精品| 久久人人妻人人人人妻性色av| 日日摸夜夜添夜夜添精品视频| 色呦呦网站入口| 亚洲v天堂v手机在线| 91精品久久久久久久久久入口 | 国产精品日韩av| 国产探花在线观看| 亚洲天堂网在线观看| 精品黑人一区二区三区国语馆| 欧美性20hd另类| 黄色片在线观看网站| 久久亚洲精品小早川怜子| 日韩a一级欧美一级| 欧美亚洲一区| 少妇久久久久久被弄到高潮| 国产日产一区| 精品欧美一区二区精品久久| 祥仔av免费一区二区三区四区| 亚州精品天堂中文字幕| 久久综合网导航| 亚洲人成伊人成综合网久久久| 国产成人麻豆精品午夜在线| 欧洲国产伦久久久久久久| 男女免费视频网站| 国产精品伦一区二区三级视频| 国产麻豆剧传媒精品国产av| 精品中文字幕一区二区| 久久久久久久久久久免费视频| 国产精品videossex久久发布| 亚洲最大免费| 欧美日韩精品一区二区视频| 久久久久se| 成人自拍在线| 亚洲自拍在线观看| 日本久久久久| 国产精品国内视频| 日韩脚交footjobhdboots| 欧美高清电影在线看| 麻豆tv入口在线看| 一本色道久久综合亚洲精品小说| 天堂网www中文在线| 亚洲精品国产综合久久| 人妻无码中文字幕| 欧美成人a在线| 国产超碰人人模人人爽人人添| 欧美图片一区二区三区| 蜜臀精品一区二区三区| 欧美性xxxx18| 日韩欧美成人一区二区三区| 午夜精品在线看| 国产无套粉嫩白浆内谢| 亚洲一卡二卡三卡四卡无卡久久| 九九九在线视频| 亚洲一区二区在线视频| 激情综合网五月天| 亚洲综合av网| 国产亚洲精品久久久久久打不开| 亚洲精品美国一| 青青草成人免费| 亚洲一区日韩精品中文字幕| 国产一级片视频| 亚洲成av人**亚洲成av**| 国产成人精品亚洲男人的天堂| 亚洲一本大道在线| 日韩免费黄色片| 色综合久久久久综合| 丁香社区五月天| 欧美三级韩国三级日本一级| 97av免费视频| 日韩视频免费观看高清完整版在线观看 | 亚洲国产日韩欧美在线99| 天天干视频在线| 亚洲摸下面视频| 成人高清免费观看mv| 色婷婷综合久久久久| 香蕉久久aⅴ一区二区三区| 欧美丰满少妇xxxx| 超碰高清在线| 国产精品久久网| 麻豆视频久久| 精品综合久久| 91视频综合| 大伊香蕉精品视频在线| 欧美亚洲三级| www.国产福利| av一二三不卡影片| 亚洲综合色一区| 最新成人av在线| 日本一区二区三区免费视频| 欧美视频二区36p| 夜夜嗨av禁果av粉嫩avhd| 精品免费视频一区二区| 日本福利在线观看| 久久久国产精品视频| 99re6在线精品视频免费播放| 国产精品成人aaaaa网站| 99tv成人影院| 久久久com| 亚洲精品二区三区| 亚洲自偷自拍熟女另类| 久久精品国产成人一区二区三区| 国产日韩视频一区| 国产日韩欧美精品综合| 久久久久久蜜桃| 欧美性受xxxx| 五月天久久久久久| 日韩视频在线观看免费| sm久久捆绑调教精品一区| 国产欧美一区二区三区在线看| 久久久精品国产**网站| 亚洲一区二区三区精品视频| 99精品热6080yy久久| 91小视频在线播放| 久久亚洲精精品中文字幕早川悠里 | 国产一区二区三区日韩精品| 在线观看17c| 日本欧美一区二区| 理论片大全免费理伦片| 中文字幕一区二区三区四区| 久久久久久久黄色片| 日韩一卡二卡三卡四卡| 在线看av的网址| 4438全国成人免费| 日韩黄色av| 中文字幕一区二区中文字幕 | 日韩av免费在线播放| eeuss鲁片一区二区三区| 亚洲资源视频| 日韩精品欧美精品| 日本免费福利视频| 亚洲一区二区精品3399| 国产内射老熟女aaaa∵| 在线播放国产一区二区三区| 这里有精品可以观看| 国产精品久久久久久久小唯西川| 欧美成人激情| 亚洲第一狼人区| 久久久91精品国产一区二区精品 | 欧美日韩国产在线播放网站| 男操女在线观看| 777午夜精品福利在线观看| 综合激情五月婷婷| 日本a在线天堂| 国产一区二区三区综合| 国产精品国产三级国产传播| 欧美色网一区二区| eeuss影院在线观看| 国产a∨精品一区二区三区不卡| 私拍精品福利视频在线一区| 国产极品尤物在线| 波多野洁衣一区| 亚洲欧美在线视频免费| 日韩av一区二区在线| 欧美日韩在线观看首页| 久久久7777| 石原莉奈在线亚洲三区| 欧美人妻一区二区三区 | 国产美女www爽爽爽视频| 色天天综合狠狠色| 精品久久在线| 日本三级福利片| 国产精品资源网| 久久久久97国产| 精品福利一区二区三区免费视频| 三级资源在线| 精品日产一区2区三区黄免费| 中文亚洲免费| mm131丰满少妇人体欣赏图| 欧美中文字幕一区| 2019中文字幕在线视频| 91九色综合久久| 黄色亚洲免费| 97人妻精品一区二区三区免 | 欧美猛男同性videos| 8x8x最新地址| 亚洲欧洲国产日本综合| 99久久婷婷国产一区二区三区| 欧美成人在线网站| 国产乱论精品| 国产成人亚洲精品无码h在线| 欧美激情在线看| 国产成人久久精品77777综合| 国自产精品手机在线观看视频| 亚洲激情播播| 手机视频在线观看| 玉足女爽爽91| 九色蝌蚪在线| 91久久久精品| 在线亚洲自拍| 很污很黄的网站| 精品国产免费一区二区三区四区 | 亚洲色图14p| 欧美日韩美少妇| 成人性生交大片免费看在线播放| 欧美主播一区二区三区美女 久久精品人| 麻豆国产欧美日韩综合精品二区 | 日本午夜精品视频在线观看| 九九这里只有精品视频| 精品国产在天天线2019| 日韩精品一区二区三区| 少妇高潮大叫好爽喷水| 91一区二区在线观看| 91麻豆一区二区| 欧美极品在线播放| 精品视频久久| 国产女主播在线播放| 欧美午夜视频网站| 成人av影院在线观看| 亚洲精品一品区二品区三品区| 成人性视频免费网站|