在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何使用MATLAB構建Transformer模型

MATLAB ? 來源:MATLAB ? 2025-02-06 10:21 ? 次閱讀

Transformer 模型在 2017 年由 Vaswani 等人在論文《Attentionis All You Need》中首次提出。其設計初衷是為了解決自然語言處理(Nature LanguageProcessing, NLP)中的序列到序列任務,如機器翻譯。Transformer 通過引入自注意力機制使得處理長距離依賴關系時變得高效。因此 Vaswani 等人的論文強調“注意力是所需的一切”。

傳感器數據表現為時間序列,并且序列內部往往存在時間上的依賴關系,這些時間上的依賴能夠反映出設備的當下或未來的狀態,如何發現和挖掘序列內部的知識和依賴關系,是以傳感器表征設備狀態的工業領域中故障診斷關注的重點。

本文中主要關注 Transformer 在傳感器數據中的應用,通過其編碼器功能捕獲序列內部依賴關系,尤其是長距離的依賴關系,并生成輸出數據做進一步處理。后續的內容將對圖 1 中的編碼器的功能及其在 MATLAB 中的實現做進一步介紹,最后通過一個案例演示在 MATLAB 如如何設計和構建 Transformer 的編碼器網絡,并在信號數據集中進行訓練,同時也展示了經過初步訓練后的模型在測試集上的良好測試結果。由于篇幅所限,文章中不能展示全部過程的 MATLAB 代碼,如果讀者想要測試運行代碼,可以掃碼后通過提供的鏈接進行下載。

1. Transformer 模型

Transformer 模型的核心是自注意力機制(Self-Attention Mechanism)及完全基于注意力的編碼器-解碼器架構。圖1顯示了在論文《Attention is All You Need》中提出的 Transformer 架構,其主要由編碼器(Encoder,圖 1 中左側部分)和解碼器(Decoder,圖1中的右側部分)兩個部分組成,編碼器的輸出序列將編碼器和解碼器關聯起來,構建跨序列的注意力機制。

40bb0792-e3a9-11ef-9310-92fbcf53809c.png

圖 1 Transformer 架構

Transformer 編碼器(Encoder)專門用于處理輸入序列,通過引入自注意力機制,使其能夠高效地捕捉序列中的長距離依賴關系。而這種依賴關系體現為輸入序列不同位置之間的相關性。并且將相關性信息加入到輸出序列中,使得輸出數據包含豐富的上下文信息。

Transformer 解碼器(Decoder)主要負責逐步生成輸出結果。解碼器根據編碼器生成的上下文信息和前一步生成的輸出,逐步輸出目標序列的每一個元素。在解碼器中,采用了帶有掩碼的自注意力機制,使得在計算輸出向量時只考慮當前和之前的輸入數據,以保持生成結果的順序性。同時,解碼也采用了交叉注意力機制,將編碼器的輸出結果引入到解碼器中。通過交叉注意力機制,計算與編碼器的輸出序列的相關性。這一機制保證解碼器在生成每個輸出向量(輸出詞)時,不僅要考慮之前輸出的詞,還要考慮編碼器生成的上下文信息。

本文主要關注 Transformer 在時間序列(信號)上的應用,主要利用 Transformer 編碼器發現序列內部在時間上的依賴關系。接下來將重點介紹 Transformer 編碼器及其在 MATLAB 中的實現,并利用 Transformer 編碼器構建分類模型 。

2.Transformer編碼器及其在MATLAB中的實現

Transformer 編碼器的主要由輸入、位置編碼(input embedding)、多頭注意力(multi-head attention)、殘差(Add)、標準化(Norm),以及前饋網絡(Feed Forward)組成。對于每一個組成部分,在MATLAB中都對應的網絡層。

40c5d5f0-e3a9-11ef-9310-92fbcf53809c.png

圖 2Transformer 編碼器

輸入序列

Transformer 的提出是針對序列到序列的自然語言處理任務。自然語言文本首先被轉換為固定長度的向量表示,進而形成輸入向量序列。我們以自然語言文本“Do you speak MATLAB”為例,MATLAB 中的文本分析工具箱提供FastText預訓練詞嵌入模型,可以將英文單詞轉換為 300 維的詞向量。例如對于“Do”,通過以下操作可以轉為300維的詞向量 vec (如下所示):

