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

深度強化學習入門:用TensorFlow構建你的第一個游戲AI

人工智能 深度學習
強化學習起初看似非常有挑戰(zhàn)性,但其實要入門并不困難。在這篇文章中,我們將創(chuàng)造一個基于 Keras 的簡單機器人,使它能玩 Catch 游戲。

[[210667]]

去年,DeepMind 的 AlphaGo 以 4-1 的比分打敗了世界圍棋冠軍李世乭。超過 2 億的觀眾就這樣看著強化學習(reinforce learning)走上了世界舞臺。幾年前,DeepMind 制作了一個可以玩 Atari 游戲的機器人,引發(fā)軒然大波。此后這個公司很快被谷歌收購。

很多研究者相信,強化學習是我們創(chuàng)造通用人工智能(Artificial General Intelligence)的最佳手段。這是一個令人興奮的領域,有著許多未解決的挑戰(zhàn)和巨大的潛能。

強化學習起初看似非常有挑戰(zhàn)性,但其實要入門并不困難。在這篇文章中,我們將創(chuàng)造一個基于 Keras 的簡單機器人,使它能玩 Catch 游戲。

Catch 游戲

 

[[210668]]

 

 

原始的 Catch 游戲界面

Catch 是一個非常簡單的街機游戲,你可能在孩提時代玩過它。游戲規(guī)則如下:水果從屏幕的頂部落下,玩家必須用一個籃子抓住它們;每抓住一個水果,玩家得一分;每漏掉一個水果,玩家會被扣除一分。這里的目標是讓電腦自己玩 Catch 游戲。不過,我們不會使用這么漂亮的游戲界面。相反,我們會使用一個簡單的游戲版本來簡化任務:

簡化的 Catch 游戲界面

玩 Catch 游戲時,玩家要決定三種可能的行為。玩家可以將籃子左移、右移或保持不動。這個決定取決于游戲的當前狀態(tài)。也就是說,取決于果子掉落的位置和籃子的位置。我們的目標是創(chuàng)造這樣一個模型:它能在給定游戲屏幕內(nèi)容的情況下,選擇導致得分最高的動作。

這個任務可以被看做一個簡單的分類問題。我們可以讓游戲?qū)<叶啻瓮孢@個游戲,并記錄他們的行為。然后,可以通過選擇類似于游戲?qū)<业摹刚_」動作來訓練模型。

但這實際上并不是人類學習的方式。人類可以在無指導的情況下,自學像 Catch 這樣的游戲。這非常有用。想象一下,你如果每次想學習像 Catch 一樣簡單的東西,就必須雇傭一批專家玩這個游戲上千次!這必然非常昂貴而緩慢。

而在強化學習中,模型不會根據(jù)標記的數(shù)據(jù)訓練,而是通過以往的經(jīng)歷。

深度強化學習

強化學習受行為心理學啟發(fā)。我們并不為模型提供「正確的」行為,而是給予獎勵和懲罰。該模型接受關于當前環(huán)境狀態(tài)的信息(例如計算機游戲屏幕)。然后,它將輸出一個動作,就像游戲手柄一樣。環(huán)境將對這個動作做出回應,并提供下一個狀態(tài)和獎懲行為。

 

[[210670]]

 

據(jù)此,模型學習并尋找最大化獎勵的行為。

實際上,有很多方式能夠做到這一點。下面,讓我們了解一下 Q-Learning。利用 Q-Learning 訓練計算機玩 Atari 游戲的時候,Q-Learning 曾引起了轟動。現(xiàn)在,Q-Learning 依然是一個有重大意義的概念。大多數(shù)現(xiàn)代的強化學習算法,都是 Q-Learning 的一些改進。

理解 Q-Learning

了解 Q-Learning 的一個好方法,就是將 Catch 游戲和下象棋進行比較。

在這兩種游戲中,你都會得到一個狀態(tài) S。在象棋中,這代表棋盤上棋子的位置。在 Catch 游戲中,這代表水果和籃子的位置。

然后,玩家要采取一個動作,稱作 A。在象棋中,玩家要移動一個棋子。而在 Catch 游戲中,這代表著將籃子向左、向右移動,或是保持在當前位置。據(jù)此,會得到一些獎勵 R 和一個新狀態(tài) S’。

Catch 游戲和象棋的一個共同點在于,獎勵并不會立即出現(xiàn)在動作之后。

