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

基于PaddlePaddle的點擊率的深度學習方法嘗試

企業動態
前面在團隊內部分享點擊率相關的一些文章時,輸出了一篇常見計算廣告點擊率預估算法總結,看了一些廣告點擊率的文章,從最經典的Logistic Regression到Factorization Machined,FFM,FNN,PNN到今年的DeepFM,還有文章里面沒有講的gbdt+lr這類,一直想找時間實踐下

前言

前面在團隊內部分享點擊率相關的一些文章時,輸出了一篇常見計算廣告點擊率預估算法總結,看了一些廣告點擊率的文章,從最經典的Logistic Regression到Factorization Machined,FFM,FNN,PNN到今年的DeepFM,還有文章里面沒有講的gbdt+lr這類,一直想找時間實踐下,正好這次在學習paddle的時候在它的models目錄下看到了DeepFM的實現,因為之前對DeepFM有過比較詳細的描述,這里稍微復習一下:

DeepFM更有意思的地方是WDL和FM結合了,其實就是把PNN和WDL結合了,PNN即將FM用神經網絡的方式構造了一遍,作為wide的補充,原始的Wide and Deep,Wide的部分只是LR,構造線性關系,Deep部分建模更高階的關系,所以在Wide and Deep中還需要做一些特征的東西,如Cross Column的工作,而我們知道FM是可以建模二階關系達到Cross column的效果,DeepFM就是把FM和NN結合,無需再對特征做諸如Cross Column的工作了,這個是我感覺最吸引人的地方,其實FM的部分感覺就是PNN的一次描述,這里只描述下結構圖,PNN的部分前面都描述, FM部分:

Deep部分:

DeepFM相對于FNN、PNN,能夠利用其Deep部分建模更高階信息(二階以上),而相對于Wide and Deep能夠減少特征工程的部分工作,wide部分類似FM建模一、二階特征間關系, 算是NN和FM的一個更***的結合方向,另外不同的是如下圖,DeepFM的wide和deep部分共享embedding向量空間,wide和deep均可以更新embedding部分,雖說wide部分純是PNN的工作,但感覺還是蠻有意思的。

本文相關代碼部分都是來自于paddlepaddle/model, 我這里走一遍流程,學習下,另外想要了解算法原理的可以仔細再看看上面的文章,今天我們來paddlepaddle上做下實驗,來從代碼程度學習下DeepFM怎么實現的:

數據集說明

criteo Display Advertising Challenge,數據主要來criteolab一周的業務數據,用來預測用戶在訪問頁面時,是否會點擊某廣告。

wget --no-check-certificate https://s3-eu-west-1.amazonaws.com/criteo-labs/dac.tar.gz tar zxf dac.tar.gz rm -f dac.tar.gz  mkdir raw mv ./*.txt raw/ 

數據有點大, 大概4.26G,慢慢等吧,數據下載完成之后,解壓出train.csv,test.csv,其中訓練集45840617條樣本數,測試集45840617條樣本,數據量還是蠻大的。 數據主要有三部分組成:

  • label: 廣告是否被點擊;
  • 連續性特征: 1-13,為各維度下的統計信息,連續性特征;
  • 離散型特征:一些被脫敏處理的類目特征

Overview

整個項目主要由幾個部分組成:

數據處理

這里數據處理主要包括兩個部分:

  1. 連續值特征值處理:
  • 濾除統計次數95%以上的數據,這樣可以濾除大部分異值數據,這里的處理方式和以前我在1號店做相關工作時一致,代碼里面已經做了這部分工作,直接給出了這部分的特征閾值;
  • 歸一化處理,這里andnew ng的課程有張圖很明顯,表明不同的特征的值域范圍,會使得模型尋優走『之』字形,這樣會增加收斂的計算和時間;
  1. 離散特征值處理:
  • one-hot: 對應特征值映射到指定維度的只有一個值為1的稀疏變量;
  • embedding: 對應特征值映射到指定的特征維度上;

具體我們來研究下代碼:

class ContinuousFeatureGenerator:     """     Normalize the integer features to [0, 1] by min-max normalization     """      def __init__(self, num_feature):         self.num_feature = num_feature         self.min = [sys.maxint] * num_feature         self.max = [-sys.maxint] * num_feature      def build(self, datafile, continous_features):         with open(datafile, 'r') as f:             for line in f:                 features = line.rstrip('\n').split('\t')                 for i in range(0, self.num_feature):                     val = features[continous_features[i]]                     if val != '':                         val = int(val)                         if val > continous_clip[i]:                             val = continous_clip[i]                         self.min[i] = min(self.min[i], val)                         self.max[i] = max(self.max[i], val)      def gen(self, idx, val):         if val == '':             return 0.0         val = float(val)         return (val - self.min[idx]) / (self.max[idx] - self.min[idx]) 

連續特征是在1-13的位置,讀取文件,如果值大于對應維度的特征值的95%閾值,則該特征值置為該閾值,并計算特征維度的***、最小值,在gen時歸一化處理。

class CategoryDictGenerator:     """     Generate dictionary for each of the categorical features     """      def __init__(self, num_feature):         self.dicts = []         self.num_feature = num_feature         for i in range(0, num_feature):             self.dicts.append(collections.defaultdict(int))      def build(self, datafile, categorial_features, cutoff=0):         with open(datafile, 'r') as f:             for line in f:                 features = line.rstrip('\n').split('\t')                 for i in range(0, self.num_feature):                     if features[categorial_features[i]] != '':                         self.dicts[i][features[categorial_features[i]]] += 1         for i in range(0, self.num_feature):             self.dicts[i] = filter(lambda x: x[1] >= cutoff,                                 self.dicts[i].items())             self.dicts[i] = sorted(self.dicts[i], key=lambda x: (-x[1], x[0]))             vocabs, _ = list(zip(*self.dicts[i]))             self.dicts[i] = dict(zip(vocabs, range(1, len(vocabs) + 1)))             self.dicts[i]['<unk>'] = 0      def gen(self, idx, key):         if key not in self.dicts[idx]:             res = self.dicts[idx]['<unk>']         else:             res = self.dicts[idx][key]         return res      def dicts_sizes(self):         return map(len, self.dicts) 

類目特征的處理相對比較麻煩,需要遍歷,然后得到對應維度上所有出現值的所有情況,對打上對應id,為后續類目特征賦予id。這部分耗時好大,慢慢等吧,另外強烈希望paddlepaddle的小伙伴能在輸出處理期間打印下提示信息,算了,我之后有時間看看能不能提提pr。

經過上面的特征處理之后,訓練集的值變為:

reader

paddle里面reader的文件,自由度很高,自己可以寫生成器,然后使用batch的api,完成向網絡傳入batchsize大小的數據:

class Dataset:     def _reader_creator(self, path, is_infer):         def reader():             with open(path, 'r') as f:                 for line in f:                     features = line.rstrip('\n').split('\t')                     dense_feature = map(float, features[0].split(','))                     sparse_feature = map(int, features[1].split(','))                     if not is_infer:                         label = [float(features[2])]                         yield [dense_feature, sparse_feature                             ] + sparse_feature + [label]                     else:                         yield [dense_feature, sparse_feature] + sparse_feature          return reader      def train(self, path):         return self._reader_creator(path, False)      def test(self, path):         return self._reader_creator(path, False)      def infer(self, path):         return self._reader_creator(path, True) 

主要邏輯在兌入文件,然后yield對應的網絡數據的輸入格式

模型構造

模型構造,DeepFM在paddlepaddle里面比較簡單,因為有專門的fm層,這個據我所知在TensorFlow或MXNet里面沒有專門的fm層,但是值得注意的是,在paddlepaddle里面的fm層,只建模二階關系,需要再加入fc才是完整的fm,實現代碼如下:

def fm_layer(input, factor_size, fm_param_attr):     first_order = paddle.layer.fc(         input=input, size=1, act=paddle.activation.Linear())     second_order = paddle.layer.factorization_machine(         input=input,         factor_size=factor_size,         act=paddle.activation.Linear(),         param_attr=fm_param_attr)     out = paddle.layer.addto(         input=[first_order, second_order],         act=paddle.activation.Linear(),         bias_attr=False)     return out 

然后就是構造DeepFM,這里根據下面的代碼畫出前面的圖,除去數據處理的部分,就是DeepFM的網絡結構:

def DeepFM(factor_size, infer=False):     dense_input = paddle.layer.data(         name="dense_input",         type=paddle.data_type.dense_vector(dense_feature_dim))     sparse_input = paddle.layer.data(         name="sparse_input",         type=paddle.data_type.sparse_binary_vector(sparse_feature_dim))     sparse_input_ids = [         paddle.layer.data(             name="C" + str(i),             type=s(sparse_feature_dim))         for i in range(1, 27)     ]     dense_fm = fm_layer(         dense_input,         factor_size,         fm_param_attr=paddle.attr.Param(name="DenseFeatFactors"))     sparse_fm = fm_layer(         sparse_input,         factor_size,         fm_param_attr=paddle.attr.Param(name="SparseFeatFactors"))     def embedding_layer(input):         return paddle.layer.embedding(             input=input,             size=factor_size,             param_attr=paddle.attr.Param(name="SparseFeatFactors"))     sparse_embed_seq = map(embedding_layer, sparse_input_ids)     sparse_embed = paddle.layer.concat(sparse_embed_seq)      fc1 = paddle.layer.fc(         input=[sparse_embed, dense_input],         size=400,         act=paddle.activation.Relu())     fc2 = paddle.layer.fc(input=fc1, size=400, act=paddle.activation.Relu())     fc3 = paddle.layer.fc(input=fc2, size=400,            act=paddle.activation.Relu())      predict = paddle.layer.fc(         input=[dense_fm, sparse_fm, fc3],         size=1,         act=paddle.activation.Sigmoid())      if not infer:         label = paddle.layer.data(             name="label", type=paddle.data_type.dense_vector(1))         cost = paddle.layer.multi_binary_label_cross_entropy_cost(             input=predict, label=label)         paddle.evaluator.classification_error(             name="classification_error", input=predict, label=label)         paddle.evaluator.auc(name="auc", input=predict, label=label)          return cost     else:         return predict 

其中,主要包括三個部分,一個是多個fc組成的deep部分,第二個是sparse fm部分,然后是dense fm部分,如圖:

這里蠻簡單的,具體的api去查下文檔就可以了,這里稍微說明一下的是,sparse feature這塊有兩部分一塊是embedding的處理,這里是先生成對應的id,然后用id來做embedding,用作后面fc的輸出,然后sparse_input是onehot表示用來作為fm的輸出,fm來計算一階和二階隱變量關系。

模型訓練

數據量太大,單機上跑是沒有問題,可以正常運行成功,在我內部機器上,可以運行成功,但是有兩個問題:

  1. fm由于處理的特征為稀疏表示,而paddlepaddle在這塊的FM層的支持只有在cpu上,速度很慢,分析原因其實不是fm的速度的問題,因為deepfm有設計多個fc,應該是這里的速度影響, 在paddlepaddle github上有提一個issue,得知暫時paddlepaddle不能把部分放到gpu上面跑,給了一個解決方案把所有的sparse改成dense,發現在這里gpu顯存hold不住;
  2. 我的機器太渣,因為有開發任務不能長期占用;

所以綜上,我打算研究下在百度云上怎么通過k8s來布置paddlepaddle的分布式集群。

文檔cloud.baidu.com/doc/CCE

研究來研究去,***步加卡主了,不知道怎么回事,那個頁面就是出不來...出師未捷身先死,提了個issue: github.com/PaddlePaddle,等后面解決了再來更新分布式訓練的部分。

單機的訓練沒有什么大的問題,由上面所說,因為fm的sparse不支持gpu,所以很慢,拉的百度云上16核的機器,大概36s/100 batch,總共樣本4000多w,一個epoch預計4個小時,MMP,等吧,分布式的必要性就在這里。

另外有在paddlepaddle里面提一個issue:

github.com/PaddlePaddle,說把sparse轉成dense的話可以直接在gpu上跑起來,這個看起來不值得去嘗試,sparse整個維度還是挺高的,期待對sparse op 有更好的解決方案,更期待在能夠把單層單層的放在gpu,多設備一起跑,這方面,TensorFlow和MXNet要好太多。

這里我遇到一個問題,我使用paddle的docker鏡像的時候,可以很穩定的占用16個cpu的大部分計算力,但是我在云主機上自己裝的時候,cpu占用率很低,可能是和我環境配置有點問題,這個問題不大,之后為了不污染環境主要用docker來做相關的開發工作,所以這里問題不大。

cpu占有率有比較明顯的跳動,這里從主觀上比TensorFlow穩定性要差一些,不排除是sparse op的影響,印象中,TensorFlow cpu的占用率很穩定。