40cf3212-e3a9-11ef-9310-92fbcf53809c.png

基于 FastText 生成詞向量

其中,fastTextWordEmbedding是FastText預訓練詞嵌入模型,word2vec將詞轉換為向量表示。進而,輸入的自然語言文本被轉換為詞向量序列,如圖 3 所示

40d7420e-e3a9-11ef-9310-92fbcf53809c.png

圖 3 自然語言文本轉換為詞向量序列

位置編碼(input embedding)

Transformer 不具備內置的序列順序信息,需要通過位置編碼將序列位置信息注入到輸入數據中。在 MATLAB 中,通過使用positionEmbeddingLayer層,將序列順序信息注入到輸入數據中,如下所示。positionEmbeddingLayer的OutputSize的屬性設置為詞向量維度。

40de32c6-e3a9-11ef-9310-92fbcf53809c.png

自注意力機制

Transformer 模型的核心是自注意力機制。對于輸入序列中每個位置對應的向量。自注意力機制首先通過線性變換生成三個向量:查詢(Query),鍵(Key),和值(Value)。然后,通過計算查詢和鍵之間的點積來獲得注意力得分(即相關性),這些得分經過 Softmax 歸一化后,用于加權求和值向量,即生成輸出向量。

以圖3中的輸入序列為例,假設自然語言文本對應的詞向量按順序分別定義為d, y, s, m。并且定義 Query,Key,Value 的轉換矩陣為wq, wk, wv。對于詞“you”對應的詞向量y,通過線性變換生成的 Query,Key,Value 向量為:

yq = wq × y;

yk = wk × y;

yv = wv × y;

同理,對于詞“Do”對應的詞向量d,通過線性變換生成的 Query,Key,Value 向量為:

dq = wq × d;

dk = wk × d;

dv = wv × d;

其它兩個詞向量以此類推。

40e80bc0-e3a9-11ef-9310-92fbcf53809c.png

圖 4 詞向量的線性變換

對于詞“Do”,計算其與其它四個詞的相關性,分別為:·

rdd =dq· dk

rdy =dq· yk

rds = dq · sk

rdm =dq· mk

其中,rdd,rdy,rds,rdm,分別表示“Do”與自身、“you”、“speak”、“MATLAB”的相關性。利用 softmax 對相關性做歸一化處理,并生成歸一化后的相關性srdd,srdy,srds,srdm,將其它詞對當前詞的影響納入的新生成的向量do 中,即:

do=srdd× dv+ srdy× yv + srds× sv+ srdm× mv

使用同樣的計算,可以得到輸出向量:do,yo,so,mo(如圖5所示)。

40ef6ab4-e3a9-11ef-9310-92fbcf53809c.png

圖 5 輸入的序列經過自注意力計算后生成新的輸出序列

通過以上介紹,self-attention 機制可以總結出:

通過三個線性變換(也是要學習的參數,當然還包含偏差)對輸入序列的每個位置的向量衍生出三個向量,經過相關性計算以及加權平均,又轉換為一個輸出向量。但是輸出向量不僅包含自身的信息,還同時包含了與輸入序列其它位置的依賴關系(即其它位置向量的相關性),因此其信息內容更加豐富。

每個輸入序列位置上的計算過程都是獨立進行,并沒有前后依賴關系(類似 LSTM),因此可以通過并行計算進行加速

通過獨立計算不同位置間的相關性來捕獲輸入序列內部的依賴信息,因此其處理長距離的依賴關系更有效,可以避免 LSTM 的長距離依賴關系通過串行傳遞導致的信息不斷衰減問題。

在 MATLAB 中,selfAttentionLayer層實現了自注意力機制。NumKeyChannels屬性決定轉換后的 Key 向量的維度。因為 Query 要與 Key 做內積,所以 Query 向量的維度與 Key 的維度相同。對于 Value 向量的維度,也可以通過屬性NumValueChannels進行設置。如果NumValueChannels設置為“auto”,那么其與 key 向量的維度一致 (如下所示)。

40f9cf22-e3a9-11ef-9310-92fbcf53809c.png