在 Catch 游戲中,只有在水果掉到籃子里或是撞到地板上時你才會獲得獎勵。而在象棋中,只有在整盤棋贏了或輸了之后,才會獲得獎勵。這也就是說,獎勵是稀疏分布的(sparsely distributed)。大多數(shù)時候,R 保持為零。

產(chǎn)生的獎勵并不總是前一個動作的結果。也許,很早之前采取的某些動作才是獲勝的關鍵。要弄清楚哪個動作對最終的獎勵負責,這通常被稱為信度分配問題(credit assignment problem)。

由于獎勵的延遲性,優(yōu)秀的象棋選手并不會僅通過最直接可見的獎勵來選擇他們的落子方式。相反,他們會考慮預期未來獎勵(expected future reward),并據(jù)此進行選擇。例如,他們不僅要考慮下一步是否能夠消滅對手的一個棋子。他們也會考慮那些從長遠的角度有益的行為。

在 Q-Learning 中,我們根據(jù)最高的預期未來獎勵選行動。我們使用 Q 函數(shù)進行計算。這個數(shù)學函數(shù)有兩個變量:游戲的當前狀態(tài)和給定的動作。因此,我們可以將其記為 Q(state,action)。在 S 狀態(tài)下,我們將估計每個可能的動作 A 所帶來的的回報。我們假定在采取行動 A 且進入下一個狀態(tài) S’ 以后,一切都很完美。

對于給定狀態(tài) S 和動作 A,預期未來獎勵 Q(S,A)被計算為即時獎勵 R 加上其后的預期未來獎勵 Q(S’,A’)。我們假設下一個動作 A’ 是最優(yōu)的。

由于未來的不確定性,我們用 γ 因子乘以 Q(S’,A’)表示折扣:

Q(S,A) = R + γ * max Q(S’,A’)

象棋高手擅長在心里估算未來回報。換句話說,他們的 Q 函數(shù) Q(S,A)非常精確。大多數(shù)象棋訓練都是圍繞著發(fā)展更好的 Q 函數(shù)進行的。玩家使用棋譜學習,從而了解特定動作如何發(fā)生,以及給定的動作有多大可能會導致勝利。但是,機器如何評估一個 Q 函數(shù)的好壞呢?這就是神經(jīng)網(wǎng)絡大展身手的地方了。

最終回歸

玩游戲的時候,我們會產(chǎn)生很多「經(jīng)歷」,包括以下幾個部分:

  • 初始狀態(tài),S
  • 采取的動作,A
  • 獲得的獎勵,R
  • 下一狀態(tài),S’

這些經(jīng)歷就是我們的訓練數(shù)據(jù)。我們可以將估算 Q(S,A)的問題定義為回歸問題。為了解決這個問題,我們可以使用神經(jīng)網(wǎng)絡。給定一個由 S 和 A 組成的輸入向量,神經(jīng)網(wǎng)絡需要能預測 Q(S,A)的值等于目標:R + γ * max Q(S’,A’)。

如果我們能很好地預測不同狀態(tài) S 和不同行為 A 的 Q(S,A),我們就能很好地逼近 Q 函數(shù)。請注意,我們通過與 Q(S,A)相同的神經(jīng)網(wǎng)絡估算 Q(S’,A’)。

訓練過程

給定一批經(jīng)歷 <S,A,R,S’>,其訓練過程如下:

  1. 對于每個可能的動作 A’(向左、向右、不動),使用神經(jīng)網(wǎng)絡預測預期未來獎勵 Q(S’,A’);
  2. 選擇 3 個預期未來獎勵中的最大值,作為 max Q(S’,A’);
  3. 計算 r + γ * max Q(S’,A’),這就是神經(jīng)網(wǎng)絡的目標值;
  4. 使用損失函數(shù)(loss function)訓練神經(jīng)網(wǎng)絡。損失函數(shù)可以計算預測值離目標值的距離。此處,我們使用 0.5 * (predicted_Q(S,A)—target)² 作為損失函數(shù)。

