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

NLP問題實戰:基于LSTM(RNN)和Transformer模型

譯文 精選
人工智能
本文立足于探討一種基于LSTM(RNN)和Transformer模型生成的語言模型的實際應用。實驗中,該模型能夠選擇最有可能的候選單詞,從而將英語句子擴展成添加一個新的單詞的新句子。

譯者 | 朱先忠

審校 | 重樓

簡介

GPT等語言模型最近變得非常流行,并被用于各種文本生成任務,例如在ChatGPT或其他會話人工智能系統中。通常,這些語言模型規模巨大,經常使用超過數百億個參數,并且需要大量的計算資源和資金來運行。

在英語模型的背景下,這些龐大的模型被過度參數化了,因為它們使用模型的參數來記憶和學習我們這個世界的各個方面,而不僅僅是為英語建模。如果我們要開發一個應用程序,要求模型只理解語言及其結構,那么我們可能會使用一個小得多的模型。

注意:您可以本文提供的Jupyter筆記本https://github.com/dhruvbird/ml-notebooks/blob/main/next_word_probability/inference-next-word-probability.ipynb上找到在訓練好的模型上運行推理的完整源代碼。

問題描述

假設我們正在構建一個滑動鍵盤系統,該系統試圖預測你下一次在手機上鍵入的單詞。基于滑動模式跟蹤的模式,用戶想要的單詞存在很多可能性。然而,這些可能的單詞中有許多并不是英語中的實際單詞,可以被刪除。即使在這個最初的修剪和消除步驟之后,仍有許多候選者,我們需要為用戶選擇其中之一作為建議。

為了進一步修剪這個候選列表,我們可以使用基于深度學習的語言模型,該模型能夠查看所提供的上下文,并告訴我們哪一個候選者最有可能完成句子。

例如,如果用戶鍵入句子“I’ve scheduled this我已經安排好了”,然后按如下所示滑動一個模式