自注意力機制中,線性變換矩陣就是要學習的參數(當然也包含偏差)。而參數規模通過設置生成的 Query、Key 和 Value 向量的維度自動決定。例如,當詞向量 d 的維度是 300,如果設置 Key 向量 k 的維度設置為 512,那么變換矩陣wk(Key Weights)大小為:512×300,即:

4104a30c-e3a9-11ef-9310-92fbcf53809c.png

自注意力中的 Key 向量生成過程

帶有掩碼的自注意力機制(Masked Self-Attention)

Masked Self-Attention 主要用于處理序列數據中的有序性,使用掩碼來限制注意力的范圍。具體來說,掩碼會遮擋掉未來時間步的信息,確保模型在生成當前位置的輸出向量時,只能訪問當前位置及之前位置的詞向量,以保持生成過程的順序性。在 MATLAB 中,通過設置selfAttentionLayer層的屬性AttentionMask值為“causal”實現帶掩碼的自注意力機制。

多頭自注意力機制

多頭自注意力通過并行地執行多個自注意力計算(也就是單頭自注意力計算),然后將結果拼接起來。這種方法允許模型在不同的“注意力空間”中捕捉不同類型的信息。這里的“注意力空間”可以用一組 Query、key、Value 向量的線性變換表示。每個“頭”使用不同的線性變換對輸入序列生成 Query、key、Value,再計算注意力,并生成不同的輸出向量。將所有頭的輸出向量拼接(concatenate)在一起。拼接后的結果可以選擇(也可以不選擇)通過另一個線性變換整合來自所有頭的信息,生成最終的多頭自注意力輸出向量(如圖6所示)。

41148574-e3a9-11ef-9310-92fbcf53809c.png

圖 6 多頭(2頭,two-head)自注意力機制

在 MATLAB 中,通過設置selfAttentionLayer層的屬性NumHeads來決定多頭自注意力機制的頭數(heads)。

在 Transformer 中,除了自注意力機制外的前饋網絡、殘差鏈接、以及層歸一化,都屬于常規網絡層,分別對應 MATLAB 中fullyConnectedLayer、additionLayer和layerNormalizationLayer,這些都是常規操作,這里就不做介紹。 ▼

3.Transformer編碼器在基于信號數據的故障診斷中的應用

設備故障診斷是涉及通過各種傳感器數據檢測和識別設備故障。傳感器數據內部蘊含了時間上的依賴關系,這種依賴關系表現了設備的動態變化過程,因此,捕獲傳感器數據蘊含的動態變化過程,可以很好的識別和預測設備的故障狀態。

本文的故障診斷案例是針對使用軸承的旋轉機械。這些機械系統常常因電流通過軸承放電而導致電機軸承在系統啟動后的幾個月內發生故障。如果未能及時檢測這些問題,可能會導致系統運行的重大問題。

數據集

數據集包含從軸承測試臺和真實生產中的旋轉機械收集的振動數據??偣灿?34 組數據。信號采樣頻率為 25 Hz。設備狀態包含三種:健康(healthy),內圈故障(inner race fault),外圈故障(outer race fault)。

由于軸承電流是由變速條件引起的,故障頻率會隨著速度變化而在頻率范圍內上下波動。因此,軸承振動信號本質上是非平穩的。時頻表示可以很好地捕捉這種非平穩特性。從信號的時間、頻率和時頻表示中提取的組合特征可用于提高系統的故障檢測性能。圖7顯示了信號在時域和時頻域上的顯示。

411f5850-e3a9-11ef-9310-92fbcf53809c.png

413354b8-e3a9-11ef-9310-92fbcf53809c.png

圖 7 輸入數據(信號)在時域(上)和時頻域(下)上的顯示

對于信號數據,MATLAB 提供了特征提取函數,可以分別從時域、頻域和時頻域上提取特征:

時域 - signalTimeFeatureExtractor

4142fbfc-e3a9-11ef-9310-92fbcf53809c.png

signalTimeFeatureExtractor 可以提取時域上的統計特征,如期望(mean)、均方根(RMS)、標準差(StandardDeviation)、及峰值(PeakValue)。而時域上的其它特征,如ShapeFactor、SNR等在本文案例中并沒有提取。signalTimeFeatureExtractor 在做信號特征提取的時候需要設置一個窗口(FrameSize),窗口大小決定了計算統計特征的采樣點數量。