在游戲過程中,所有的經(jīng)歷都會被存儲在回放存儲器(replay memory)中。這就像一個存儲 <S,A,R,S’> 對的簡單緩存。這些經(jīng)歷回放類同樣能用于準備訓練數(shù)據(jù)。讓我們看看下面的代碼:

  1. class ExperienceReplay(object): 
  2.     ""
  3.     During gameplay all the experiences < s, a, r, s’ > are stored in a replay memory.  
  4.     In training, batches of randomly drawn experiences are used to generate the input and target for training. 
  5.     ""
  6.     def __init__(self, max_memory=100, discount=.9): 
  7.         ""
  8.         Setup 
  9.         max_memory: the maximum number of experiences we want to store 
  10.         memory: a list of experiences 
  11.         discount: the discount factor for future experience 
  12.          
  13.         In the memory the information whether the game ended at the state is stored seperately in a nested array 
  14.         [... 
  15.         [experience, game_over] 
  16.         [experience, game_over] 
  17.         ...] 
  18.         ""
  19.         self.max_memory = max_memory 
  20.         self.memory = list() 
  21.         self.discount = discount 
  22.  
  23.     def remember(self, states, game_over): 
  24.         #Save a state to memory 
  25.         self.memory.append([states, game_over]) 
  26.         #We don't want to store infinite memories, so if we have too many, we just delete the oldest one 
  27.         if len(self.memory) > self.max_memory: 
  28.             del self.memory[0] 
  29.  
  30.     def get_batch(self, model, batch_size=10): 
  31.          
  32.         #How many experiences do we have? 
  33.         len_memory = len(self.memory) 
  34.          
  35.         #Calculate the number of actions that can possibly be taken in the game 
  36.         num_actions = model.output_shape[-1] 
  37.          
  38.         #Dimensions of the game field 
  39.         env_dim = self.memory[0][0][0].shape[1] 
  40.          
  41.         #We want to return an input and target vector with inputs from an observed state... 
  42.         inputs = np.zeros((min(len_memory, batch_size), env_dim)) 
  43.          
  44.         #...and the target r + gamma * max Q(s’,a’) 
  45.         #Note that our target is a matrix, with possible fields not only for the action taken but also 
  46.         #for the other possible actions. The actions not take the same value as the prediction to not affect them 
  47.         targets = np.zeros((inputs.shape[0], num_actions)) 
  48.          
  49.         #We draw states to learn from randomly 
  50.         for i, idx in enumerate(np.random.randint(0, len_memory, 
  51.                                                   size=inputs.shape[0])): 
  52.             ""
  53.             Here we load one transition <s, a, r, s’> from memory 
  54.             state_t: initial state s 
  55.             action_t: action taken a 
  56.             reward_t: reward earned r 
  57.             state_tp1: the state that followed s’ 
  58.             ""
  59.             state_t, action_t, reward_t, state_tp1 = self.memory[idx][0] 
  60.              
  61.             #We also need to know whether the game ended at this state 
  62.             game_over = self.memory[idx][1] 
  63.  
  64.             #add the state s to the input 
  65.             inputs[i:i+1] = state_t 
  66.              
  67.             # First we fill the target values with the predictions of the model. 
  68.             # They will not be affected by training (since the training loss for them is 0) 
  69.             targets[i] = model.predict(state_t)[0] 
  70.              
  71.             ""
  72.             If the game ended, the expected reward Q(s,a) should be the final reward r. 
  73.             Otherwise the target value is r + gamma * max Q(s’,a’) 
  74.             ""
  75.             #  Here Q_sa is max_a'Q(s', a') 
  76.             Q_sa = np.max(model.predict(state_tp1)[0]) 
  77.              
  78.             #if the game ended, the reward is the final reward 
  79.             if game_over:  # if game_over is True 
  80.                 targets[i, action_t] = reward_t 
  81.             else
  82.                 # r + gamma * max Q(s’,a’) 
  83.                 targets[i, action_t] = reward_t + self.discount * Q_sa 
  84.         return inputs, targets 

定義模型

現(xiàn)在讓我們定義這個利用 Q-Learning 學習 Catch 游戲的模型。我們使用 Keras 作為 Tensorflow 的前端。我們的基準模型是一個簡單的三層密集網(wǎng)絡。這個模型在簡單版的 Catch 游戲當中表現(xiàn)很好。你可以在 GitHub 中找到它的完整實現(xiàn)過程。

