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

超參數搜索不夠高效?這幾大策略了解一下

開發 開發工具
本文討論了高效搜索深度學習模型最佳超參數集的動機和策略。作者在 FloydHub 上演示了如何完成這項工作以及研究的導向。

整天 babysitting 深度學習模型是不是很心累?這篇文章或許能幫到你。本文討論了高效搜索深度學習模型***超參數集的動機和策略。作者在 FloydHub 上演示了如何完成這項工作以及研究的導向。讀完這篇文章后,你的數據科學工具庫將添加一些強大的新工具,幫助你為自己的深度學習模型自動找到***配置。

與機器學習模型不同,深度學習模型實際上充滿了超參數。

當然,并非所有變量對模型的學習過程都一樣重要,但是,鑒于這種額外的復雜性,在這樣一個高維空間中找到這些變量的***配置顯然是一個不小的挑戰。

幸運的是,我們有不同的策略和工具來解決搜索問題。開始深入!

一、我們的目的

1. 怎么做?

我們希望找到***的超參數配置,幫助我們在驗證/測試集的關鍵度量上得到***分數。

2. 為何?

在計算力、金錢和時間資源有限的情況下,每個科學家和研究員都希望獲得***模型。但是我們缺少有效的超參數搜索來實現這一目標。

3. 何時?

  • 研究員和深度學習愛好者在***的開發階段嘗試其中一種搜索策略很常見。這有助于從經過幾個小時的訓練獲得的***模型中獲得可能的提升。
  • 超參數搜索作為半/全自動深度學習網絡中的階段或組件也很常見。顯然,這在公司的數據科學團隊中更為常見。

等等,究竟何謂超參數?

我們從最簡單的定義開始,

超參數是你在構建機器/深度學習模型時可以調整的「旋鈕」。

將超參數比作「旋鈕」或「撥號盤」

或者:

超參數是在開始訓練之前手動設置的具有預定值的訓練變量。

超參數是在開始訓練之前手動設置的具有預定值的訓練變量。

我們可能會同意學習率和 Dropout 率是超參數,但模型設計變量呢?模型設計變量包括嵌入,層數,激活函數等。我們應該將這些變量視為超參數嗎?

模型設計變量+超參數→模型參數

簡單起見,我們也可以將模型設計組件視為超參數集的一部分。

***,從訓練過程中獲得的參數(即從數據中學習的變量)算超參數嗎?這些權重稱為模型參數。我們不將它們算作超參數。

好的,讓我們看一個真實的例子。請看下面的圖片,僅以此圖說明深度學習模型中變量的不同分類。

變量類別示例圖

4. 下一個問題:搜索代價高昂

我們已經知道,我們的目標是搜索超參數的***配置,但超參數搜索本質上是一個受計算能力、金錢和時間約束的迭代過程。

超參數搜索周期

超參數搜索周期

一切都以猜測一個不錯的配置開始(步驟 1),然后我們需要等到訓練完畢(步驟 2)以獲得對相關度量標準的實際評估(步驟 3)。我們將跟蹤搜索過程的進度(步驟 4),然后根據我們的搜索策略選擇一個新的猜測參數(步驟 1)。

我們一直這樣做,直到達到終止條件(例如用完時間或金錢)。

我們有四種主要的策略可用于搜索***配置。

  • 照看(babysitting,又叫試錯)
  • 網格搜索
  • 隨機搜索
  • 貝葉斯優化

二、照看

照看法被稱為試錯法或在學術領域稱為研究生下降法。這種方法 100% 手動,是研究員、學生和業余愛好者最廣泛采用的方法。

該端到端的工作流程非常簡單:學生設計一個新實驗,遵循學習過程的所有步驟(從數據收集到特征圖可視化),然后她按順序迭代超參數,直到她耗盡時間(通常是到截止日期)或動機。

照看(babysitting)

照看(babysitting)

如果你已經注冊了 deeplearning.ai 課程,那么你一定熟悉這種方法 - 這是由 Andrew Ng 教授提出的熊貓工作流程。

這種方法非常有教育意義,但它不能在時間寶貴的數據科學家的團隊或公司內部施展。

因此,我們遇到這個問題:有更好的方式來增值我的時間嗎?

肯定有!我們可以定義一個自動化的超參數搜索程序來節約你的時間。

三、網格搜索

取自命令式指令「Just try everything!」的網格搜索——一種簡單嘗試每種可能配置的樸素方法。