頻域 – signalFrequencyFeatureExtractor

signalFrequencyFeatureExtractor 用于在頻域上提取信號的統計特征,在本文中,主要提取頻率期望(MeanFrequency)、頻譜峰值位置(PeakLocation)、頻譜峰值(PeakAmplitude)、及平均頻帶功率(BandPower)。頻域上的其它特征,如OccupiedBandwidth等在本文中并沒有提取。signalFrequencyFeatureExtractor 在做信號特征提取時,同樣需要設置一個窗口(FrameSize),用于指定每個幀的采樣點數,也是頻域特征提取時分析窗口的大小。當處理長時間信號時,將信號分成較小的幀可以更有效地進行頻域分析。

414f28dc-e3a9-11ef-9310-92fbcf53809c.png

時頻域 – signalTimeFrequencyFeatureExtractor

signalTimeFrequencyFeatureExtractor 用于在時頻域上提取信號的特征,捕捉到信號在時間和頻率上的變化。在本文中,時頻上提取頻譜峭度(SpectralKurtosis)和頻譜偏度(SpectralSkewness)。在時頻域分析中,譜峭度值描述了信號在特定時間點上的頻譜形狀的尖銳程度或平坦程度,通過頻譜峭度分析,可以識別信號中的瞬態事件或沖擊。譜偏度值描述了信號在特定時間點上頻譜的對稱性或偏斜程度,通過分析頻譜偏度,可以識別信號中非對稱的頻率分布。

415d8fee-e3a9-11ef-9310-92fbcf53809c.png

原始信號經過分幀并做特征提取,從具有 146484 采樣點一維數據,轉換為 1464×30 的二維矩陣,如圖 8 所示。矩陣的行表示時間點,矩陣的列表示特征。

416b4cf6-e3a9-11ef-9310-92fbcf53809c.png

圖 8 經過特征提取的信號數據

對于轉換后的數據,每個特征可以抽象成一個傳感器,每個采樣點同時從 30 個傳感器采集數據而組成一個特征向量。一個樣本共進行1464次采樣。這樣就為接下來的 Transformer 編碼器模型訓練準備好了數據基礎

基于Transformer編碼器構建分類模型

本文是對照《Attentionis all you need》論文中的 Transformer 編碼器,通過Deep Network Designer App構建編碼器網絡,如圖9所示。Transformer 編碼器的每個組成部分,在MATLAB中都有對應的網絡層,通過這些層可以快速的組建網絡,并自定義每層的參數。例如本文中,selfAttentionLayer層的頭數是 2,并帶有掩碼。

41770258-e3a9-11ef-9310-92fbcf53809c.png

圖 9 基于Transformer的編碼器構建故障診斷模型(分類模型)

編碼器的輸出是帶有上下文信息的向量序列,而在設備的故障診斷中,故障的類型是離散的。本文中,軸承有內圈故障、外圈故障、以及健康狀態三種類型。因此,還需要利用編碼器的輸出向量,進一步來構建三分類模型。

對于 Transformer 編碼器的輸出向量序列,MATLAB 提供globalAveragePooling1dLayer和globalMaxPooling1dLayer兩種全局池化方法,在序列(或時間)方向上做向量每個維度上的數據合并。在本文中,編碼器的輸出序列向量的維度是 30,序列長度(時間步)是 1464,即 1464×30。經過數據合并后,變為:1×30,如圖 10 所示。

4185e322-e3a9-11ef-9310-92fbcf53809c.png

圖 10 向量序列在時間方向的合并

序列數據做全局池化后的輸出結果是一維數據,通過連接全連接網絡層fullyConnectedLayer,進一步縮減為三輸出,即對應于三分類。最后再通過softmaxLayer轉換為概率分布,進而判斷所屬類別。整體網絡模型如圖11所示。

418e6a56-e3a9-11ef-9310-92fbcf53809c.png

圖11 基于 Transformer 的編碼器構建分類模型

模型訓練與測試

本文共收集34條信號數據,采用隨機的方式按照 70% 和 30% 進一步將數據集劃分為訓練集和測試集(由于數據量有限,訓練過程并沒有使用驗證集)。