你也可以嘗試更加復雜的模型,測試其能否獲得更好的性能。

  1. num_actions = 3  # [move_left, stay, move_right] 
  2. hidden_size = 100 # Size of the hidden layers 
  3. grid_size = 10 # Size of the playing field 
  4.  
  5. def baseline_model(grid_size,num_actions,hidden_size): 
  6.     #seting up the model with keras 
  7.     model = Sequential() 
  8.     model.add(Dense(hidden_size, input_shape=(grid_size**2,), activation='relu')) 
  9.     model.add(Dense(hidden_size, activation='relu')) 
  10.     model.add(Dense(num_actions)) 
  11.     model.compile(sgd(lr=.1), "mse"
  12.     return model 

探索

Q-Learning 的最后一種成分是探索。日常生活的經(jīng)驗告訴我們,有時候你得做點奇怪的事情或是隨機的手段,才能發(fā)現(xiàn)是否有比日常動作更好的東西。

Q-Learning 也是如此。總是做最好的選擇,意味著你可能會錯過一些從未探索的道路。為了避免這種情況,學習者有時會添加一個隨機項,而未必總是用最好的。我們可以將定義訓練方法如下:

  1. def train(model,epochs): 
  2.     # Train 
  3.     #Reseting the win counter 
  4.     win_cnt = 0 
  5.     # We want to keep track of the progress of the AI over time, so we save its win count history 
  6.     win_hist = [] 
  7.     #Epochs is the number of games we play 
  8.     for e in range(epochs): 
  9.         loss = 0. 
  10.         #Resetting the game 
  11.         env.reset() 
  12.         game_over = False 
  13.         # get initial input 
  14.         input_t = env.observe() 
  15.          
  16.         while not game_over: 
  17.             #The learner is acting on the last observed game screen 
  18.             #input_t is a vector containing representing the game screen 
  19.             input_tm1 = input_t 
  20.              
  21.             #Take a random action with probability epsilon 
  22.             if np.random.rand() <= epsilon: 
  23.                 #Eat something random from the menu 
  24.                 action = np.random.randint(0, num_actions, size=1) 
  25.             else
  26.                 #Choose yourself 
  27.                 #q contains the expected rewards for the actions 
  28.                 q = model.predict(input_tm1) 
  29.                 #We pick the action with the highest expected reward 
  30.                 action = np.argmax(q[0]) 
  31.  
  32.             # apply action, get rewards and new state 
  33.             input_t, reward, game_over = env.act(action
  34.             #If we managed to catch the fruit we add 1 to our win counter 
  35.             if reward == 1: 
  36.                 win_cnt += 1         
  37.              
  38.             #Uncomment this to render the game here 
  39.             #display_screen(action,3000,inputs[0]) 
  40.              
  41.             ""
  42.             The experiences < s, a, r, s’ > we make during gameplay are our training data. 
  43.             Here we first save the last experience, and then load a batch of experiences to train our model 
  44.             ""
  45.              
  46.             # store experience 
  47.             exp_replay.remember([input_tm1, action, reward, input_t], game_over)     
  48.              
  49.             # Load batch of experiences 
  50.             inputs, targets = exp_replay.get_batch(model, batch_size=batch_size) 
  51.    
  52.             # train model on experiences 
  53.             batch_loss = model.train_on_batch(inputs, targets) 
  54.              
  55.             #sum up loss over all batches in an epoch 
  56.             loss += batch_loss 
  57.         win_hist.append(win_cnt) 
  58.     return win_hist 

我將這個游戲機器人訓練了 5000 個 epoch,結果表現(xiàn)得很不錯!

 

Catch 機器人的動作

正如你在上述動圖中看到的那樣,機器人可以抓住從天空中掉落的蘋果。為了將這個模型學習的過程可視化,我繪制了每一個 epoch 的勝利移動平均線,結果如下:

 

接下來做什么?現(xiàn)在,你已經(jīng)對強化學習有了初步的直覺了解。我建議仔細閱讀該教程的完整代碼。你也可以試驗看看。 

責任編輯:龐桂玉 來源: 36大數(shù)據(jù)
相關推薦

2013-01-14 09:44:58

JavaScriptJSJS框架

2025-04-18 08:01:21

AIAgent驅(qū)動力

2018-01-31 15:45:07

前端Vue.js組件

2020-05-12 07:00:00

深度學習強化學習人工智能

2022-10-17 10:28:05

Web 組件代碼

2023-09-21 22:43:17

Django框架

2014-12-24 11:34:23

CoreOSWordPress集群部署

2024-12-09 08:45:00

模型AI

2018-08-22 17:32:45

2025-05-28 09:04:00

谷歌AI搜索

2021-09-17 15:54:41

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

2021-11-02 08:00:00

機器學習API技術

2018-10-15 10:10:41

Linux內(nèi)核補丁

2013-12-19 09:46:04

垃圾收集器

2023-05-06 12:47:41

2018-02-03 19:07:59

2025-08-26 07:50:22

2010-12-07 16:53:43

商業(yè)智能

2025-03-06 10:07:00

AI強化學習技術

2020-11-12 19:31:41

強化學習人工智能機器學習
點贊
收藏

51CTO技術棧公眾號

中文字幕亚洲一区二区va在线| 性感少妇一区| 精品国产一区二区亚洲人成毛片| www.好吊操| 黄色在线小视频| 黄色小说综合网站| 97视频在线观看视频免费视频 | www毛片com| 91视频久久| 日韩精品久久久久久福利| 五月婷婷之综合激情| 欧美人与禽猛交乱配| 久久久电影一区二区三区| 亚洲一区二区三区毛片| 岛国av中文字幕| 中文字幕免费精品| 亚洲免费高清视频| 黄页网站在线看| 成人av色网站| 精品久久久久久久久久久久久| 亚洲精品免费在线看| 手机看片1024日韩| 国产在线一区二区| 国产精品99久久久久久白浆小说| 久久综合久久鬼| 四季av在线一区二区三区| 日韩精品欧美国产精品忘忧草| 一起操在线视频| 性欧美gay| 天天色天天操综合| www.69av| 黄色成人在线| 国产精品国产三级国产aⅴ中文| 久久综合久久久| 亚洲成人第一区| 狠狠色丁香婷婷综合久久片| 国产精品av在线播放| 国产手机在线视频| 国产综合网站| 欧美大片免费观看在线观看网站推荐| 精品一区二区三区蜜桃在线| 九九综合久久| 日韩电影视频免费| 中文成人无字幕乱码精品区| 2020国产精品极品色在线观看| 7777精品伊人久久久大香线蕉完整版| 日韩手机在线观看视频| 中文字幕不卡三区视频| 精品动漫一区二区三区| 青青草精品视频在线| 888av在线视频| 亚洲成人动漫一区| 欧美精品久久久久久久久久久| 亚洲区欧洲区| 亚洲一区二区三区四区不卡| 欧美一级中文字幕| 亚洲区欧洲区| 香蕉影视欧美成人| 霍思燕三级露全乳照| 免费h在线看| 欧美视频在线免费看| 92看片淫黄大片一级| www.成人爱| 欧美唯美清纯偷拍| 噜噜噜久久亚洲精品国产品麻豆| 国产成人在线视频免费观看| 亚洲精品国产一区二区三区四区在线 | 啪一啪鲁一鲁2019在线视频| 日本一区二区三区四区五区| 综合久久一区| 久久久久久久久久婷婷| 日韩精品一区二区三区国语自制| 亚洲激情二区| 日本国产一区二区三区| 综合久久中文字幕| 狠狠色丁香婷综合久久| 国产精品久久久久久久免费大片| 特黄视频在线观看| 欧美激情综合五月色丁香小说| 亚洲日本japanese丝袜| 污影院在线观看| 欧美日韩亚洲高清| 亚洲一区在线不卡| 秋霞影院一区| 亚洲美女在线观看| 97成人资源站| 亚洲伊人网站| 成人午夜在线观看| 污污视频在线观看网站| 中文成人综合网| 日本黄大片在线观看| 嗯~啊~轻一点视频日本在线观看| 色综合一个色综合| 亚洲综合123| 欧美wwwsss9999| www.日韩免费| 欧美不卡视频在线观看| 青椒成人免费视频| 国产一区二区黄色| 18免费在线视频| 午夜av区久久| 九色porny自拍| 欧美偷窥清纯综合图区| 久久亚洲国产成人| 青青青国产在线| 国产精品一区专区| 少妇精品久久久久久久久久| 国产理论电影在线| 欧美手机在线视频| 亚洲观看黄色网| 伊人久久大香线| 国产精品成熟老女人| www.日韩在线观看| 国产精品免费视频一区| 日韩精品 欧美| 日韩在线观看一区二区三区| 亚洲人成电影网站| 香蕉免费毛片视频| 国产一区二区三区视频在线播放| 欧美极品日韩| 黄视频免费在线看| 欧美成人video| 午夜激情福利电影| 青青草精品视频| 欧美亚洲精品日韩| 美女扒开腿让男人桶爽久久软| 91精品黄色片免费大全| 99久久久无码国产精品不卡| 久久精品导航| 久久久久网址| 97蜜桃久久| 亚洲成人精品在线| 久久久久久天堂| 国产一区二区三区在线观看精品 | 国内自拍一区| 92看片淫黄大片欧美看国产片| 成年女人的天堂在线| 欧美午夜片欧美片在线观看| 欧美性生交xxxxx| 国产一区二区三区四区三区四| 91久久中文字幕| www红色一片_亚洲成a人片在线观看_| 欧美日韩国产乱码电影| 亚洲ⅴ国产v天堂a无码二区| 青娱乐精品在线视频| 日韩一本精品| 国产精品美女午夜爽爽| 日韩中文在线中文网在线观看| 进去里视频在线观看| 国产亚洲美州欧州综合国| 欧美伦理片在线看| 日韩在线中文| 亚洲aⅴ日韩av电影在线观看| 黄色av免费在线| 4438亚洲最大| 青娱乐国产在线| 成人美女视频在线观看18| 国产www免费| 任你躁在线精品免费| 日韩av色在线| 天天影视久久综合| 91精品国产91综合久久蜜臀| 欧美成人精品一区二区免费看片| 成人性视频免费网站| 国产69精品久久久久999小说| 日韩电影不卡一区| 国产成人激情小视频| h网站在线免费观看| 91麻豆精品国产91久久久久| 久久久久久福利| 91在线观看高清| 韩国中文字幕av| 欧美jjzz| 久久久久久精| 欧美97人人模人人爽人人喊视频| 久久成年人免费电影| 神马午夜精品95| 欧美日韩另类一区| 久热精品在线观看| 久久久久久久免费视频了| 911福利视频| 伊人影院久久| 午夜精品一区二区在线观看| 日韩视频一二区| 欧美最猛性xxxxx(亚洲精品)| 在线视频自拍| 欧美精品一区二区三区久久久| 亚洲日本视频在线观看| 亚洲天堂av一区| 性久久久久久久久久| 韩国毛片一区二区三区| 免费国产a级片| 图片小说视频色综合| 国内外成人免费视频| 天天综合在线观看| 国产91精品不卡视频| 国产精品剧情| 亚洲女同性videos| 国产黄色片网站| 色94色欧美sute亚洲线路一ni| 中文字幕电影av| 久久精品综合网| av漫画在线观看| 久久成人久久鬼色| 免费无码av片在线观看| 一区二区不卡| 亚洲精品在线视频观看| 色天下一区二区三区| 92裸体在线视频网站| 成人高清一区| 青青草原一区二区| 黑人玩欧美人三根一起进| 视频在线观看一区二区| 视频国产一区二区三区| 欧美本精品男人aⅴ天堂| 一区二区视频网| 一本久久精品一区二区| 国产奶水涨喷在线播放| 亚洲免费在线看| 国产日韩精品中文字无码| 久久影院午夜论| www男人天堂| 成人在线视频一区二区| 在线观看网站黄| 久久国产综合精品| 污视频免费在线观看网站| 午夜一级久久| 成人av一级片| 亚洲深夜影院| 成熟丰满熟妇高潮xxxxx视频| 欧美女人交a| 国产在线无码精品| 亚洲香蕉av| 中文字幕中文字幕在线中心一区 | 激情五月婷婷六月| 欧美日韩国产探花| 日本道在线视频| 68国产成人综合久久精品| 中文字幕精品一区日韩| 久久在线电影| 成人性做爰片免费视频| 99久久夜色精品国产亚洲96| 一区二区三区四区欧美日韩| 久久影院一区| 91九色国产ts另类人妖| 在线成人激情| 97中文字幕在线| 一区二区三区精品视频在线观看| 成人毛片一区二区| 国产精品久久777777毛茸茸 | 国产成人免费9x9x人网站视频| 青草热久免费精品视频| 亚洲第一会所| 国产精品色婷婷视频| 成人在线免费av| 成人有码视频在线播放| 国产精品一区二区三区av| 亚洲自拍偷拍色图| ady日本映画久久精品一区二区| 成人三级视频在线观看一区二区| 红杏aⅴ成人免费视频| 久久www免费人成精品| 国产尤物久久久| 亚洲精品一区二区三区四区五区 | 国产亚洲精品bt天堂精选| 影音先锋男人在线| 亚洲人被黑人高潮完整版| 国产亚洲精品久久777777| 五月天网站亚洲| 天堂免费在线视频| 91精品在线免费| 少妇高潮一区二区三区69| 亚洲欧洲第一视频| 快射av在线播放一区| 久久久久久国产| 欧美第一视频| 亚洲一区二区免费| 色综合www| 一级日韩一区在线观看| 极品少妇一区二区三区| 国产又黄又猛视频| 国产成人精品在线看| 少妇光屁股影院| 亚洲激情五月婷婷| 日韩精品一区二区亚洲av| 欧美高清一级片在线| 黄色www视频| 在线日韩第一页| 国产区美女在线| 国产区精品在线观看| 粉嫩久久久久久久极品| 亚洲 国产 欧美一区| 在线不卡亚洲| 亚洲xxx在线观看| 99热精品国产| 黄色录像免费观看| 欧美视频在线观看 亚洲欧| 国产男女无套免费网站| 亚洲另类图片色| 欧美精品videossex少妇| 国产精品v片在线观看不卡| 99精品国产高清一区二区麻豆| 日本不卡二区高清三区| 国产精品分类| 国产又粗又长又爽又黄的视频| 久久久午夜精品理论片中文字幕| 欧美第一页在线观看| 在线精品国精品国产尤物884a| 成人激情四射网| 日韩亚洲国产中文字幕| 性欧美1819sex性高清| 久久99国产精品| 欧美私人啪啪vps| 久久久久久久久久一区| 国产欧美一区视频| 欧美h在线观看| 欧美一区二区免费| 日本在线看片免费人成视1000| 日韩av电影国产| 欧美深夜视频| 成年人午夜视频在线观看 | 欧美午夜寂寞影院| 欧美zzoo| 欧美在线视频a| 欧美深夜视频| 波多野结衣家庭教师在线播放| 成人午夜视频福利| 亚洲国产美女视频| 337p亚洲精品色噜噜狠狠| 色多多视频在线观看| 国产精品久久久久久久久| 嫩草一区二区三区| av免费中文字幕| 久久久久久久久久久久久女国产乱| 久久夜色精品亚洲| 日韩av在线网页| 麻豆蜜桃在线观看| 免费国产在线精品一区二区三区| 国产欧美日韩亚洲一区二区三区| 大乳护士喂奶hd| 五月综合激情网| 久久电影视频| 国产精品扒开腿做| 全球成人免费直播| 成人综合久久网| 亚洲婷婷综合久久一本伊一区| 国产免费无遮挡| 欧美日韩高清区| 美女福利一区| 日韩久久一级片| 日本一区二区免费在线观看视频 | 国产精品不卡av| 亚洲黄在线观看| 成人小电影网站| 亚洲国产一区在线| 久久66热偷产精品| 欧美被狂躁喷白浆精品| 欧美大片顶级少妇| 理论不卡电影大全神| 日韩精彩视频| 韩国视频一区二区| 青青草激情视频| 亚洲黄页视频免费观看| 成人天堂yy6080亚洲高清| 性欧美videosex高清少妇| 国产一区二区三区高清播放| 欧美国产在线看| 亚洲欧美激情四射在线日| 51一区二区三区| 国产精品三级一区二区| 99国产一区二区三精品乱码| 国产男人搡女人免费视频| 久久精品中文字幕电影| 成人性生交大片免费看96| 黑森林福利视频导航| 中文字幕在线播放不卡一区| 精品人妻一区二区三区四区不卡 | 亚洲素人在线| 中文字幕国产免费| 亚洲愉拍自拍另类高清精品| 色鬼7777久久| 91精品视频在线看| 99精品免费| 日韩精品123区| 精品亚洲一区二区三区| 欧美videos粗暴| a级黄色一级片| 国产精品成人午夜| 三级av在线| 亚洲一区二区免费| 日韩中文字幕亚洲一区二区va在线| 精品国产视频在线观看| 亚洲男人天堂手机在线| 日韩成人在线观看视频| av网址在线观看免费| 亚洲综合色噜噜狠狠| 91精品大全| 久久久福利视频| 国产成人亚洲综合色影视| 中文字幕日日夜夜|