然后,用戶可能想要的一些英語單詞是:

  1. messing(攪亂
  2. meeting(會議

然而,如果我們仔細想想,很可能用戶的意思是“開會”,而不是“搗亂”,因為句子前半部分有“scheduled預定”一詞。

考慮到目前為止我們所知道的一切,我們可以選擇什么方案以便通過編程進行調整呢?讓我們在下面的部分發揮頭腦風暴,想出一些解決方案。

頭腦風暴解決方案

算法和數據結構

使用第一性原理(first principles),從數據語料庫開始,找到組合在一起的成對單詞,并訓練一個馬爾可夫模型(https://en.wikipedia.org/wiki/Markov_model)來預測句子中出現成對單詞的概率,這似乎是合理的。但是,您會注意到這種方法存在兩個重要問題。

  1. 空間利用率:英語中有25萬到100萬個單詞,其中不包括數量不斷增長的大量專有名詞。因此,任何建模一對單詞出現在一起的概率的傳統軟件解決方案都必須維護一個具有250k*250k=625億個單詞對的查詢表,這顯然有點過分。其實,許多單詞配對似乎不經常出現,可以進行修剪。即使在修剪之后,仍然存在很多對單詞需要考慮
  2. 完整性:對一對單詞的概率進行編碼并不能公正地解決手頭的問題。例如,當你只看最近的一對單詞時,前面的句子上下文就完全丟失了。在“你的一天過得怎么樣(How is your day coming)”這句話中,如果你想檢查“來了(coming)”之后的單詞,你會有很多以“來了“開頭的配對。這會漏掉該單詞之前的整個句子上下文。人們可以想象使用單詞三元組等……但這加劇了上述空間利用問題。

接下來,讓我們把重點轉移到利用英語本質的解決方案上,看看這是否能對我們有所幫助。

自然語言處理

從歷史上看,NLP(自然語言處理)領域涉及理解句子的詞性,并使用這些信息來執行這種修剪和預測決策。可以想象這樣的情形:使用與每個單詞相關聯的一個POS標簽來確定句子中的下一個單詞是否有效。

然而,計算一個句子的詞性的過程本身就是一個復雜的過程,需要對語言有專門的理解,正如NLTK的詞性標記頁面所證明的那樣。

接下來,讓我們來看一種基于深度學習的方法,它需要更多的標記數據,但不需要那么多的語言專業知識來構建。

深度學習(神經網絡)

深度學習的出現顛覆了NLP領域。隨著基于LSTM和Transformer的語言模型的發明,解決方案通常包括向模型拋出一些高質量的數據,并對其進行訓練以預測下一個單詞。

從本質上講,這就是GPT模型正在做的事情。GPT模型總是不斷訓練來預測給定句子前綴的下一個單詞(標記)。

例如,給定句子前綴“It is so would a would”,模型很可能會為句子后面的單詞提供以下高概率預測。

  1. day(白天
  2. experience經驗
  3. world(世界
  4. life(生活

以下單詞完成句子前綴的概率也可能較低。

  1. red紅色
  2. mouse老鼠
  3. line

Transformer模型體系結構(machine_learning_model)是ChatGPT等系統的核心。然而,對于學習英語語義的更受限制的應用場景,我們可以使用更便宜的運行模型架構,例如LSTM(長短期記憶)模型

LSTM模型

接下來,讓我們構建一個簡單的LSTM模型,并訓練它來預測給定標記(token)前綴的下一個標記。現在,你可能會問什么是標記。

符號化

通常,對于語言模型,標記可以表示

  1. 單個字符(或單個字節)
  2. 目標語言中的整個單詞
  3. 介于1和2之間詞匯這通常被稱為子詞

將單個字符(或字節)映射到標記是非常有限制的,因為我們要重載該標記,以保存關于它發生位置的大量上下文。這是因為,例如,“c”這個字符出現在許多不同的單詞中,在我們看到“c”之后預測下一個字符需要我們認真觀察引導上下文。

將一個單詞映射到一個標記也是有問題的,因為英語本身有25萬到100萬個單詞。此外,當一個新詞被添加到語言中時會發生什么?我們需要回去重新訓練整個模型來解釋這個新詞嗎?

子詞標記化(Sub-word tokenization)被認為是2023年的行業標準。它將頻繁出現在一起的字節的子字符串分配給唯一的標記。通常,語言模型有幾千(比如4000)到數萬(比如60000)個獨特的標記。確定什么構成標記的算法由BPE(字節對編碼:Byte pair encoding算法確定。

要選擇詞匯表中唯一標記的數量(稱為詞匯表大小),我們需要注意以下幾點:

  1. 如果我們選擇的標記太少,我們就會回到每個角色一個標記的模式,模型很難學到任何有用的內容
  2. 如果我們選擇了太多的標記,我們最終會出現這樣的情況:模型的嵌入表覆蓋了模型的其余權重,并且很難在受約束的環境中部署模型。嵌入表的大小將取決于我們為每個標記使用的維度的數量。使用256、512、786等大小并不罕見。如果我們使用512的標記嵌入維度,并且我們有100k個標記,那么我們最終會得到一個在內存中使用200MiB的嵌入表。

因此,我們需要在選擇詞匯量時進行平衡。在本例中,我們選取6600個標記,并用6600的詞匯大小訓練我們的標記生成器。接下來,讓我們來看看模型定義本身。

PyTorch模型

模型本身非常簡單。我們創建了以下幾層:

  1. 標記嵌入(詞匯大小=6600,嵌入維數=512),總大小約為15MiB(假設嵌入表的數據類型為4字節float32類型
  2. LSTM(層數=1,隱藏尺寸=786),總尺寸約為16MiB
  3. 多層感知器(786至3144至6600維度),總尺寸約93MiB

整個模型具有約31M個可訓練參數,總大小約為120MiB。

下面給出的是模型的PyTorch代碼。

class WordPredictionLSTMModel(nn.Module):
 def __init__(self, num_embed, embed_dim, pad_idx, lstm_hidden_dim, lstm_num_layers, output_dim, dropout):
 super().__init__()
 self.vocab_size = num_embed
 self.embed = nn.Embedding(num_embed, embed_dim, pad_idx)
 self.lstm = nn.LSTM(embed_dim, lstm_hidden_dim, lstm_num_layers, batch_first=True, dropout=dropout)
 self.fc = nn.Sequential(
 nn.Linear(lstm_hidden_dim, lstm_hidden_dim * 4),
 nn.LayerNorm(lstm_hidden_dim * 4),
 nn.LeakyReLU(),
 nn.Dropout(p=dropout),

 nn.Linear(lstm_hidden_dim * 4, output_dim),
 )
 #

 def forward(self, x):
 x = self.embed(x)
 x, _ = self.lstm(x)
 x = self.fc(x)
 x = x.permute(0, 2, 1)
 return x
 #
#

以下是使用torchinfo庫輸出的模型摘要信息

LSTM模型摘要

=================================================================
Layer (type:depth-idx) Param #
=================================================================
WordPredictionLSTMModel - 
├─Embedding: 1–1 3,379,200
├─LSTM: 1–2 4,087,200
├─Sequential: 1–3 - 
│ └─Linear: 2–1 2,474,328
│ └─LayerNorm: 2–2 6,288
│ └─LeakyReLU: 2–3 - 
│ └─Dropout: 2–4 - 
│ └─Linear: 2–5 20,757,000
=================================================================
Total params: 30,704,016
Trainable params: 30,704,016
Non-trainable params: 0
=================================================================

解釋準確性:在P100 GPU上對該模型進行了約8小時的12M英語句子訓練后,我們獲得了4.03的損失、29%的前1名準確率和49%的前5名準確率。這意味著,29%的時間該模型能夠正確預測下一個標記49%的時間訓練集中的下一個標記是該模型的前5個預測之一。

那么,我們的成功指標應該是什么?雖然我們模型的前1名和前5名精度數字并不令人印象深刻,但它們對我們的問題并不那么重要。我們的候選單詞是一小組符合滑動模式的可能單詞。我們希望我們的模型能夠選擇一個理想的候選者來完成句子,使其在語法和語義上連貫一致。由于我們的模型通過訓練數據學習語言的性質,我們希望它能為連貫句子分配更高的概率。例如,如果我們有一“The baseball player棒球運動員”和可能的補全詞(“ran”、“swim”、“hid”),那么“ran”這個詞比其他兩個詞更適合后續使用。因此,如果我們的模型預測單詞ran的概率比其他單詞高,那么它對我們來說是有效的。

解釋損失:損失4.03意味著預測的負對數可能性為4.03這意味著正確預測下一個標記的概率為e^-4.03=0.0178或1/56。隨機初始化的模型通常具有大約8.8的損失,即-log_e(1/6600),因為該模型隨機預測1/6600個標記(6600是詞匯表大小)。雖然4.03的損失似乎不大,但重要的是要記住,經過訓練的模型比未經訓練(或隨機初始化)的模型好大約120倍。

接下來,讓我們看看如何使用此模型來改進滑動鍵盤的建議。

使用模型修剪無效建議

讓我們來看一個真實的例子。假設我們有一個部分完成的“I think”,用戶做出下面藍色所示的滑動模式,從“o”開始,在字母“c”和“v”之間,并在字母“e”和“v”之間結束。

可以用這種滑動模式表示的一些可能的單詞是

  1. Over(結束
  2. Oct(十月的縮寫)
  3. Ice(
  4. I’ve(我已經)

在這些建議中,最有可能的可能是“I’ve”。讓我們將這些建議輸入到我們的模型中,看看它會產生什么結果。

[I think] [I've] = 0.00087
[I think] [over] = 0.00051
[I think] [ice] = 0.00001
[I think] [Oct] = 0.00000

=符號后的值是單詞有效完成句子前綴的概率。在這種情況下,我們看到“我已經”這個詞被賦予了最高的概率。因此,它是最有可能跟在句子前綴“I think”后面的詞。

下一個問題是我們如何計算下一個單詞的概率。

計算下一個單詞的概率

為了計算一個單詞是句子前綴的有效完成的概率,我們在eval(推理)模式下運行模型,并輸入標記化的句子前綴。在為單詞添加空白前綴后,我們還將該單詞標記化。這樣做是因為HuggingFace預標記化器在單詞開頭用空格分隔單詞,所以我們希望確保我們的輸入與HuggingFace標記化器使用的標記化策略一致。

讓我們假設候選單詞由3個標記T0、T1和T2組成。

  1. 我們首先使用原始標記化的句子前綴來運行該模型。對于最后一個標記,我們檢查預測標記T0的概率。我們將其添加到“probs”列表中。
  2. 接下來,我們對前綴+T0進行預測,并檢查標記T1的概率。我們將此概率添加到“probs”列表中。
  3. 接下來,我們對前綴+T0+T1進行預測,并檢查標記T2的概率。我們將此概率添加到“probs”列表中。

“probs”列表包含按順序生成標記T0、T1和T2的各個概率。由于這些標記對應于候選詞的標記化,我們可以將這些概率相乘,得到候選詞完成句子前綴的組合概率。

用于計算完成概率的代碼如下所示。

def get_completion_probability(self, input, completion, tok):
 self.model.eval()
 ids = tok.encode(input).ids
 ids = torch.tensor(ids, device=self.device).unsqueeze(0)
 completion_ids = torch.tensor(tok.encode(completion).ids, device=self.device).unsqueeze(0)
 probs = []
 for i in range(completion_ids.size(1)):
 y = self.model(ids)
 y = y[0,:,-1].softmax(dim=0)
 #prob是完成的概率。
 prob = y[completion_ids[0,i]]
 probs.append(prob)
 ids = torch.cat([ids, completion_ids[:,i:i+1]], dim=1)
 #
 return torch.tensor(probs)
 #

我們可以在下面看到更多的例子。

[That ice-cream looks] [really] = 0.00709
[That ice-cream looks] [delicious] = 0.00264
[That ice-cream looks] [absolutely] = 0.00122
[That ice-cream looks] [real] = 0.00031
[That ice-cream looks] [fish] = 0.00004
[That ice-cream looks] [paper] = 0.00001
[That ice-cream looks] [atrocious] = 0.00000

[Since we're heading] [toward] = 0.01052
[Since we're heading] [away] = 0.00344
[Since we're heading] [against] = 0.00035
[Since we're heading] [both] = 0.00009
[Since we're heading] [death] = 0.00000
[Since we're heading] [bubble] = 0.00000
[Since we're heading] [birth] = 0.00000

[Did I make] [a] = 0.22704
[Did I make] [the] = 0.06622
[Did I make] [good] = 0.00190
[Did I make] [food] = 0.00020
[Did I make] [color] = 0.00007
[Did I make] [house] = 0.00006
[Did I make] [colour] = 0.00002
[Did I make] [pencil] = 0.00001
[Did I make] [flower] = 0.00000

[We want a candidate] [with] = 0.03209
[We want a candidate] [that] = 0.02145
[We want a candidate] [experience] = 0.00097
[We want a candidate] [which] = 0.00094
[We want a candidate] [more] = 0.00010
[We want a candidate] [less] = 0.00007
[We want a candidate] [school] = 0.00003

[This is the definitive guide to the] [the] = 0.00089
[This is the definitive guide to the] [complete] = 0.00047
[This is the definitive guide to the] [sentence] = 0.00006
[This is the definitive guide to the] [rapper] = 0.00001
[This is the definitive guide to the] [illustrated] = 0.00001
[This is the definitive guide to the] [extravagant] = 0.00000
[This is the definitive guide to the] [wrapper] = 0.00000
[This is the definitive guide to the] [miniscule] = 0.00000

[Please can you] [check] = 0.00502
[Please can you] [confirm] = 0.00488
[Please can you] [cease] = 0.00002
[Please can you] [cradle] = 0.00000
[Please can you] [laptop] = 0.00000
[Please can you] [envelope] = 0.00000
[Please can you] [options] = 0.00000
[Please can you] [cordon] = 0.00000
[Please can you] [corolla] = 0.00000

[I think] [I've] = 0.00087
[I think] [over] = 0.00051
[I think] [ice] = 0.00001
[I think] [Oct] = 0.00000

[Please] [can] = 0.00428
[Please] [cab] = 0.00000

[I've scheduled this] [meeting] = 0.00077
[I've scheduled this] [messing] = 0.00000

這些例子顯示了單詞在它之前完成句子的概率。候選詞按概率遞減的順序排列。

由于Transformer正在慢慢取代基于序列的任務的LSTM和RNN模型,讓我們來看看針對相同目標的Transformer模型會是什么樣子。

一種Transformer(轉換器)模型

基于轉換器的模型是一種非常流行的架構,用于訓練語言模型來預測句子中的下一個單詞。我們將使用的具體技術是因果注意(causal attention)機制。我們將使用因果注意來訓練PyTorch中的轉換器編碼器層。因果注意意味著我們將允許序列中的每個標記只查看其之前的標記。這類似于單向LSTM層在僅向前訓練時使用的信息。

我們將在這里看到的Transformer模型直接基于nn.TransformerEncoder和PyTorch中的nn.TransformerEncoderLayer

import math

def generate_src_mask(sz, device):
 return torch.triu(torch.full((sz, sz), True, device=device), diagnotallow=1)
#

class PositionalEmbedding(nn.Module):
 def __init__(self, sequence_length, embed_dim):
 super().__init__()
 self.sqrt_embed_dim = math.sqrt(embed_dim)
 self.pos_embed = nn.Parameter(torch.empty((1, sequence_length, embed_dim)))
 nn.init.uniform_(self.pos_embed, -1.0, 1.0)
 #

 def forward(self, x):
 return x * self.sqrt_embed_dim + self.pos_embed[:,:x.size(1)]
 #
#

class WordPredictionTransformerModel(nn.Module):
 def __init__(self, sequence_length, num_embed, embed_dim, pad_idx, num_heads, num_layers, output_dim, dropout, norm_first, activation):
 super().__init__()
 self.vocab_size = num_embed
 self.sequence_length = sequence_length
 self.embed_dim = embed_dim
 self.sqrt_embed_dim = math.sqrt(embed_dim)
 self.embed = nn.Sequential(
 nn.Embedding(num_embed, embed_dim, pad_idx),
 PositionalEmbedding(sequence_length, embed_dim),
 nn.LayerNorm(embed_dim),
 nn.Dropout(p=0.1),
 )

 encoder_layer = nn.TransformerEncoderLayer(
 d_model=embed_dim, nhead=num_heads, dropout=dropout, batch_first=True, norm_first=norm_first, activatinotallow=activation,
 )
 self.encoder = nn.TransformerEncoder(encoder_layer, num_layers=num_layers)
 self.fc = nn.Sequential(
 nn.Linear(embed_dim, embed_dim * 4),
 nn.LayerNorm(embed_dim * 4),
 nn.LeakyReLU(),
 nn.Dropout(p=dropout),

 nn.Linear(embed_dim * 4, output_dim),
 )
 #

 def forward(self, x):
 src_attention_mask = generate_src_mask(x.size(1), x.device)
 x = self.embed(x)
 x = self.encoder(x, is_causal=True, mask=src_attention_mask)
 x = self.fc(x)
 x = x.permute(0, 2, 1)
 return x
 #
#

我們可以用這個模型代替我們之前使用的LSTM模型,因為它是API兼容的。對于相同數量的訓練數據,該模型需要更長的時間來訓練,并且具有可比較的性能。

Transformer模型更適合長序列。在我們的例子中,我們有長度為256的序列。執行下一個單詞補全所需的大多數上下文往往是本地的,所以我們在這里并不真正需要借助轉換器的力量。

結論

在本文中,我們學習了如何使用基于LSTM(RNN)和Transformer模型的深度學習技術來解決非常實際的NLP問題。并不是每個語言任務都需要使用具有數十億參數的模型。需要建模語言本身而不需要記憶大量信息的專業應用程序可以使用更小的模型來處理,這些模型可以比我們現在看到的大規模語言模型更容易、更高效地部署。

注:本文中所有圖片均由作者本人創作。

譯者介紹

朱先忠,51CTO社區編輯,51CTO專家博客、講師,濰坊一所高校計算機教師,自由編程界老兵一枚。

原文標題:Language Models for Sentence Completion,作者:Dhruv Matani



責任編輯:華軒 來源: 51CTO
相關推薦

2018-05-03 16:27:29

RNN神經網絡ResNet

2024-08-02 10:28:13

算法NLP模型

2020-10-05 22:00:59

深度學習編程人工智能

2025-01-22 13:15:10

2023-11-09 09:48:46

2025-07-15 10:41:44

2016-12-09 13:45:21

RNN大數據深度學習

2021-04-27 15:47:12

人工智能語音識別Transformer

2020-02-11 09:30:08

微軟瀏覽器Windows

2019-10-25 16:18:34

機器學習人工智能計算機

2025-02-20 00:28:59

2024-04-15 07:50:00

AI架構

2024-06-03 08:09:39

2021-08-10 15:51:55

谷歌模型技術

2020-04-26 11:40:18

工具開源騰訊

2024-10-05 10:37:20

AI模型

2023-05-24 09:36:43

模型架構

2024-08-15 11:37:05

2020-08-20 07:00:00

人工智能深度學習技術

2021-03-30 11:40:48

計算數據 技術
點贊
收藏

51CTO技術棧公眾號

欧美+日本+国产+在线a∨观看| 97se综合| 在线视频亚洲专区| 日本高清不卡一区| 好吊色这里只有精品| 亚洲女人18毛片水真多| 美女日韩在线中文字幕| 久久国产精品久久久久久| 亚洲熟女乱综合一区二区三区 | 欧美精品videos| 三级网站在线免费观看| 警花av一区二区三区| 久久午夜老司机| 国产日韩在线一区| a级在线免费观看| 欧美特黄不卡| 在线观看亚洲精品| 欧美一区二区视频在线播放| 国产福利在线| 成人午夜电影久久影院| 国产精品女主播视频| 99精品视频99| 综合在线一区| 色香阁99久久精品久久久| 亚洲综合自拍网| 精品一区二区三区中文字幕在线| 色诱亚洲精品久久久久久| 男人的天堂avav| 日本在线天堂| 国产精品婷婷午夜在线观看| 国产欧美一区二区在线播放| 国产不卡av在线播放| 日本亚洲天堂网| 韩剧1988在线观看免费完整版 | 亚洲欧美日韩久久| 日韩免费电影一区二区| 天堂在线观看免费视频| 国产毛片精品一区| 成人免费视频网| 伊人色综合久久久| 日韩国产精品大片| 一本久久综合亚洲鲁鲁| 国产白袜脚足j棉袜在线观看 | 国产精品日韩欧美一区二区| 91福利在线观看视频| 久热综合在线亚洲精品| 欧美一级淫片aaaaaaa视频| 日本特黄一级片| 很黄很黄激情成人| 亚洲国产精品系列| 韩国av中国字幕| 日韩在线精品强乱中文字幕| 欧美一二区视频| 亚洲国产日韩在线一区| free性欧美16hd| 亚洲精品菠萝久久久久久久| 国产又粗又大又爽的视频| 免费大片在线观看www| 欧美激情在线免费观看| 亚洲精品一区二区三区蜜桃久| 欧美男男激情freegay| 奇米影视一区二区三区小说| 日本一区二区不卡| 懂色av蜜臀av粉嫩av分享吧最新章节| 日韩欧美自拍| 色多多国产成人永久免费网站 | 欧美精选视频在线观看| 亚洲奶大毛多的老太婆| 国产真实乱人偷精品人妻| 国产欧美日韩在线观看视频| 欧美日韩免费一区二区三区 | 精品中文字幕久久久久久| 国产网站无遮挡| 国产一区二区观看| 日韩中文字幕免费| 中文视频在线观看| 欧美天堂影院| 欧美一级久久久久久久大片| 国产老头和老头xxxx×| 高清精品xnxxcom| 国产视频亚洲精品| 992在线观看| 欧美色图首页| 日本精品久久久久久久| 91麻豆视频在线观看| 国产盗摄视频一区二区三区| 久久成人资源| 日本三级在线播放完整版| 亚洲免费在线观看| 日韩欧美一区二| 成人a在线观看高清电影| 欧美一级一区二区| 一区二区三区网址| 精品视频91| 亚洲精品乱码久久久久久金桔影视| www.久久久久久久久久久| 综合激情久久| 亚洲欧洲免费视频| 亚洲狠狠婷婷综合久久久久图片| 国产精品入口久久| 久久这里只有精品99| 亚洲综合一二三| 久久www免费人成看片高清| 国产精华一区| 日韩在线观看www| 欧美日韩国产综合视频在线观看中文| av污在线观看| 婷婷亚洲精品| 欧美成人激情在线| 成人黄色激情视频| 风间由美性色一区二区三区| 亚洲电影一二三区| 天堂√8在线中文| 日韩视频免费观看高清完整版| 美女脱光内衣内裤| 国产一区激情| 成人av番号网| 成人免费在线电影| 欧美午夜xxx| 91成人在线观看喷潮蘑菇| 91精品国产调教在线观看| 国产成人午夜视频网址| 人妻丰满熟妇av无码区hd| 亚洲三级小视频| 一本岛在线视频| 国产欧美日韩在线观看视频| 1769国内精品视频在线播放| www五月天com| 成人亚洲精品久久久久软件| 中国成人亚色综合网站| 神马电影网我不卡| 精品一区二区三区四区在线| 五月天综合在线| 成人午夜视频网站| 男女日批视频在线观看| 日本一区二区乱| 久久这里有精品| 国产精品-色哟哟| 国产精品大尺度| 成人在线视频一区二区三区| 欧美爱爱视频| 日韩在线观看你懂的| 中文人妻熟女乱又乱精品| 日本一区二区免费在线| 欧美黑人又粗又大又爽免费| 亚洲涩涩av| 日本电影亚洲天堂| 麻豆影视在线| 色婷婷激情久久| 亚洲久久久久久久| 日韩精品视频网| 亚洲激情一区二区| 国内精品伊人| 久久久91精品| 精品人妻一区二区三区日产乱码| 一区二区三区日韩欧美| 欧美图片自拍偷拍| 99精品国产福利在线观看免费| 国产传媒一区二区| 福利影院在线看| 国产视频亚洲精品| 中文字幕乱码视频| 专区另类欧美日韩| 在线观看一区二区三区四区| 亚洲人体偷拍| 日韩精品一线二线三线| 亚洲aⅴ网站| 欧美第一黄色网| 香港一级纯黄大片| ●精品国产综合乱码久久久久| 性生活免费在线观看| 亚洲破处大片| 精品久久一区二区三区蜜桃| 男人天堂视频在线观看| 伊人伊成久久人综合网站| 一级黄在线观看| 一二三区精品福利视频| 波多野结衣福利| 免费成人在线视频观看| 精品一区在线播放| av有声小说一区二区三区| 久久精品视频va| 日本精品一二区| 欧美自拍偷拍午夜视频| 国产精品 欧美激情| av不卡在线观看| 免费一级特黄录像| 欧美日韩四区| 日本一区二区不卡高清更新| 亚洲影视资源| 欧美一级大片在线观看| 精品国产丝袜高跟鞋| 日韩精品丝袜在线| 国产尤物在线观看| 欧美日韩亚洲视频| 国产av 一区二区三区| 91亚洲精品乱码久久久久久蜜桃| 中日韩av在线播放| 午夜一区二区三区不卡视频| 国产a级片免费看| 亚洲瘦老头同性70tv| 亚洲qvod图片区电影| 不卡福利视频| 欧美大片在线免费观看| 在线播放麻豆| 日韩精品在线免费观看| 国产黄色av片| 欧美日韩一级大片网址| 日韩欧美中文字幕一区二区| 成人免费一区二区三区在线观看 | 国产精品视频3p| 国产精品视频一区国模私拍| 国产高潮在线| 欧美另类极品videosbest最新版本| 国产在线你懂得| 精品美女在线观看| 一级黄在线观看| 欧亚洲嫩模精品一区三区| 日韩av一二三区| 亚洲综合免费观看高清完整版 | 欧美成人一区二免费视频软件| 欧美视频1区| 超碰国产一区| 欧美激情亚洲视频| 超碰免费公开在线| 精品成人私密视频| 国产三级小视频| 欧美日韩午夜在线视频| 国产91国语对白在线| 五月天婷婷综合| 精品人妻在线播放| 亚洲综合久久久久| 免费看一级一片| 亚洲欧美日韩人成在线播放| 免费黄色国产视频| 国产精品国产馆在线真实露脸 | 国产a级全部精品| 中老年在线免费视频| 992tv在线成人免费观看| 国产经典三级在线| 欧美富婆性猛交| 黄色羞羞视频在线观看| 欧美日韩成人精品| 欧美性猛片xxxxx免费中国| 欧美大成色www永久网站婷| 欧美激情午夜| 久久夜色精品国产| gogo在线观看| 欧美激情a∨在线视频播放| a毛片在线播放| 欧美疯狂xxxx大交乱88av| 尤物视频在线看| 亚洲3p在线观看| 亚洲欧洲日本韩国| 国产精品美乳一区二区免费 | 精灵使的剑舞无删减版在线观看| 欧美黄色成人网| 6699嫩草久久久精品影院| 午夜精品一区二区三区av| 日韩av一卡| 国产精品久久999| 日韩免费大片| 99久久久精品免费观看国产| 盗摄系列偷拍视频精品tp| 久精品国产欧美| 国产精品三级| 久久99国产精品一区| 欧美视频亚洲视频| 国产综合免费视频| 麻豆精品蜜桃视频网站| 亚洲av无码久久精品色欲| 99久久精品一区二区| a级大片在线观看| 中文字幕亚洲视频| 妺妺窝人体色www聚色窝仙踪| 午夜精品成人在线视频| 日韩国产亚洲欧美| 3d成人动漫网站| 午夜影院免费视频| 色综合影院在线| 波多野结衣在线播放| 日本成人免费在线| 成人在线精品| 就去色蜜桃综合| aiss精品大尺度系列| 久久久久久高清| 国产精品久久久久久久久妇女| 欧美国产视频一区| 久久深夜福利| 永久看看免费大片| 93久久精品日日躁夜夜躁欧美| 亚洲一二三精品| 亚洲综合色成人| 中文字字幕在线观看| 亚洲成人av片在线观看| 波多野结衣在线网站| 欧美肥老妇视频| abab456成人免费网址| 国产精品国产三级国产专区53| 国产欧美日韩视频在线| 国产精品入口芒果| 捆绑调教美女网站视频一区| 女同性恋一区二区三区| 亚洲天堂精品视频| 国产一级片av| 亚洲精品成人av| 欧美性受ⅹ╳╳╳黑人a性爽| 国产精品普通话| 欧美激情网址| 一级日本不卡的影视| 天天综合天天做| 欧美色精品在线视频| 视频国产在线观看| 欧美激情精品久久久久久免费印度| 91欧美精品| 另类小说综合网| 雨宫琴音一区二区在线| 国产高清av片| 国产精品成人一区二区艾草| 天堂网中文字幕| 日韩www在线| av2020不卡| 成人高清在线观看| 一本精品一区二区三区| 国产精品入口免费软件| 91小视频在线| 日韩经典在线观看| 精品久久久久久最新网址| а天堂中文在线官网| 成人激情视频在线播放| 欧美一区电影| 久久久久狠狠高潮亚洲精品| 91免费在线播放| 日本道在线观看| 亚洲国产成人精品久久| 888av在线视频| 国产一区免费| 亚洲美女黄色| 日韩综合第一页| 香蕉成人伊视频在线观看| 丰满人妻妇伦又伦精品国产| 欧美高清视频在线观看| 51社区在线成人免费视频| 亚洲黄色网址在线观看| 国产成人综合在线| 免费在线看黄网址| 亚洲国产欧美一区二区三区久久| 97超碰在线免费| 久久久久久国产精品一区| 国产精品入口66mio| 实拍女处破www免费看| 在线观看视频一区二区欧美日韩| av在线电影播放| 成人做爽爽免费视频| 小处雏高清一区二区三区| 色婷婷狠狠18禁久久| 香蕉久久一区二区不卡无毒影院| 午夜视频免费看| 国产精品黄色av| 国产韩国精品一区二区三区| 欧美熟妇另类久久久久久多毛| 一区二区高清视频在线观看| 日韩一级片免费看| 热久久免费国产视频| 欧美成人激情| aaa黄色大片| 日韩欧美在线网址| 永久免费在线观看视频| 91久久极品少妇xxxxⅹ软件| 精品二区久久| 免费看黄色三级| 欧美一区二区黄| 欧美gv在线| 一区二区三区四区视频在线 | 国产精品视频网站在线观看| 成人爽a毛片一区二区免费| 国产精品100| 精品国产一区二区三区久久久狼| 91大神精品| 虎白女粉嫩尤物福利视频| 中文字幕一区二区在线观看| 亚洲成人777777| 国产盗摄xxxx视频xxx69| 亚洲男女av一区二区| 久久人人妻人人人人妻性色av| 欧美优质美女网站| 狂野欧美性猛交xxxxx视频| 欧美12av| 国产成人精品亚洲日本在线桃色| 麻豆成人免费视频| 久久777国产线看观看精品| 亚洲人成伊人成综合图片| 四川一级毛毛片| 在线观看视频91| 超碰在线资源| 一本色道久久综合亚洲精品婷婷| 成人h版在线观看| 91国偷自产中文字幕久久| 91成人天堂久久成人| 中文字幕午夜精品一区二区三区|