4198b5a6-e3a9-11ef-9310-92fbcf53809c.png

41a1f300-e3a9-11ef-9310-92fbcf53809c.png

訓練集(上)和測試集(下)

模型訓練過程,MATLAB 提供了超參數選項實現模型的進一步調優,而超參數選項是通過 trainingOptions 函數設置的,包括初始學習速率、學習速率衰減策略、minibatch 大小、訓練執行環境(GPUCPU)、訓練周期等等。經過 100 個 Epoch 訓練的模型在測試集上的測試結果如下:

41a8cf9a-e3a9-11ef-9310-92fbcf53809c.png

41b706be-e3a9-11ef-9310-92fbcf53809c.png

圖 12 模型訓練過程(上)和測試集精度(heatmap)(下)

從測試的結果看,Transforme 編碼器對長距離依賴關系的捕獲效果還是比較好的。

4.總結

本文的目的主要是介紹 Transformer 模型的編碼器,以及如何使用 MATLAB 構建 Transformer 模型,并為讀者提供一種 Transformer 編碼器的應用思路,模型本身以及訓練過程還有可以優化地方,僅為讀者提供參考,也歡迎大家做進一步模型結構調整和精度提升。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • matlab
    +關注

    關注

    185

    文章

    2981

    瀏覽量

    231010
  • 編碼器
    +關注

    關注

    45

    文章

    3669

    瀏覽量

    135245
  • 模型
    +關注

    關注

    1

    文章

    3309

    瀏覽量

    49224
  • 深度學習
    +關注

    關注

    73

    文章

    5515

    瀏覽量

    121551
  • Transformer
    +關注

    關注

    0

    文章

    146

    瀏覽量

    6047

原文標題:傳感器數據的深度學習模型應用(一)—— Transformer 模型

