亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

PyTorch協(xié)同過濾實(shí)戰(zhàn):MovieLens評分預(yù)測與Embedding實(shí)現(xiàn)

PyTorch協(xié)同過濾實(shí)戰(zhàn):MovieLens評分預(yù)測與Embedding實(shí)現(xiàn) 簡介一份面向推薦系統(tǒng)初學(xué)者與PyTorch使用者的實(shí)戰(zhàn)型PDF文檔以MovieLens公開數(shù)據(jù)集為載體系統(tǒng)講解協(xié)同過濾算法的完整實(shí)現(xiàn)流程。文檔共29頁壓縮包內(nèi)僅含1個PDF文件約2.02MB輕量便攜。內(nèi)容從推薦系統(tǒng)基礎(chǔ)與常見類型切入依次介紹基于用戶和基于物品的協(xié)同過濾原理并結(jié)合PyTorch動態(tài)計(jì)算圖特點(diǎn)給出張量操作、自動求導(dǎo)、模型定義、損失函數(shù)與優(yōu)化器選擇、訓(xùn)練循環(huán)及RMSE、MAE等評估指標(biāo)的詳細(xì)實(shí)現(xiàn)步驟。全文支持目錄跳轉(zhuǎn)和左側(cè)大綱定位便于按章節(jié)反復(fù)查閱也可作為課程設(shè)計(jì)或入門實(shí)踐參考。目前已有70人學(xué)習(xí)下載對希望快速上手推薦系統(tǒng)項(xiàng)目并理解算法細(xì)節(jié)的讀者來說是一份結(jié)構(gòu)清晰、可直接對照練習(xí)的實(shí)用資料。1. 協(xié)同過濾算法在MovieLens上的PyTorch實(shí)現(xiàn)為什么要自己寫一遍在推薦系統(tǒng)面試和課程設(shè)計(jì)里標(biāo)題這個組合幾乎是標(biāo)配任務(wù)把 MovieLens 的評分表拆開用 PyTorch 寫一個協(xié)同過濾模型讓用戶向量和物品向量的內(nèi)積去擬合真實(shí)評分。它把推薦系統(tǒng)最核心的五個環(huán)節(jié)——數(shù)據(jù)、模型、訓(xùn)練、評估、調(diào)參——壓縮到一個 CPU 筆記本就能跑完的最小閉環(huán)里。適合剛學(xué)完 PyTorch 教程卻不知道做什么項(xiàng)目的人也適合手推過矩陣分解公式、但沒寫過完整訓(xùn)練循環(huán)的候選人和學(xué)生。跑通這個項(xiàng)目你會發(fā)現(xiàn)Embedding、隱因子和評分預(yù)測是同一件事所謂協(xié)同過濾就是把用戶和物品各學(xué)一條向量讓它們的內(nèi)積盡量逼近真實(shí)評分同時用戶偏置和物品偏置解釋掉大家打分手松手緊的問題。這個認(rèn)知比背公式有用得多。2. 準(zhǔn)備MovieLens數(shù)據(jù)和PyTorch環(huán)境從原始評分表到可訓(xùn)練的DataLoader在這個實(shí)現(xiàn)鏈路上數(shù)據(jù)集和環(huán)境準(zhǔn)備往往被教程一筆帶過但實(shí)際返工大多出在這一步索引對不上、測試集里出現(xiàn)訓(xùn)練集沒見過的用戶、環(huán)境版本不對導(dǎo)致裝了 GPU 版卻跑不起來。我一般先把數(shù)據(jù)看清楚再搭環(huán)境最后寫 Dataset順序反了容易越改越亂。2.1 MovieLens 100K到底有哪些文件先搞懂u.data和u.itemMovieLens 100K 是 GroupLens 發(fā)布的公開學(xué)術(shù)數(shù)據(jù)集解壓后是一個 ml-100k 目錄。最核心的文件是u.data里面是制表符分隔的評分記錄四列分別是用戶 ID、電影 ID、1 到 5 的整數(shù)評分、UNIX 時間戳。整個數(shù)據(jù)集包含 943 個用戶對 1682 部電影的 10 萬條評分稀疏度接近 93.7%。也就是說絕大多數(shù)用戶和電影之間沒有記錄協(xié)同過濾要解決的就是從這里挑出用戶可能會看的電影。同目錄下的u.item負(fù)責(zé)電影信息映射比如電影 ID 對應(yīng)什么標(biāo)題、屬于什么類型u.user是用戶人口屬性。如果只是復(fù)現(xiàn)評分預(yù)測這兩個文件不是必需但做冷啟動分析和結(jié)果解釋時會用到。另外ua.base和ua.test是官方切分好的訓(xùn)練測試集訓(xùn)練集 8 萬、測試集 2 萬新手直接用這兩個文件能省掉自己切分帶來的偏差問題。需要強(qiáng)調(diào)一點(diǎn)這個數(shù)據(jù)集的標(biāo)簽是顯式評分評分缺省不代表用戶討厭只是沒看過。不要把沒評分的條目當(dāng)負(fù)樣本填 0 去訓(xùn)練這個認(rèn)知會直接影響后面 loss 函數(shù)的選擇。2.2 用Anaconda配置PyTorch環(huán)境CPU版就能跑不必要為了這個題上GPU很多人在 PyTorch 安裝這一步糾結(jié)半天實(shí)際上標(biāo)題里這個項(xiàng)目 CPU 完全能跑。我常用的方式是先用 Anaconda 或 Miniconda 建一個獨(dú)立的 Python 3.10 環(huán)境再按 PyTorch 官網(wǎng)生成的命令安裝對應(yīng)版本。官網(wǎng)會提供 Python 和 PyTorch 版本的對應(yīng)關(guān)系不用手動去記conda 會幫你解析依賴。conda create -n rec python3.10 -y conda activate rec pip install torch torchvision --index-url https://download.pytorch.org/whl/cpu這段命令的第三行裝的是 CPU 版 PyTorch不需要 NVIDIA 驅(qū)動也不需要 CUDA。如果你已經(jīng)裝過 CUDA 版 PyTorch那就正常用如果手頭是 AMD 顯卡、人在 WSL 里想折騰 7900XTX那需要的是 ROCm 版 PyTorch配置成本遠(yuǎn)高于這個項(xiàng)目的收益。所以我的建議一直是用 Anaconda 先把 CPU 版跑通確認(rèn)數(shù)據(jù)、模型、評估鏈路都沒問題再考慮是否值得上 GPU。安裝 PyTorch 不是必須配有 GPU這個體量的數(shù)據(jù)用 CPU 訓(xùn)練反而省心。裝好之后用幾行代碼驗(yàn)證環(huán)境import torch print(torch.__version__) a torch.randn(100, 32) b torch.randn(32, 50) print((a b).shape)這段代碼的邏輯很簡單能打印出版本號、矩陣乘能正常出 shape說明 PyTorch 基礎(chǔ)框架安裝成功。CPU 版在 100K 數(shù)據(jù)上訓(xùn)練一個 epoch 一般是秒級到十幾秒瓶頸不在算力而在你寫的索引轉(zhuǎn)換和數(shù)據(jù)加載是否合理。2.3 定義RatingDataset把評分表映射成Embedding能吃的索引寫模型之前必須先做一件事把u.data里的用戶 ID 和電影 ID 重新編碼成從 0 開始的連續(xù)整數(shù)。原因在于nn.Embedding的輸入索引必須在[0, size)區(qū)間內(nèi)。MovieLens 100K 的用戶 ID 恰好是 1 到 943 連續(xù)物品是 1 到 1682 連續(xù)直接減 1 也能用但一旦換數(shù)據(jù)集ID 往往不連續(xù)或有缺失所以統(tǒng)一用 pandas 的 category 編碼最保險import pandas as pd df pd.read_csv(ml-100k/u.data, sep\t, names[uid, iid, rating, ts]) df[uid_idx] df[uid].astype(category).cat.codes df[iid_idx] df[iid].astype(category).cat.codes num_users df[uid_idx].nunique() num_items df[iid_idx].nunique()這里有個順序上的坑先對全量數(shù)據(jù)做 category 編碼再做訓(xùn)練測試切分。如果先切分再編碼測試集里可能遇到訓(xùn)練集沒有的用戶 ID那部分樣本在 predict 時根本查不到 Embedding 行程序要么報(bào)錯要么悄悄出錯。接著定義一個標(biāo)準(zhǔn) PyTorch Dataset把每一行評分變成三元組import torch from torch.utils.data import Dataset, DataLoader class RatingDataset(Dataset): def __init__(self, df): self.users torch.tensor(df[uid_idx].values, dtypetorch.long) self.items torch.tensor(df[iid_idx].values, dtypetorch.long) self.ratings torch.tensor(df[rating].values, dtypetorch.float32) def __len__(self): return len(self.users) def __getitem__(self, idx): return self.users[idx], self.items[idx], self.ratings[idx]這個類的關(guān)鍵點(diǎn)在于 dtype。用戶索引和物品索引必須用 long因?yàn)閚n.Embedding只接受torch.long類型評分用 float32因?yàn)楹罄m(xù) MSE 損失要求預(yù)測和標(biāo)簽同類型。DataLoader 在取數(shù)據(jù)時默認(rèn)會做 stack把一組三元組拼成 batch所以模型看到的是三個張量用戶 ID 批、物品 ID 批、評分批。切分和裝載我一般這樣寫from sklearn.model_selection import train_test_split train_df, test_df train_test_split( df, test_size0.2, random_state42 ) train_ds RatingDataset(train_df) test_ds RatingDataset(test_df) train_loader DataLoader(train_ds, batch_size256, shuffleTrue) test_loader DataLoader(test_ds, batch_size1024, shuffleFalse)這樣得到的數(shù)據(jù)流是(users: (256,), items: (256,), ratings: (256,))batch_size256 在 CPU 上訓(xùn)練效率很高。random_state 固定成 42保證每次重跑結(jié)果一致這是后面調(diào)參對比的前提。如果你希望更接近官方協(xié)議直接用ua.base和ua.test零切分代碼也能避免自己切分帶來的評估糾紛。提示如果訓(xùn)練數(shù)據(jù)量變大比如換到 ml-1m記得給 DataLoader 加num_workers4和pin_memoryTrue否則數(shù)據(jù)加載會拖慢訓(xùn)練。3. 用PyTorch實(shí)現(xiàn)協(xié)同過濾模型從Embedding點(diǎn)積到帶偏置的MF模型這一章是標(biāo)題的核心。協(xié)同過濾在這個標(biāo)題里指的就是矩陣分解MF把用戶-物品評分矩陣近似分解成用戶隱因子矩陣和物品隱因子矩陣的乘積。PyTorch 里實(shí)現(xiàn)起來非常直白nn.Embedding本身就是一張可學(xué)習(xí)的查找表行號就是索引。3.1 最小可行模型兩個nn.Embedding求內(nèi)積先寫一個不摻任何額外花活的版本把框架立起來import torch.nn as nn class MatrixFactorization(nn.Module): def __init__(self, num_users, num_items, emb_dim32): super().__init__() self.user_emb nn.Embedding(num_users, emb_dim) self.item_emb nn.Embedding(num_items, emb_dim) def forward(self, users, items): u_vec self.user_emb(users) # (batch, emb_dim) i_vec self.item_emb(items) # (batch, emb_dim) return (u_vec * i_vec).sum(dim1) # (batch,)forward 里做的事對應(yīng)公式R_pred P_u · Q_i^T。u_vec和i_vec是同一個 batch 里每個用戶的隱向量和每個物品的隱向量逐元素相乘再求和得到的就是預(yù)測評分。embedding 維度 emb_dim 是隱因子個數(shù)通常取 16 到 64MovieLens 100K 這種整理過的評分矩陣32 作為起點(diǎn)最穩(wěn)妥。矩陣分解怎么理解每個用戶被壓成一個 32 維向量每個物品也是 32 維。向量的每一維不像動作片得分那樣有顯式含義而是模型自己學(xué)出來的潛語義。兩個向量方向越一致內(nèi)積越大預(yù)測評分越高。這就是協(xié)同過濾里最核心的隱語義模型思想也是面試官最愛問的SVD 和 MF 的區(qū)別的落腳點(diǎn)。3.2 加入用戶偏置、物品偏置和全局偏置評分預(yù)測更貼合現(xiàn)實(shí)最小模型有個明顯短板它假設(shè)評分只由用戶和物品的向量交互決定但人打分習(xí)慣差異很大有人給啥都是 4 星有人給啥都是 2 星。用向量去擬合這種習(xí)慣性偏差既浪費(fèi)表達(dá)力又容易把向量學(xué)歪。所以工程上的 MF 幾乎都會加三項(xiàng)偏置全局平均分、用戶偏置、物品偏置。用戶偏置回答這個用戶比全局平均多打了幾分物品偏置回答這部電影比全局平均高幾分剩下解釋不了的部分才交給隱向量交互。帶偏置的模型代碼class BiasMF(nn.Module): def __init__(self, num_users, num_items, emb_dim32): super().__init__() self.user_emb nn.Embedding(num_users, emb_dim) self.item_emb nn.Embedding(num_items, emb_dim) self.user_bias nn.Embedding(num_users, 1) self.item_bias nn.Embedding(num_items, 1) self.global_bias nn.Parameter(torch.zeros(1)) def forward(self, users, items): u_vec self.user_emb(users) i_vec self.item_emb(items) pred (u_vec * i_vec).sum(dim1) pred pred self.user_bias(users).squeeze(1) pred pred self.item_bias(items).squeeze(1) pred pred self.global_bias return predsqueeze(1)是把形狀為(batch, 1)的偏置壓成(batch,)方便與 pred 直接相加。global_bias是一個長度為 1 的可學(xué)習(xí)參數(shù)初始化成 0訓(xùn)練中會自動逼近訓(xùn)練集的評分均值。注意返回的 pred 是(batch,)而不是(batch, 1)后面 MSE 損失對這兩種形狀都能處理但建議保持和 rating 張量完全一致排查問題時少一個維度隱患。加了偏置之后RMSE 通常比純點(diǎn)積模型好 0.05 到 0.1而且某個用戶普遍打高分這類規(guī)律不再占用隱向量容量。這也是為什么工業(yè)界基礎(chǔ) MF 實(shí)現(xiàn)幾乎都帶偏置不帶反而會讓模型把簡單規(guī)律和復(fù)雜偏好混在一個空間里學(xué)。3.3 Embedding的初始化和正則化默認(rèn)參數(shù)會讓loss一開始就飛直接用nn.Embedding不加任何處理模型能跑但 loss 曲線會很難看。nn.Embedding默認(rèn)按標(biāo)準(zhǔn)正態(tài)分布 N(0,1) 初始化當(dāng) emb_dim32 時兩個隨機(jī)向量的內(nèi)積期望能達(dá)到幾十而評分范圍只有 1 到 5。內(nèi)積初始就比目標(biāo)大一個數(shù)量級早期梯度會拉得很猛表現(xiàn)為 train_loss 忽高忽低。解決辦法是手動把 Embedding 的初始化方差壓小比如 std0.1同時配合 weight_decay 做 L2 正則def init_embedding(m): if isinstance(m, nn.Embedding): nn.init.normal_(m.weight, mean0.0, std0.1) model BiasMF(num_users, num_items, emb_dim32) model.apply(init_embedding) optimizer torch.optim.Adam( model.parameters(), lr0.01, weight_decay1e-5 )std0.1 意味著兩個初始向量內(nèi)積的期望大概在 0.1 左右落在評分區(qū)間附近訓(xùn)練一開始 loss 不會爆炸。weight_decay1e-5 讓 Embedding 權(quán)重向 0 收縮避免模型把個別用戶的一兩個評分背下來。對 100K 數(shù)據(jù)集、約 8.4 萬參數(shù)量的模型來說這個正則強(qiáng)度足夠如果觀察到驗(yàn)證 loss 反彈可以把 weight_decay 提到 1e-4。embedding 維度本身也是正則手段維度越小容量越小。我調(diào)參時習(xí)慣從 8 到 64 逐檔試每次只動維度記錄 train 和 test 的 RMSE而不是同時改學(xué)習(xí)率和 batch size。手動初始化 std 這個細(xì)節(jié)很多人忽略但它對訓(xùn)練穩(wěn)定性影響很大尤其是你換用更大 emb_dim 時std 不跟著降loss 大概率飄。提示model.apply(init_embedding)會把三個 Embedding 表都初始化。如果你介意偏置表也從正態(tài)分布起跳可以在 apply 之后單獨(dú)把user_bias.item_bias再置零實(shí)際影響很小。4. 訓(xùn)練與評估把MSE、RMSE和Top-K召回分別算清楚模型寫好后訓(xùn)練循環(huán)和評估方式?jīng)Q定了你看到的結(jié)果是否有說服力。很多教程只貼一個 train 函數(shù)然后說loss 降了但推薦系統(tǒng)光看 loss 不夠線上真正關(guān)心的是推薦頭部有沒有命中用戶真實(shí)想看的物品。這一章把訓(xùn)練循環(huán)和最常用的兩類評估指標(biāo)都說清楚。4.1 訓(xùn)練循環(huán)的固定寫法MSELoss配合Adam監(jiān)控驗(yàn)證集訓(xùn)練循環(huán)是推薦系統(tǒng)項(xiàng)目里最模板化的代碼差異只在數(shù)據(jù)加載和模型 forward。我通常把單 epoch 訓(xùn)練寫成獨(dú)立函數(shù)方便多次調(diào)用def train_one_epoch(model, loader, optimizer, criterion): model.train() total_loss 0.0 for users, items, ratings in loader: optimizer.zero_grad() pred model(users, items) loss criterion(pred, ratings) loss.backward() optimizer.step() total_loss loss.item() * len(ratings) return total_loss / len(loader.dataset) model BiasMF(num_users, num_items, emb_dim32) init_embedding(model) criterion nn.MSELoss() optimizer torch.optim.Adam(model.parameters(), lr0.01, weight_decay1e-5) for epoch in range(20): train_loss train_one_epoch(model, train_loader, optimizer, criterion) print(fepoch{epoch:02d} train_loss{train_loss:.4f})為什么用 MSELoss評分預(yù)測是回歸任務(wù)MSE 對預(yù)測偏差做平方懲罰大偏差被放大梯度更平穩(wěn)。使用 Adam 時lr0.01 在 100K 規(guī)模上是合適的起點(diǎn)如果訓(xùn)練 loss 來回抖動降到 0.005如果一直不降查數(shù)據(jù)編碼或 Embedding 初始化是否生效。這里有個容易忽略的細(xì)節(jié)total_loss loss.item() * len(ratings)。loss.item()是當(dāng)前 batch 的平均損失乘上 batch 里樣本數(shù)再累加最后除以整個數(shù)據(jù)集樣本數(shù)才得到 epoch 級別的平均 loss。如果直接對每個 batch 的 loss.item() 做算術(shù)平均結(jié)果會被小 batch 的權(quán)重拉偏。訓(xùn)練中真正要盯的不是 train_loss而是驗(yàn)證集上的 RMSE。我習(xí)慣每兩個 epoch 在test_loader上跑一次評估連續(xù)三輪驗(yàn)證 RMSE 不降或者回升就保存當(dāng)前模型或直接停止。這是最簡單有效的防過擬合手段比任何花哨的正則都實(shí)用。4.2 評估指標(biāo)RMSE之外按用戶算Top-K命中率模型訓(xùn)練完之后不同指標(biāo)回答的問題不同。RMSE 衡量預(yù)測分?jǐn)?shù)和真實(shí)分?jǐn)?shù)的平均偏差MAE 是同樣的偏差但不用平方大誤差懲罰小一些。而 Top-K 召回或命中率看的是用戶真實(shí)看過的物品有多少出現(xiàn)在模型給出的前 K 個推薦里更貼近業(yè)務(wù)目標(biāo)。如果只報(bào) RMSE你要知道它與排序質(zhì)量并不完全一致一個 RMSE 更低的模型不一定在 Top-K 推薦里表現(xiàn)更好。因?yàn)?Top-K 只關(guān)心頭部順序?qū)︻A(yù)測絕對誤差不那么敏感。在 MovieLens 100K 上一個常見且可復(fù)現(xiàn)的 Top-K 評估是對每個測試用戶把所有未與該用戶交互過的物品打一遍分取分?jǐn)?shù)最高的 K 個看里面命中了多少測試集里該用戶真正看過的物品。代碼實(shí)現(xiàn)如下import numpy as np def evaluate_hit(model, train_df, test_df, item_ids, k10): model.eval() hits, total 0, 0 item_ids_np item_ids.cpu().numpy() with torch.no_grad(): for uid, group in test_df.groupby(uid_idx): seen set(train_df[train_df[uid_idx] uid][iid_idx].values) candidates [i for i in item_ids_np if i not in seen] if not candidates: continue uid_tensor torch.full((len(candidates),), uid, dtypetorch.long) cand_tensor torch.tensor(candidates, dtypetorch.long) scores model(uid_tensor, cand_tensor).cpu().numpy() top_k candidates[np.argsort(scores)[::-1][:k]] hits len(set(top_k) set(group[iid_idx].values)) total 1 return hits / max(total, 1)調(diào)用前需要準(zhǔn)備好全量物品 ID 張量item_ids torch.tensor(df[iid_idx].unique(), dtypetorch.long) hit_rate evaluate_hit(model, train_df, test_df, item_ids, k10)這段評估代碼有幾個關(guān)鍵點(diǎn)。seen是訓(xùn)練集中該用戶交互過的物品候選集里必須排除不然模型記住了訓(xùn)練集里已經(jīng)看過的電影Top-K 命中會虛高。total是參與評估的測試用戶數(shù)返回值是平均每個用戶前 10 個推薦里有多少個真實(shí)物品。它不要求你預(yù)測出用戶看過的所有物品只關(guān)心推薦頭部有沒有撞上真實(shí)行為。在 100K 規(guī)模下943 個用戶、每個用戶給 1682 個物品打分一次全量評估只要幾秒到十幾秒。如果日后換到 ml-1m這個寫法會太慢屆時的常見做法是負(fù)采樣給每個用戶隨機(jī)抽 100 到 150 個未交互物品加上真實(shí)測試物品組成候選集打分速度和內(nèi)存都能接受。4.3 一組能復(fù)現(xiàn)的默認(rèn)參數(shù)和結(jié)果參考以下是我在這個項(xiàng)目上常用的起始配置按這個跑能穩(wěn)定出一個合理基線參數(shù)建議值調(diào)參方向emb_dim328-64 逐檔試lr0.01抖動時降到 0.005batch_size256太大收斂慢太小噪聲大weight_decay1e-5過擬合時提高到 1e-4epochs20-40配合早停損失函數(shù)MSELoss預(yù)測評分用 MSE用 BiasMF 在 100K 隨機(jī)切分 20% 測試集上驗(yàn)證 RMSE 大約在 0.95 到 1.05 之間MAE 在 0.74 到 0.78 左右。如果只預(yù)測全局均值RMSE 約 1.13 上下所以 0.95-1.0 的 RMSE 說明模型學(xué)到了明顯信號但離完美還很遠(yuǎn)。網(wǎng)上有人曬 0.85 的 RMSE多半用了更復(fù)雜的 SVD 變體、更長的訓(xùn)練周期或者按用戶切分的評估方式數(shù)字之間不一定能直接橫向?qū)Ρ?。到這里你已經(jīng)有了數(shù)據(jù)、模型、訓(xùn)練和評估的完整鏈路。下一章是更值錢的哪些細(xì)節(jié)會讓模型悄悄翻車。5. PyTorch協(xié)同過濾避坑指南五個常見的翻車細(xì)節(jié)這一章把復(fù)現(xiàn)類似項(xiàng)目時最常見的問題整理成五條每條按現(xiàn)象、原因、解決來寫。踩過這些坑之后再去調(diào)參、展示結(jié)果會從容很多。5.1 索引錯位DataFrame里的ID不等于Embedding的索引現(xiàn)象訓(xùn)練時偶爾報(bào) IndexError或者模型評估結(jié)果完全反常。原因u.data里的用戶 ID 從 1 開始物品 ID 也是從 1 開始而nn.Embedding的輸入索引要從 0 開始。如果你直接拿原始 ID 喂給模型num_users943合法索引是 0 到 942用戶 ID 等于 943 的那條樣本就會越界。換到別的數(shù)據(jù)集更可能出現(xiàn)物品 ID 不連續(xù)、最大 ID 超過 Embedding size 的情況。解決在讀取數(shù)據(jù)后用astype(category).cat.codes把原始 ID 重編碼成 0 到 N-1 的整數(shù)而且要在全量數(shù)據(jù)上先編碼再切分。模型里所有 Embedding 的num_users和num_items都取編碼后的nunique()。這條做對了能避免一半以上的報(bào)錯。5.2 隨機(jī)切分造成的光環(huán)你的RMSE可能虛低現(xiàn)象同一份代碼隨機(jī)切分測試集下 RMSE 很漂亮換成官方ua.base/ua.test后 RMSE 漲了不少。原因隨機(jī)切分允許同一個用戶、同一部電影的評分同時出現(xiàn)在訓(xùn)練集和測試集模型在 train 階段見過這個用戶和這部電影的偏置預(yù)測自然占便宜?,F(xiàn)實(shí)中你要推薦的是用戶沒看過的電影所以隨機(jī)切分會把測試難度做小也讓不同實(shí)現(xiàn)之間的對比失去公平性。解決用官方切分或者至少按用戶劃分整個用戶的所有評分要么在訓(xùn)練集要么在測試集。如果是跟時間排序有關(guān)的場景按ts時間戳劃分更貼近真實(shí)線上。作為課程項(xiàng)目隨機(jī)切分也夠用但匯報(bào)結(jié)果時務(wù)必說明切分方式否則你的 RMSE 和別人的不具可比性。5.3 過擬合訓(xùn)練loss一直降驗(yàn)證loss卻開始反彈現(xiàn)象訓(xùn)練集 RMSE 降到 0.7 以下驗(yàn)證 RMSE 先降到 0.96 又開始往 1.05 走。原因模型參數(shù)主要來自 Embedding 表數(shù)十萬級參數(shù)面對 8 萬級訓(xùn)練樣本完全有能力記住個別評分的噪聲。一開始 train_loss 下降得快因?yàn)槟P驮跀M合訓(xùn)練分布隨后驗(yàn)證集不再受益因?yàn)槟P烷_始背題目。解決第一優(yōu)先加 weight_decay從 1e-5 調(diào)到 1e-4第二使用早停每兩個 epoch 檢查驗(yàn)證 RMSE連續(xù)三輪沒有改善就停止第三降低 emb_dim讓隱因子從 32 降到 16減少容量。推薦做法是三個手段都留一點(diǎn)不要靠一個參數(shù)硬扛。5.4 把評分缺省當(dāng)負(fù)樣本這是顯式反饋任務(wù)的典型錯位現(xiàn)象為了提高 Top-K 指標(biāo)把用戶沒評分的物品全部當(dāng)作負(fù)樣本用 0 標(biāo)簽或 Binary Cross Entropy 訓(xùn)練結(jié)果 RMSE 和 MAE 完全沒法看。原因MovieLens 的缺省值不代表用戶討厭。用戶沒看過這部電影和用戶看了不喜歡是兩個完全不同的信號。顯式評分任務(wù)應(yīng)該回歸 1 到 5 的評分把它當(dāng)成隱式反饋任務(wù)需要額外設(shè)計(jì)負(fù)采樣策略并且不能只用 RMSE 作為主要評估方式。解決在這個標(biāo)題的鏈路里直接用 MSE 回歸評分即可不需要負(fù)樣本。除非后續(xù)做隱式反饋方向比如預(yù)測用戶是否會點(diǎn)擊那才需要采樣真實(shí)負(fù)樣本一般每個正樣本配 1 到 4 個負(fù)樣本避免全量負(fù)樣本導(dǎo)致訓(xùn)練太慢、分布太偏。5.5 不要迷信GPU100K數(shù)據(jù)上CPU反而更高效現(xiàn)象在只有 CPU 的環(huán)境上訓(xùn)練又快又穩(wěn)把同一份代碼搬到 GPU每個 epoch 反而慢了或者顯存占用高得離譜。原因模型太小、數(shù)據(jù)量太小GPU 的 kernel launch 開銷占比過大加上 WSL 或 AMD ROCm 環(huán)境還需額外配置收益為負(fù)。很多人一開始被深度學(xué)習(xí)必須 GPU帶偏其實(shí)本任務(wù) CPU 完全夠用安裝 PyTorch 不是必須裝有 GPU。解決先把 CUDA 的念頭放一邊用 CPU 版 PyTorch 跑通整個項(xiàng)目。如果確實(shí)在 WSL 里配了 GPU 環(huán)境確認(rèn) PyTorch 版本能否被torch.cuda.is_available()或 ROCm 對應(yīng)接口識別能識別就正常用不能識別就老實(shí)回 CPU 跑。像 7900XTX 這種 AMD 卡在 WSL 里折騰 ROCm 的時間足夠這個項(xiàng)目優(yōu)化十輪了。6. 進(jìn)階把評估換得更真實(shí)Embedding可視化才更有說服力能走到這一步說明你已經(jīng)有了穩(wěn)定跑的基線和評估函數(shù)。剩下值得花時間的不是無限調(diào)參而是把評估口徑和可視化做扎實(shí)。6.1 按時間切分模擬預(yù)測未來的離線評估隨機(jī)切分適合快速實(shí)驗(yàn)但對推薦系統(tǒng)的真實(shí)部署場景說服力有限。更真實(shí)的做法是按時間戳切分用前 80% 時間段的數(shù)據(jù)訓(xùn)練用后 20% 的數(shù)據(jù)測試。代碼非常簡單cutoff df[ts].quantile(0.8) train_df df[df[ts] cutoff] test_df df[df[ts] cutoff]這樣做之后模型只能從歷史交互里學(xué)規(guī)律再去預(yù)測之后發(fā)生的評分和線上場景基本一致。你可能會發(fā)現(xiàn) RMSE 比隨機(jī)切分略差這很正常時間靠后的樣本里有大量新電影和活躍用戶本來就更難預(yù)測。6.2 把Item Embedding用PCA投影出來訓(xùn)練完的item_emb是(num_items, 32)的矩陣每一行是一部電影在潛語義空間里的坐標(biāo)。用 PCA 降到二維再按電影類型上色可以直觀驗(yàn)證向量是否學(xué)到了語義from sklearn.decomposition import PCA item_emb model.item_emb.weight.detach().numpy() pca PCA(n_components2).fit_transform(item_emb)觀察結(jié)論比想象中常見動作片和科幻片往往聚在一起經(jīng)典老片也可能形成一個團(tuán)。如果 cluster 完全看不出類別不一定代表訓(xùn)練失敗也可能是 embedding 維度太短、epoch 太少或者評分偏好本身與電影類型維度不完全一致。把 PCA 散點(diǎn)圖放進(jìn)報(bào)告里比只貼一張 loss 下降圖更有說服力。6.3 固定種子、單變量調(diào)參結(jié)果才有積累價值回看這個標(biāo)題的整個鏈路最后要養(yǎng)成的習(xí)慣是每次實(shí)驗(yàn)固定 seed、固定切分、固定評估函數(shù)只改一個超參。我第一次跑通這個項(xiàng)目時最狼狽的一次調(diào)參是同時動了 embedding 維度、學(xué)習(xí)率和測試集切分跑了一晚上最后根本分不清是哪個調(diào)整讓結(jié)果變好。從那以后每次改參只動一個變量復(fù)制一條實(shí)驗(yàn)記錄seed、embedding 維度、lr、weight_decay、train RMSE、test RMSE、Top-K 命中率??窟@套笨辦法后續(xù)每次實(shí)驗(yàn)都是對之前結(jié)果的小步改進(jìn)而不是推倒重來。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
国产91会所女技师在线观看| 欧洲大香蕉| 亚洲自拍偷拍视频在线| 久久大黄片| 97国产综合欧美| 一区二区你上我| 福利操逼| 亚洲高清视频在线免费观看| 九九热三级片| 国产精品3| 欧美精品另类人妖xxxx| 少妇滛荡视频| 国产成年免费大片黄在线观看| 精品夜夜澡人妻无码AV| 黄色一区三区| 亚州日韩97| 吉川爱美98堂在线| 久久久久精| 久久精品国产72国产精品福利| 84YTCOM性无码| 久久精品国产亚洲av水密被窝| 亚洲日韩少妇一道本视频| 久久久久久中文字幕中文字幕最新| 国产偷拍自拍在线视频| 乱伦图一区| 国产无码精品久久久久久| 亚洲黄色电影| 欧美 亚洲精品首页| 伊人991| 久久国产精品一级二级三级| 一区二区三区在线资源| 九九热免费视频| 欧美精品自慰系列寂寞少妇| 一级特级aaaa毛片免费观看| 视频分类 国内精品| 精品亚洲国产成人av网站| 国产精品点击进入在线影院| 国产乱伦亚洲| 精品午夜福利国产一区二区在线观看| 蜜乳中文字幕a在线| 欧美热图99| 欧美色图小说综合| 亚洲天堂另类| 蜜臀在线视频| 人妻啪| 日本1区2区不卡视频| 麻豆视频国产一区二区| 国产三级多多影院2022国产AA一级毛片无码 | 久久久久久人妻| 国产 码在线成人网站| 国产又操| 99re6久热只有精品6在线直播| 色噜噜狠狠色综无码久久合欧美| 嗯啊不要在线| 国产AV人人 夜夜人人澡| 日韩伦理视频| 综合熟妇一区二区三区| 久久精品一区二区| 免费一级精品啪啪视频| 久久国内| ′ !γ}丶。。久久精品欧美一区二区三区 | 久久夜色一区二区| 亚洲图片欧美色| 国产91福利小视频在线观看| 6080YYY午夜理论片在线观看| 久久中文字幕一区不卡| 岛园激情| 麻豆性爱视频在线播放| 欧美色图片欧美色图| 97欧美日韩精品| 国产白丝av| 极品综合| 日本综合色图| 久艹日日日| 啪啪AV导航| 国产版a级片直播在线| 色色色五月婷婷| 亚洲乱色视频一区、二区在线| 国产精品久久久久久久久久久久久久久| 97se综合| 国产精品直播在线观看直播| 婷婷丁香五月天综合东京热| 精品免费1| 日产123区精品免费观看| 欧美熟妇精品黑人巨大91| 日韩av在线精品观看| 人人色人人操在线| 熟妇国产免费一区| 久久精品国产亚洲AV先锋| 国产女人操逼视频| 亚洲中文电影| 99婷婷一区二区| 嗯啊抽插大香蕉网页| 91人妻人人妻| 九九久久玖玖| 99在线免费视频| 激情啪啪视频| 26UUU欧美激情一区二区| 中文字幕 人妻不满 在线视频| 粉嫩小泬久久久一区二区| se..亚洲欧美| 爱爱60秒免费视频| 欧美大片91| 亚洲高潮少妇| 好湿好紧视频| 欧美人妻精品| 白丝一区| 91网站18在线观看| 永久电影三级在线观看| 精品美女在线视频| 五月婷婷六月丁香网址| 久久久国产精品亚洲精品| 狠狠操,使劲操| 99久久综合| 亚洲综合嫩| 国产无码一二三区| 亚洲熟女诱惑| 99无码| 超碰色大香蕉| 久久色人体| 日比av无码| 一起草精品人妻| 久草草一二三四区久久| 久久东京伊人一本到鬼色| 小骚逼被操的爽不爽| 日韩无码操逼片| 亚洲污污网站| 免费在线观看国内色片网站网址| 亚春色色| 亚洲色图激情小说| 3028国产精品| 天天干人人乐| 欧美天天综合站| 久操网视频| 试看60秒| 国产农村妇女一区二区| 不卡av免费在线网址| 麻豆av一区二区三区| 国产午夜在线观看| 亚洲97p| 亚欧Av| 精品人妻15区| 一区黄二区黄| 九月丁香婷婷| 91丨熟女丨丰满熟女| 青青青草原| 男人天堂2019亚洲| 欧美性爱日韩性爱| 深夜激情| 精品久久久中文字幕不| 91精品国产日韩欧美综合| 欧美色图97| 狠狠色婷婷7777久| 五十路六十路七十路熟婆| 秋霞福利网| 亚洲色图大香| 福利视频一区二区微拍| 97碰碰色| 屁股久久久久久久久| 伊人激情| 在线国产一区二区av| 日本天天干天天操一区| 大香网伊人久久综合网eew| 无码视频黄色网战| 99久久亚洲精品无码毛片潘甜甜 | 黑人美精品 A片| 国内毛片四区| 欧美国产一区二区三区麻豆传媒| 色色色999| 一区二区三区免费视频入口| av草草在线电影| 真实高潮91| 黄色欧美性爱视频| 亚洲最大成人a毛毛片| 久久久久久久9| 亚洲人人夜夜澡人人爽| 中文字幕丝袜人妻| 日本天天吊| 综合一区中亚洲国产成人综合精品| 美女黄网| 999综合网| 欧美日韩欧美| 少好三P| 嗯啊啊啊轻点视频 | 99在线精品观看视频中文| 东北夫妻性偷拍| 婷婷亚洲五月***久久| 国产久久成人| 国产精品久久久久久亚洲色欲| 国产9熟妇视频网站| 9Ⅰ超碰| 日韩99神马视频播放| 大奶啊啊好爽| 亚州精人品大香蕉| 日韩另类色图| 大香樵伊人网| 婷婷丁香五月综合| 日本 欧美 亚中文字幕| 国产精品大香蕉| 全球成人中文在线| 人人摸人人摸人人干| 91搞逼视频| 天天看天天日天天操| 欧美综合网A| 人人九九精| 一级黄碟| 国产日产欧产美韩系列麻豆免费| 极品一区二区三区免费| 久久久久人| 欧美黑人91| 啊啊啊啊啊啊啊啊啊啊在线观看| 黄色一区三区| 超碰97久| 国产白丝av| 中文字幕蜜乳av| 在线综合网| 国产精品视频内谢女人| 最近2018中文字幕在线高清第一页| 国产日韩精品suv| a级免费在线观看| 91久久青青草原精品| 蜜臀视频网站| 国产理论视频在线播放| 十八禁啪啦拍视频无遮挡| 亚卅熟女乱色| 97超级久久强资源| 欧美日韩精品国产91| 天堂综合| 亚洲高清视频在线免费观看| 欧美亚洲一级在线观看| 欧美在线观看综合国产| 亚洲少妇色| 亚洲城人男人的天堂| 91艹逼精品| 亚洲在钱| 久久久久九九九| 视频黄色国产一级| 91N欧美| 男人天堂站| 黄色片A级一区二区三区| 天天操人人操狠狠插| 丁香五月综合| 国产欧美一区二区| 欧美熟女逼久久久久久| 凹凸视频在线一区二区| 青青操狠狠撩| 久久久久久亚洲精品中文字幕人妻| 美女大乳久久久久久久女人18| 国产AV人人夜夜澡人人爽麻豆| 亚洲在线A| 国产家庭乱伦表演| 97精| 亚洲,欧美,综合网| 在线电影亚洲色图| 九九99久久| 亚洲国产精品成人综合| 99精品无码| 亚洲色图超碰在线| 九九久精品| 国产毛片久久久久久久| 9久精品| 密臀视频一区二区三区| www.男人的天堂| 日韩精品色呦呦| 在线只有精品| 97色欧洲| 超97在线精品视频| 澳门人妻久久| 精品999999| 浪人综合网| 97国伦国色| 2020中文字幕在线观看| 亚洲制服aⅴ中文字幕| 日韩偷拍色图| 亚洲不雅视频1区二区| 免费一级特黄特色大片在线观看看| 五月婷婷激情| 九九久久国产精品怡红院| 一级黄色视频网| 亚洲国产一区二区三区在线| 91成人久久| 好吊色一区| 男人的天堂2019| 五月婷婷无码| 99re这里只有| 97色婷| 91插B网站| 99精品成人免费看| 快播久久人人aV| 26uuu国产成人综合| 蜜桃色院一区久久| 日韩黄片影院| 99抽插| 影音先锋少妇| 碰超人人在线一区二区三区| 日本午夜精品理论片A级APP发布| 春色综合免费| 久久久久久亚洲精品不卡人乳| 久久大香蕉97| www.99色| a片自拍直播视频| 中文伊人大香蕉视频| 精品久9| 亚州色图第三区| 中文字幕精品码亚洲| 99久久久99久久91熟女| 日韩一卡二卡三卡| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 色九久| 中文字幕 人妻不满 在线视频| 强乱老妇中文字幕| 综合色图,成人综合网| 20cm女自慰在线日韩欧美| 嗯嗯,啊啊,国产精品| 人人操人人摸人人骑| 久久久婷婷| xxxx网站亚洲精品| 水滴偷拍| 亚州色图狠狠干| 97人人操人人摸人人爱| 超碰色老头| 区一二区日韩亚洲乱码av电影| 国产又黄又粗的视频| 久久99999| 三级三久久线久久99久目本WW| 偷拍盗拍亚洲色图图片| 91久久18禁| 青青操狠狠撩| www.av家庭乱伦| 久久久久久久久久黄色网| 在线综合色| 一本久道久久综合狠狠爱一密臀精 | 久啪| 一本一道人妻久久一区二区三区| 8x福利精品第一福利视频导航| 人妻天天爽夜夜爽2| 日韩人妻资源网| 亚洲蜜乳av| 九九热国产| 日韩中文字幕2020| 青青草黑寡妇男人天堂| 中文啪啪视频| 亚洲无码一区二区三区三州| 人人操人人插 - 百度 - 百度| 亚洲drav色图| 久插综合| 麻豆2区1区天美| 美女极品一区二区三区| 91老女人| BBBBB97COM| 欧美亚州色的图| 色妹子A V| 人成午夜免费大片| 国产在线视频二区| 五十路熟女人妻一区二区三区四区五| 清纯唯美综合亚洲| 欧美亚洲日韩16色| ss久久| 激情五月丁香五月| 永久免费发布性爱网| 囯产精品久久久久久久久久梁医生 | 射丝袜高跟鞋99| av资源在线观看少妇| 免费看黄视频亚洲网站| 偷拍亚洲熟女视频播放| 日韩在线地址一| 久久久久久久精| 密臀成人视频久久久| 神马久久中文字幕| 91黑丝少妇| 床上啊啊啊一区二区三区| 91天堂色男人的天堂| 亚洲精品尤物yw在线影院| 美女天天干| 亚洲伊人久久综合97| 91亚洲欧美激情| 玖色av| 一区二区播放| 亚洲双插| 91欧| 国产97视频| 一区二区视频在看| 男人的天堂va在线| 无码人妻一区二区三区免费九色| 男人亚洲天堂| 第四色奇米影视777| av毛片aaaaa免费看| 91人妻少妇| 日本一区二区三区四区五区六区七区八区九区 | A片大香蕉在线| 26uuu偷拍亚洲欧洲综合| 天天影视色香欲综合网小说| A一区片| 自拍偷拍草一草| 人人艹亚洲| 琪琪精品免费一区二区三区| 超97在线精品视频| 亚洲第一在线视频| 久久久久久亚洲精品中文字幕人妻| 懂色AV一区二区三区| 96AV精品| 撸撸成人在线视频| 日韩色图 一区二区| 超碰久草| 男人天堂电影院| 精品久久久久久久| 日韩欧美加勒比| 国产美女口爆吞精视频| 人人插人人摸人人| 中文字幕人妻丝袜| 国产成人精品午夜福利| 欧美大的香蕉有线电视视频| 91视频精品| 精品欧美А∨无码黑人大荫蒂| 全球成人中文在线| 三级片大波波| 亚洲一二三精品久久网 | 天天视频网站黄| 97人人操人人摸| 欧美Aⅴ| 成人性爱电影一区二区| 久热69九色熟妇97| 亚洲欧洲激情| 91AV入口| 丁香六月天| 久久大线蕉一区| 国产精品白丝www| 一区二区三区免费视频入口| 久久精品色欧美aⅴ一区二区| 蜜桃臀一区二区aV | 涩涩五月天| 大香蕉综合在线| 91久| 熟女六十路| 啊啊啊好湿国产一二| 97超色| 亚洲av综合伊人久久| 日本精品第一视频在'| 一区中文字幕二区日韩| 久久中文字幕在线观看| 日本高清有码网址视频| 美女淫穴| 免费a v| 欧美啪啪女女| 美女黑人91神马| 久久精品人妻一区| 很很干很很操| 国产三级中文字幕粉嫩| 久久国产免费激情视频| 第四色亚洲色图| 国产成人久久精品蜜臀| 色色色综合网| 无码二级三级| 午夜男人一级A片7777| 精品一久久久| 100啪啪视频大全| 韩国一区二区精品亚洲| 天天做天天爱| 亚洲综合网电影91| 99re98| 久久婷婷热| 日韩丨制服丨中文|在线| 日韩av不卡在线看| 日韩 欧美 校园一区| 男女无套 免费网站| 大香蕉伊人色偷偷在线| 中文乱码字幕观看视频| 亚洲天堂东京热| 亚洲人久久久久日| 亚洲色图激情小说| 91天天| 久久久久9久久久久| 久久专区| 欧美色图私拍91| 黄色大片免费在线| 加勒比东京热五月天天堂网| 日本高清_区二区三区| av线电影| 国内三级自拍小视频在线观看| 国产情色在线| 亚洲国产欧美中文永久| 91爱网| 欧美熟爽综合| 午夜超爽| 18禁的网站在线| rivers-china.com| 另类图片五月天| 丝袜综合网| 丰满翘臀美女影院视频| 秋霞免费无码视频日韩A片| 日韩ab网 | 久久久久国产| 九色视频91| 大香蕉中文在线| 久久久久9久久久久| 欧美不卡在线一区二区| 久久人妻无码毛片A片麻豆| 亚洲熟女中文字幕在线| 婷婷色综合欧美日韩| 丝袜喷水在线| 在线观看综合精品亚洲| 91久久久久久久久18| 国产熟女| 69人妻精品一区二区绯色| 亚洲性爱成人| 白嫩妹子国产骚| 后入 亚洲 美女 射| yellow网站免费观看日韩高清无码| 欧美色道啊| 91在线免费观看处女| 无码天天操| 超碰97COm中文| 97色97好| 91欧美| 日韩乱伦AⅤ| 97久操| 国产丰满少妇久久久精品影院| 欧美一级做a爰片免费视频| 狠狠91| 中出20p| 日产中文字幕2020| 激情第四色| 亚洲国产麻豆一区二区三区| 天天射天天操天天干天天吃2018 | 精品国产一区二区三区香蕉欧美| 欧美成人精品欧美一级乱黄一区二… | 欧美精品二区视频在线| 美女黄色91| 亚洲第91页| 91天天日| 99免费在线视频| 国产色呦呦| 欧美A片中文字幕| 搡老女人老91二区| 老熟乱一区二区三区四区| 免费久久9999| 伊人青青一区成人视频在线观看区| 免费看久久久性性| 亚洲蜜乳av| www.亚洲成人一区| 国产主播福利| 在线日韩日本亚洲国产| 91丝袜| 超碰超碰超碰超碰的大鸡吧操黑丝袜| 超碰97久久国| 熟女网站最新| 欧日韩在线观看| 91熟女综合| 嗯嗯啊啊用力视频免费| 大香蕉伊人一区在线观看| 日本超碰在线国产一区| 人妻熟女字幕一区二区| 欧美操逼一二三区| 免费看毛片操穴| av九九| 久色网| 五月婷婷色| 婷婷中文字幕| 大香蕉伊利av| 99国产在线绯色一区| 三级片大波波| 中文字幕片| 日韩AV一区二区三区三州三州| 日韩情色视频| 天天做天天爱天天爽AV| 亚洲成人色情五月天丁香花| 欧美大片天天看| 999九九精品| 亚洲交换| 亚洲人妻久久| 乱抡国产91| 亚洲好看强奸乱伦| 国产AV高清AV无码| 五月综合久久| 天天天肏屄欧美| 国内偷拍精品一区二区| 国产精品日本无码A片| 亚洲国产一级黄色视频| 这里只有精品视频在线观看麻豆| 在线中文字幕极品av| 大香蕉乱伦视频网| 97精品国产97久久久久久户外免费| 国产精品对白内射| AV99热18这里只有精品| 久久精品操| 一起草高清无码| 欧洲综合无码| 色墦五月丁香| 中文字幕版| 四虎免费视频| 起碰97| 色色色欧美| 一区二区偷拍拍视频| 大香蕉天天看妹子| 97爱爱官网| 日韩视频精品在线观看| 国产极品一区二区三区三州| 国产精品一区人妻精品阁在线| 91欧美成人色站| 97在线/亚洲| 内射小黄片| 亚洲欧洲另类| 人妻熟妇久草在线| 午夜美女福利视频| 亚洲精品日韩国产欧美| 久久久久久久久久久久黄色 | 激情抓乳插进去啪啪啪日韩| 久久98| 综合天天网| 999999精品| 免费作爱一级视频| 伊人青青一区成人视频在线观看区| 啊啊啊不要嗯嗯在线观看| 97超碰香蕉| 免费一级毛片在线视频观看| 欧美香蕉视xxx| 久久在肏| 国产视频一区二区免费| 一区二区三区四区久久视1| 蜜臀AV一区二区三区| 国产精品亚洲无码| 国产精品乱人伊人网| 超碰97综合网| 福利伊人玖玖国产| 97日视频| 91狠狠综| 妺妺跟我一起洗澡没忍住| 久操高青| 欧美色图亚洲激情| 2019久久久久久久久福利| 欧美性爱伊人| 性爱欧美五月| 日韩美女啪啪一区| 亚洲视频,小说| 91情色| 婷婷综合五月| 久久老熟女| 色婷婷久久| 亚洲色天堂九9| 怡红院一区二区熟女人妻| 色老牛| 久久精品日韩| 成人精品欧洲亚洲| 99热99在线播放激情| 久久內射| 一起草日韩| 天天操美美| 看黄片视频免费| 九九九精品色乱九九九| 欧美系列在线一区二区| 欧美色图自拍| 99精品久久| 一本久道久久综合狠狠爱一密臀精| 激情小说五月天| 97超碰色情| 综合熟女| 中文字幕一区二区三区四五区| 综合色99| 中文字幕乱亚洲美女精品一区| 99热这里都是精品| 国产精品白领在线观看| 日韩在线97| blacked精品一区国产| 天天日熟妇| 九九伊人网| 超碰在线人人射| 精品久一区免费| 小视频国产| 亚洲影视第一页| 女同在线视频一区| 国产日韩欧美操逼视频| 蜜臀久久精品久久久久视频| 婷婷五月天久久久| 欧美人体性爱互联网第一页婷婷日本| 大奶尤物鲍汁淫荡欧美视频粉嫩夜夜骚| 亚洲成人性爱网站在线播放| 夜夜爽夜夜摸夜夜操免费视频| 人人爱操| 老熟女搡BBBB搡BBBB视频| 死我十八禁| 超碰亚洲欧美日韩无| 伊人丁香五月婷婷| 日日夜夜骑| 操一区| 麻豆国产尤物AV| 国产综合在线视频网站| 久久99干一本高清| 四虎884a| 亚洲国产精品久久久久久久久久| 91人妻最真实刺激绿帽| 91痴汉| 青青草啪啪网| 无码9区| 亚洲欧洲色情高清| 婷婷五月激情综合| 狠狠中文字幕| 精品人妻一区二区三区在| 欧美传媒一区| 嗯嗯啊啊啊好舒服| 国产激情综合| 久久久久久日韩| 亚州综合网| 久久久96精品| 超碰98综合网| 蜜臀av中字字幕网站| 无码自拍SM| 国产黄片精品在线| 国产91影院| 国产一线二线三线av| 久久久专区| 色综合加勒比四四季| 在线只有精品| 精品人妻美妇91job| 国产久久成人| 操啊国产| 亚洲情色综合| 777超碰| 少妇色欲综合网2| 在线五区| 最新9久久久9免费视频| 五十路熟女工口| 亚洲视频1区| 午夜福利在线视频1000| 婷婷五月色| 综合久久六月久久婷婷| 色综合一本| 97在线免费看视频| 成人一二三区| 国内精品久9| 粉嫩av一区二区三区四季| 操美女人妻| 91视频观看网站| 亚洲 欧美 中文 日韩超碰 | 暴力av在线| 97精品久久久久中文字幕| 久操 高清| 宗合情欲网| 久久仑合| 久久大陆| 免费97视频| 午夜综合在线| 亚洲综合 欧美| 嫩草 我啊~嗯~在线| 青青草无码视频| 在线小视频| 天天天堂影视日韩亚洲91| 农村妇女精品一区二区| 九九九九精品一区| 亚洲清纯唯美| 国产91丝袜 在线播放| 欧美综合色,www| 97精品免费| 秋霞操逼片| 女同女同恋久久级三级| 97欧美性爱| 日韩精品一区的| 伊人网av| 一区麻豆 高清中文字幕| 91美乳| 手机久操欧美综合色码| 五月天加勒比啪| rivers-china.com| 97爱亚洲| 日韩人妻制服丝袜av| 人妻日日干| www.狠狠操| 日韩av熟女一区二区三区成人| 欧美老妇女内射网址| 五十路人妻在线| 在线视频资源| 国产第12页| 国产超碰| 亚洲美欧999| 大屁股国产在线视频| 欧美日韩久久精品爱爱| 日韩视频精品在线观看| 盗摄女人妻在线| 99免费在线视频| 久久超碰、| 久9综合在线| 成人小说另类在线| a在线视频免费观看| 北京专精特新企业招聘信息| 亚洲素人网| 久久区| 久久亚洲AV成人精品无码| 五月天偷拍| 精品人妻一区春色| 啊啊啊久久| 国产精品制服丝袜清纯唯美| 91麻豆天美国产欧美| 福利视频一区二区微拍| 五月婷婷丁香| 国产农村妇女精品一二区| 午夜精品久久久久| 看大黄色大片原件| 啪啪啪男女亚洲中文字幕99| 欧美性爱第1 页| 日本免费专区| 丰满人妻一区二区三区在线| 熟女熟妇伦久久影院毛片一区二区| 97色碰| 综合欧美日本三级| 日本一天色道久久久精品视频| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 乱伦av国产| 色综合潮| 999久久久九九九九| 91成人精品在线播放| 男人的天堂2018.| 91色亚洲| 一区在线国产播放| 日韩天天本| 国产精品99精品视频网站| 欧美一级三级| 婷婷10月天青娱乐| 亚洲制服欧美另类内射| 91五月天| 美女操逼A A| 日日夜夜骚| 男人的天堂2019| 骚逼高潮久久精品| 亚州欧美在线| www久| 久久久一二三四区| 伊人五月天青青草婷婷| 在线洲亚线| 无码视频黄色网战| 啊啊啊久久久视频| 激情综合二| 加勒比五月天| 一级A片女人高潮叫床| 国产视频大全| 国产人伦a片信息免费片| 伊人玖玖网| 国内偷自视频区视频综合| 91最新综合| 国产高清午夜成人在线观看| 色性荡荡荡荡视频| 一中国女人毛片水真多| 激情露脸爱| 国产又猛又粗又爽又黄| 久操 高清| 精品九九国产无码| 骚逼自拍99| 国产精品久久伊人| 亚洲综合嫩| 精品欧美日韩在线观看| 99色在线| 色综合久| 久久久久久人妻一区精品色欧美| av网页一区二区三区| 亚洲男人天堂2016| 岛国毛片在线观看免费| 亚洲蜜臀视频精品久久| 国产情侣自拍在线播放| 欧美性色欧美| 亚洲欧洲视频小说在线观看| 国产二区三区免费视频| 免费久久9999| 新婚人妻扶着粗大强行坐下| 久久久月天| 盗摄 精品 另类 一区| 中文字幕第9页萱萱影音先锋| 亚洲精品欧洲精品| 欧美性爱十八禁| 欧美日韩亚洲天堂| 亚洲狼狼干综合1| 欧美顶级黄色大片免费| 精品免费成人久久| 刺激性视频黄页| 在线强奷到舒服的无码视频| 亚洲男人在线观看天堂| 久久97资源 网| 在线国产一区二区av| 久久国产乱子伦精品免费女,网站| 亚洲国产一级中文综合久久天堂在线免费观看| 日本三级A片网站com| 91久久国产精品| 蜜臀人妻少妇久久在线观看| 久久高清欧美国产| 超碰色综合| 久久视频,这里只有精品| 一区二区激情国产熟女| 十八禁av无码免费网站APP| AV中文字幕三四五| 91九九九小逼| 日韩国语字幕| 日本视频在线观看污污污| 国产AV中文| 丰满丝袜少妇AV| 日韩pv中文| 日本精品成人无码| 中文字幕AV乱伦| 999精品女人| 国产女人9999| 天天干天天日天天射黄色大片| 欧美三级中文字幕hd| 亚洲麻豆av一区二区| 欧亚日本情色| 成人热久久精品| 99热97| 国产女性无套 免费观看| 欧美18老人禁| 日韩啪啪视频| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 久久透逼视频| 日韩成人小视频| 夜夜爽爽夜夜精品视频| 日本人妻一区二区| 日本色婷婷| 亚洲啪啪性视频| 日本操逼二区| 天堂а√在线最新版在线| 水多多映视AV| 亚洲三级。日韩三级| 日韩色图 一区二区| 9999亚洲电影| 青青草日本中文字幕| 亚洲免费精品一区| 国产女人高潮视频| 激情第四色| 91日韩在线| 99久久九九| 国产免费永久精品无码| 五月天婷精品激情| 久久久久九九九| 天天视频黄网站| 东京热男人的天堂精品| 激情网色| 国产熟女乱论| 性爱乱伦一区| 色色色色电影网| 天天操天天舔| 色综合九九| 五月天久久久| 丁香五月天啪啪| 天天干天天做| 少妇一线天久久久久久| 亚洲色偷偷色噜噜狠狠99网| 999狠狠综合| 欧美亚洲激情小说| 欧美黑人与女人91~| 亚洲av热热色| 91欧美性| 亚洲双插| 97超碰香蕉| 26uuu久久| 免费黄色片。| 国产日本久久免费精品| 婷婷五月成人| 国产精品国产自产拍高清AV| 精品人妻一区二区三区-国产精品| 中文字幕91综合| 中文字幕人妻色偷偷久久皮| 久久久99999久网站| 91激情综合| 强乱老妇中文字幕| 久久久蜜桃臀无码视频| 囯产精品久久久久久久久久梁医生| 欧美高清无码免费视频高清版| 日韩精品资源专区二区| 女人被男人桶爽视频网站| 郑州宾馆老熟女露脸啪啪| 婷婷久久大香蕉| 日本一区三级韩国| 怡红院成人av| 中文字幕熟女人妻丝袜丝| 99热这里只有精品18| 日本性爱视频一级| 成人aⅴ一区二区三区| www.99在线| 夜夜高潮夜夜爽| 91美女視頻| 啊啊啊啊好爽好舒服一区二区易域| 久久久久久99AV无码免费网站| 亚洲无吗在线视频| 成功精品影院| 精品亚州18| 一二三区精品视频| 成 人片 黄色大片| 天天综合精品| 97bbn| 一区二区视频在看| 在线看的av| 国产原创自拍| 新视频sss国产| 999精品乱码| 人妻 中文 日韩| 精品国产乱码久久久久久久久1| 免费视频在线一区二区不卡| 国产女生在线| 欧美久久久15P| 久久久久99精品成人片蜜臀| 日韩免费看在线黄色片| 337p大胆噜噜噜噜噜91Av| 偷拍亚洲高清图片| 九九九999久久久网站| 国产亚洲精品激情| 深爱激情五月天| 精品一二三区四视频| 啊啊啊想要| 日韩人妻一区二区精品| 国产丰满熟夫69mpp| 精品国产乱码久久久久久蜜臀| www.av在线视频| 欲色影视综合吧| 亚洲天堂男人天堂网| 久久久久亚洲Aⅴ无码| 75大香蕉| 精品人妻一二三| 色综合天天| 桑老女人九区| 91小视频| 超碰久久精品| 亚欧性爱无码| 成人网欧美风情| 啊啊啊操死我| 九九伊人网| 久久精品国产97欧美精品亚洲| av天堂天堂av日韩| 91精品人妻一区二区-全集完整版免费正片国语-B02AV | 天天碰久久入| 强奸乱伦大香蕉网| 久久99精品九九久久久婷婷| 天天日天天操天天射河南省| 黄页网站成人免费| 国产网站在线播放| 九九九九九九视频| 欧美激情性久久久久久| 婷婷色香| 午夜啪| 欧美熟妇乱码在线一区| 欧美激情综合| 欧美第一页性| 97亚洲综合影院| 嗯啊免费视频| 丝袜亚洲综合| juliaann精品熟女一区| 大香蕉伊人网| 91色黑人少妇| 极品综合| 男人的天堂日本东京热| 久草免费福利在线播放| 欧美日韩青操| 中文一区在线视频| 人妻喷水| 婷婷中文字幕| 超碰97欧美| 67194无码不卡| 久久久久亚洲三级电影| 超碰这里只有精品| 亚洲一卡2卡3卡4卡乱码网站| 欧美草草| 99热综合| 最新亚洲黄色免费电影| 美女97超碰| 免费精品人妻一区二区三| 天美传媒av在线| 久久xxxx| 99色网| 成人久久精品| 欧美疯狂做爰xxxx| 久久中文字幕在线观看| 日本三级小说中文字幕| 国产精品成人久久一区二区三区| 欧美伦乱爱| 性做久久久久久免费观看软件| 日韩射图| 亚洲 中文 女同| 亚洲国产精品有声| 另类欧美综合| 色女99一级片在线观看| 91人妻做a观看视频| 色九九久九九| 色鬼在线综合| 96久久精品一二三区色欲| 色九久| 91色伦综合| 久久丁香五月天| 视频一区二区三区精品| 九99久久| 久久免费中文字幕在线观看| 久操凹凸视频| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 亚洲午夜福利视频| 手机看片91人妻| 91热色| 亚洲高清内射| 九九热精品| 国产女人高潮嗷嗷嗷叫小说| 亚洲图片小说欧洲| 啊啊啊好大好湿| 精品妇女一区二区三区| 欧美经典一区二区三区| 91天天| 精品高清牛人盗摄一区二区三区中文字幕A片免费在线观看 | 国模不卡| 极品国产内射| 偷拍欧美亚洲| 超碰97最新人妻| 欧美综合骚| 91精品黄在线观看| 操逼天美3区| 亚洲日韩国产精品| 亚洲第一视频 欧美风情 日韩| 九九久久国产精品| 五月天激情四射| 强奸乱伦Av网| 人人操我人人干| 欧美 亚洲 第一页| 蜜桃AV天堂| 亚洲日产专区婷婷| 国产美脚女优尤物在线观看| 97色色视频| 亚洲图片偷拍视频区| 干干干天天| 91搞逼视频| 粉嫩av平台| 韩国三级色呦呦| 国产精选视频| 中文字幕免费在线观看| 99热18这里只有精品| 午夜精品久久久久| 91欧美偷拍| 亚洲情色1区| 91美女在线精品视频| 色色无码| www.色婷婷.com| 91啪啪视频| 99re久久| 99操碰| 97人妻碰碰中文无码久热丝袜| 日本人人操人人操| 最新日产中文在线麻豆| 国产女人极品高潮毛片| 强奸乱伦大香蕉| 欧美,日韩综合久久| 亚洲国产婷婷在线播放| 99re热有精品视频国产| 日韩高清黄片| 久久久久亚洲AV无码专区少妇| 五码视频在线观看| 豆花视频操逼网址| 91丨九色丨国产丨人妻在线| 久久精品午夜国产亚洲AV无码| 国产无码久久高清| 亚洲97成人在线观看| 国产色综合亚洲色综合吹潮| 翔田千里一区二区三区奶水| 亚洲三区视频| 人妻中文字幕日韩电影| 97最新在线播放视频| 99无码视频| 91人妻丝袜无码| 欧美精品双插| 97视频在线视频| 欧美同性恋 的搜索结果 - 91n| 日韩精品一区二区人人人| 婷婷爽人人婷婷爽视频|