精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

久久伊人中文字幕| 久久久久久久久久97| 91视频在线视频| 亚州精品国产| 久久久久久9999| 九九热这里只有精品免费看| 日产国产精品精品a∨| www.youjizz.com亚洲| 日韩深夜福利网站| 一区av在线播放| 91久久精品国产91久久| 快灬快灬一下爽蜜桃在线观看| www在线观看黄色| 欧美日韩精品一本二本三本 | 亚洲av综合色区| 中文字幕在线天堂| 欧美日韩国产探花| 亚洲欧洲第一视频| 亚欧无线一线二线三线区别| 欧美日韩在线视频一区二区三区| 国产日本一区二区| 精品国产九九九| 成人av资源网| 黄色高清无遮挡| 人人妻人人澡人人爽久久av| 亚洲字幕久久| 色成人免费网站| 亚洲国产国产亚洲一二三| 3d成人h动漫网站入口| 中文精品一区二区三区| 在线免费观看中文字幕| 日韩专区精品| 欧美日韩国产免费| 国产精品久久成人免费观看| 国产精品欧美亚洲| 午夜精品免费| 精品99一区二区三区| 给我免费播放片在线观看| 天天操天天射天天| 丝瓜av网站精品一区二区| 国产亚洲精品久久久优势| 91福利国产成人精品播放| 久热国产在线| 成人免费高清视频在线观看| 奇米四色中文综合久久| 谁有免费的黄色网址| 久久久久毛片| 亚洲一区电影777| 精品综合在线| 亚洲字幕av一区二区三区四区| 国产一区二区高清| 中文字幕亚洲欧美日韩2019| 久久综合在线观看| cao在线视频| 国产清纯白嫩初高生在线观看91 | 波多野结衣人妻| 模特精品在线| 久久在线观看视频| 国产夫妻性爱视频| 久久99久久久精品欧美| 在线精品视频免费播放| 91免费版看片| а天堂中文在线官网| 99久久99精品久久久久久| 国产精品入口免费视频一| 久久久久久国产精品免费播放| 综合亚洲色图| 欧美日韩一区二区欧美激情| 波多野结衣av一区二区全免费观看| 日韩精品一二| 国产精品一区二区三区四区| 国产成人精品久久| 久久精品99国产精| 日韩一区二区三区免费播放| 中日韩美女免费视频网址在线观看 | 久操网在线观看| 亚洲天堂手机| 亚洲精品视频在线观看网站| 女人一区二区三区| 99国产精品久久久久99打野战| 国产精品久久久久毛片大屁完整版| 91精品国产九九九久久久亚洲| 欧美日韩色视频| 九一亚洲精品| 久久久国产精品x99av| 国产肥白大熟妇bbbb视频| 狠狠色丁香婷婷综合影院| 亚洲国产日韩一区| 日本在线视频播放| 国产一区二区色噜噜| 日韩一级免费一区| 激情文学亚洲色图| 日韩三区在线| 7777精品伊人久久久大香线蕉的| 精品国产aⅴ一区二区三区东京热| 懂色aⅴ精品一区二区三区| 欧美日韩精品在线| 五月丁香综合缴情六月小说| 88xx成人永久免费观看| 91精品国产入口在线| 亚洲视频第二页| 成人国产一区| 精品国产乱码91久久久久久网站| 亚洲av综合一区二区| 欧美激情影院| 亚洲精品电影在线观看| 亚洲一级黄色录像| 精品电影一区| 午夜精品一区二区三区在线 | 欧美性生活大片免费观看网址| 99久久免费观看| 四虎4545www国产精品| 一本久道久久综合中文字幕| 精品人妻一区二区三区四区在线 | 一本大道av一区二区在线播放| 激情黄色小视频| 欧美国产日韩电影| 亚洲高清久久网| 中文字幕精品久久久| 色网站免费在线观看| 亚洲高清在线免费观看| 免费在线观看成年人视频| 成人羞羞视频播放网站| 亚洲综合一二三区| 国产精品久久久久99| 日韩欧美三级在线观看| 亚洲国内欧美| 成人亚洲激情网| 99热这里只有精品1| 国产成人在线免费观看| 粉嫩av四季av绯色av第一区| 成人教育av在线| 日韩av一区二区在线观看| 图片区偷拍区小说区| aaa国产精品视频| 欧美精品一区二区蜜臀亚洲| 国产午夜手机精彩视频| 日韩av高清在线观看| 国产欧美日韩最新| 精品国自产拍在线观看| 亚洲国产精品二十页| 一区二区日本伦理| 亚洲淫性视频| 亚洲精选一二三| 在线看免费毛片| 色综合天天综合网中文字幕| 国产精品久久久久国产a级| 青青色在线视频| 欧美性猛交xxxx富婆弯腰| 国产福利在线观看视频| 欧美日中文字幕| 久久69精品久久久久久久电影好| 国产又黄又爽视频| 亚洲视频综合在线| 男人的天堂99| 91九色成人| 国产丝袜一区二区三区免费视频| 青青青视频在线播放| 午夜天堂精品久久久久| 亚洲精品欧美极品| 你懂得在线网址| 亚洲色图丝袜美腿| 91丨porny丨九色| 欧美二区视频| 国产女人水真多18毛片18精品| 黄色片在线看| 亚洲一区二区三区在线看| 男人添女人荫蒂国产| 日韩视频二区| 91香蕉嫩草影院入口| av在线免费网址| 精品国产sm最大网站| 精品欧美一区二区三区免费观看| 韩国三级中文字幕hd久久精品| 精品视频免费观看| 成人小电影网站| 欧美不卡123| frxxee中国xxx麻豆hd| 国产成人综合亚洲91猫咪| 丁香婷婷综合激情| 国产一区二区三区四区大秀| 国产视频福利一区| caoprom在线| 一区二区三区精品99久久| 久久艹免费视频| 欧美韩日一区二区三区| 日韩欧美中文视频| 久久激情电影| 97超碰色婷婷| 9191在线| 欧美综合一区二区| 国产少妇在线观看| 韩国一区二区在线观看| 97超碰国产精品| 国产91精品对白在线播放| 91在线视频精品| 欧美黑人一区| 亚洲人成网站在线播| 国产草草影院ccyycom| 欧美日韩亚洲一区二| 成人免费毛片xxx| 久久综合久久综合亚洲| 在线观看视频在线观看| 可以免费看不卡的av网站| 久久天天东北熟女毛茸茸| 最新国产精品视频| 国产精品12| 在线亚洲人成| 国内精品久久久久| 五月婷婷激情在线| 欧美性猛交99久久久久99按摩| 性生交大片免费全黄| 国产亚洲欧美日韩日本| 88av在线播放| 午夜亚洲精品| 欧美少妇一区| 国产伊人久久| 2019精品视频| 日韩亚洲视频在线观看| 9191久久久久久久久久久| 麻豆成人免费视频| 日本一区免费视频| v天堂中文在线| 国产精品1区二区.| 国产一区二区在线观看免费视频| 久久久久国产精品一区三寸| 国产九九九九九| 秋霞影视一区二区三区| 96久久精品| 国产污视频在线播放| 欧美日韩福利视频| 黄色网在线看| 中文字幕免费精品一区| 欧美777四色影视在线| 亚洲激情视频在线观看| 亚洲精品国产片| 日韩欧美中文字幕在线播放| 日韩av女优在线观看| 久久久久99精品国产片| 久久人妻少妇嫩草av无码专区| 粉嫩av亚洲一区二区图片| 91精品91久久久中77777老牛| 亚洲性图久久| www.成年人视频| 国产a久久精品一区二区三区| 国外成人在线视频网站| 丁香婷婷成人| 国产精品69精品一区二区三区| 狠狠躁少妇一区二区三区| 国语自产精品视频在线看抢先版图片 | a级黄色免费视频| 国产欧美日韩在线视频| 免费看裸体网站| 国内精品久久久久影院色| av中文字幕网址| 激情综合网av| 日本少妇一级片| 成人sese在线| 玖玖爱在线观看| 国产精品亚洲第一| 日本一区二区在线观看视频| www.欧美精品一二区| 亚洲视频第二页| 国产精品一区二区免费不卡| 日本泡妞xxxx免费视频软件| av成人老司机| 级毛片内射视频| 中文字幕精品在线不卡| 国产又粗又硬又长又爽| 亚洲国产一区二区a毛片| 国产视频91在线| 欧美午夜影院一区| 一级成人黄色片| 色久优优欧美色久优优| 日韩免费黄色片| 日韩欧美a级成人黄色| 最近中文字幕免费观看| 欧美日韩免费网站| 国产一级精品毛片| 日韩亚洲欧美一区| 色猫av在线| 日韩中文字幕第一页| 伊人免费在线| 欧美激情欧美激情| 成人在线播放| 26uuu另类亚洲欧美日本一| 成人在线视频观看| 国产精品国模大尺度私拍| 青青国产精品| 国产精品视频一区二区三区经| 五月天亚洲一区| 国产综合 伊人色| 日本久久综合| 日韩视频在线视频| 麻豆成人久久精品二区三区红| 成人在线激情网| 国产精品99久久久久久久女警| 最近日本中文字幕| 亚洲素人一区二区| 黄瓜视频在线免费观看| 91精品国产色综合久久不卡蜜臀 | 国产一区二区三区精品久久久| av片在线观看永久免费| 国产成人亚洲综合青青| 91亚洲无吗| 一区二区三区国| 欧美亚洲一级| 亚洲日本久久久| ●精品国产综合乱码久久久久| 成人黄色短视频| 中文字幕一区二区三区av| 中文国语毛片高清视频| 精品国产精品自拍| 伦av综合一区| 精品久久久久久综合日本欧美 | 国产午夜久久久久| 久久精品视频久久| 7777精品伊人久久久大香线蕉超级流畅| 五月色婷婷综合| 久久久亚洲国产天美传媒修理工| 色综合一区二区日本韩国亚洲| 久久综合九色综合久99| 黄色成人av网站| 波多野结衣家庭教师在线播放| 精久久久久久久久久久| 美国黄色特级片| 色综合久久中文字幕综合网| 污视频在线免费观看| 欧美大片大片在线播放| 精品一区二区三区在线观看视频 | 精品人妻午夜一区二区三区四区| 一区二区三区黄色| 性感美女一区二区在线观看| 欧美高清一区二区| 国产精品日本欧美一区二区三区| 日韩成人av影院| 国产精品乱码妇女bbbb| 曰本女人与公拘交酡| 午夜视黄欧洲亚洲| www.日韩一区| 日韩精品一二三四区| av电影院在线看| 国产精品美女黄网| 亚洲国产精品第一区二区三区 | 久久新电视剧免费观看| 免费在线不卡视频| 亚洲精品国精品久久99热 | 在线视频观看一区| www.av在线播放| 欧美裸身视频免费观看| 国产免费区一区二区三视频免费| 国产精品乱码视频| 亚洲手机在线| 亚洲国产果冻传媒av在线观看| 岛国精品视频在线播放| 免费一级毛片在线观看| 国产精品高潮呻吟久久av野狼| 欧美久久精品一级c片| 中文字幕有码av| 亚洲欧美日韩国产一区二区三区 | 国产精品第108页| 日韩电影中文字幕一区| 三上悠亚激情av一区二区三区| 先锋影音亚洲资源| 亚洲午夜精品久久久久久app| 国产精品91av| 欧美色图在线视频| www.视频在线.com| 99国产盗摄| 久久精品天堂| 国产精品视频看看| 精品国产精品一区二区夜夜嗨| 成人爽a毛片免费啪啪| 夜夜爽99久久国产综合精品女不卡| 国产在线一区观看| www.黄色在线| 欧美精品日韩精品| 国产视频精选在线| 78m国产成人精品视频| 国产麻豆一区二区三区精品视频| 奇米影视四色在线| 亚洲一级电影视频| 九色在线视频蝌蚪| 91久久综合亚洲鲁鲁五月天| 在线观看视频免费一区二区三区| www.色天使| 91精品国产欧美一区二区成人| mm视频在线视频| 亚洲午夜高清视频| 成人一道本在线| 欧美激情一区二区三区免费观看| 成人97在线观看视频| 欧美丝袜足交| 中文 日韩 欧美| 色噜噜狠狠色综合欧洲selulu| 怡红院在线播放| 日韩在线观看电影完整版高清免费| 国产一区二区三区精品欧美日韩一区二区三区 | 亚洲二区在线视频| www男人的天堂|