文章出處:【微信號:MATLAB,微信公眾號:MATLAB】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    大語言模型背后的Transformer,與CNN和RNN有何不同

    ? 電子發燒友網報道(文/李彎彎)近年來,隨著大語言模型的不斷出圈,Transformer這一概念也走進了大眾視野。Transformer是一種非常流行的深度學習模型,最早于2017年
    的頭像 發表于 12-25 08:36 ?4407次閱讀
    大語言<b class='flag-5'>模型</b>背后的<b class='flag-5'>Transformer</b>,與CNN和RNN有何不同

    【大語言模型:原理與工程實踐】大語言模型的基礎技術

    全面剖析大語言模型的核心技術與基礎知識。首先,概述自然語言的基本表示,這是理解大語言模型技術的前提。接著,詳細介紹自然語言處理預訓練的經典結構Transformer,以及其工作原理,為構建
    發表于 05-05 12:17

    你了解在單GPU上就可以運行的Transformer模型

    —— 具有超過32個預訓練的語言模型,支持超過100種語言,并在TensorFlow和PyTorch進行了相互的轉換,這在構建先進的NLP系統上是非常了不起的工作。Transformer已經被用于除
    發表于 11-02 15:19

    如何使用Matlab/Simulink構建MIMXRT1170 EVK?

    我正在嘗試為 MIMXRT1170-EVK 編譯和構建示例模型。代碼生成成功,但構建失敗。我使用的模型是基于模型的設計工具箱中包含的 LWI
    發表于 03-24 07:34

    基于MATLAB的svpwm仿真模型

    svpwm的MATLAB仿真模型
    發表于 01-08 11:51 ?45次下載

    TensorFlow2.0中創建了一個Transformer模型包,可用于重新構建GPT-2、 BERT和XLNet

    想到不如做到。于是Zachary Bloss(就是下圖這位帶著淡淡憂傷的背影),一位美國最大的非銀行貸款機構之一Quicken Loans的數據分析師,花了一點時間,在TF2中構建一個可擴展的transformer模型。
    的頭像 發表于 09-13 04:55 ?1.3w次閱讀

    AD9680 MATLAB模型

    AD9680 MATLAB模型
    發表于 03-23 12:54 ?6次下載
    AD9680 <b class='flag-5'>MATLAB</b><b class='flag-5'>模型</b>

    AD7403 MATLAB模型

    AD7403 MATLAB模型
    發表于 06-04 09:13 ?5次下載
    AD7403 <b class='flag-5'>MATLAB</b><b class='flag-5'>模型</b>

    Microsoft使用NVIDIA Triton加速AI Transformer模型應用

    Microsoft 的目標是,通過結合使用 Azure 與 NVIDIA GPU 和 Triton 推理軟件,率先將一系列強大的 AI Transformer 模型投入生產用途。
    的頭像 發表于 04-02 13:04 ?1808次閱讀

    基于Transformer的大型語言模型(LLM)的內部機制

    本文旨在更好地理解基于 Transformer 的大型語言模型(LLM)的內部機制,以提高它們的可靠性和可解釋性。 隨著大型語言模型(LLM)在使用和部署方面的不斷增加,打開黑箱并了解它們的內部
    的頭像 發表于 06-25 15:08 ?1555次閱讀
    基于<b class='flag-5'>Transformer</b>的大型語言<b class='flag-5'>模型</b>(LLM)的內部機制

    transformer模型詳解:Transformer 模型的壓縮方法

    ?動機&背景 Transformer 模型在各種自然語言任務中取得了顯著的成果,但內存和計算資源的瓶頸阻礙了其實用化部署。低秩近似和結構化剪枝是緩解這一瓶頸的主流方法。然而,作者通過分析發現,結構化
    的頭像 發表于 07-17 10:50 ?2231次閱讀
    <b class='flag-5'>transformer</b><b class='flag-5'>模型</b>詳解:<b class='flag-5'>Transformer</b> <b class='flag-5'>模型</b>的壓縮方法

    基于Transformer模型的壓縮方法

    基于Transformer架構的大型模型在人工智能領域中發揮著日益重要的作用,特別是在自然語言處理(NLP)和計算機視覺(CV)領域。
    的頭像 發表于 02-22 16:27 ?714次閱讀
    基于<b class='flag-5'>Transformer</b><b class='flag-5'>模型</b>的壓縮方法

    使用PyTorch搭建Transformer模型

    Transformer模型自其問世以來,在自然語言處理(NLP)領域取得了巨大的成功,并成為了許多先進模型(如BERT、GPT等)的基礎。本文將深入解讀如何使用PyTorch框架搭建Trans
    的頭像 發表于 07-02 11:41 ?1839次閱讀

    Transformer語言模型簡介與實現過程

    在自然語言處理(NLP)領域,Transformer模型以其卓越的性能和廣泛的應用前景,成為了近年來最引人注目的技術之一。Transformer模型由谷歌在2017年提出,并首次應用于
    的頭像 發表于 07-10 11:48 ?2072次閱讀

    matlab預測模型有哪些

    環境,使其成為預測模型開發和實現的理想平臺。本文將詳細介紹MATLAB中常用的預測模型及其應用。 線性回歸模型 線性回歸是一種簡單的預測模型
    的頭像 發表于 07-11 14:27 ?838次閱讀
    主站蜘蛛池模板: 日本与大黑人xxxx | 看毛片网| 久操中文 | 国产精品天天看天天爽 | 男女交性高清视频无遮挡 | 天天看影院 | 啪啪免费视频 | 女毛片| 国内精品 第一页 | 色婷婷激情五月综合 | 欧美性精品 | 国产小视频免费看 | 欧美极品| 人人射人人 | 国产激烈床戏无遮挡观看 | 求网址你懂的手机在线观看网站 | 俺也来俺也去俺也射 | 天天操天天操天天操天天操 | 国产成人精品高清免费 | 88av免费观看 | 一级做a爱片特黄在线观看 一级做a爱片特黄在线观看免费看 | 高清视频在线观看+免费 | 114毛片免费观看网站 | 亚洲人成综合网站在线 | 亚洲大香伊人蕉在人依线 | 99成人| 免费网站黄 | 九九热精品视频 | 波多野结衣第一页 | 两性色午夜视频免费播放 | 激情网页 | 国产色吧| 91大神在线看 | 永久免费看的啪啪网站 | 国产一区二区三区美女在线观看 | 色香蕉视频 | 成人综合婷婷国产精品久久免费 | 色五月婷婷成人网 | 色婷婷激情五月综合 | 最新eeuss影院第256页 | 欧美成人综合在线 |