<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 四、遷移學習基礎 我還在學習。 ——米開朗基羅 人類具有在任務之間傳遞知識的固有能力。 我們在學習一項任務時獲得的知識就是我們以相同的方式來解決相關任務。 任務越相關,我們就越容易遷移或交叉利用知識。 到目前為止,到目前為止,機器學習和深度學習算法都是設計為獨立工作的。 這些算法經過訓練可以解決特定任務。 一旦特征空間分布發生變化,就必須從頭開始重建模型。 遷移學習是克服孤立的學習范式,并利用一項任務獲得的知識來解決相關任務的想法。 在本章中,我們將介紹遷移學習的概念,并專注于深度學習上下文的各個方面。 本章將涵蓋以下主題: * 遷移學習導論 * 遷移學習策略 * 通過深度學習遷移知識 * 深度遷移學習的類型 * 遷移學習的挑戰 # 遷移學習導論 傳統上,學習算法設計為單獨解決任務或問題。 根據用例和手頭數據的要求,應用算法來訓練給定特定任務的模型。 傳統的**機器學習**(**ML**)根據特定的域,數據和任務單獨地訓練每個模型,如下圖所示: ![](https://img.kancloud.cn/3a/3e/3a3e142b7a5975d1a867431b387e55b4_1242x584.png) 傳統機器學習 遷移學習使學習的過程更進一步,并且更加符合人類如何跨任務利用知識。 因此,遷移學習是一種將模型或知識重用于另一個相關任務的方法。 遷移學習有時也被視為現有 ML 算法的擴展。 在遷移學習的背景下,以及在了解如何在任務之間遷移知識的過程中,正在進行大量的研究和工作。 但是,**神經信息處理系統**(**NIPS**)1995 研討會《學習:歸納系統中的知識整合和遷移》被認為是這個領域的研究。 [NIPS 1995 的所有研討會都在此處列出](http://www.cs.cmu.edu/afs/cs/project/cnbc/nips/NIPS95/Workshops.html)。 從那時起,諸如*元學習*,*知識整合*和*歸納遷移*等術語已與遷移學習互換使用。 總是有不同的研究人員和學術著作提供不同背景下的定義。 在他們的書*深度學習*中,Goodfellow 等人。 在泛化的背景下指遷移學習。 它們的定義如下: *利用一種情況下所學的知識來改善另一種情況下的泛化的情況。* 讓我們借助示例來了解前面的定義。 假設我們的任務是在餐廳的受限區域內識別圖像中的對象。 讓我們在定義的范圍內將此任務標記為`T[1]`。 給定該任務的數據集,我們訓練模型并對其進行調整,以使它在來自同一域(餐廳)的看不見的數據點上表現良好(概括)。 當我們在給定領域中沒有足夠的訓練示例來完成所需的任務時,傳統的監督 ML 算法就會崩潰。 假設我們現在必須從公園或咖啡館中的圖像中檢測物體(例如,任務`T[2]`)。 理想情況下,我們應該能夠應用針對`T[1]`訓練的模型,但實際上,我們面臨著表現下降和模型不能很好推廣的問題。 發生這種情況的原因多種多樣,我們可以廣泛地和集體地將其稱為模型對訓練數據和領域的偏見。 因此,遷移學習使我們能夠利用先前學習的任務中的知識,并將其應用于更新的相關任務。 如果我們擁有任務`T[1]`的大量數據,則可以利用其學習并將其概括用于任務`T[2]`(其數據要少得多)。 在圖像分類的情況下,某些低級特征(例如邊緣,形狀和照明)可以在任務之間共享,因此可以在任務之間傳遞知識。 下圖顯示了遷移學習如何使現有知識重用于新的相關任務: ![](https://img.kancloud.cn/25/28/2528364e08854714e2b36b4b0956fcb2_861x623.png) 如上圖所示,在學習目標任務時,來自現有任務的知識將作為附加輸入。 # 遷移學習優勢 我們利用源模型中的知識來改進目標任務中的學習。 除了提供重用已經構建的模型的功能之外,遷移學習還可以通過以下方式幫助學習目標任務: * **改進了基準表現**:當我們使用源模型中的知識來增強孤立的學習器(也稱為**無知學習器**)的知識時,由于這種知識遷移,基準表現可能會提高 。 * **模型開發時間**:與從頭開始學習的目標模型相比,利用源模型的知識也可能有助于充分學習目標任務。 反過來,這會導致開發/學習模型所需的總時間減少。 * **改進的最終表現**:可以利用遷移學習獲得更高的最終表現。 讀者應注意,有可能獲得這些收益中的一項或多項,我們將在接下來的章節中詳細討論。 如下圖所示,它顯示出更好的基線表現(**更高的起始**),效率增益(**更高的斜率**)和更好的最終表現(**漸近線**更高) : ![](https://img.kancloud.cn/de/d2/ded25b529cc5effe5f9a4ad734396417_380x189.png) 使用遷移學習的可能好處(來源:遷移學習,Lisa Torrey 和 Jude Shavlik) 遷移學習已在歸納學習器(例如神經網絡和貝葉斯網絡)的上下文中得到應用和研究。 強化學習是另一個探索遷移學習可能性的領域。 因此,遷移學習的概念不限于深度學習。 在本章及后續章節中,我們將限制使用遷移學習的范圍僅限于深度學習的上下文。 # 遷移學習策略 首先讓我們看一下遷移學習的正式定義,然后利用它來理解不同的策略。 在他們的論文[《遷移學習綜述》](https://www.cse.ust.hk/~qyang/Docs/2009/tkde_transfer_learning.pdf)中,潘和楊使用域,任務和邊緣概率,以提供用于理解遷移學習的框架。 該框架定義如下: 域`D`定義為由特征空間`χ`和邊緣概率`P(X)`組成的二元元組,其中`X`是樣本數據點。 在此,`x = {x[1], x[2], .... x[n]}`,其中`x[i]`作為`X`的特定向量`ε χ`。 從而: ![](https://img.kancloud.cn/89/fd/89fdf45cfbd3294b02436f084982ca19_1230x220.png) 另一方面,可以將任務`T`定義為標簽空間`γ`和目標函數`f`的二元組。 從概率的觀點來看,目標函數也可以表示為`P(γ|Χ)`。 從而: ![](https://img.kancloud.cn/73/b2/73b226b51b69263ac7994d902a0e52e8_1340x220.png) 使用此框架,我們可以將遷移學習定義為旨在改善目標目標函數`f(T)`(或目標任務`T(T)`)的過程。使用來自`T(S)`源的知識,在目標域中將`D[T] D[S]`域中的任務。 這導致以下四種情況: * **特征空間**:源域和目標域的特征空間互不相同,例如`χ[s] ≠ χ[t]`。 例如,如果我們的任務與文檔分類有關,則此方案以不同的語言引用源任務和目標任務。 * **邊緣概率**:邊緣概率或源域和目標域不同,例如`P(X[s]) ≠ P(X[t])`。 這種情況也稱為**域適配**。 * **標簽空間**:在這種情況下,源域和目標域的標簽空間不同,例如`γ[s] ≠ γ[t]`。 這通常也意味著方案 4 的存在-不同的條件概率。 * **條件概率**:在這種情況下,`P(Υ[s] | Χ[s]) ≠ P(Υ[t] | Χ[t])`,因此源域和目標域中的條件概率不同。 到目前為止,我們已經看到遷移學習具有在目標任務中利用來自源學習器的現有知識的能力。 在遷移學習過程中,必須回答以下三個重要問題: * **遷移什么**:這是整個過程中的第一步,也是最重要的一步。 我們嘗試尋求有關知識的哪一部分可以從源遷移到目標的答案,以提高目標任務的表現。 當試圖回答這個問題時,我們試圖確定知識的哪一部分是特定于來源的,以及哪些是來源與目標之間的共同點。 * **何時遷移**:在某些情況下,為了知識而遷移知識可能比改善任何事情都變得更糟(也稱為*負向遷移*)。 我們應該以利用遷移學習為目標,以提高目標任務的表現/結果,而不是使其退化。 我們需要注意何時遷移以及何時不遷移。 * **如何遷移**:一旦回答了什么和什么時候,我們便可以著手確定跨領域/任務實際遷移知識的方式。 這涉及對現有算法和不同技術的更改,我們將在本章的后續部分中介紹。 此外,下一節將列出特定的用例,以更好地了解如何進行遷移。 Pan 和 Yang 撰寫的論文《遷移學習綜述》[可以在此處找到](https://www.cse.ust.hk/~qyang/Docs/2009/tkde_transfer_learning.pdf)。 分組技術可幫助我們了解整體特征并提供更好的框架來利用它們。 可以根據所涉及的傳統 ML 算法的類型對遷移學習方法進行分類,例如: * **歸納遷移**:在這種情況下,源域和目標域相同,但是源任務和目標任務彼此不同。 該算法嘗試利用源域的歸納偏置來幫助改進目標任務。 根據源域是否包含標記數據,可以將其進一步分為兩個子類別,分別類似于*多任務學習*和*自學學習*。 * **無監督遷移**:此設置類似于歸納遷移本身,重點是目標域中的無監督任務。 源域和目標域相似,但是任務不同。 在這種情況下,帶標簽的數據在兩個域中都不可用。 * **傳遞式遷移**:在這種情況下,源任務和目標任務之間存在相似之處,但相應的域不同。 在此設置中,源域具有很多標記數據,而目標域則沒有。 可以參考特征空間不同或邊緣概率不同的設置將其進一步細分為子類別。 上一節中討論的三種遷移類別概述了可以應用和詳細研究遷移學習的不同設置。 為了回答在這些類別中遷移什么的問題,可以采用以下一些方法: * **實例遷移**:從源域到目標任務的知識重用通常是理想的方案。 在大多數情況下,無法直接重用源域數據。 而是,源域中的某些實例可以與目標數據一起重用以改善結果。 在感應遷移的情況下,Dai 及其合作者的 *AdaBoost* 之類的修改有助于利用源域中的訓練實例來改進目標任務。 * **特征表示遷移**:此方法旨在通過識別可從源域到目標域使用的良好特征表示,以最小化域差異并降低錯誤率。 根據標記數據的可用性,可以將有監督或無監督的方法應用于基于特征表示的遷移。 * **參數遷移**:此方法在以下假設下工作:相關任務的模型共享一些參數或超參數的先前分布。 與多任務學習不同,在多任務學習中同時學習源任務和目標任務,對于遷移學習,我們可以對目標域的損失施加額外的權重以提高整體表現。 * **關系知識遷移**:與前面三種方法不同,關系知識遷移嘗試處理非 IID 數據,例如非獨立且分布相同的數據。 換句話說,每個數據點與其他數據點都有關系的數據; 例如,社交網絡數據利用關系知識遷移技術。 在本節中,我們以非常通用的方式研究了在不同背景和環境下進行遷移學習的不同策略。 現在讓我們利用這種理解,學習如何在深度學習的上下文中應用遷移學習。 # 遷移學習和深度學習 深度學習模型代表了**歸納學習**。 歸納學習算法的目的是從一組訓練示例中得出映射。 例如,在分類的情況下,模型學習輸入特征和類標簽之間的映射。 為了使這樣的學習器能夠很好地對看不見的數據進行概括,其算法采用了與訓練數據的分布有關的一組假設。 這些假設集合稱為**感應偏置**。 歸納偏差或假設可以由多個因素來表征,例如它所限制的假設空間以及通過假設空間進行的搜索過程。 因此,這些偏差會影響模型在給定任務和領域上的學習方式和知識。 **歸納遷移**技術利用源任務的歸納偏差來輔助目標任務。 這可以通過不同的方式來完成,例如通過限制模型空間,縮小假設空間來調整目標任務的歸納偏差,或者借助源任務的知識來對搜索過程本身進行調整。 下圖直觀地描述了此過程: ![](https://img.kancloud.cn/02/ec/02ecf58d342b2a6e7d6beab77474d05d_936x452.png) 歸納式傳遞(來源:傳遞學習,Lisa Torrey 和 Jude Shavlik) 除了歸納遷移,歸納學習算法還利用*貝葉斯*和*層次遷移*技術來幫助改進目標任務的學習和表現。 # 遷移學習方法 近年來,深度學習取得了長足的進步,其結果令人贊嘆。 但是,這種深度學習系統所需的訓練時間和數據量比傳統的 ML 系統高出幾個數量級。 跨計算機視覺和**自然語言處理**(**NLP**)。 在大多數情況下,團隊/人員共享這些網絡的詳細信息以供其他人使用(第 3 章“了解深度學習架構”中共享了一些受歡迎的網絡)。 這些預訓練的網絡/模型在深度學習的背景下構成了遷移學習的基礎。 # 特征提取 如第 3 章“了解深度學習架構”中所述,深度學習系統是分層的架構,可在不同的層學習不同的特征。 然后將這些層最終連接到最后一層(在分類的情況下,通常是完全連接的層)以獲得最終輸出。 這種分層的架構使我們可以利用預先訓練的網絡(例如 Inception V3 或 VGG),而無需將其最終層用作其他任務的固定特征提取器。 下圖表示基于特征提取的深度遷移: ![](https://img.kancloud.cn/d3/37/d337042d949b382646cd47290250f3cb_1437x631.png) 例如,如果我們使用沒有最終分類層的 AlexNet,它將幫助我們將新領域任務的圖像基于其隱藏狀態轉換為 4,096 維向量,從而使我們能夠利用來自源域任務的知識,從新領域任務中提取特征。 這是使用深度神經網絡執行遷移學習的最廣泛使用的方法之一。 # 微調 這是一項涉及更多的技術,我們不僅要替換最后一層(用于分類/回歸),而且還要選擇性地重新訓練一些先前的層。 深度神經網絡是具有各種超參數的高度可配置的架構。 如前所述,最初的層已捕獲通用特征,而后面的層則更多地關注手頭的特定任務。 利用這種洞察力,我們可以在重新訓練時凍結(固定權重)某些層,或者微調其余層以滿足我們的需求。 在這種情況下,我們利用網絡整體架構方面的知識,并將其狀態用作我們再訓練步驟的起點。 反過來,這有助于我們以更少的訓練時間獲得更好的表現。 # 預訓練模型 遷移學習的基本要求之一是在源任務上表現良好的模型的存在。 幸運的是,深度學習世界相信共享。 他們各自的團隊已經公開共享了許多最先進的深度學習架構。 這些跨不同領域,例如計算機視覺和 NLP。 我們在第 3 章“了解深度學習架構”中介紹了一些最著名和文檔最豐富的架構。 這些網絡背后的團隊不僅分享了結果,而且分享了他們的預訓練模型。 預訓練模型通常以數百萬個參數/權重的形式共享,該模型在被訓練到穩定狀態時所達到的模型。 預訓練的模型可供每個人通過不同的方式使用。 著名的深度學習 Python 庫`keras`提供了下載各種可用的預訓練網絡的接口,例如 **XCeption**,**VGG16** 和 **InceptionV3**。 同樣,也可以通過 TensorFlow 和其他深度學習庫獲得預訓練的模型。 [伯克利的模型動物園](http://caffe.berkeleyvision.org/model_zoo.html)提供了多年來開發的更廣泛的預訓練模型集合。 # 應用領域 深度學習是一類算法,已被用來非常成功地獲得遷移學習的好處。 以下是一些示例: * **使用文本數據進行遷移學習**:當涉及到機器學習和深度學習時,文本數據提出了各種挑戰。 這些通常使用不同的技術進行轉換或向量化。 嵌入(例如 Word2vec 和 fastText)已使用不同的訓練數據集進行了準備。 通過從源任務中遷移知識,這些變量可用于不同任務中,例如情感分析和文檔分類。 * **通過計算機視覺進行遷移學習**:深度學習已成功使用各種 CNN 架構成功用于各種計算機視覺任務,例如對象識別。 在他們的論文[《深層神經網絡的特征如何可傳遞》](https://arxiv.org/abs/1411.1792)中,Yosinski 及其合作者提出了他們的發現,關于較低的層如何作為常規的計算機視覺特征提取器,例如邊緣檢測器,而最后一層則用于特定任務的特征。 因此,這些發現有助于將現有的最新模型,例如 **VGG**,**AlexNet** 和 **Inceptions** 用于目標任務,例如作為樣式轉換和面部檢測,與這些模型的訓練方法不同。 * **語音/音頻遷移學習**:類似于文本和計算機視覺領域,深度學習已成功用于基于音頻數據的任務。 例如,為英語開發的**自動語音識別**(**ASR**)模型已成功用于提高其他語言(例如德語)的語音識別表現。 同樣,自動說話人識別是遷移學習大大幫助的另一個例子。 # 深度遷移學習類型 關于遷移學習的文獻經歷了許多迭代,并且如本章開頭所提到的,與遷移學習相關的術語被松散使用并且經常可以互換使用。 因此,有時難以區分遷移學習,領域適應和多任務學習。 放心,這些都是相關的,并嘗試解決類似的問題。 為了使本書保持一致,我們將采用遷移學習的概念作為一般概念,在此我們將嘗試使用源任務域知識來解決目標任務。 # 領域適應 域適配通常是指源域和目標域之間的邊緣概率不同的情況,例如`P(X[s]) ≠ P(X[t])`。 源域和目標域的數據分布存在固有的偏移或漂移,需要進行調整才能遷移學習。 例如,標記為肯定或否定的電影評論語料庫將不同于產品評論情感的語料庫。 如果用于對產品評論進行分類,則經過電影評論情感訓練的分類器將看到不同的分布。 因此,在這些情況下,領域自適應技術可用于遷移學習中。 # 域混亂 我們學習了不同的遷移學習策略,甚至討論了如何將知識從源遷移到目標的三個問題。 特別是,我們討論了特征表示傳遞如何有用。 值得重申的是,深度學習網絡中的不同層捕獲了不同的特征集。 我們可以利用這一事實來學習領域不變的特征,并提高其跨領域的可移植性。 代替讓模型學習任何表示,我們將兩個域的表示微調為盡可能相似。 這可以通過將某些預處理步驟直接應用于表示本身來實現。 孫寶琛,馮家石和 Kate Saenko 在他們的論文 [《令人沮喪的輕松域自適應》](https://arxiv.org/abs/1511.05547)中討論了其中一些問題。 Ganin 等人也提出了對表示相似性的輕推,在他們的論文[《神經網絡領域專家訓練》](https://arxiv.org/abs/1505.07818)中。 該技術背后的基本思想是在源模型中添加另一個目標,以通過混淆域本身來鼓勵相似性,從而使*域混淆*。 # 多任務學習 多任務學習與遷移學習世界略有不同。 在多任務學習的情況下,可以同時學習多個任務,而無需區分源和目標。 在這種情況下,與遷移學習相比,學習器一次就接收到有關多個任務的信息,在遷移學習中,學習器最初對目標任務一無所知。 如下圖所示: ![](https://img.kancloud.cn/c7/80/c780e5d125e2305ce68fe0c9000ed188_964x694.png) 多任務學習:學習器同時從所有任務接收信息 # 一次學習 深度學習系統天生就渴望數據,因此它們需要許多訓練示例來學習權重。 這是深度神經網絡的局限性之一,盡管人類學習并非如此。 例如,一旦向孩子展示了蘋果的外觀,他們就可以輕松識別出不同種類的蘋果(帶有一個或幾個訓練示例); 機器學習和深度學習算法并非如此。 一次學習是遷移學習的一種變體,在這種學習中,我們嘗試僅根據一個或幾個訓練示例來推斷所需的輸出。 這在無法為每個可能的類提供標簽數據的現實世界場景中(如果是分類任務)和在經常可以添加新類的場景中非常有用。 據說 Fei-Fei 及其合作者具有里程碑意義的論文[《對象類別的單發學習》](https://ieeexplore.ieee.org/document/1597116/)。 在此子領域創造了“一次性學習和研究”一詞。 本文提出了一種用于對象分類的表示學習的貝葉斯框架的變體。 此后,此方法已得到改進,并已使用深度學習系統進行了應用。 # 零次學習 零鏡頭學習是遷移學習的另一個極端變體,它不依賴任何標記的示例來學習任務。 這聽起來令人難以置信,尤其是當使用示例學習是大多數監督學習算法所要解決的問題時。 零數據學習或零短學習方法在訓練階段本身進行了巧妙的調整,以利用附加信息來理解看不見的數據。 在他們的《學會學習》一書中,Goodfellow 及其合作者提出了零次學習作為學習三個變量的場景,例如傳統輸入變量`x`,傳統輸出變量`y`以及描述任務的其他隨機變量`T&`。 因此,訓練模型以學習`P(y | x, T)`的條件概率分布。 零鏡頭學習在機器翻譯等場景中非常有用,在這種情況下,我們甚至可能沒有目標語言的標簽。 # 遷移學習的挑戰 遷移學習具有巨大的潛力,并且是現有學習算法通常需要的增強。 但是,與遷移學習相關的某些相關問題需要更多的研究和探索。 除了難以回答關于什么,什么時候以及如何遷移的問題之外,負遷移和遷移界限也帶來了重大挑戰。 # 負遷移 到目前為止,我們討論的案例都是基于源任務的知識遷移來實現目標任務的改進。 在某些情況下,遷移學習會導致表現下降。 負遷移是指從源到目標的知識遷移不會導致任何改善,而是導致目標任務的整體表現下降的情況。 負遷移的原因可能有多種,例如源任務與目標任務的關系不充分或遷移方法不能很好地利用源任務和目標任務之間的關系的情況。 避免負遷移非常重要,需要仔細調查。 在他們的工作中,Rosenstien 及其合作遷移經驗上介紹了當源與目標過于不同時,暴力傳遞如何降低目標任務的表現。 正在研究 Bakker 及其合作者的貝葉斯方法,以及探索基于聚類的解決方案以識別相關性的其他技術,以避免產生負遷移。 # 遷移的界限 在遷移學習中量化遷移也非常重要,這對遷移的質量及其可行性具有影響。 為了衡量遷移的數量,哈桑·馬哈茂德(Hassan Mahmud)及其合作者使用 Kolmogorov 復雜度證明了一定的理論界限,以分析遷移學習并衡量任務之間的相關性。 Eaton 及其合作者提出了一種新穎的基于圖的方法來衡量知識遷移。 這些技術的詳細討論超出了本書的范圍。 鼓勵讀者使用本節概述的出版物來探討這些主題。 # 總結 在本書的第 1 章至第 3 章中設置了 ML 和深度學習的上下文和基礎之后,本章開始了第二階段的學習,即建立遷移學習的基礎。 在深入研究實際用例之前,必須正式化對遷移學習的理解,并了解不同的技術和研究以及與之相關的挑戰。 在本章中,我們介紹了遷移學習概念背后的基礎知識,多年來的發展情況以及為什么首先需要遷移學習。 我們首先在學習算法及其相關優勢的更廣泛背景下理解遷移學習。 然后,我們討論了用于理解,應用和分類遷移學習方法的各種策略。 在深度學習的背景下,遷移學習是下一個討論的主題,為本章的其余部分定下了基調。 我們討論了與深度遷移學習相關的不同遷移學習方法,例如*特征提取*和*微調*。 我們還介紹了著名的預訓練模型和使用深度學習系統的遷移學習的流行應用。 近年來,深度學習已被證明是非常成功的,因此,在此領域中使用遷移學習已進行了大量研究。 我們簡要討論了深度遷移學習的不同變體,例如*域自適應*,*域混淆*,*多任務學習*,*單次學習*, 和*零次學習*。 我們通過介紹與遷移學習相關的挑戰(例如負遷移和遷移邊界)來結束本章。 在本章中,我們概述了與遷移學習相關的各種研究出版物和鏈接,并鼓勵讀者探索它們以獲取更多信息。 本章將作為當前過渡學習領域的指導和概述。 敬請關注下一章的更多細節,我們將提供一些與轉學相關的動手練習。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看