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

www.久久东京| 国产三级在线播放| 日韩精品亚洲一区| 日韩在线观看免费| 天天综合网久久| 久久久久久国产精品免费无遮挡| 高清不卡在线观看av| 欧美一级电影免费在线观看| 五月婷婷婷婷婷| 亚洲免费一区三区| 在线视频中文字幕一区二区| 黄黄视频在线观看| 欧美拍拍视频| 国产麻豆91精品| 日本不卡免费高清视频| 中文字幕无码日韩专区免费| 日韩大胆成人| 欧美精品1区2区3区| 中文字幕无码精品亚洲35| 永久免费av在线| 99精品国产91久久久久久| 国产一区二区在线免费| 国产黄色免费观看| 围产精品久久久久久久| 日韩成人av在线播放| 一级片免费在线观看视频| 女厕盗摄一区二区三区| 亚洲精选视频免费看| 国产有色视频色综合| 国产男女无套免费网站| 三级久久三级久久久| 992tv在线成人免费观看| 亚洲一区电影在线观看| 欧美一区二区三区激情视频| 日韩亚洲欧美高清| 日本人视频jizz页码69| 国产免费拔擦拔擦8x高清在线人| 亚洲欧美激情插| 亚洲午夜精品久久| 国产一区二区三区不卡在线| 99久久99久久精品国产片果冻 | 另类小说视频一区二区| 91成人天堂久久成人| 久久久久久欧美精品se一二三四| 91麻豆国产自产在线观看亚洲| 亚洲人午夜色婷婷| 大黑人交xxx极品hd| 国产精品毛片av| 日韩精品在线网站| 久久6免费视频| 图片一区二区| 欧美精三区欧美精三区| 色www免费视频| 欧美日韩伦理一区二区| 欧洲亚洲国产日韩| 男女男精品视频站| 台湾成人免费视频| 欧美日韩日日夜夜| 男女视频一区二区三区| 欧美色片在线观看| 欧美日韩一区在线| 午夜精品久久久久久久99热影院| 韩日一区二区| 欧美日韩国产欧美日美国产精品| 久热精品在线播放| 亚洲二区av| 日韩一区二区在线观看视频 | 亚洲香蕉成人av网站在线观看 | av网站在线观看免费| 国产一区二三区好的| 亚洲精品免费网站| 精品国产亚洲AV| 成人免费电影视频| 久久久com| 国产精品秘入口| 国产精品久久久久久久久动漫 | 黄色网址在线免费| 亚洲综合图片区| 少妇人妻在线视频| 欧美黄色三级| 欧美高清视频在线高清观看mv色露露十八| 欧美一级xxxx| japanese色系久久精品| 国产丝袜一区二区| 国产免费嫩草影院| 国内精品久久久久久久97牛牛 | 国产黄色免费视频| 捆绑调教美女网站视频一区| 亚洲free性xxxx护士白浆| 日韩中文字幕免费观看| 中文字幕欧美三区| 人人妻人人澡人人爽欧美一区| 日本不卡1234视频| 欧美精品在线视频| 91丝袜在线观看| 久久国产小视频| 午夜精品福利电影| 日韩xxx视频| 岛国精品一区二区| 翔田千里亚洲一二三区| 金瓶狂野欧美性猛交xxxx | 欧美日韩高清区| 国内自拍视频在线播放| 精品一区二区三区免费播放| 国产免费一区| 黄色网在线看| 色婷婷av一区| 日本xxxx免费| 久久国产电影| 欧美一级视频在线观看| 99久久精品国产一区色| 国产欧美日韩一区二区三区在线观看| 男女裸体影院高潮| 国产成人免费| 日韩成人av在线播放| 真实国产乱子伦对白在线| 首页综合国产亚洲丝袜| αv一区二区三区| 一级毛片视频在线观看| 精品女同一区二区三区在线播放| www.精品在线| 日韩激情毛片| 国产+人+亚洲| 国产麻豆免费视频| 国产精品网友自拍| 欧美激情精品久久久久久小说| **爰片久久毛片| 麻豆乱码国产一区二区三区| 免费又黄又爽又猛大片午夜| 99久久国产综合精品色伊| www.男人天堂网| 国产精品视频一区视频二区| 一本色道久久综合亚洲精品小说| 91精品国产乱码在线观看| 国产成人精品亚洲午夜麻豆| 色呦呦网站入口| av成人亚洲| 国产亚洲精品久久久久久777| 亚洲视频免费播放| www.成人网.com| 欧美国产日韩激情| 中文字幕日韩在线| 欧美黄色片视频| 99在线观看精品视频| 国产精品家庭影院| 精品亚洲精品福利线在观看| 欧美黄色免费影院| 欧美激情影院| 69久久夜色精品国产7777| 刘亦菲久久免费一区二区| 亚洲一区二区三区中文字幕在线| 欧美性猛交xx| 欧美三级网页| 国产伦精品一区二区| cao在线视频| 日韩风俗一区 二区| 国产成人亚洲精品自产在线 | 亚洲黄色大片| 国产伦精品一区二区三区高清版| 久草在线资源站资源站| 亚洲国产欧美日韩精品| 波多野结衣视频网站| 2020国产精品自拍| 玩弄japan白嫩少妇hd| 精品免费在线| 国产在线精品成人一区二区三区| av在线导航| 亚洲国产精品资源| 国产91国语对白在线| 国产精品美女久久久久久久网站| 极品粉嫩美女露脸啪啪| 欧美精品99| 久久视频在线观看中文字幕| 成人涩涩视频| 欧美老肥婆性猛交视频| 天天操天天插天天射| 色综合久久88色综合天天 | 一区二区三区在线视频观看| 韩国三级在线看| 日韩视频久久| 神马一区二区影院| 国产精品美女久久久久| 国内外成人免费激情在线视频网站| 四虎精品成人影院观看地址| 欧美探花视频资源| 破处女黄色一级片| 91麻豆国产自产在线观看| 欧美三级午夜理伦三级富婆| 欧美a级片网站| 久久riav二区三区| 欧美成人高清视频在线观看| 久久国产精品亚洲| 头脑特工队2免费完整版在线观看| 91国偷自产一区二区三区成为亚洲经典 | 亚洲欧洲在线播放| 91精品国自产| 黄色成人av网| 国产视频精品免费| 不卡高清视频专区| 性chinese极品按摩| 欧美激情日韩| 水蜜桃一区二区| 操欧美女人视频| 国产精品久久视频| av影院在线| 最近更新的2019中文字幕| 亚洲春色一区二区三区| 欧美性色aⅴ视频一区日韩精品| 91插插插插插插| 久久久久国产精品厨房| 野花视频免费在线观看| 日本不卡视频在线观看| 97超碰国产精品| 99久久激情| 欧美激情专区| 加勒比色老久久爱综合网| 成人免费看片视频| yy6080久久伦理一区二区| 91精品国产99| 免费在线看电影| www.xxxx欧美| 狠狠色伊人亚洲综合网站l| 精品国产区一区| 99精品国产99久久久久久97| 91黄色免费网站| 男人天堂2024| 亚洲成人免费影院| 精品久久久影院| 日韩精品乱码久久久久久| 国产精品视频九色porn| 性欧美丰满熟妇xxxx性仙踪林| 国产91在线观看| 91精品999| 美女视频免费一区| 我看黄色一级片| 日韩中文字幕av电影| www.com毛片| aa亚洲婷婷| 日韩精品 欧美| 影音先锋亚洲电影| 国产 欧美 日韩 一区| 欧美黄色一区| 精品嫩模一区二区三区| 91精品国产麻豆国产在线观看 | 少妇精品无码一区二区三区| 国产精品一区免费在线观看| 中文字幕剧情在线观看| 国产一区二区三区综合| 亚洲一级片av| 国产美女在线精品| 国产精品19p| 岛国精品一区二区| 中文字幕天堂网| 波多野结衣亚洲一区| 中文字幕免费高清视频| 91亚洲精品一区二区乱码| 人妻熟女aⅴ一区二区三区汇编| 97超碰欧美中文字幕| 插我舔内射18免费视频| 2023国产精品自拍| 一区二区三区在线观看免费视频| 国产欧美视频一区二区三区| 国产午夜精品理论片在线| 亚洲欧美日韩中文播放| 久久午夜无码鲁丝片午夜精品| 亚洲午夜久久久久中文字幕久| 九九热国产视频| 欧美日韩一区二区三区在线免费观看| 欧美国产成人精品一区二区三区| 欧美在线观看视频一区二区 | 欧美另类视频在线观看| 亚洲电影一区二区三区| 69视频免费在线观看| 欧美性欧美巨大黑白大战| 国产精品欧美久久久久天天影视| 日韩欧美在线不卡| 日本一本草久在线中文| 在线精品高清中文字幕| 18+激情视频在线| 97欧美精品一区二区三区| 成人看片网页| 91九色露脸| 亚洲人成网77777色在线播放| 日韩欧美亚洲日产国产| 亚洲一本二本| 成年人观看网站| 九色综合狠狠综合久久| 成人在线视频免费播放| 中文字幕免费观看一区| 欧美人妻一区二区| 色天使色偷偷av一区二区| 精品久久久久久亚洲综合网站| 亚洲精品国偷自产在线99热| av中文资源在线| 久久免费精品视频| 99久久精品一区二区成人| 俄罗斯精品一区二区三区| 伊人久久大香线蕉| 日韩在线视频在线| 日本亚洲视频在线| 国产一卡二卡三卡四卡| 国产精品天干天干在观线| 日本三级片在线观看| 欧美午夜一区二区三区免费大片| 欧性猛交ⅹxxx乱大交| 日韩在线免费视频| 国模冰冰炮一区二区| 96精品久久久久中文字幕| 国产一区不卡| 性欧美大战久久久久久久| 国产一区在线不卡| 久久狠狠久久综合桃花| 蜜桃视频在线观看www| 亚洲欧美国产一区二区三区| 最新黄网在线观看| 国产精品免费视频xxxx| 免费萌白酱国产一区二区三区| 在线看无码的免费网站| 天堂久久一区二区三区| 一级少妇精品久久久久久久| 国产精品久久久久久久岛一牛影视| 天天操天天操天天操天天| 欧美大片在线观看| 国产精品一区二区三区视频网站| 国产成人激情视频| 欧美韩一区二区| 国产一线二线三线女| 国产精品99久| 日韩精品123区| 欧美手机在线视频| 国产精品免费观看| 国产成人精品优优av| 午夜精品福利影院| 蜜桃传媒一区二区三区| 成人妖精视频yjsp地址| 久久激情免费视频| 日韩色视频在线观看| a级网站在线播放| 成人免费黄色网| 久久久久久久久丰满| 国产成年人视频网站| 国产精品毛片久久久久久久| 日本熟妇一区二区三区| 亚洲视频在线观看免费| 天天综合网站| 三级三级久久三级久久18| 日韩成人免费看| 五月天精品在线| 精品视频色一区| 毛片在线播放a| 91深夜福利视频| 一区二区三区国产精华| 欧美69精品久久久久久不卡| 亚洲最新视频在线播放| 日本波多野结衣在线| 4444欧美成人kkkk| 国内精品久久久久久久影视简单| 亚洲精品中文字幕无码蜜桃| 久久综合色播五月| 日本丰满少妇做爰爽爽| 最近2019中文字幕在线高清| 91成人在线网站| 黄色一级大片免费| 白白色 亚洲乱淫| av一级在线观看| 日韩性生活视频| 日韩精品一级| 免费看黄在线看| 久久久亚洲午夜电影| 一区二区三区在线免费观看视频| 最新91在线视频| 日韩精品免费视频一区二区三区| 欧美一区二区三区综合| 果冻天美麻豆一区二区国产| 国产精品1234| 国产精品传媒精东影业在线| 日韩大尺度视频| 欧美日韩在线影院| 一本一道波多野毛片中文在线| 99在线观看| 美女诱惑黄网站一区| 少妇愉情理伦三级| 欧美刺激午夜性久久久久久久| а√天堂8资源在线| 亚洲国产精品视频一区| 国产精品综合在线视频| 天天综合网久久综合网| 久久精品国产96久久久香蕉| 久久午夜影院| 天天干天天综合| 午夜精品福利视频网站| 日韩成人影视| 精品无人区一区二区三区 | 日韩av快播网址| 国产精品久久久久久麻豆一区软件| 91精品国产高清91久久久久久| 色欲综合视频天天天| 欧美日韩在线视频免费观看| 日本精品一区二区三区不卡无字幕 | 国语自产精品视频在线看|