工作流如下:

  • 定義一個 n 維的網格,其中每格都有一個超參數映射。例如 n = (learning_rate, dropout_rate, batch_size)
  • 對于每個維度,定義可能的取值范圍:例如 batch_size = [4,8,16,32,64,128,256 ]
  • 搜索所有可能的配置并等待結果去建立***配置:例如 C1 = (0.1, 0.3, 4) -> acc = 92%, C2 = (0.1, 0.35, 4) -> acc = 92.3% 等...

下圖展示了包含 Dropout 和學習率的二維簡單網格搜索。

兩變量并發執行的網格搜索

兩變量并發執行的網格搜索

這種平行策略令人尷尬,因為它忽略了計算歷史(我們很快就會對此進行擴展)。但它的本意是,你擁有的計算資源越多,你可以同時嘗試的猜測就越多!

這種方法的真正痛點稱為 curse of dimensionality(維數災難)。這意味著我們添加的維數越多,搜索在時間復雜度上會增加得越多(通常是指數級增長),最終使這個策略變得不可行!

當超參數維度小于或等于 4 時,通常使用這種方法。但實際上,即使它保證在***找到***配置,它仍然不是***方案。相反,***使用隨機搜索——我們將在下面討論。

現在試試網格搜索!

單擊以下鏈接可在 FloydHub 上打開 Workspace:https://www.floydhub.com/signup?source=run。你可以使用工作區在完全配置的云服務器上運行以下代碼(使用 Scikit-learn 和 Keras 進行網格搜索)。

  1. # Load the dataset 
  2. x, y = load_dataset() 
  3.  
  4. # Create model for KerasClassifier 
  5. def create_model(hparams1=dvalue
  6.                  hparams2=dvalue
  7.                  ... 
  8.                  hparamsn=dvalue): 
  9.     # Model definition 
  10.     ... 
  11.  
  12. model = KerasClassifier(build_fn=create_model)  
  13.  
  14. # Define the range 
  15. hparams1 = [2, 4, ...] 
  16. hparams2 = ['elu', 'relu', ...] 
  17. ... 
  18. hparamsn = [1, 2, 3, 4, ...] 
  19.  
  20. # Prepare the Grid 
  21. param_grid = dict(hparams1hparams1=hparams1,  
  22.                   hparams2hparams2=hparams2,  
  23.                   ... 
  24.                   hparamsnhparamsn=hparamsn) 
  25.  
  26. # GridSearch in action 
  27. grid = GridSearchCV(estimator=model,  
  28.                     param_gridparam_grid=param_grid,  
  29.                     n_jobs=,  
  30.                     cv=, 
  31.                     verbose=) 
  32. gridgrid_result = grid.fit(x, y) 
  33.  
  34. # Show the results 
  35. print("Best: %f using %s" % (grid_result.best_score_, grid_result.best_params_)) 
  36. means = grid_result.cv_results_['mean_test_score'] 
  37. stds = grid_result.cv_results_['std_test_score'] 
  38. params = grid_result.cv_results_['params'] 
  39. for mean, stdev, param in zip(means, stds, params): 
  40.     print("%f (%f) with: %r" % (mean, stdev, param)) 

四、隨機搜索