到發這篇文章位置,跑到17300個batch,基本能達到auc為0.8左右,loss為0.208左右。

預測

預測代碼和前一篇將paddle里面的demo一樣,只需要,重新定義一下網絡,然后綁定好模型訓練得到的參數,然后傳入數據即可完成inference,paddle,有專門的Inference接口,只要傳入output_layer,和訓練學習到的parameters,就可以很容易的新建一個模型的前向inference網絡。

def infer():     args = parse_args()     paddle.init(use_gpu=False, trainer_count=1)     model = DeepFM(args.factor_size, infer=True)     parameters = paddle.parameters.Parameters.from_tar(         gzip.open(args.model_gz_path, 'r'))     inferer = paddle.inference.Inference(         output_layer=model, parameters=parameters)     dataset = reader.Dataset()     infer_reader = paddle.batch(dataset.infer(args.data_path),  batch_size=1000)     with open(args.prediction_output_path, 'w') as out:         for id, batch in enumerate(infer_reader()):             res = inferer.infer(input=batch)             predictions = [x for x in itertools.chain.from_iterable(res)]             out.write('\n'.join(map(str, predictions)) + '\n') 

總結

照例總結一下,DeemFM是17年深度學習在點擊率預估、推薦這塊的新的方法,有點類似于deep and wide的思想,將傳統的fm來nn化,利用神經網絡強大的建模能力來挖掘數據中的有效信息,paddlepaddle在這塊有現成的deepfm模型,單機部署起來比較容易,分布式,這里我按照百度云上的教程還未成功,后續會持續關注。另外,因為最近在做大規模機器學習框架相關的工作,越發覺得別說成熟的,僅僅能夠work的框架就很不錯了,而比較好用的如現在的TensorFlow\MXNet,開發起來真的難上加難,以前光是做調包俠時沒有體驗,現在深入到這塊的工作時,才知道其中的難度,也從另一個角度開始審視現在的各種大規模機器學習框架,比如TensorFlow、MXNet,在深度學習的支持上,確實很棒,但是也有瓶頸,對于大規模海量的feature,尤其是sparse op的支持上,至少現在還未看到特別好的支持,就比如這里的FM,可能大家都會吐槽為啥這么慢,沒做框架之前,我也會吐槽,但是開始接觸了一些的時候,才知道FM,主要focus在sparse相關的數據對象,而這部分數據很難在gpu上完成比較高性能的計算,所以前面經過paddle的開發者解釋sparse相關的計算不支持gpu的時候,才感同身受,一個好的大規模機器學習框架必須要從不同目標來評價,如果需求是大規律數據,那穩定性、可擴展性是重點,如果是更多算法、模型的支持,可能現在的TensorFlow、MXNet才是標桿,多么希望現在大規模機器學習框架能夠多元化的發展,有深度學習支持力度大的,也有傳統算法上,把數據量、訓練規模、并行化加速并做到***的,這樣的發展才或許稱得上百花齊放,其實我們不需要太多不同長相的TensorFlow、MXNet錘子,有時候我們就需要把鐮刀而已,希望大規模機器學習框架的發展,不應該僅僅像TensorFlow、MXNet一樣,希望有一個專注把做大規模、大數據量、***并行化加速作為roadmap的新標桿,加油。

責任編輯:張燕妮 來源: 小石頭的碼瘋窩
相關推薦

2018-03-15 15:40:39

廣告點擊率PaddlePaddlTensorflow

2021-07-01 15:56:42

深度學習人工智能互聯網

2021-11-12 15:16:32

深度學習數據合成人工智能

2024-10-08 08:19:19

2013-10-30 10:39:25

Banner

2011-06-20 15:55:14

SEO

2017-05-23 14:00:26

機器學習編程技術計算模型

2016-11-22 19:54:56

點擊率預估推薦算法廣告

2017-05-08 23:02:56

敏捷學習GitHubissue

2016-12-28 15:19:22

大數據機器學習銷售預測

2009-09-28 10:40:28

.NET學習

2018-04-23 14:49:31

表征句子深度學習自然語言

2009-09-04 09:37:49

思科認證CCNA學習方法

2016-09-30 15:33:02

集成學習機器學習算法

2018-09-06 11:25:46

