免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

ARTICLE DETAIL

資訊詳情

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

MAE、MSE、RMSE與L1/L2范數(shù):PyTorch損失函數(shù)關(guān)系與選型

MAE、MSE、RMSE與L1/L2范數(shù):PyTorch損失函數(shù)關(guān)系與選型 數(shù)值這塊的東西很多人都是在寫第一個(gè)回歸模型的時(shí)候才第一次撞上損失曲線畫出來(lái)忽高忽低換一個(gè)損失函數(shù)結(jié)果天差地別或者明明模型輸出看著挺正常反向傳回去的梯度卻大得離譜。這些問(wèn)題往回追十有八九是沒(méi)搞清楚 MAE、MSE、RMSE 和 L1 范數(shù)、L2 范數(shù)這幾樣?xùn)|西到底在算什么。標(biāo)題里這五個(gè)概念看著像線性代數(shù)課本里的名詞實(shí)際在 PyTorch 里天天要用而且它們之間的關(guān)系比表面看起來(lái)緊密得多——MAE 就是 L1 范數(shù)在樣本維度上取平均MSE 和 L2 范數(shù)的平方只差一個(gè)常數(shù)因子RMSE 則是為了讓量綱回到原始單位而做的補(bǔ)救。搞清這套換算關(guān)系你在寫自定義損失、做多任務(wù)加權(quán)、調(diào) weight_decay 的時(shí)候就不會(huì)憑感覺(jué)瞎猜了。這篇文章面向的是剛開始用 PyTorch 做回歸或者表示學(xué)習(xí)的人也適合已經(jīng)寫過(guò)幾輪訓(xùn)練但總覺(jué)得損失函數(shù)選得不夠踏實(shí)的同學(xué)。我會(huì)先把這幾個(gè)名詞的幾何含義和數(shù)學(xué)定義拆開講清楚再落到 PyTorch 的具體 API 上把torch.linalg.norm、nn.L1Loss、nn.MSELoss這些的用法和坑點(diǎn)一條條過(guò)一遍最后給一套可以直接跑的對(duì)比實(shí)驗(yàn)代碼。我盡量不堆公式能用一句話說(shuō)清的就不寫三行推導(dǎo)。1. 概念梳理范數(shù)、損失、誤差指標(biāo)其實(shí)是同一套東西1.1 范數(shù)是給向量量長(zhǎng)度的尺子范數(shù)這個(gè)詞聽(tīng)著抽象說(shuō)白了就是給一個(gè)向量算一個(gè)非負(fù)的長(zhǎng)度。你手里有一串?dāng)?shù)想知道它整體有多大用不同的量法就得到不同的范數(shù)。最常見(jiàn)的是 L1 和 L2 兩種量法。L1 范數(shù)是把每個(gè)元素的絕對(duì)值加起來(lái)公式寫成 $|x|_1 \sum_i |x_i|$。它的直覺(jué)是曼哈頓距離——你在一座棋盤狀的城市里從 A 點(diǎn)到 B 點(diǎn)只能橫著走或豎著走走過(guò)的總距離就是 L1 范數(shù)。所有分量出的力是線性的不存在誰(shuí)被放大。L2 范數(shù)則是把每個(gè)元素平方、求和、再開方寫成 $|x|_2 \sqrt{\sum_i x_i^2}$。這個(gè)就是中學(xué)里學(xué)的歐幾里得距離也就是直線距離。因?yàn)橄绕椒皆匍_方大分量會(huì)被顯著放大小分量會(huì)被壓得更小。這兩種范數(shù)在幾何上的差別很直觀。在二維平面上所有 L1 范數(shù)等于 1 的向量連起來(lái)是個(gè)菱形旋轉(zhuǎn)了 45 度的正方形四個(gè)頂點(diǎn)落在坐標(biāo)軸上。而 L2 范數(shù)等于 1 的向量連起來(lái)是個(gè)圓。這個(gè)形狀差異不是純粹的數(shù)學(xué)趣味它直接決定了優(yōu)化時(shí)候解會(huì)落在哪——菱形的尖角在坐標(biāo)軸上所以 L1 約束下的最優(yōu)解很容易正好讓某個(gè)分量變成 0這就是 L1 能產(chǎn)生稀疏解的幾何來(lái)源。圓沒(méi)有尖角L2 約束下的解通常所有分量都不為零只是整體被壓小。這個(gè)結(jié)論后面講正則化的時(shí)候還會(huì)用到。注意范數(shù)的定義里輸入是一個(gè)向量。但在深度學(xué)習(xí)中你面對(duì)的是形狀為 (N, D) 的張量這時(shí)候要先想清楚是沿著樣本維算還是沿著特征維算算錯(cuò)了整個(gè)訓(xùn)練的語(yǔ)義就變了。1.2 從范數(shù)到損失函數(shù)的映射關(guān)系損失函數(shù)和范數(shù)的關(guān)系其實(shí)是一次先做差、再套范數(shù)的組合。你有一個(gè)預(yù)測(cè)向量 $\hat{y}$ 和一個(gè)真實(shí)向量 $y$先算殘差 $r \hat{y} - y$然后對(duì) $r$ 套上不同的范數(shù)就得到不同的誤差度量。把 L1 范數(shù)套在殘差上得到的是殘差的絕對(duì)值之和如果后面再除以樣本數(shù) n就變成了平均絕對(duì)誤差 MAE。把 L2 范數(shù)平方套在殘差上得到的是殘差平方和除以 n 之后就是均方誤差 MSE。而 RMSE 是在 MSE 的基礎(chǔ)上再開個(gè)根號(hào)純粹是為了把量綱拉回到和原始數(shù)據(jù)一致。所以嚴(yán)格說(shuō)范數(shù)是度量損失是把度量平均一下好讓它不隨樣本數(shù)變化誤差指標(biāo)是把損失調(diào)整成一個(gè)人類能讀的量綱。三層是遞進(jìn)關(guān)系不是并列關(guān)系。我在項(xiàng)目里見(jiàn)過(guò)不少人把torch.norm(x - y)直接當(dāng)損失用然后發(fā)現(xiàn) batch size 從 32 改成 128 之后損失數(shù)值翻了四倍學(xué)習(xí)率完全失效。這就是沒(méi)有做平均導(dǎo)致的——L1 范數(shù)會(huì)隨元素個(gè)數(shù)線性增長(zhǎng)而 MAE 不會(huì)。這個(gè)細(xì)節(jié)看起來(lái)小實(shí)際調(diào)參的時(shí)候能省掉一整個(gè)下午的試錯(cuò)。1.3 為什么工程上要同時(shí)保留這么多名字既然本質(zhì)是一回事為什么還要搞出五個(gè)名字因?yàn)椴煌拿址?wù)于不同的使用場(chǎng)景。在數(shù)學(xué)推導(dǎo)和優(yōu)化理論里用 L1 范數(shù)、L2 范數(shù)這種叫法因?yàn)樗梢圆幌抻陬A(yù)測(cè)減真值這個(gè)語(yǔ)境任何向量都能套。在模型評(píng)估的報(bào)告里用 MAE、RMSE 這種叫法因?yàn)樗鼈兊牧烤V和原始數(shù)據(jù)一致你可以直接說(shuō)這個(gè)模型平均錯(cuò)了 3.2 攝氏度比說(shuō)L1 范數(shù)是 320要清楚得多。而在 PyTorch 的損失模塊里用nn.L1Loss、nn.MSELoss這種命名是因?yàn)樗鼈兡J(rèn)會(huì)做 reduction求平均符合訓(xùn)練時(shí)最常用的形態(tài)。理解了這層關(guān)系你在寫論文、寫報(bào)告、寫代碼的時(shí)候就能自如切換不會(huì)出現(xiàn)損失函數(shù)是 L1 但指標(biāo)報(bào)的是 RMSE這種前后對(duì)不上的尷尬。更重要的是你在自定義損失函數(shù)的時(shí)候知道自己在哪一層做手腳——是在范數(shù)層改比如換成 Huber還是在平均層改比如改成按樣本加權(quán)還是在開方層改比如改成 RMSLE。每一層改動(dòng)對(duì)梯度的影響完全不同。2. 數(shù)學(xué)定義與公式拆解2.1 L1 范數(shù)與 L2 范數(shù)的嚴(yán)格定義對(duì)向量 $x \in \mathbb{R}^n$L1 范數(shù)的定義是$$|x|1 \sum{i1}^{n} |x_i|$$L2 范數(shù)的定義是$$|x|2 \sqrt{\sum{i1}^{n} x_i^2}$$兩個(gè)定義里唯一的差別就是先平方再開方還是直接取絕對(duì)值。但就是這點(diǎn)差別導(dǎo)致了兩者在可微性上的根本不同。L1 范數(shù)里每項(xiàng)是 $|x_i|$它在 $x_i 0$ 處不可導(dǎo)左導(dǎo)數(shù)是 -1右導(dǎo)數(shù)是 1只能定義次梯度。L2 范數(shù)在整個(gè)定義域上光滑可導(dǎo)除了原點(diǎn)原點(diǎn)處梯度為 0 而不是不可導(dǎo)這決定了用 L2 做損失時(shí)優(yōu)化器走得更穩(wěn)。還有一個(gè)容易被忽略的點(diǎn)L2 的平方 $|x|_2^2 \sum_i x_i^2$ 是完全光滑的二次函數(shù)處處可導(dǎo)且導(dǎo)數(shù)是 $2x_i$。所以在實(shí)際實(shí)現(xiàn)里MSE 損失幾乎不會(huì)去真的算范數(shù)再平方而是直接寫平方和省掉一次開方和一次平方的消解數(shù)值上也更穩(wěn)。2.2 MAE、MSE、RMSE 的定義與量綱分析假設(shè)有 n 個(gè)樣本預(yù)測(cè)值 $\hat{y}_i$真實(shí)值 $y_i$殘差 $r_i \hat{y}_i - y_i$那么名稱公式量綱對(duì)離群值的敏感度MAE$\frac{1}{n}\sum_i |r_i|$和 y 相同線性低MSE$\frac{1}{n}\sum_i r_i^2$y 的平方二次高RMSE$\sqrt{\frac{1}{n}\sum_i r_i^2}$和 y 相同二次高L1 范數(shù)$\sum_i |r_i|$和 y 相同線性低L2 范數(shù)$\sqrt{\sum_i r_i^2}$和 y 相同二次高量綱這一列是實(shí)操里最值得盯的。MSE 的量綱是原數(shù)據(jù)的平方如果你的目標(biāo)值單位是米MSE 的單位就是平方米你沒(méi)法直接說(shuō)平均誤差多少米。RMSE 開完根號(hào)之后量綱回到米所以它比 MSE 更適合寫進(jìn)報(bào)告。但注意量綱一致不等于數(shù)值可以直接比較。RMSE 和 MAE 都是米卻在數(shù)值上差別很大——因?yàn)?RMSE 在連乘之前先平方大誤差被放大后才參與平均所以只要數(shù)據(jù)里存在幾個(gè)偏離較大的點(diǎn)RMSE 就會(huì)明顯高于 MAE。這個(gè)差值本身就是一個(gè)有用的診斷信號(hào)如果 RMSE 比 MAE 大很多說(shuō)明模型在某些樣本上錯(cuò)得很離譜而絕大部分樣本其實(shí)預(yù)測(cè)得還行。如果兩者很接近說(shuō)明誤差分布比較均勻沒(méi)有極端的離群點(diǎn)。2.3 它們之間的換算關(guān)系這五個(gè)量之間有嚴(yán)格的換算記清楚了能做到心里有數(shù)不用每次都重新推。設(shè) n 為元素個(gè)數(shù)r 為殘差向量。MAE 和 L1 范數(shù)的關(guān)系最直接$$\text{MAE} \frac{|r|_1}{n}$$MSE 和 L2 范數(shù)的平方的關(guān)系$$\text{MSE} \frac{|r|_2^2}{n}$$RMSE 和 L2 范數(shù)的關(guān)系$$\text{RMSE} \sqrt{\text{MSE}} \frac{|r|_2}{\sqrt{n}}$$這三個(gè)式子我在實(shí)際排查時(shí)經(jīng)常用。比如你手頭只有損失值但報(bào)告里要寫 RMSE那就先確認(rèn)損失是不是按 mean 歸約的然后sqrt(loss)就行如果損失是按 sum 歸約的有些框架默認(rèn)行為不一樣就得先除以樣本數(shù)再開方。反過(guò)來(lái)如果你算出了 L2 范數(shù)想換算成 MSE就是norm**2 / n。這個(gè) n 到底是樣本數(shù)還是全部元素?cái)?shù)取決于你的張量最后一維是什么——回歸里輸出是標(biāo)量的話兩者相同如果是多步預(yù)測(cè)那就得區(qū)分。提示n 的取值一定要和損失函數(shù)的 reduction 對(duì)齊。nn.MSELoss(reductionmean)對(duì)全部元素求平均如果輸入張量形狀是 (B, T, D)那分母就是 BTD不是 B。多步預(yù)測(cè)場(chǎng)景下這個(gè)坑非常常見(jiàn)。3. PyTorch 中的計(jì)算方式與 API 選擇3.1 torch.linalg.norm 與已棄用的 torch.normPyTorch 早期只有一個(gè)torch.norm這個(gè)函數(shù)在 1.9 之后逐漸被torch.linalg系列取代到 2.x 版本用torch.norm會(huì)直接給你一個(gè) deprecation warning。原因在于老 API 對(duì)矩陣輸入的處理有歧義傳一個(gè)矩陣進(jìn)去torch.norm默認(rèn)算的是 Frobenius 范數(shù)也就是把所有元素平方求和開方但如果你指定p2它還可能被理解成譜范數(shù)。同名參數(shù)在不同形狀下語(yǔ)義不一致容易踩坑。新的torch.linalg把這個(gè)歧義拆開了分成兩個(gè)函數(shù)torch.linalg.vector_norm(input, ord, dim, keepdim, dtype)專門算向量范數(shù)輸入的最后若干維被當(dāng)作向量來(lái)處理。torch.linalg.matrix_norm(input, ord, dim, keepdim, dtype)專門算矩陣范數(shù)比如 Frobenius、核范數(shù)、譜范數(shù)。而torch.linalg.norm是個(gè)通用入口會(huì)根據(jù)輸入維度和 ord 自動(dòng)判斷該走哪條路。日常做回歸損失的時(shí)候用vector_norm就足夠了語(yǔ)義最清晰。import torch x torch.tensor([1.0, -2.0, 3.0, -4.0]) # L1 范數(shù) l1 torch.linalg.vector_norm(x, ord1) # tensor(10.) # L2 范數(shù) l2 torch.linalg.vector_norm(x, ord2) # tensor(5.4772) # 等價(jià)寫法L2 的平方 l2_sq torch.linalg.vector_norm(x, ord2) ** 2 # tensor(30.)注意ord2是默認(rèn)值所以torch.linalg.vector_norm(x)得到的就是 L2 范數(shù)。而ord1拿到的才是 L1。如果你習(xí)慣了 NumPy 的np.linalg.norm(x, ord1)這套參數(shù)是通用的遷移過(guò)來(lái)不用改。3.2 nn.L1Loss / nn.MSELoss 與手寫實(shí)現(xiàn)的差異訓(xùn)練的時(shí)候我更推薦用nn.L1Loss和nn.MSELoss這兩個(gè)模塊而不是手寫(pred - target).abs().mean()。原因有三個(gè)。第一是 reduction 參數(shù)更可控。nn.MSELoss默認(rèn)reductionmean可以改成sum或none。改成none之后返回的是逐元素?fù)p失方便你自己做加權(quán)或者 mask比如在序列任務(wù)里把 padding 位置排除掉。手寫的時(shí)候要自己處理 mask容易出錯(cuò)。第二是數(shù)值穩(wěn)定性。PyTorch 的 CUDA 實(shí)現(xiàn)里這些 loss 的前向和反向都是融合過(guò)的 kernel對(duì)半精度f(wàn)p16和 bf16 有專門優(yōu)化。手寫的話中間張量數(shù)量變多顯存占用和耗時(shí)都會(huì)差一點(diǎn)混合精度下更容易溢出。第三是自動(dòng)微分路徑更短。nn.MSELoss在反向傳播時(shí)可以直接算出梯度而手寫版本需要 autograd 走完 abs、pow、mean 三個(gè)階段圖更大。import torch import torch.nn as nn pred torch.tensor([2.5, 0.0, 2.1, 7.8]) target torch.tensor([3.0, -0.5, 2.0, 8.0]) mae_loss nn.L1Loss(reductionmean) mse_loss nn.MSELoss(reductionmean) print(mae_loss(pred, target)) # tensor(0.4250) print(mse_loss(pred, target)) # tensor(0.2875) print(torch.sqrt(mse_loss(pred, target))) # tensor(0.5362) 就是 RMSE # 手寫等價(jià)實(shí)現(xiàn) print((pred - target).abs().mean()) # tensor(0.4250) print(((pred - target) ** 2).mean()) # tensor(0.2875)這里有個(gè)細(xì)節(jié)值得說(shuō)nn.L1Loss在 PyTorch 2.0 之后支持reductionnone和reductionmean但如果你想做的是沿特征維算 L1 范數(shù)再沿樣本維平均那就不能直接用nn.L1Loss得手寫兩步。因?yàn)閚n.L1Loss的 mean 是把所有元素一起平均的不會(huì)區(qū)分維度。3.3 dim 和 keepdim 參數(shù)到底影響什么張量形狀是 (B, D) 的時(shí)候torch.linalg.vector_norm(x, ord1, dim1)會(huì)把每一行當(dāng)作一個(gè)向量算出 B 個(gè)標(biāo)量返回形狀 (B,)。dim0則是把每一列當(dāng)作向量返回形狀 (D,)。這個(gè)區(qū)別在 batch 訓(xùn)練里至關(guān)重要。x torch.randn(4, 3) # 沿最后一維特征維算 L1 范數(shù)得到每個(gè)樣本的范數(shù) per_sample torch.linalg.vector_norm(x, ord1, dim1) print(per_sample.shape) # torch.Size([4]) # 沿 batch 維算得到每個(gè)特征的范數(shù) per_feature torch.linalg.vector_norm(x, ord1, dim0) print(per_feature.shape) # torch.Size([3]) # 加上 keepdim 保留被約減的那一維 per_sample_keep torch.linalg.vector_norm(x, ord1, dim1, keepdimTrue) print(per_sample_keep.shape) # torch.Size([4, 1])keepdimTrue在需要后續(xù)廣播的時(shí)候很有用。比如你想把每個(gè)樣本的范數(shù)當(dāng)作權(quán)重再乘回原張量?jī)蓚€(gè)形狀必須能廣播(B,) 和 (B, D) 是廣播不了的但 (B, 1) 和 (B, D) 可以。這個(gè)小技巧在寫歸一化層或者注意力掩碼的時(shí)候經(jīng)常用到。還有一個(gè)容易忘的點(diǎn)dim可以傳負(fù)數(shù)。dim-1表示最后一維寫起來(lái)比記住具體維度號(hào)更安全尤其是張量形狀會(huì)隨代碼修改而變的時(shí)候。# 推薦寫法不依賴具體維度號(hào) norms torch.linalg.vector_norm(x, ord2, dim-1, keepdimTrue) x_normalized x / (norms 1e-8)這里的1e-8是防止除零也是 L2 歸一化里幾乎必加的一個(gè)小常數(shù)。4. 梯度行為差異與選型決策4.1 L1 在零點(diǎn)附近的次梯度與稀疏性L1 損失的梯度是殘差的符號(hào)函數(shù)$\partial |r|/\partial r \text{sign}(r)$。這個(gè)梯度的特點(diǎn)是不管殘差是 0.01 還是 100梯度的大小都是 1在 PyTorch 里torch.sign(0)返回 0所以零點(diǎn)處梯度是 0。這帶來(lái)了兩個(gè)后果。好處是它對(duì)離群值不敏感。一個(gè)預(yù)測(cè)錯(cuò)得離譜的樣本在 L1 下貢獻(xiàn)的梯度和一個(gè)錯(cuò)得輕微的樣本一樣大不會(huì)把整個(gè) batch 的梯度方向帶偏。壞處是它在接近最優(yōu)解的時(shí)候會(huì)來(lái)回震蕩因?yàn)樘荻却笮『愣](méi)法像 MSE 那樣隨著誤差減小而自然衰減到 0。所以用 MAE 訓(xùn)練的時(shí)候通常需要配一個(gè)學(xué)習(xí)率衰減策略后期把步長(zhǎng)降下來(lái)才能在最優(yōu)解附近穩(wěn)住。稀疏性是 L1 的另一個(gè)特性。如果你用 L1 懲罰網(wǎng)絡(luò)權(quán)重?fù)p失項(xiàng)是 $\lambda \sum_i |w_i|$對(duì)應(yīng)的梯度是 $\lambda \cdot \text{sign}(w_i)$這個(gè)梯度會(huì)把權(quán)重往 0 的方向推且推的力度恒定。當(dāng)權(quán)重已經(jīng)很小的時(shí)候L2 正則的梯度 $2\lambda w_i$ 也趨近于 0 了推力消失權(quán)重會(huì)停在很小的非零值上而 L1 的推力還是 $\lambda$足夠把權(quán)重直接壓到 0。這就是 L1 能產(chǎn)生稀疏權(quán)重、L2 只能產(chǎn)生小權(quán)重的根本原因。4.2 MSE 對(duì)離群點(diǎn)的二次放大MSE 的梯度是 $2r/n$和殘差本身成正比。一個(gè)殘差是 10 的樣本梯度是殘差為 1 的樣本的 10 倍損失貢獻(xiàn)是 100 倍。這個(gè)平方關(guān)系在數(shù)據(jù)干凈的時(shí)候是好事收斂快、目標(biāo)明確在數(shù)據(jù)有噪聲的時(shí)候就是災(zāi)難模型會(huì)被少數(shù)幾個(gè)異常樣本牽著走。我做過(guò)一個(gè)對(duì)比實(shí)驗(yàn)造了 1000 個(gè)服從 $y 2x 1 \epsilon$ 的樣本$\epsilon$ 是標(biāo)準(zhǔn)差 0.5 的高斯噪聲然后人為把其中 20 個(gè)樣本的 y 值加上 20。用同樣的網(wǎng)絡(luò)結(jié)構(gòu)和學(xué)習(xí)率分別訓(xùn) 200 輪結(jié)果差異很明顯損失函數(shù)干凈數(shù)據(jù)的測(cè)試 MAE含離群點(diǎn)數(shù)據(jù)的測(cè)試 MAE訓(xùn)練穩(wěn)定性MSE0.381.67前 30 輪損失劇烈波動(dòng)MAE0.410.45全程平穩(wěn)下降Smooth L1beta1.00.390.58前期波動(dòng)小后期平穩(wěn)從表里能看出MSE 在含離群點(diǎn)的數(shù)據(jù)上測(cè)試誤差漲了 4 倍多而 MAE 幾乎沒(méi)受影響。Smooth L1 介于兩者之間因?yàn)樗跉埐钚∮?beta 的時(shí)候用平方項(xiàng)保證小誤差下梯度平滑大于 beta 的時(shí)候用線性項(xiàng)避免大誤差被放大。實(shí)操心得如果你的數(shù)據(jù)里存在無(wú)法清洗的離群點(diǎn)第一選擇是 Huber/Smooth L1它對(duì)兩類誤差的優(yōu)點(diǎn)都保留了一部分。PyTorch 里對(duì)應(yīng)nn.HuberLoss(delta1.0)和nn.SmoothL1Loss(beta1.0)兩者形式略有差異Huber 是標(biāo)準(zhǔn)的 Huber 定義SmoothL1 是 Fast R-CNN 里用的變體beta 為 0 時(shí)退化成 L1。4.3 損失函數(shù)選型決策表選哪個(gè)損失不看哪個(gè)更高級(jí)而是看你的數(shù)據(jù)特性和任務(wù)要求。我整理了一張表實(shí)際項(xiàng)目里可以直接對(duì)號(hào)入座。場(chǎng)景推薦損失理由數(shù)據(jù)干凈追求極致精度MSE / L2梯度隨誤差衰減能收斂到很精確的解數(shù)據(jù)含離群點(diǎn)MAE / L1 / Huber對(duì)極端誤差不敏感需要稀疏權(quán)重加 L1 正則項(xiàng)恒定的壓縮力能把小權(quán)重推向 0需要平滑權(quán)重、防過(guò)擬合加 L2 正則weight_decay權(quán)重整體被壓制不會(huì)出現(xiàn)極端值目標(biāo)值跨越多個(gè)數(shù)量級(jí)對(duì)數(shù)變換后 MSE 或 RMSLE直接 MSE 會(huì)被大值主導(dǎo)需要可解釋的平均誤差訓(xùn)練用 MSE報(bào)告用 RMSE訓(xùn)練效率與人類可讀性兼顧多任務(wù)學(xué)習(xí)各任務(wù)量綱不同各任務(wù)用 MAE 或先歸一化再 MSE量綱統(tǒng)一后再加權(quán)更合理最后一行值得展開說(shuō)一句。多任務(wù)學(xué)習(xí)里如果任務(wù) A 的損失是 0.1任務(wù) B 的損失是 1000直接相加的話任務(wù) B 完全主導(dǎo)梯度。這時(shí)候要么把每個(gè)任務(wù)的目標(biāo)值先歸一化到同一量級(jí)要么把損失換成 MAE 這種尺度更溫和的形式要么給不同任務(wù)手動(dòng)加權(quán)。我一般傾向先做目標(biāo)歸一化因?yàn)檫@樣損失數(shù)值本身就能反映訓(xùn)練狀態(tài)不用記一堆權(quán)重系數(shù)。5. 完整實(shí)戰(zhàn)三種損失的對(duì)比實(shí)驗(yàn)5.1 造數(shù)據(jù)與模型搭建為了讓你能直接復(fù)現(xiàn)我用一段自包含的代碼把三種損失在同一份數(shù)據(jù)上跑一遍。數(shù)據(jù)用一維回歸加一段人為的離群點(diǎn)這樣差異會(huì)很明顯。import torch import torch.nn as nn import numpy as np torch.manual_seed(42) np.random.seed(42) # 生成干凈數(shù)據(jù) y 2x 1 noise n_train 800 n_val 200 X_train torch.rand(n_train, 1) * 10 - 5 y_train 2 * X_train 1 torch.randn(n_train, 1) * 0.5 X_val torch.rand(n_val, 1) * 10 - 5 y_val 2 * X_val 1 torch.randn(n_val, 1) * 0.5 # 人為注入 5% 的離群點(diǎn)只污染訓(xùn)練集 n_outlier int(0.05 * n_train) outlier_idx torch.randperm(n_train)[:n_outlier] y_train[outlier_idx] torch.randn(n_outlier, 1) * 20 # 一個(gè)簡(jiǎn)單的兩層 MLP def make_model(): return nn.Sequential( nn.Linear(1, 64), nn.ReLU(), nn.Linear(64, 64), nn.ReLU(), nn.Linear(64, 1), )模型故意做得很小因?yàn)檫@里要觀察的是損失函數(shù)的行為差異網(wǎng)絡(luò)容量大了反而會(huì)掩蓋掉。輸入特征做了中心化處理減 5 再乘 10 那步讓數(shù)據(jù)落在 [-5, 5]這樣初始學(xué)習(xí)率 0.01 就能跑得動(dòng)不用額外做標(biāo)準(zhǔn)化。5.2 訓(xùn)練循環(huán)與評(píng)估代碼訓(xùn)練部分寫成函數(shù)接受不同的損失函數(shù)對(duì)象其余配置完全一致保證對(duì)比公平。def train(loss_fn, epochs200, lr1e-2): model make_model() optimizer torch.optim.Adam(model.parameters(), lrlr) # 后期降學(xué)習(xí)率讓 MAE 這種恒定梯度的方法能穩(wěn)定下來(lái) scheduler torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, T_maxepochs) history [] for epoch in range(epochs): model.train() optimizer.zero_grad() pred model(X_train) loss loss_fn(pred, y_train) loss.backward() optimizer.step() scheduler.step() # 評(píng)估統(tǒng)一用 MAE 和 RMSE和訓(xùn)練損失解耦 model.eval() with torch.no_grad(): val_pred model(X_val) val_mae (val_pred - y_val).abs().mean().item() val_rmse torch.sqrt(((val_pred - y_val) ** 2).mean()).item() history.append((epoch, val_mae, val_rmse)) return history results {} results[MSE] train(nn.MSELoss()) results[MAE] train(nn.L1Loss()) results[Huber] train(nn.HuberLoss(delta1.0))這里有兩個(gè)設(shè)計(jì)細(xì)節(jié)值得說(shuō)明。一是評(píng)估階段統(tǒng)一用 MAE 和 RMSE和訓(xùn)練用的損失分開這樣三種方法才有可比性——如果用各自的訓(xùn)練損失去比較數(shù)值根本不在一個(gè)量綱上。二是加了余弦退火的學(xué)習(xí)率調(diào)度因?yàn)?MAE 的梯度是恒定的不打調(diào)度后期會(huì)一直在最優(yōu)點(diǎn)附近抖動(dòng)收斂曲線會(huì)很難看這不是損失函數(shù)的缺點(diǎn)是優(yōu)化策略沒(méi)配合好。訓(xùn)練完之后把最終結(jié)果和最優(yōu)輪次的指標(biāo)打印出來(lái)for name, hist in results.items(): best min(hist, keylambda x: x[1]) final hist[-1] print(f{name:8s} | best epoch {best[0]:3d} | val MAE {best[1]:.4f} | fval RMSE {best[2]:.4f} | final MAE {final[1]:.4f})5.3 結(jié)果對(duì)比與解讀跑完之后大致會(huì)看到這樣的模式具體數(shù)值受隨機(jī)種子影響但趨勢(shì)穩(wěn)定損失最優(yōu)驗(yàn)證 MAE最優(yōu)驗(yàn)證 RMSE訓(xùn)練后期是否抖動(dòng)MSE0.62 ~ 0.700.85 ~ 0.95是RMSE 偏高M(jìn)AE0.44 ~ 0.480.55 ~ 0.60否平穩(wěn)Huber0.45 ~ 0.490.56 ~ 0.62輕微MSE 在含離群點(diǎn)的數(shù)據(jù)上表現(xiàn)最差原因前面已經(jīng)分析了。但這里還有一個(gè)更細(xì)的觀察MSE 的 RMSE 和 MAE 之間的差距比其他兩個(gè)損失大得多。MSE 的 MAE 大約 0.65RMSE 大約 0.90差了 0.25而 MAE 損失的這兩個(gè)值只差 0.12 左右。這說(shuō)明 MSE 訓(xùn)練出來(lái)的模型在少數(shù)樣本上錯(cuò)得非常厲害拉高了 RMSE。反過(guò)來(lái)如果你把離群點(diǎn)去掉再跑一遍會(huì)發(fā)現(xiàn) MSE 的表現(xiàn)反超 MAE——數(shù)據(jù)干凈的時(shí)候MSE 的二次懲罰能提供更精確的梯度信息收斂到的最優(yōu)解更接近真實(shí)參數(shù)。這個(gè)反轉(zhuǎn)很有意思也是我在多個(gè)項(xiàng)目里反復(fù)驗(yàn)證過(guò)的損失函數(shù)沒(méi)有絕對(duì)的好壞只有和當(dāng)前數(shù)據(jù)分布匹不匹配。還有一個(gè)現(xiàn)象值得留意MAE 損失訓(xùn)出來(lái)的模型預(yù)測(cè)值往往更保守傾向于預(yù)測(cè)中位數(shù)而不是均值。因?yàn)?MAE 的最優(yōu)解是中位數(shù)MSE 的最優(yōu)解是均值。在偏態(tài)分布的數(shù)據(jù)上這個(gè)差異會(huì)直接體現(xiàn)在預(yù)測(cè)結(jié)果上——如果你做的是房?jī)r(jià)預(yù)測(cè)而房?jī)r(jià)分布右偏MAE 訓(xùn)出來(lái)的模型會(huì)低估高價(jià)房MSE 訓(xùn)出來(lái)的模型會(huì)被少數(shù)豪宅拉高整體預(yù)測(cè)。選哪個(gè)取決于你的業(yè)務(wù)更在意哪一類錯(cuò)誤。6. 正則化場(chǎng)景下的 L1/L2權(quán)重衰減怎么配6.1 Lasso 與 Ridge 在 PyTorch 里的實(shí)現(xiàn)方式L1 和 L2 除了當(dāng)損失函數(shù)還經(jīng)常以正則項(xiàng)的身份出現(xiàn)也就是經(jīng)典的 Lasso 和 Ridge。區(qū)別在于損失函數(shù)里的 L1/L2 是對(duì)殘差算的正則項(xiàng)里的 L1/L2 是對(duì)模型權(quán)重算的。數(shù)學(xué)形式上的差異只是作用對(duì)象不同但工程實(shí)現(xiàn)上完全是兩碼事。L2 正則可以直接通過(guò)優(yōu)化器的weight_decay參數(shù)實(shí)現(xiàn)一行搞定optimizer torch.optim.Adam(model.parameters(), lr1e-3, weight_decay1e-4)L1 正則沒(méi)有現(xiàn)成的優(yōu)化器參數(shù)需要手動(dòng)加到損失里def l1_regularization(model, lam1e-4): reg 0.0 for name, param in model.named_parameters(): if weight in name: # 通常不對(duì) bias 做正則 reg reg param.abs().sum() return lam * reg loss criterion(pred, target) l1_regularization(model, lam1e-4)注意這里我用param.abs().sum()而不是torch.linalg.vector_norm(param, ord1)因?yàn)閷?duì)于權(quán)重矩陣來(lái)說(shuō)L1 正則通常是把所有元素絕對(duì)值加起來(lái)不區(qū)分維度。如果寫成vector_norm(param, ord1, dim1).sum()那語(yǔ)義就變了是先按行求 L1 范數(shù)再把每行的范數(shù)相加結(jié)果雖然數(shù)值相同因?yàn)?L1 范數(shù)滿足可加性但對(duì)梯度的語(yǔ)義解釋不同。數(shù)值上確實(shí)一樣但寫清楚意圖對(duì)后續(xù)維護(hù)更友好。6.2 AdamW 與 Adam 的 weight_decay 差異這里有一個(gè)非常經(jīng)典的坑值得單獨(dú)拿出來(lái)說(shuō)。在 PyTorch 里torch.optim.Adam(weight_decay...)和torch.optim.AdamW(weight_decay...)的行為是不一樣的。Adam 的 weight_decay 是把 L2 正則項(xiàng)加進(jìn)梯度里然后讓 Adam 的自適應(yīng)學(xué)習(xí)率機(jī)制去縮放它。這導(dǎo)致了一個(gè)問(wèn)題對(duì)于梯度一直很大的參數(shù)實(shí)際的正則效果會(huì)被削弱對(duì)于梯度很小的參數(shù)正則效果會(huì)被放大。這和 L2 正則的初衷對(duì)所有權(quán)重均勻施加壓縮不符。AdamW 把權(quán)重衰減從梯度計(jì)算里解耦出來(lái)直接對(duì)參數(shù)做一個(gè)固定的衰減 $w \leftarrow w - \eta \lambda w$不再經(jīng)過(guò)自適應(yīng)學(xué)習(xí)率的調(diào)整。這樣正則的強(qiáng)度就只由學(xué)習(xí)率和 lambda 決定可控性高很多。# 老寫法正則強(qiáng)度會(huì)被自適應(yīng)學(xué)習(xí)率扭曲 optimizer_a torch.optim.Adam(model.parameters(), lr1e-3, weight_decay1e-2) # 推薦寫法解耦的權(quán)重衰減 optimizer_b torch.optim.AdamW(model.parameters(), lr1e-3, weight_decay1e-2)同樣的權(quán)重衰減系數(shù)在兩個(gè)優(yōu)化器下得到的正則強(qiáng)度可能差幾倍。如果你從 Adam 切換到 AdamW 而沒(méi)調(diào)整 lambda會(huì)明顯感覺(jué)正則變強(qiáng)了模型欠擬合。我的經(jīng)驗(yàn)是先用 AdamWlambda 從 1e-4 到 1e-2 之間按對(duì)數(shù)尺度試幾個(gè)值觀察驗(yàn)證損失和訓(xùn)練損失的差值差值小說(shuō)明正則偏弱差值大說(shuō)明正則過(guò)強(qiáng)。6.3 手寫正則項(xiàng)時(shí)的注意事項(xiàng)手動(dòng)加 L1 或者 L2 正則的時(shí)候有幾個(gè)細(xì)節(jié)容易忽略。一是正則項(xiàng)要不要參與 loss 的 reduction。通常做法是正則項(xiàng)單獨(dú)算不和主損失一起被 mean 掉。如果你寫loss criterion(pred, target) lam * reg主損失是平均過(guò)的正則項(xiàng)是求和過(guò)的兩者的尺度就沒(méi)有對(duì)齊。當(dāng) batch size 變化的時(shí)候這個(gè)不對(duì)齊會(huì)被放大。穩(wěn)妥的做法是把正則項(xiàng)也除以 batch size或者干脆用一個(gè)很小的 lam 讓尺度差異不那么重要。二是要不要對(duì) bias 和歸一化層的參數(shù)做正則。標(biāo)準(zhǔn)的 L2 正則通常只作用在權(quán)重矩陣上不動(dòng) bias 和 BatchNorm 的 gamma/beta。因?yàn)?bias 數(shù)量少正則它意義不大BatchNorm 的 gamma 是縮放系數(shù)正則它反而會(huì)傷害表達(dá)能力。所以在手寫正則的時(shí)候用named_parameters()過(guò)濾一下名字是很有必要的。三是多卡訓(xùn)練時(shí)正則項(xiàng)要小心重復(fù)計(jì)算。如果你用 DataParallelmodel 在各卡上副本的參數(shù)是同步的但正則項(xiàng)如果在 forward 里算可能會(huì)被算多次。這種情況建議把正則項(xiàng)的計(jì)算放在 forward 外面用model.module去訪問(wèn)真正的參數(shù)。注意AdamW 的 weight_decay 默認(rèn)是 1e-2直接拿過(guò)來(lái)用在你的任務(wù)上不一定合適。小數(shù)據(jù)集上 1e-2 可能過(guò)強(qiáng)大數(shù)據(jù)集上 1e-4 可能太弱。別照搬要試。7. 常見(jiàn)問(wèn)題與排查速查表7.1 損失變 nan 或 inf 的幾種根源損失突然變成 nan是訓(xùn)練中最讓人頭疼的問(wèn)題之一而 MSE 比 MAE 更容易出這個(gè)問(wèn)題因?yàn)樗衅椒竭\(yùn)算。常見(jiàn)原因有這幾類。輸入數(shù)據(jù)里有 nan 或 inf前向傳播之后就污染了所有輸出這個(gè)用torch.isnan(x).any()檢查一遍就能定位。學(xué)習(xí)率太大導(dǎo)致參數(shù)爆炸幾輪之后權(quán)重變成極大值平方之后直接溢出這時(shí)候把學(xué)習(xí)率降一個(gè)數(shù)量級(jí)通常能解決?;旌暇扔?xùn)練下fp16 的表示范圍有限MSE 的平方和容易超過(guò) 65504 溢出需要用torch.cuda.amp.GradScaler做梯度縮放。還有一種是開方導(dǎo)致的問(wèn)題——如果你手寫 RMSE 而 MSE 算出來(lái)是負(fù)數(shù)通常是浮點(diǎn)誤差導(dǎo)致極小負(fù)數(shù)開方就變成 nan這時(shí)候需要在開方前加torch.clamp(mse, min1e-12)。# 防 nan 的 RMSE 計(jì)算 mse ((pred - target) ** 2).mean() rmse torch.sqrt(torch.clamp(mse, min1e-12))MAE 因?yàn)椴簧婕捌椒綌?shù)值上穩(wěn)定得多但在混合精度下如果某個(gè)殘差特別大abs本身沒(méi)問(wèn)題問(wèn)題出在它后面接的梯度累加同樣需要用 GradScaler。7.2 數(shù)值精度、dtype 與設(shè)備不一致還有一個(gè)非常隱蔽的問(wèn)題dtype 和設(shè)備不一致導(dǎo)致的靜默錯(cuò)誤。比如pred是 float32 在 GPU 上target是 float64 在 CPU 上PyTorch 會(huì)拋一個(gè)類型錯(cuò)誤這個(gè)還好排查。麻煩的是pred是 float16target是 float32算出來(lái)的 loss 會(huì)被提升到 float32看起來(lái)沒(méi)問(wèn)題但反向傳播時(shí)梯度可能因?yàn)榫葋G失變得很小訓(xùn)練不動(dòng)。設(shè)備不一致也是類似。兩個(gè)張量在不同 GPU 上做運(yùn)算PyTorch 會(huì)報(bào)錯(cuò)這個(gè)容易發(fā)現(xiàn)。但如果是在多進(jìn)程數(shù)據(jù)加載里某個(gè)張量被意外留在 CPU整個(gè)訓(xùn)練會(huì)被拖慢幾十倍而且不報(bào)錯(cuò)只能通過(guò) profiler 或者手動(dòng)打印.device來(lái)定位。# 訓(xùn)練循環(huán)開始時(shí)統(tǒng)一檢查一次省得后面查半天 assert pred.device target.device, f{pred.device} vs {target.device} assert pred.dtype target.dtype, f{pred.dtype} vs {target.dtype}這兩行 assertion 建議加在調(diào)試階段確認(rèn)沒(méi)問(wèn)題之后再刪掉能省掉大量排查時(shí)間。特別是從別人那里接手代碼的時(shí)候先跑一遍看有沒(méi)有類型和設(shè)備不匹配往往能發(fā)現(xiàn)幾個(gè)隱藏的坑。7.3 問(wèn)題排查速查表最后把常見(jiàn)的癥狀和對(duì)應(yīng)的排查方向整理成表出問(wèn)題的時(shí)候可以直接對(duì)照。癥狀可能原因排查方法loss 是 nan輸入含 nan或?qū)W習(xí)率過(guò)大檢查輸入降低 lrloss 是 inf平方后溢出fp16 范圍不夠換 fp32 或加 GradScalerloss 不下降學(xué)習(xí)率太小或損失量綱和初始化不匹配試大 lr檢查輸出范圍MAE 后期來(lái)回震蕩恒定梯度導(dǎo)致無(wú)法收斂到精確解加學(xué)習(xí)率衰減MSE 對(duì)個(gè)別樣本過(guò)敏感數(shù)據(jù)含離群點(diǎn)換 Huber 或先清洗數(shù)據(jù)RMSE 遠(yuǎn)大于 MAE存在極端誤差樣本看殘差分布考慮 Huberweight_decay 效果不明顯用的 Adam 而非 AdamW換 AdamW重調(diào) lambdaL1 正則后權(quán)重不稀疏lambda 太小或沒(méi)做歸一化加大 lambda檢查尺度手寫損失比內(nèi)置慢很多中間張量多沒(méi)用融合 kernel優(yōu)先用 nn 模塊多步預(yù)測(cè)損失量綱不對(duì)reduction 分母算錯(cuò)確認(rèn)是 B 還是 BTD表里的每一條我都在實(shí)際項(xiàng)目里踩過(guò)。特別是最后一條多步預(yù)測(cè)任務(wù)里損失按 sum 歸約、報(bào)告按 mean 換算中間差了一個(gè) T 倍對(duì)不上賬的時(shí)候查了半天以為是模型問(wèn)題結(jié)果只是歸約方式?jīng)]對(duì)齊。最后分享一個(gè)小習(xí)慣。我在每個(gè)涉及損失函數(shù)的新項(xiàng)目里都會(huì)先寫一個(gè)十幾行的自檢腳本造一批固定的輸入和目標(biāo)把各種損失、范數(shù)、RMSE 的數(shù)值都算一遍和手算的結(jié)果對(duì)一下。這個(gè)腳本跑通之后才敢把它用到正式訓(xùn)練里??雌饋?lái)是多花十分鐘但它能保證你后面幾個(gè)小時(shí)的調(diào)參不會(huì)建立在一個(gè)算錯(cuò)的損失上。這個(gè)習(xí)慣是我在被 RMSE 的 reduction 問(wèn)題坑了整整一個(gè)下午之后養(yǎng)成的至今沒(méi)再出過(guò)類似的錯(cuò)。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
99精品福利视频| 91肏| 久久人妻视频| 日本熟妇人妻在线| www久久久| 日本强伦片中文字幕免费看| 婷婷涩五月| 精品色情一区二区三区四区| 日韩av网站在线观看| 开心激情综合| 五月丁香成人| 激情综合网五月天| 亚洲人人操BD| 丁香月五月天婷婷久久| 激情婷婷五月天| 日本操B视频在线观看| 99网99热| 第四色首页| 五月丁香美女视频| 色综合中文| 五月婷婷碰碰| 超碰人人艹| 丁香五月天欧美成人| 午夜日韩久久久网站| 色综合五月天| www色婷婷| 熟女激情五月天 | 五月丁香六月激情| 99久久久久久www| 五月丁香婷婷激情| 538久久| www.久操| 99精品视频免费观看| 99热6这里只有精品6| 4438激情网| 欧美A片在线视频免费观看| 丁香五月激情婷婷| 性爱久久| 成人美女网| 五月丁香六月在线| 天天日,天天干,天天操| 久久精品这里只有精品免费首页| 婷婷开心激情| 五月丁香色| 无码色| 五月天五月天激情网| 五月婷婷丁香五月亚洲色| 五月丁香精品| 天天天久久久| 四色女婷婷| 亚洲在线激情婷婷五月| 五月丁香色狠狠干大屄| 亚洲第79页| 色五月婷婷啪啪五月| 妻久久久久| 丁香香五月激情免费视频| www超碰| www...com黄在线观看| 婷婷成人五月天| 99热99干| 开心激情婷婷| AV亚洲在线| 新激情五月天| 久久Xx| 色婷婷丁香社综合| 久久婷婷啪啪视频| 五月人人丁香婷婷五月人人丁香| 这里只有精品69| 婷婷五月天亚洲图片| 天天开心AV色综合婷婷五月天| 在线,国产,色,热视频| 狠狠艹狠狠艹| 91妻人人爽人人看片| 大香蕉久艹| 色婷婷亚洲精品天天综| 99久久精品免费精品国产_国产精品久久久久久_国产在线|日韩_久久国产精品电影 | 国产av一区二区三区| 婷婷丁香六月天| www.色五月| 色天堂婷婷| 教师性爱毛片| 色播综合| 色色综合色| 五月天久久91| 婷婷五月天激情网| 99久久97久久欧美综合网| 激情六月丁香| 九九热视频思思| 婷婷激情小说| 欧美黄色AA片哗啦啦啦| 成人.在线日韩| 最近中文字幕大全免费版在线 | 9热久久| 美女网黄| 五月天激情小说欧美激情| 天天干夜晚夜操| 五月天激情久久| 婷婷五月天成人| 天天爽夜夜操| 搡BBBB搡BBB搡五十| 操操熟女| 色高清无码视频| 五月丁香六月婷婷网| 91色久| 丁香五月AV| 色婷婷五月综合色婷婷| 色婷婷在线综合色播网| 五月婷婷与六月丁香图片激情| 精国产品一区二区三区A片 | 婷婷五月天影院| 狠狠擼综合| 狠狠99| 91欧美| 97在线干| 第四色26uuu| www.yw色| 六月色 亚洲| 亚洲免费看片| 色女人久久| 亚洲视频在线观看| 啪啪色激情五月天| 国产欧美第五十五页| 桃色成人网| 六月婷欧美| 激情 婷婷 插| 婷婷五月天影院| 日本在线99| 亭亭五月天黑人2014| 亚洲国产精品VA在线看黑人| 在线观看日韩12345区| 99在线视频播放| 成 人 色 色| 五月丁香网站| 久久五月天色婷婷| 黄网在线播放| 久热这里只精品| 天天色天天爱天天爱天天爱y| 久久小视频| 日韩精品一区二区刘| 五月天免费色| 无码日本精品XXXXXXXXX| 99九九视频| 久久久人妻系列| 激情av| 亚洲婷婷91丁香| 丁香午夜天| 野战J办公桌椅H| 538任你爽视频不一样的| 人妻videos人妻高清| 久99久视频| 成人AV网站在线| 激情网婷婷婷| 狠狠色狠狠色综合日日91| 26UUU一区二区| 26.uuu丁香五月婷婷| 亲子乱AV-区二区三区| 婷婷五月天777| 97人人超| 激情五月图| 开心五月婷婷| 六月婷婷国产| 啪啪色激情五月天| 91人人网| 五月天六月丁香| 日韩AV大全| www超碰| 成人婷99最新| 青青夜夜狠狠夜夜狠狠| 91色性感五月婷婷丁香| 婷婷久久色| 色情五月| 97久久久| 婷婷激情五月| 天天搞天天色综合| 成人国产网站| 天天日,天天插| 五月色网| 综合六月久久| 婷婷丁香五月综合| 午夜理论片最新午夜理论剧| 五月久久丁香| WWW,五月| 99视频精品全部免费 在线| 乱岳熟女50岁| 伊人五月天在线| …亚洲黄色在线播放日韩、av中文a…| 97五月天| 色综合天天网| 伊人久久综合| 丁香六月天| 婷五月天在线草| 五月丁香本色在线观看| 99免费视频| www.91九色| 色色色色色色色色网站| 色婷婷综合网站| 婷婷伊人綜合| 国产毛片精品一区二区色欲黄A片| 情欲综合网| 久草婷婷网 | 亚洲视频久久| 婷婷激情小说| 五月丁香六月婷婷姐| 97干视频在线| 5月婷婷6月丁香aV| 婷婷七月丁香色色| 另类五月激情| 色无码| 丁香婷婷啪啪啪| 97久久超级| 夜夜 操无码| 欧美va国产va| 五月丁香六月婷| 亚洲字幕AV一区二区三区四区| 欧美黄色AA片哗啦啦啦| 色五月婷婷五月久久| 五月色激情综合网| 亚洲乱码日产精品BD| 久久婷婷综合五月趴| www.zbzhongsen.com| 无码少妇高潮喷水A片免费| 色婷婷婷婷| 五月天激情小说婷婷| 99精品久久久久久| 国产亚洲精品AAAAAAA片| 五月天开心激情综合网| 丁香五月在线观看综合| 丁香五月AV在线| 性爱网六月丁香| 开心激情婷婷| 九九99免费视频| 99青青草| 五月激情丁香| 激情五月丁香激情综合网| 五月天丁香综合久久国产| 91 影音先锋| 五月丁香婷婷色色| 超碰免费大香蕉| 国产精品激情五月天色婷婷| 婷婷基地成人五月天| 国产第99页| 精品夜夜澡人妻无码AV| 五月丁香啪啪啪| 五月婷丁香| 婷婷播播五月天| 99色色爰| 伊人春天av| 日韩久热| 天天色月| 26uuu四色| 91人人网| 色吧综合网| 激情av在线| 免费日本aⅴ中文字幕| 99ree6| 日本三级韩三级99久久| 99色色网| 无人区码一码二码三码医生系列| 亚洲精品又粗又大又爽A片| 亚洲精品视频在线播放| 色色色色五月| 色墦五月丁香| 香蕉97碰碰碰欧美| 国产精品黑丝| 99久热精品在线| 人人超碰99| 骚逼视频一区2区| 96丁香婷婷九月蜜桃综合久久| 国产精品久久久久久久久久免费| 99人妻碰碰久久久禁片| 丁香六月天婷婷| 92久久久| 91色逼| 99九九在线观看免费| 久久婷婷久久| 中文字幕,综合,91| 99热99成人| 五月丁香在线视频观看| 99热骚货| 先锋资源91| 色五月婷婷激情基地| 大香婷婷| 91超级碰碰碰| sewuyue第四色| 国产探花AV在线| 678五月丁香亚洲综合| 五月综合激情图片| 婷婷五月天成人网| 99这里都是精品| 成人免费120分钟啪啪| 青青草伊人婷婷| 日韩五月婷婷久久| 日韩人妻在线观看| 婷婷激情鹿城五月天| Xx色综合| 色综合色色色| 婷婷色婷婷| 久久视频在线视频| 先锋资源婷婷| 狠狠操天天操天天操| 天天操,天天插| 亚洲六月色| 婷婷五月天影院| 日韩啪啪网| CHINESE熟女老女人HD视频| 91丨九色丨首页| 人人爽欧美婷婷久久久五月丁香| 99精品色色| 天天干、天天日日| 色无码| 日韩乱轮AV| 五月婷婷综合影院| 人人人操Av| 99色在线观看视频| 五月丁香六月婷| 久99婷婷色综合| 激情综合在线观看| 婷婷五月天BBw| 中文字幕 码精品视频网站| A片试看120分钟做受视频红杏 | 五月丁香色停停啪啪啪| 欧美日韩99| 狠狠精品干练久久久无码中文字幕 | 亚洲天堂青草| 五月婷婷综合在线| 丁香婷婷久久五月天| 69综合在线| 99热这里只有精品2| 丁香五月激情视频在线| 99热8| 五月婷网| 嫩BBB搡BBBB榛BBBB| 婷婷五月天久草在线| AV操一操| 婷婷的99视频网站| 人妻在线中文字幕久久| 五月天激情小说网| 五月婷婷色| 色色999三级片| 大香蕉久久婷婷| 色色五月天婷婷| 草操网| 中文字幕色色色| 色色色热| 极品少妇XXXX精品少妇偷拍| 97人妻碰碰碰碰碰久久久久久| 五月天操逼网| 色五月天成人在线| 变态另类9| 性色做爰片在线观看WW| 99视频网址| 亚洲色精彩| 99精品在线下载| 五月婷激情影院| 日本三级大片| www.yw色| 国产精品久久久60086| 国产亚洲99久久| 久久色婷婷| 色婷婷五月天中文字幕| 亚洲天天综合| 激情五月婷婷| 精品网站:999WWW| 亚洲色色图片| 97操碰视频| 亚洲精品久久久无码| 97久久久免费福利网址| 在线色五月婷婷| 九九热精品视频在线观看| 日韩操人| 色丁香五月天| 九热视频| 怎么样可以看免费的一级av| www91在线| 五月婷婷综合色拍| 99热这里只有精品青草| 色噜久| 五月丁香六月婷婷中文版| 五月丁香影院| 99操不停| 国产美女精品| 性做久久久久久久免费看| 婷婷五月天久久综合88| 婷婷五月天干干| 思思99热| www.久久| 久婷婷| 黄色毛片精品| 婷婷五月天综合小说网| 超碰在线观看三级片| 亚洲久热| 色色色999| 九九九九中文字幕| 色月丁| 人人射av| 图片区 小说区 区 亚洲五月 | 97婷婷丁香| 亚洲AV无码电影| 开心激情色婷婷五月天| 激情五月天综合| 久久久久久久久久久97| 五月亭亭狠狠| 丁香六月综合激| 一区二区三区四区无码| 亚洲精品字幕| 亚洲色婷婷99一9|| 国产偷人爽久久久久久老妇APP| AV在线免费播放| 五月天色视频| 99久久婷婷国产综合精品电影| www色婷婷久久综合久色| 99人妻碰碰碰久久久久禁片| 日韩啪| 天天舔天天爽| 91九色视频在线观看| 婷婷色正月| 婷婷五月丁香基| 丁香色啪综合| 激情五月婷婷视频| 成人综合伍月天| 婷婷五月天久草在线| 色五月丁香激情| 嫩草AV久久伊人妇女超级A | 亚洲成人免费电影| 激情综合网之激情五月| 熟妇无码乱子成人精品| www.婷婷,com| 亚洲国产精品二二三三区| 婷婷五月丁香六月伊人网| 噜噜视频| 婷婷另类开心| 啪啪日本欧美| 色色色色色网| 五月丁香六月香香蕉| 中文AV在线播放| 九九色色网| www色婷婷| 婷婷伊人綜合中文字幕| 99爱在线视频| 華人性愛AV在線| 六月婷婷综合| 色婷五月丁香久亚洲| 无码成人AAAAA毛片AI换脸| 丁香五月天精品| 五月丁小婷婷激情四射| 五月天亚洲色| 激情黄色小说色五月| 丁香婷婷色五月| 天堂爱爱| 亚洲人成网站999综合| 五月丁香五月天现场视频| 久婷狼色诱惑在线| 五月丁香婷婷婷激情爱爱| 人人干99| 99热这里只有精品8| 五月天综合区| 伊人久久综合| 婷婷五月天成人| 亚洲瑟瑟精品在线| 久久天堂精品| 激情五月天色色网| 婷婷.com| 日韩成人精品中文字幕| 婷婷五月天电影区小说区| 久草五月婷| 久久色天堂| 婷婷激情五月天天天开心| 成人美女网| 婷婷五月丁香综合激情| 国产1区2区3区在线观| 精品少妇人妻AV无码专区偷人 | 亚洲成人在线在线| 在线天堂9| 狠狠五月丁香色婷| 色九月国产| 色五月婷婷基地| 色色色色色爱| 激情丁香五月天综合| 婷婷六月丁香五月图区| 91婷婷在线| 丁香六月激情综合| 婷婷丁香十月| 97色吧| 日本激情91| 色婷婷中文在线| 九色自拍| 粉嫩AV久久一区二区三区| 91狠狠综合久久久| 精品爱欲五| 婷婷色色欧美综合网| 99久久喉9| 青青色com久久| 97香蕉人人在线观看| 91无码高清| 天天操婷婷| 99婷婷| 五月色婷婷影视在线电影| 狠狠干总合| 色婷婷五月天综合网| 婷婷丁香激情五月天色色| 丁香五月激情婷婷激情| 久久婷婷五月综合啪| 五月天成人网在线观看| 操91| 色婷婷综合久久| 激情五月天福利| 久久3p| 久思思久视频| 久久视频这里99| 一区二区免费看| 久久久激情| 丝袜人妻| 超碰操日| 国产激情久久| 午夜激情五月天| 亚洲妇女熟BBW| 最新久久网址| 久久激情网| 久久婷婷在线| 99热首页在线30| 99久久精| 91激情五月开心| 97日本操| 9色资源在线| 性爱久久| 99热精品在线观看| 色五月婷婷在线| 色婷婷免费观看| 国产性爱亚洲是图| 免费观看的婷婷五月视频在线| 久久婷婷五月激情网站| 思思视频久久| 色色色777| 9久久精品| 婷婷午夜精品久久久| 日hao1区| 久久免费丁香| 另类激情四射| 香蕉婷婷色五月| 综合激情肏逼网| 超碰精品国产首页| 色情婷婷久久五月天| 六月婷婷毛片| 影音先锋男人站,影音先锋男人色资源网,影音先锋AV最新资源站,影音先锋AV资源 | 91干婷婷| 91热在线观看视频| 亚洲人人操| 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | 五月天大香蕉av| 国产精品A成V人在线播放| 五月综合激情| 双性美人被调教到喷水A片| 极品少妇XXXX精品少妇偷拍| 亚洲字幕AV一区二区三区四区| 五月婷久久| 99精品在线观看| 2018国产大陆天天弄| 亚洲中文字幕在线观看| 综合久久五| 欧美人人草草| 日韩黄色电影| 色色婷婷五月天| 亚洲欧洲99| 婷婷综合网在线| 色婷五月天网站| 丁香五月在线观看完整版| 色婷婷裸体色性在线| 婷婷播5月| 天天干天天插| 婷婷五月天色播| 国产精品天天狠天天看| 婷婷黄色网| 日日操夜夜操无码免费| 伊人久久婷婷| 亚洲爱爱无码婷婷色五月| 99国产性感视频| 在线观看婷婷5月| 中文字幕黄色片| 五月天色色网站| 三年高清大片免费观看国语| 久久精品99久久久久久久久| 少妇激情基地| 久久99这里只有精品视频| 婷婷五月在线播放| 婷婷六月啪啪| 六月丁花香啪啪激情欧美| 婷婷五月激情综合啪啪| 丁香五月激情综合| 伍月婷婷六月丁香| 色综合色五月| 五月深爱网| 色五月 五月婷婷| 天天天天天天操| 综合天堂AV久久久久久久| 秋霞少妇毛片| 4399在线观看免费高清电视剧| 日韩AV色色色| 久热婷婷| 墨西哥毛片内射精| 都市激情久久| 久香草视频在线观看| 99精品国产在热久久婷婷| 五月色网| 射久久丁香五月| site:picc-up.com| 午夜婷婷久久 | 青青福利网| 五月婷婷丁香啪啪| 在线播放人妻| 成人 在线 日韩| 激情九九综合网| 五月婷在线观看| 欧美97超碰| 伊人激情啪啪| 99热这里只有精品16| 婷婷成人五月天| 人人草碰| 97色色色色色色色色色色色色色| 丁香五月日韩| 在线sebiav精品视频| 成人va在线观看视频| 国产成人99久久亚洲综合精品| 婷香五月激情视频| 踪合专区啪啪| 五月之婷婷| 国产成人+综合亚洲+天堂| 天堂综合久| 久久99热这里只有精品23| 91日日日| 91热久| 最新精品视频99| 五月天色丁香| 精典久久| 网站免费一站二站| 丁香五月天堂婷婷| 激情99。| 婷婷久久色| 日本九九视频| 极品人妻VideOssS人妻| 综合色七七| 中文久久久人妻| 久操婷婷| 天堂久久婷婷| 亚洲无码99| 99这里只有精品| 99视频| 婷婷五月天伊人在线| 久久久久这里只有精品| 九九色婷婷Av| 丁香激情婷婷网| 最近免费中文字幕大全高清大全1| 97操碰| 中文字幕永久免费| 99人人操| 99热这里全都是精品| 亚洲成人网址在线观看| 婷婷成人小说综合| 亚洲乱码日产精品BD| 草美女在线观看视频在线播放| 99精品在线| 91丨九色丨熟女|新版| 色偷偷五月天| 五月激情婷婷国产精品久久久久久| 色久五月天| 色九月综合| 午夜电影网VA内射| 亚洲操女| 婷婷五月天在线观看第二页| 超碰99成人在线| 噜噜网免费视频| 婷婷五月a| 人人干av| 九月av| 六月丁香综合| 欧美日综合| 9|无码久久久久久| 九九成人精品免费视频| 五月天久久久| 久久婷婷五月天激情| 婷婷综合丁香| 狠狠狠狠狠狠狠狠| 五月婷婷深深爱| 天天肏在线观看| 色五月婷色彩免播放器| 国产人妻777人伦精品HD| 99热这里只有精品96| 清纯唯美 激情四射| 五月天色婷婷伊人网| 成人一区在线观看| 99色综合网| 中文字幕丰满乱孑伦无码专区| 久久小视频| 色噜噜在线| 国产精品美女| AV操逼网| 26uuu欧美| 丁香六月视频免费观看| 国产99久9在线| 婷婷丁香久久| 深爱激情网婷婷| 91免费试看| 99久久久久久| 亚洲婷婷开心五月| 97婷婷五月激情六月丁香伊人| 9久热在线视频精品| 五月丁香成人| 麻豆WWWCOM内射软件| 人人爽亚洲| 曰曰久久| 久久99久久99精品,久国产,久久精品免费,99久在线,久久久久国产精品免费网站,9 | 五月婷婷啪啪| 曰日爽日日操| 久久久婷| 激情性爱五月天网页| 色婷婷的五月天| 久久机热这里只有精品免费视频| 在线中文AV| 久久香蕉丁香| 狠狠色噜噜狠狠色噜噜噜999| 无码激情AAAAA片-区区| www.日本91| 五月天开心婷婷久久| 九月av在线| 色五月成人| 99久久综合网| 99精品在线观看视频| 免费无码毛片一区二区A片| 五月天色五月| 这里只有精品偷拍| 日本123区日韩欧美不卡在线看| 天天日夜夜拍| 婷婷五月天久久| 99在线观看这里都是精品| 婷婷五月丁香色播| 日韩精品无码99| 97干欧美| 狠狠色丁香久久综合婷婷亚洲成人福利| 五月香婷婷| 6080av| 九月影院義母在线播放| 色婷婷五月丁香色| 99这里有精品| 4399在线日本A片| 欧美久久五月婷婷| 开心五月综合激情网| 亚州成人综合在线| 99爱在线视频| 91Chinese在线| 五月丁香久久呀| 亚洲五月天,激情视频| 色五月婷婷影视| 国产乱子轮XXX农村| 俺去也五月天婷婷| 婷婷丁香五月综合| 婷婷五月天成人网站| 综合激情五月丁香9999久久精| 成人中文字幕在线| 9热成人在线视频| 国产精品色婷婷99久久精品| 26uuu亚洲欧美另类| 老司机伊人| 久久婷视频| 91艹人| 激情伊人五月天| 91超级碰在线| 日日干天天爽| 婷婷五月综合社区在线| 色视五月天婷婷| 五月天色不卡| 激情综合婷婷| 爽极品色| 亚洲啪啪精品| 另类视频丁香五月| 国产真实乱对白精彩| WWW·天天操·视频?| av色婷婷| 色婷婷69| 亚洲五月天婷婷| 五月天婷婷AV| 丁香五月天社区| 人人操操97| 久久人妻视步| 在线一起草av| 狠狠狠狠狠狠狠狠| 久热天堂| 夜夜操夜夜姧| 国产偷人爽久久久久久老妇APP| 开心深爱五月天| www.91久久| 色情·com| 激情五月综合亚洲另类| 久久久久婷婷五月热综合| 亚洲精品婷婷| 日本丁香五月婷婷| 国产又爽又猛又粗的视频A片| 婷婷爱综合| 大地资源色婷婷视频在线| 六月丁香婷婷色综合| 日本精品人妻无码77777| 啪啪啪啪五月天| BBWCUCKOLD精品熟妇| 激情五月丁香五月| 五月天婷婷成人网| 久er7久热| 开心五月婷婷激情| 五月婷婷在线网站| wwww.9免费视频| 99视频在线| 日本三级中文字幕| 五月激情天| 2023天天日夜夜爽| 亚洲精品字幕| 狠狠色狠狠鲁| 免费观看2018www黄色操逼网站| 五月丁香综合激情| 亚洲av无码影院| 久久精典| 五月社区婷婷激情| 热久久婷婷| 五月婷婷久久久| 99久久黄色顶级视频| 5月丁香美女影院| 狠狠狠色激情综合适合| 狠狠色色| 99婷婷精品推荐在线视频| Www.狠狠| 超碰在线91| 丰满少妇猛烈A片免费看观看| 婷婷五月天激情丁香| 操逼三区| 无码激情AAAAA片-区区| 久久开心五月天激情| 97碰碰视频在线观看| 国产精品久久久久久亚洲毛片| 丁香五月婷综合网| 成人午夜无码视频| 99久久国产综合精品五月天喷水\| 五月天狠狠| 天天玩夜夜操天天爽| 99热这里只有精| 综合激情视频| 亚洲激情无码久久| 操人精品| 久草热8精品视频在线观看 | 91干视频| 九九九激情综合| www.婷婷.com| 99热这里只有精品69| 人碰人人人玩91| 亚洲中文字幕AV| 久久99热精品a片在线观看| 夜夜躁婷婷AV| 中文字幕视频色婷婷| 色综合九九色综合88| 丁香五月在线视频黑人| www.99久| 五月丁香婷婷色播无码| 99操99| 99九九热在线观看| 这里只有精品视频在线看| 亚洲综合字幕色色| 婷婷激情五月天小说| 色婷婷成人做爰A片免费看网站| 激情五月综合亚洲另类| 婷婷激情啪啪| 色五月色五天色情网| 久久久久久久久18久久| 亚洲日韩一页精品发布| 亚洲综合视频网| 精品99视频| 国产精品久久久久久久久久久久| 国产精品久久久海的味道| 中文字幕在线日亚州9| 4438国产免费看| 激情二色月| 久久久婷婷| 婷婷五月天丁香久久| 丁香亭亭久久| 成人视频在线免费播放| 伊人网色婷婷五月天| 少妇激情基地| 久9热视频| 伊人婷婷99热精品| 思思久久网| 欧美日比视频| 开心五月婷婷伊人| 婷婷爱综合| 久久激情视频| 天天se在线视频| AAA亚洲AV| 乱精品一区字幕二区| 久久xx| 五月丁香六月欧美综合网站| 国产真实乱了老女人视频| 超碰99在线| XX久久| 伊人大香蕉综合在线| 五月丁香婷婷啪啪综合网| 激情六月天婷婷| 人人超碰99| 中文字幕性爱丰满| 五月香婷婷| 我爱大香蕉| 日韩成人AV在线播放| 久久伊人婷| www.亭亭五月天| 色婷在线视频| 久久久九九视频精品18| 五月色婷婷夜色| 黄色短视频在线观看| 午夜少妇在线观看视频| 五月天.com| 六月丁香激情网| 91丨九色丨白浆秘| 国产激情久久久| 天天爱天天操| 丰满少妇猛烈A片免费看观看| 国产精品VIDEOSSEX久久发布| 亚洲乱码日产精品BD| 91九色最新视频| 天堂二区| 色婷婷亚洲在线观看| 六月婷婷九月丁香| 日韩啪啪视频| 婷婷五月天伊人在线| 日日干夜夜撸夜夜骑| 日日操人人操| 狠狠五月丁香色婷| 99.色| 婷香五月激情视频| 99热这里都是精品| 九九人人操| 色狠狠婷婷| 超碰9在| 色五月激情视频在线综合| 99爱免费在线观看| 婷婷综合五月天激情| 丁香婷在线| 婷婷综合亚洲| 五月婷婷六月丁香| 综合五月激情| w婷婷五月婷婷w| 五月在线婷色| 男人的天堂五月丁香| 激情图片婷婷| 色五月婷婷五月天| 天色色综合网| 五月丁香婷婷啪啪| 狠狠做六月爱婷婷综合aⅴ| 婷婷播播五月天| 日本五月天网站| 天天干天天干天天干| 色在线免费观看| 丁香五月婷婷啪| 婷婷夜夜夜夜| 婷婷综合亚洲| 亚洲成av人影院| 69午夜成人影片| 97色综合视频| 97碰| 久久6这里只有精品| 少妇高潮呻吟A片免费看软件| 激情五月com| 亚洲无码激情| 色婷婷www| 九九婷婷五月天影视| 亚洲成人AV电影网| 久久久WWW| 五月人妻婷婷| 六月综合婷婷开心伊人| 久久久久9| 五月丁香激情综合啪啪| 狠狠的日| 伊人成人宗合网| 牛牛色av| 丁香五月成人网| 日日夜夜天天爽| 久久婷婷色综合| 精品久久99| 亚洲婷婷五月天激情综合| www.日本91| 五月丁香网站| 九九这里有精品| 五月天色婷婷激情综合| 日韩有码一区| 婷婷娌伦网| 一个色的综合| 人人操女人| 国产成人精品亚洲线观看| 天天干天天操天天拍| 久久精品性爱视频,| 亚洲成人在线观看网址| 五月丁香色婷婷| 五月综合婷婷久久在线 | 秋霞黄色一级久久| 青青久久91| 九九精品免费| 五月开心色| 欧日韩AV| 91久久综合亚洲噜噜成人在线 | 激情六月天婷婷| 天天操天天操| 天天日天天舔天天摸| 91pornav在线| 91丨九色丨首页| 九九热AV| 亚洲国产成人在线| 五月婷婷丁香俺日污视频| 九色综合网| 色五月婷婷网| 色狠狠999综合| 成年人看Va免费视频| 丁香六月激情综合网| 亚洲综合在线视频| 97欧美在线| 九色成人AV在线| 色999;丁香五月| www.五月婷婷.com| 色婷婷AV久久久久久久| www.天天干.com| 精品久久婷婷| 婷婷五月天成人视频| 激情婷婷五月天| 粉嫩av懂色av蜜臀av熟妇| 五月激激激情综合网| 伊人丁香五月| 五月丁香六月在线欧美| 日本天堂免费99| 337久久| 日韩丰满少妇无码内射| 日韩啪啪网| 99爱视频| 久久人妻www| 五月天伊人日日噜影片AV| 天天射影| 色五月婷婷综合| 五月天婷婷狠狠| WWW久久99久久99久久| 久久久久久久久久久久久9| 色无码| 日本欧美在线| 婷婷丁香宗合888| 婷婷爱五月天| 色停停五月天| 操精品9| 综合视频五月| 六月婷婷最新网址| 强伦轩人妻一区二区电影| 99福利导航| 超碰爱爱爱| 亚洲操操| 老师的粉嫩小又紧水又多A片视频| 五月丁香色狠狠干大屄| 人人操碰| 色婷婷9| 性爱AV天堂| 久九男女天堂| 色五月婷婷91| 五月伊人视频在线看| 久久99三级在线视频| 五月婷婷五月天| www.99热. com这里只有精品| 99久久视频| 99精品偷自拍| 五月丁香激情综合啪啪| 人人色性网| 久久亚洲无码| 欧美三级巜人妻互换| 日韩精品一区二区亚洲AV观看| 天天免费成年人视频| 97婷婷丁香五月天激情图片| 丁香色婷婷| 日本色综合| 久久伊人日日夜夜| 亚洲午夜视频| 亚洲啪啪自拍| 国产精品色| 天天做天天爱天天玩| 欧美综合丁香网| 中文字幕在线免费| 亚洲成人AV一区在线观看| 色五月成人| 影音先锋天天日| 五月天电影网| 狠狠草天天草| 色婷婷啪啪啪啪啪啪| 99热在线中出| 99色在线视频| 亚洲天堂啪啪| 婷婷五月天激情五月天深爱五月天| 丁香无月在线观看| 激情五月综合第一页| 天天插操| 欧美经典片免费观看大全| 色综合久久中文| 五月天激情电影| 我爱va亚洲va52| 超碰三级秋霞| 99色网站| 婷婷五月天情色| 超级碰碰一区| 中日韩美欧成人一区二区精品在线| 四色99久久| 久久与婷婷| 五月亭亭六月天| 国产精品蜜臀99| 国产在线6| site:hcxsz888.com| 亚洲最大在线| 五月停停999| 4438成人电影| 五月丁香久久丝袜啪啪| 婷婷综合久久综合| AV成人在线网站| 国产精品第一国产精品| 99热99在线| 九九热这里只有精品6| 久草A片| 婷婷综合色图| 偷拍91九色| 九九热精品99| 激情久久丁香| 天堂网啪啪| 六月久久婷婷| 久青操| 在线成人网址| 丁香激情久久| 五月婷色| 色综合五月天| 九九Av| .精品久久久麻豆国产精品| 熟妇无码乱子成人精品| 欧美性猛交AAAA片黑人 | 久久久人妻| 国外亚洲成AV人片在线观看| 风流少妇A片一区二区蜜桃 | 91丨九色丨白浆秘| 激情四射婷婷| 日本久热| 操操操操操操婷婷五月天| 99视频这里只有免费精品| 综合亚洲色色| 色情丁香五月天| 日日噜狠狠色综合久久| 亚州性爱99| 色色性爱视频| 日本啪啪网| 开心五月网 | 九九99久久| 色婷婷基地 | 97伦乱| 狠狠色丁香婷婷| 91婷婷丁香五月| 国产免费一区二区在线A片视频| 欧亚色色| 久热这里只有精品66| 人人摸人人搞| 国产操碰| 99精品国产在热久久| 亚洲AV成人无码精品| 91精品视频男人的天堂| 日本视频99| 五月婷婷五月天激情视频| VA婷婷亚洲| 日91高清无玛| 丁香婷婷激情| 万月丁香狠狠爱| 欧美精品A片一区在线观看| 激情五月天视频| 五月丁香999| 综合久久99| 五月丁香综合在线| 久久久婷婷五月天| 日韩精品成人在线| 人妻久久久久久久 | 91凹凸在线| 色色色免费视频| 五月婷视频| 波多野结衣AV无码Porn| 五月天色狠狠| 成人精品亚洲性爱| 97人人干| 99re视频在线精品| 色色色色综合网| 怡红院精品视频久久久久久久久| 女人被男人吃奶到高潮| 91蜜桃婷婷狠狠久久综合9色| 五月天大香蕉婷| 99久热在线精品| 丁香婷婷婷五月| 另类激情综合| 日韩 mm 不卡| 久久这里面只有精品视频| 色狠狠婷婷| 777精品久无码人妻蜜桃| 五月亭亭色| 五月色欧洲| 久久久久久久97| 夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂亚洲亚洲亚洲亚洲亚洲亚洲亚洲亚洲色 | 天干干夜夜操| 在线中文亚洲| 伊人久久大香线蕉精品| www,久久久| 五月开行婷婷色五月| 激情五月五月婷婷| 久啪欧美| 亚洲另类婷婷五月综合| 成人看片网站| 久久精品天| 热99久久这里只有精品| 99re这里| 大香蕉久久婷婷精品综合| 伊人狠狠操| 色婷网| 成人网在线视频| 五月天色婷婷网| 精品一二三区久久AAA片| 丝袜激情网| 日日夜夜狠狠干| 精品国产乱码久久久久久免费| AV在线中文| 天天综合网站| 成人国产网| 欧美99热| 色婷婷综合网| 久月婷婷| 青青草原伊人网| 日韩欧美婷婷丁| 五月婷在线视频免费播放| 狠狠操综合| 九九综合精品| 久久92| 嫩草视频观看| 日本五月婷婷| 国产精品成人网址| 五月天四色房丁香| 欧美一级色| 丁香婷婷激情综合五月激情| 婷婷五月天奸女| 97五月婷婷| 激情五月五月婷婷| 丁香色情五月综合激情| 五月丁香色婷婷综合| 婷婷D区| 五月永久激情| 五月开心激情| 亚洲综合婷婷五月| 婷婷爱五月| 大香蕉综合在线| 五月婷婷自拍| 久久婷婷色| 日韩久久成人| WWW免费视频碰碰碰碰| 激情的五月婷婷蜜桃| 亚洲视频在线网| 99综合网| 开心婷婷五月中文字幕组| 五月婷婷五月天| 激情涩播| 久99久精品视频| 丁香成人综合| 久9热视频| 日韩一级一片内射视频4K| 色综合天堂| 婷婷激情五月综合丁| 97碰免费视频在线|