幾年前,Bergstra 和 Bengio 發表了一篇驚人的論文 (http://www.jmlr.org/papers/volume13/bergstra12a/bergstra12a.pdf),證明了網格搜索的低效率。

網格搜索和隨機搜索之間唯一真正的區別在于策略周期的第 1 步 - 隨機搜索從配置空間中隨機選取點。

讓我們使用下面的圖片(論文中提供)來展示研究員的證明。

網格搜索 vs 隨機搜索

網格搜索 vs 隨機搜索

圖像通過在兩個超參數空間上搜索***配置來比較兩種方法。它還假設一個參數比另一個參數更重要。這是一個安全的假設,因為開頭提到的深度學習模型確實充滿了超參數,并且研究員/科學家/學生一般都知道哪些超參數對訓練影響***。

在網格搜索中,很容易注意到,即使我們已經訓練了 9 個模型,但我們每個變量只使用了 3 個值!然而,使用隨機布局,我們不太可能多次選擇相同的變量。結果是,通過第二種方法,我們將為每個變量使用 9 個不同的值訓練 9 個模型。

從每個圖像布局頂部的曲線圖可以看出,我們使用隨機搜索可以更廣泛地探索超參數空間(特別是對于更重要的變量)。這將有助于我們在更少的迭代中找到***配置。

總結:如果搜索空間包含 3 到 4 個以上的維度,請不要使用網格搜索。相反,使用隨機搜索,它為每個搜索任務提供了非常好的基準。

網格搜索和隨機搜索的優缺點

現在試試隨機搜索!

單擊以下鏈接可在 FloydHub 上打開 Workspace:https://www.floydhub.com/signup?source=run。你可以使用工作區在完全配置的云服務器上運行以下代碼(使用 Scikit-learn 和 Keras 進行隨機搜索)。

  1. # Load the dataset 
  2. X, Y = load_dataset() 
  3.  
  4. # Create model for KerasClassifier 
  5. def create_model(hparams1=dvalue
  6.                  hparams2=dvalue
  7.                  ... 
  8.                  hparamsn=dvalue): 
  9.     # Model definition 
  10.     ... 
  11.  
  12. model = KerasClassifier(build_fn=create_model)  
  13.  
  14. # Specify parameters and distributions to sample from 
  15. hparams1 = randint(1, 100) 
  16. hparams2 = ['elu', 'relu', ...] 
  17. ... 
  18. hparamsn = uniform(0, 1) 
  19.  
  20. # Prepare the Dict for the Search 
  21. param_dist = dict(hparams1hparams1=hparams1,  
  22.                   hparams2hparams2=hparams2,  
  23.                   ... 
  24.                   hparamsnhparamsn=hparamsn) 
  25.  
  26. # Search in action! 
  27. n_iter_search = 16 # Number of parameter settings that are sampled. 
  28. random_search = RandomizedSearchCV(estimator=model,  
  29.                                    param_distparam_distributions=param_dist, 
  30.                                    n_iter=n_iter_search
  31.                                    n_jobs=,  
  32.                                    cv=,  
  33.                                    verbose=) 
  34. random_search.fit(X, Y) 
  35.  
  36. # Show the results 
  37. print("Best: %f using %s" % (random_search.best_score_, random_search.best_params_)) 
  38. means = random_search.cv_results_['mean_test_score'] 
  39. stds = random_search.cv_results_['std_test_score'] 
  40. params = random_search.cv_results_['params'] 
  41. for mean, stdev, param in zip(means, stds, params): 
  42.     print("%f (%f) with: %r" % (mean, stdev, param)) 

1. 后退一步,前進兩步

另外,當你需要為每個維度設置空間時,每個變量使用正確的比例非常重要。

常用的批大小和學習率的比例空間

例如,通常使用 2 的冪作為批大小的值,并在對數尺度上對學習率進行采樣。

放大!

從上面的布局之一開始進行一定數量的迭代也很常見,然后通過在每個變量范圍內更密集地采樣并放大到有希望的子空間,然后甚至用相同或不同的搜索策略開始新的搜索。

2. 還有一個問題:獨立猜測!

不幸的是,網格和隨機搜索都有共同的缺點:每一次新猜測都獨立于之前的訓練!

這聽起來可能有些奇怪、令人意外,盡管需要大量時間,但令照看法起效的是科學家有效推動搜索和實驗的能力,他們通過使用過去的實驗結果作為資源來改進下一次訓練。

等一下,這些好像在哪兒聽過...... 嘗試將超參數搜索問題建模為機器學習任務會怎么樣?!

請允許我介紹下貝葉斯優化。

五、貝葉斯優化

此搜索策略構建一個代理模型,該模型試圖從超參數配置中預測我們關注的指標。

在每次新的迭代中,代理人將越來越自信哪些新的猜測可以帶來改進。就像其他搜索策略一樣,它也有相同的終止條件。

貝葉斯優化工作流

如果聽起來有點困惑,請不要擔心——是時候參考另一個圖例了。

1. 高斯過程在起作用

我們可以將高斯過程定義為代理,它將學習從超參數配置到相關度量的映射。它不僅會將預測轉化為一個值,還會為我們提供不確定性的范圍(均值和方差)。

我們來深入研究這個偉大教程

(https://www.iro.umontreal.ca/~bengioy/cifar/NCAP2014-summerschool/slides/Ryan_adams_140814_bayesopt_ncap.pdf) 提供的示例。

有 2 個點的高斯過程的優化過程

在上圖中,我們遵循單變量(在水平軸上)的高斯過程優化的***步。在我們想象的例子中,這可以代表學習率或 dropout 率。

在垂直軸上,我們繪制了相關度量作為單個超參數的函數。因為我們正在尋找盡可能低的值,所以可以將其視為損失函數。

黑點代表訓練到當前階段的模型。紅線是 ground truth,換句話說,就是我們正在努力學習的函數。黑線表示我們對 ground truth 函數的實際假設的平均值,灰色區域表示空間中的相關不確定性或方差。

我們可以注意到,點周圍的不確定性有所減少,因為我們對這些點的結果非常有信心(因為我們已經在這里訓練了模型)。同時,在我們擁有較少信息的領域,不確定性會增加。

現在我們已經定義了起點,準備好選擇下一個有希望的變量來訓練一個模型。為此,我們需要定義一個采集函數,它將告訴我們在哪里采樣下一個參數。

在此示例中,我們使用了 Expected Improvement:這個函數旨在在我們使用不確定性區域中的建議配置時找到盡可能低的值。上面的 Expected Improvement 圖表中的藍點即為下一次訓練選擇的點。

3 點高斯過程

3 點高斯過程

我們訓練的模型越多,代理人對下一個有希望采樣的點就越有信心。以下是模型經過 8 次訓練后的圖表:

8 點高斯過程

8 點高斯過程

高斯過程屬于基于序列模型的優化(SMBO)類別的算法。正如我們剛看到的,這些算法為開始搜索***超參數配置提供了非常好的基準。但是,跟所有工具一樣,它們也有缺點:

  • 根據定義,該過程是有順序的
  • 它只能處理數值參數
  • 即使訓練表現不佳,它也不提供任何停止訓練的機制

請注意,我們只是簡單地談到了這個話題,如果你對細節部分以及如何擴展 SMBO 感興趣,那么請看一下這篇論文

(https://www.cs.ubc.ca/~hutter/papers/10-TR-SMAC.pdf)。

2. 現在試試貝葉斯優化!

單擊以下鏈接可在 FloydHub 上打開 Workspace:https://www.floydhub.com/signup?source=run。你可以使用工作區在完全配置的云服務器上運行以下代碼(使用 Hyperas 進行貝葉斯優化(SMBO-TPE))。

  1. def data(): 
  2.     """ 
  3.     Data providing function: 
  4.     This function is separated from model() so that hyperopt 
  5.     won't reload data for each evaluation run. 
  6.     """ 
  7.     # Load / Cleaning / Preprocessing 
  8.     ... 
  9.     return x_train, y_train, x_test, y_test 
  10.  
  11. def model(x_train, y_train, x_test, y_test): 
  12.     """ 
  13.     Model providing function: 
  14.     Create Keras model with double curly brackets dropped-in as needed. 
  15.     Return value has to be a valid python dictionary with two customary keys: 
  16.         - loss: Specify a numeric evaluation metric to be minimized 
  17.         - status: Just use STATUS_OK and see hyperopt documentation if not feasible 
  18.     The last one is optional, though recommended, namely: 
  19.         - model: specify the model just created so that we can later use it again. 
  20.     """ 
  21.     # Model definition / hyperparameters space definition / fit / eval 
  22.     return {'loss': <metrics_to_minimize>, 'status': STATUS_OK, 'model': model} 
  23.  
  24. # SMBO - TPE in action 
  25. best_run, best_model = optim.minimize(modelmodel=model, 
  26.                                       datadata=data, 
  27.                                       algo=tpe.suggest, 
  28.                                       max_evals=, 
  29.                                       trials=Trials()) 
  30.  
  31. # Show the results 
  32. x_train, y_train, x_test, y_test = data() 
  33. print("Evalutation of best performing model:") 
  34. print(best_model.evaluate(x_test, y_test)) 
  35. print("Best performing model chosen hyper-parameters:") 
  36. print(best_run) 

六、搜索策略對比

現在讓我們來總結一下到目前為止所涵蓋的策略,以了解每個策略的優缺點。

總結

如果你或你的團隊有足夠的資源,貝葉斯 SMBO 可能是***,但是你也應該考慮建立一個隨機搜索的基準。

另一方面,如果你還在訓練或處于設計階段,即使在空間探索方面不切實際,照看法也是可以一試的。

正如我在上一節中提到的,如果一個訓練表現不佳,我們必須等到計算結束,因為這些策略都不能提供節省資源的機制。

因此,我們得出了***一個問題:我們能優化訓練時間嗎?

我們來試試看。

七、提前終止的力量

提前終止不僅是一項著名的正則化技術,而且在訓練錯誤時,它還是一種能夠防止資源浪費的機制。

下面是最常用的終止訓練標準的圖表:

終止標準

前三個標準顯而易見,所以我們把注意力集中在***一個標準上。

通常情況下,研究人員會根據實驗類別來限定訓練時間。這樣可以優化團隊內部的資源。通過這種方式,我們能夠將更多資源分配給最有希望的實驗。

floyd-cli(我們的用戶用來與 FloydHub 通信的軟件,已經在 Github 上開源)為此提供了一個標準:我們的高級用戶正在大規模使用它來調節他們的實驗。

這些標準可以在照看學習過程時手動應用,或者你可以通過常見框架中提供的鉤子/回調在實驗中集成這些規則來做得更好:

  • Keras 提供了一個很好的提前終止功能,甚至還有一套回調組件。由于 Keras 最近已經整合到 Tensorflow 中,你也可以使用 Tensorflow 代碼中的回調組件。
  • Tensorflow 提供了訓練鉤子,這些鉤子可能不像 Keras 回調那樣直觀,但是它們能讓你對執行狀態有更多的控制。
  • Pytorch 還沒有提供鉤子或回調組件,但是你可以在論壇上查看 TorchSample 倉庫。我不太清楚 Pytorch 1.0 的功能列表(該團隊可能會在 PyTorch 開發者大會上發布一些內容),這個功能可能會隨新版本一起發布。
  • Fast.ai 庫也提供回調組件,即使它目前沒有提供任何形式的文檔(WIP),你也可以去找一個不錯的教程。幸運的是,他們有一個很棒的社區。
  • Ignite(Pytorch 的高級庫)提供類似于 Keras 的回調,雖然還在開發階段,但它看起來確實是一個不錯的選擇。

名單就這么多了,我的討論只涉及最常用/***的框架。-(我希望不會損害其他框架作者的玻璃心。如果是這樣,你可以將你的意見轉發給我,我會很樂意更新列表!)

還沒有結束。

機器學習有一個子領域叫做「AutoML」(Automatic Machine Learning,自動機器學習),目的是實現模型選擇、特征提取和/或超參數優化的自動化。

這就引出了***一個問題(我保證是***一個!):我們能了解整個過程嗎?

你可以認為,AutoML 是一個解決了另一個機器學習任務的機器學習任務,類似于我們利用貝葉斯優化完成的任務,本質上是元機器學習。

1. 研究:AutoML 和 PBT

你很可能聽說過谷歌的 AutoML,這是他們對神經架構搜索的品牌重塑。請記住,在本文開頭,我們決定將模型設計組件合并到超參數變量中。那么,神經架構搜索是 AutoML 的子領域,旨在為給定任務找到***模型。關于這個主題的全面討論需要一系列文章。幸運的是,來自 fast.ai 的 Rachel Thomas 博士做了一項了不起的工作,我們很樂意提供鏈接:

http://www.fast.ai/2018/07/12/auto-ml-1/。

我想和大家分享另一個來自 DeepMind 的有趣的研究成果,他們使用進化策略算法的一種變體來執行超參數搜索,稱為基于群體的訓練(Population Based Training,PBT)。PBT 也是 DeepMind 的另一項研究(《Capture the Flag: the emergence of complex cooperative agents》)的基礎,新聞報道并不完全,我強烈建議你去看看。引自 DeepMind:

就像隨機搜索一樣,PBT 首先需要以隨機挑選超參數的方式訓練許多并行的神經網絡。但是這些網絡并不是獨立訓練的,而是使用其它網絡的訓練信息來修正這些超參數,并將計算資源分配到那些有希望的模型上。這種方法的靈感來自于遺傳算法:其中一個群體中的每個個體(被稱為 worker)可以利用除自身外其余個體的信息。例如,一個個體可能會從表現較好的個體那里復制模型參數,它還能通過隨機改變當前的值來探索新的超參數集。

當然,這一領域可能還有許多其他有趣的研究。在這里,我只是和大家分享了最近得到媒體關注的一些研究。

2. 在 FloydHub 上管理你的實驗

FloydHub ***的特點之一是能夠在訓練時比較使用不同的超參數集的不同模型。

下圖展示了 FloydHub 項目中的作業列表。你可以看到此用戶正在使用作業的消息字段(例如,floyd run --message "SGD, lr=1e-3, l1_drop=0.3" ...)以突出顯示在每個作業上使用的超參數。

此外,你還可以查看每項作業的訓練指標。這些提供了快速瀏覽,幫助你了解哪些作業表現***,以及使用的機器類型和總訓練時間。

項目主頁

FloydHub 儀表板為你提供了一種簡單的方法來比較你在超參數搜索中做的所有訓練——并且實時更新。

我們建議你為每個必須解決的任務/問題創建一個不同的 FloydHub 項目。通過這種方式,你可以更輕松地組織工作并與團隊協作。

3. 訓練指標

如上所述,你可以輕松地在 FloydHub 上為你的作業發布訓練指標。當你在 FloydHub 儀表板上查看作業時,你將找到你定義的每個指標的實時圖表。

此功能無意替代 Tensorboard(我們也提供此功能),而是旨在突出顯示你已選擇的超參數配置的訓練走勢。

例如,如果你正在監督訓練過程,那么訓練指標肯定會幫助你確定和應用停止標準。

訓練指標

原文鏈接:

https://blog.floydhub.com/guide-to-hyperparameters-search-for-deep-learning-models/

【本文是51CTO專欄機構“機器之心”的原創譯文,微信公眾號“機器之心( id: almosthuman2014)”】

 

戳這里,看該作者更多好文

責任編輯:趙寧寧 來源: 51CTO專欄
相關推薦

2024-08-22 12:31:05

2018-03-21 09:08:06

超融合架構本質

2021-10-27 10:48:49

架構運維技術

2020-12-10 08:44:35

WebSocket輪詢Comet

2022-03-24 13:36:18

Java悲觀鎖樂觀鎖

2018-11-14 13:59:53

數據科學數據集數據科學項目

2021-04-27 07:52:18

SQLNULLOR

2019-02-20 14:16:43

2020-02-10 14:26:10

GitHub代碼倉庫

2024-04-11 12:19:01

Rust數據類型

2018-06-05 17:40:36

人工智能語音識別

2020-04-21 13:50:48

Wi-Fi 6無線華為

2022-03-07 06:34:22

CQRS數據庫數據模型

2020-03-01 17:53:38

Excel大數據微軟

2024-02-28 18:22:13

AI處理器

2018-07-17 14:42:50

2023-11-18 09:09:08

GNUBSD協議

2020-09-26 22:20:52

ML自動機器學習深度學習

2020-09-22 07:33:03

開發技能代碼

2021-01-21 10:23:43

數據庫架構技術
點贊
收藏

51CTO技術棧公眾號

刘玥91精选国产在线观看| 日本污视频网站| 久久亚洲资源| 97se亚洲国产综合自在线| 日韩免费精品视频| 国产一区二区三区视频播放| 亚洲一区二区三区在线免费| 色综合色综合色综合| 尤物一区二区三区| 午夜在线观看视频18| 久久福利资源站| 97精品在线视频| 成人在线短视频| av女人的天堂| 波多野结衣av无码| 女生裸体视频一区二区三区| 日韩精品丝袜在线| 成人免费黄色av| 制服诱惑亚洲| 亚洲精品字幕| 啊v视频在线一区二区三区| 国产综合内射日韩久| 欧美色片在线观看| 亚洲18女电影在线观看| 中文字幕一区二区三区四区五区 | 一区二区在线视频观看| 一本色道a无线码一区v| 欧美视频在线第一页| 狠狠人妻久久久久久| 一区二区三区四区视频免费观看| 国产精品丝袜一区| 久久99精品久久久久久青青日本| 精品人妻在线播放| 亚洲a一区二区三区| 亚洲裸体xxxx| 免费欧美一级视频| 50度灰在线| 中文字幕欧美日本乱码一线二线| 国产精品第七影院| 国产三级av片| 亚洲伦理精品| 隔壁老王国产在线精品| 在线观看成人毛片| 一区二区三区四区在线观看国产日韩 | 精品在线免费视频| 国产成人拍精品视频午夜网站| 亚洲日本精品视频| 色愁久久久久久| 无人区乱码一区二区三区| 99在线热播精品免费| 国产66精品久久久久999小说| 免费高清在线观看电视| 日韩综合网站| 久久好看免费视频| 97精品在线播放| 99久久精品网| 欧美男插女视频| 清纯粉嫩极品夜夜嗨av| 欧美网站在线| 久久久久女教师免费一区| 久久久久亚洲AV成人| 欧美一区二区| 色综合男人天堂| 中文在线观看免费网站| 亚洲在线播放| 国产福利成人在线| 国产精品无码粉嫩小泬| 亚洲精品无吗| 亚洲毛片在线观看.| 伊人网伊人影院| 欧美一级精品| 美女性感视频久久久| 欧美日韩在线国产| 国产精品久久久一区二区| 在线电影av不卡网址| 亚洲av毛片基地| 欧美高清视频在线观看mv| xxx成人少妇69| 九九视频免费观看| 国产午夜精品一区二区三区欧美 | 免费99视频| 国产福利在线看| 中文字幕av一区 二区| 在线观看成人av电影| 女同一区二区免费aⅴ| 亚洲国产视频一区二区| 欧美黄色免费影院| 欧美一级做a| 欧美α欧美αv大片| 亚洲制服丝袜在线播放| 国产美女久久| 日韩精品综合一本久道在线视频| 黄色片在线免费| 成人污污视频| 亚洲精品综合精品自拍| 免费黄色激情视频| 一区二区三区精品视频在线观看| 欧美sm美女调教| 97人妻天天摸天天爽天天| 欧美人与物videos另类xxxxx| 亚洲国产免费av| 国产破处视频在线观看| 亚洲国产日本| 成人网在线视频| 久操视频在线免费观看| 国产毛片精品国产一区二区三区| 国产精品99久久久久久白浆小说| av中文在线播放| 久久久久久自在自线| 99www免费人成精品| 草草影院在线观看| 精品免费在线视频| 色哟哟免费视频| 亚洲伦理一区二区| 欧美日韩一级二级| 精品无码国产一区二区三区51安| 综合伊人久久| 色爱av美腿丝袜综合粉嫩av| 日本三级2019| 国产一区在线不卡| 亚洲美女网站18| 在线看的毛片| 精品成人一区二区| 中文字幕电影av| 日韩精品色哟哟| 精品一区久久久久久| 午夜成年人在线免费视频| 国产精品乱子久久久久| 午夜欧美一区二区三区免费观看| 可以在线观看的av| 亚洲国产成人av| 999这里有精品| jlzzjlzz亚洲女人| 日本国产欧美一区二区三区| www.五月天激情| 亚洲欧美激情视频在线观看一区二区三区 | 后进极品白嫩翘臀在线视频| 国产精品第13页| www.色就是色| 狠狠综合久久av一区二区蜜桃| 一本色道久久综合亚洲精品小说| 国产精品久久免费观看| 午夜在线精品偷拍| 欧美久久久久久久| 美州a亚洲一视本频v色道| 亚洲国产精品一区二区久久恐怖片 | 国产精品丝袜视频| 亚洲一二三区av| 国产黄色免费视频| 91丨porny丨国产| 国产美女网站在线观看| 久久狠狠久久| 97福利一区二区| 色婷婷视频在线| 精品久久久久久中文字幕一区奶水 | 国产精品久久久999| 青青草娱乐在线| 五月天中文字幕一区二区| 中国特级黄色大片| 日韩午夜av| 欧美理论一区二区| 精品裸体bbb| 日韩在线高清视频| 精品久久在线观看| 亚洲成av人片在www色猫咪| 波多野结衣有码| 日本成人a网站| 日本一区二区在线播放| h视频网站在线观看| 欧美性受xxxx黑人xyx性爽| 午夜激情福利电影| 国产精品99久久久久久似苏梦涵 | 国产精品一级伦理| 欧美视频三区在线播放| 五月天av网站| 成人av资源站| av丝袜天堂网| 午夜精品影院| 久久66热这里只有精品| 欧美三区四区| 久久久国产精品x99av| 国产精品亚洲欧美在线播放| 亚洲精品成人悠悠色影视| 欧美又粗又长又爽做受| 韩日毛片在线观看| 欧美日韩在线精品一区二区三区激情| 逼特逼视频在线观看| 一区在线视频| 日本一区二区三区免费看| 亚洲精品一区av| 久久久久久久久电影| 成人性生交大片免费看午夜| 91精品国产综合久久精品麻豆| 九九九视频在线观看| 国产美女av一区二区三区| 看av免费毛片手机播放| 日韩激情一区| 国产亚洲欧美一区二区三区| 日韩精品第一| 欧美精品videos性欧美| 高清福利在线观看| 精品国产伦一区二区三区观看体验| 精品人妻伦九区久久aaa片| 成人午夜激情影院| www.亚洲高清| 国产精品乱看| 男女裸体影院高潮| 欧美一区二区三区高清视频| 国产精品大全| 日韩电影免费观看高清完整版在线观看| 亚洲天堂av网| www.看毛片| 欧美性猛交xxxx黑人交| 国产一级久久久| 亚洲欧洲日韩在线| 泷泽萝拉在线播放| 激情久久综合| 亚洲国产精品一区二区第一页 | 蜜桃视频网站在线| 日韩va亚洲va欧洲va国产| 国产片在线播放| 色妞www精品视频| 精品少妇久久久久久888优播| 成人一区二区视频| 超碰在线人人爱| 亚洲欧美成人| 久久视频这里有精品| 欧美日本久久| eeuss中文| 欧美激情777| 天堂av一区二区| 九九综合久久| 欧美国产视频在线观看| 国产图片一区| av噜噜色噜噜久久| 日韩精品一区二区三区中文| 国产日韩在线亚洲字幕中文| 是的av在线| 2019亚洲日韩新视频| 欧美成人免费| 亚洲大胆人体视频| 一本一道无码中文字幕精品热| 国产欧美日韩激情| 欧美精品第三页| 亚洲一区欧美二区| 无码精品a∨在线观看中文| 在线不卡视频| www插插插无码视频网站| 伊人成人在线| a在线视频观看| 日韩欧美电影| 日本一区免费看| 99香蕉久久| 国产欧美亚洲日本| 人人精品亚洲| 欧美不卡在线一区二区三区| 久久不见久久见中文字幕免费| 天堂av在线一区| 国产精品欧美日韩| 欧美日韩电影免费看| 97久久伊人激情网| 美女福利一区二区| 国产精品久久一| 激情中国色综合| 91欧美精品成人综合在线观看| 美女露胸视频在线观看| 欧洲成人性视频| 国产91亚洲精品久久久| 成人女保姆的销魂服务| 国内精品视频| 国产区欧美区日韩区| 少妇精品久久久一区二区| 性欧美大战久久久久久久免费观看| 精品国产一区二区三区成人影院 | 91色综合久久久久婷婷| 欧美特黄一区二区三区| 国产精品日日摸夜夜摸av| 国精品无码一区二区三区| 亚洲第一av色| 日日夜夜操视频| 91精品国产综合久久福利软件| 在线免费观看av网址| 欧美日韩电影在线播放| 亚洲经典一区二区| 亚洲人精品午夜在线观看| 婷婷在线视频| 欧美激情在线观看| 韩漫成人漫画| 亚洲aa在线观看| 奇米狠狠一区二区三区| 只有这里有精品| 久久精品一区二区三区中文字幕| 日本午夜激情视频| 日本成人在线视频网站| 少妇伦子伦精品无吗| 日韩高清不卡一区| 久久发布国产伦子伦精品| 99久久亚洲一区二区三区青草| 亚洲成a人片在线www| 91蜜桃免费观看视频| 国产精品视频一区二区三| 黑人巨大精品欧美一区二区一视频 | 97久久精品视频| 九七电影院97理论片久久tvb| 国产成人精品综合| 亚洲爽爆av| 久久综合久久综合这里只有精品| 欧美激情极品| 欧美三级午夜理伦三级老人| 久热精品在线| aaaa黄色片| 亚洲女同女同女同女同女同69| 精品无码人妻一区二区免费蜜桃 | 久久久久久久国产精品视频| 日日夜夜天天综合| 成人黄色片视频网站| 色乱码一区二区三区网站| 国产视频九色蝌蚪| 国产精品自在在线| a资源在线观看| 精品成人在线视频| www.97av| 久久天天躁狠狠躁夜夜av| av电影在线观看| 97精品欧美一区二区三区| 色妞ww精品视频7777| 在线观看亚洲视频啊啊啊啊| 中文在线一区| 国产精品偷伦视频免费观看了| 高清成人在线观看| 日韩高清dvd碟片| 精品视频一区二区三区免费| 免费在线高清av| 45www国产精品网站| 日韩区一区二| 少妇高潮流白浆| 蜜臀av一区二区| 日韩丰满少妇无码内射| 欧美日韩一区二区免费在线观看| 亚洲不卡视频在线观看| 亚洲精品99久久久久| 中文在线字幕免费观看| 91久久久久久久久| 99国产精品免费视频观看| 欧美日韩中文不卡| 国产精品情趣视频| 欧美在线视频精品| 在线日韩第一页| 精品九九久久| 国产精品夜夜夜爽张柏芝| 国产真实乱对白精彩久久| 潘金莲一级黄色片| 欧美老人xxxx18| av在线free| 亚洲综合精品伊人久久| 国产中文一区| 亚洲最大免费视频| 色婷婷精品久久二区二区蜜臀av| 国产按摩一区二区三区| 日韩午夜一区| 欧美激情视频免费看| 国产精品原创巨作av| 久久久久久久久久久97| 日韩美女主播在线视频一区二区三区| 美女毛片在线看| 国产精品爽爽爽爽爽爽在线观看| 久久1电影院| 91精品91久久久中77777老牛| 国产自产v一区二区三区c| 亚洲色图综合区| 亚洲国产成人精品久久久国产成人一区| 嫩草在线播放| 国产精品视频yy9099| 五月开心六月丁香综合色啪 | 日韩欧美一区二区三区在线| av网址在线免费观看| 国产精品一区二区三区观看| 国产亚洲一区在线| 国产欧美小视频| 欧美成人精品高清在线播放| 黄色在线观看www| 亚洲欧美成人一区| 成人一区二区三区| 国产乱码77777777| 欧美激情视频播放| 国产成人三级| 永久av免费在线观看| 午夜精品久久久久久久99水蜜桃 | 亚洲一区二区三区免费| 亚洲中文字幕无码中文字| 国产精品久久久久天堂| 欧美自拍第一页| 国产精品久久久久9999| 欧美在线1区| 亚洲AV无码国产成人久久| 欧美一区二区在线播放| 成人香蕉视频| 国产精品日韩三级| 中文字幕免费在线观看视频一区| 91在线视频免费播放|