機器學習神經網絡人工智能

2015-07-28 15:41:06

機器學習算法數據挖掘

2011-07-10 15:07:37

2017-11-27 15:24:02

Linux學習方法優勢

2017-08-07 10:08:29

深度學習分類體系信息檢索

2017-12-01 17:35:02

點贊
收藏

51CTO技術棧公眾號

波多野结衣精品久久| 久久精品国产2020观看福利| 男人添女人下面高潮视频| 色播色播色播色播色播在线 | 不卡的av网站| 欧美综合激情网| 99热这里只有精品4| 国产精品1luya在线播放| 色呦呦国产精品| 欧美人与动牲交xxxxbbbb| 日本福利片高清在线观看| 精品无码三级在线观看视频| 亚洲18私人小影院| 最新一区二区三区| 久久99高清| 欧美精品一区二区高清在线观看| 久久午夜夜伦鲁鲁一区二区| 男女在线视频| 国产精品理论在线观看| 国内视频一区二区| 国产精品久久久久久免费免熟| 一本不卡影院| 久久久国产视频| 制服 丝袜 综合 日韩 欧美| 豆花视频一区二区| 欧美理论片在线| 亚洲视频在线观看一区二区三区| 俄罗斯一级**毛片在线播放| 自拍视频在线观看一区二区| 久久久久久久久久久久久久久久av| 一个人看的www日本高清视频| av成人天堂| 久久人人爽人人| 一区二区三区四区五区| 久久精品国产www456c0m| 精品亚洲永久免费精品| 一级少妇精品久久久久久久| 国产精品成人**免费视频| 在线观看av不卡| 日本在线观看a| 色戒汤唯在线观看| 性感美女久久精品| 免费在线看黄色片| 宅男网站在线免费观看| 成人欧美一区二区三区在线播放| 日韩一区国产在线观看| 天堂av在线播放| 99久久婷婷国产综合精品| 91九色露脸| 国产激情视频在线播放| 国产一区二区精品久久91| 国产精品私拍pans大尺度在线 | 老司机精品影院| 国产精品视频观看| 亚洲国产精品综合| av电影在线网| 中文字幕一区二区日韩精品绯色| 亚洲v国产v| 欧美jizzhd69巨大| 成人免费在线播放视频| 伊人久久大香线蕉综合75| 亚洲成人三级| 亚洲品质自拍视频网站| 做爰高潮hd色即是空| www视频在线免费观看| 一区二区三区高清在线| 成人免费观看在线| 国模私拍一区二区国模曼安| 激情懂色av一区av二区av| 国产女大学生av| 中文字幕av一区二区三区佐山爱| 色哟哟一区二区在线观看| 免费黄色一级网站| 一区二区三区无毛| 精品欧美乱码久久久久久1区2区| 欧美xxxxx精品| 亚州综合一区| 这里只有精品久久| 国产高清在线免费观看| 99精品福利视频| 国产成人综合精品在线| 91成品人影院| 成人午夜激情在线| 欧美一区亚洲二区| 黄色av电影在线观看| 亚洲第一成年网| 亚洲男人天堂色| 国产精品亚洲欧美日韩一区在线| 亚洲成年人在线| 亚洲午夜久久久久久久国产| 亚洲欧美在线专区| 91国内免费在线视频| 中国a一片一级一片| 国产乱码精品1区2区3区| 精品久久久久久中文字幕动漫| 你懂的在线看| 亚洲美女精品一区| 欧美一级在线看| а天堂中文最新一区二区三区| 精品成人一区二区三区四区| 免费视频91蜜桃| 狠狠久久婷婷| 成人精品一区二区三区| 午夜视频免费在线| 亚洲图片你懂的| 日韩网址在线观看| 精品国产一级| 在线亚洲欧美视频| av中文在线播放| 国产在线精品一区二区夜色 | 精品乱码一区二区三四区视频 | 91女厕偷拍女厕偷拍高清| 伊人狠狠色丁香综合尤物| 亚洲欧美se| 精品国产91亚洲一区二区三区婷婷| 黄色片网站免费| 亚洲制服av| 国产传媒一区二区| 国产原创精品视频| 在线这里只有精品| 中文字幕影片免费在线观看| 一区二区三区在线电影| 国产精品夜色7777狼人| 看电影就来5566av视频在线播放| 一区二区三区在线观看动漫| 亚洲最大成人在线观看| 蜜桃a∨噜噜一区二区三区| 欧美肥婆姓交大片| 91av国产精品| 国产精品国产三级国产普通话三级| 久久成人免费观看| 久久精品国产亚洲5555| 色综合五月天导航| 国产av无码专区亚洲av麻豆| 亚洲欧洲av在线| 一本岛在线视频| 国产精品视频一区二区三区四蜜臂| 久久久久日韩精品久久久男男| 亚洲无码久久久久久久| 亚洲国产经典视频| 欧美黑人又粗又大又爽免费| 免费看av成人| 国产成人短视频| 日本国产在线| 色哟哟国产精品免费观看| 大又大又粗又硬又爽少妇毛片| 影音先锋亚洲一区| 精品国产免费久久久久久尖叫| 国内在线免费视频| 精品成人一区二区三区| 日韩免费不卡视频| av一区二区久久| 妞干网在线视频观看| 日韩av系列| 日本亚洲欧美成人| 懂色av中文在线| 欧美日韩三级一区| 久久国产波多野结衣| 国产精品一区免费视频| 国产免费裸体视频| 精品五月天堂| 热久久免费国产视频| 黄色在线网站| 欧美日韩激情一区| 动漫性做爰视频| 高清不卡在线观看| 少妇av一区二区三区无码| 天天做夜夜做人人爱精品 | 国产精品久久久久7777| 精品视频在线你懂得| 国产成人精品午夜| 在线国产91| 欧美xxxxxxxxx| 国产精品男女视频| 欧美国产一区视频在线观看| 午夜视频在线观| 精品福利电影| 日本视频一区在线观看| 96sao精品免费视频观看| 欧美激情视频在线| 你懂的视频在线| 69堂国产成人免费视频| 日韩精品视频免费播放| 日本一区二区三区免费乱视频| 国产aⅴ爽av久久久久| 国内精品久久久久久久97牛牛 | 久久午夜免费视频| 欧美激情中文字幕一区二区| 精产国品一区二区三区| 国产欧美午夜| 这里只有精品66| 久久资源综合| 国产日韩欧美黄色| 狠狠操一区二区三区| 日韩在线免费高清视频| 欧美 日韩 人妻 高清 中文| 欧洲国内综合视频| 国产在线一二区| 国产精品欧美综合在线| 国产伦精品一区二区免费| 蜜臀91精品一区二区三区| 国产精品www在线观看| 日本一二区不卡| 国产一区精品视频| 91精品国产一区二区在线观看 | 国产成人久久婷婷精品流白浆| 欧美好骚综合网| 麻豆av一区二区三区久久| 国产精品久一| 国产97免费视| 啊啊啊久久久| 欧美激情视频给我| 黄色在线免费| 在线免费观看羞羞视频一区二区| 黄色av网站免费在线观看| 欧美日韩成人激情| 中文字幕精品无码一区二区| 一区二区欧美在线观看| 激情高潮到大叫狂喷水| 国产亚洲美州欧州综合国| 午夜免费福利影院| 国产精品一区二区果冻传媒| 最新天堂中文在线| 久久久成人网| 日本福利视频在线| 黄色亚洲免费| 屁屁影院ccyy国产第一页| 天天射成人网| 中国成人亚色综合网站| 久久神马影院| 亚洲成人一区二区三区| 久久99国内| 日本精品一区二区| 九九综合在线| 欧美日本韩国一区二区三区| 偷拍自拍亚洲色图| 久久这里精品国产99丫e6| 国产一区在线电影| 极品校花啪啪激情久久| 国产亚洲精品美女久久| 国内精品视频在线播放| 日韩欧美影院| 久久婷婷开心| 日韩激情啪啪| 日本在线观看一区| 欧美日韩国产高清电影| 色综合电影网| 日韩美女一区二区三区在线观看| 日韩一区二区三区高清| 清纯唯美日韩| 在线视频不卡一区二区三区| 久久久久久久久久久久久久| 久久免费视频2| 中文字幕一区二区三区在线视频| 黑人巨大国产9丨视频| 影音先锋日韩精品| 拔插拔插海外华人免费| 99在线精品免费视频九九视| 欧美aⅴ在线观看| 日韩黄色免费网站| www.com黄色片| 激情五月播播久久久精品| 天美一区二区三区| 成人av网址在线| 中文字幕人妻一区二区三区在线视频| 国产欧美一区二区三区鸳鸯浴| 欧美福利第一页| 亚洲天堂成人网| 久久久久久久久久99| 欧美性高潮床叫视频| 中文字幕一区二区久久人妻| 91精品欧美久久久久久动漫| 丁香六月色婷婷| 一本久久综合亚洲鲁鲁| 成人影院www在线观看| 久久久久久久久久婷婷| 中文字幕高清在线播放| 国产精品免费久久久久久| 国产情侣一区在线| 精品一区久久久久久| 日韩欧美高清在线播放| 男人日女人的bb| 美女国产一区| 99九九99九九九99九他书对| 丁香另类激情小说| 丁香花五月婷婷| 亚洲午夜私人影院| 中文字幕有码无码人妻av蜜桃| 欧美一级理论片| 久热av在线| 欧美另类xxx| 日韩成人亚洲| 国产一区二区久久久| 三区四区不卡| 欧美一级在线看| 国产精品一区二区x88av| 偷拍女澡堂一区二区三区| 1000精品久久久久久久久| 国产成人无码精品| 91精品国产一区二区三区蜜臀| 午夜激情小视频| 欧美乱人伦中文字幕在线| 欧美二三四区| 国产精品国产三级欧美二区| 日韩精品一区二区三区免费观看| 久久这里只有精品18| 麻豆国产91在线播放| 免费在线观看你懂的| 一区二区视频在线看| 亚洲视频一区在线播放| 亚洲精品按摩视频| 羞羞视频在线观看免费| 国产精品第100页| 日本亚洲不卡| 欧日韩免费视频| 国产九九视频一区二区三区| 日本人亚洲人jjzzjjz| 欧美日韩亚洲系列| 亚洲精品911| 精品久久国产精品| xxxxx.日韩| 欧美视频1区| 性欧美xxxx大乳国产app| av漫画在线观看| 亚洲线精品一区二区三区| 国产精品久久久久久免费免熟| 亚洲最新视频在线| 3d欧美精品动漫xxxx无尽| 九九九九精品九九九九| 在线看片日韩| 天天躁日日躁狠狠躁av| 一区二区高清视频在线观看| 国产富婆一级全黄大片| 久久夜色精品亚洲噜噜国产mv| 久久电影天堂| 一区国产精品| 精品无人码麻豆乱码1区2区| 青青青手机在线视频| 欧美精品三级日韩久久| 尤物网址在线观看| 成人a级免费视频| 日韩黄色大片网站| 日本黄色福利视频| 亚洲日本在线看| 99热这里只有精品99| 欧美老肥婆性猛交视频| 深夜激情久久| 国产黄色激情视频| 成人av在线电影| 国产专区第一页| 国产香蕉一区二区三区在线视频 | 一本久久综合亚洲鲁鲁五月天| 亚洲 另类 春色 国产| 欧美在线视频观看| 成人三级视频| 亚洲国产午夜精品| 亚洲国产日韩一区二区| 手机福利小视频在线播放| 日本成熟性欧美| 欧美综合一区| 五月六月丁香婷婷| 亚洲图片有声小说| 深夜影院在线观看| 国产精品视频yy9099| 性欧美欧美巨大69| 国产情侣久久久久aⅴ免费| 日韩欧美高清视频| 91porn在线观看| 91观看网站| 国产农村妇女精品一区二区| 亚洲一区 欧美| 欧美一级xxx| 老司机成人影院| 伊人色综合影院| 粉嫩aⅴ一区二区三区四区| 国产精品一区二区三区四| 尤物tv国产一区| 亚洲一二av| 免费国产成人av| 亚洲精品成人在线| 日本一本草久在线中文| 国产三级精品网站| 日韩一区二区久久| 精品在线观看一区| 亚洲精品成人网| 欧美高清影院| 免费国产a级片| 亚洲色图视频网| 青青久在线视频| 91成人免费看| 日韩高清欧美激情| 日本特黄一级片| 日韩在线免费观看视频| 亚洲桃色综合影院| 亚洲一级片av| 91国偷自产一区二区三区成为亚洲经典| 国产精品久久久久久福利| 欧美动漫一区二区| 懂色av一区二区夜夜嗨| 亚洲一区二区天堂|