日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

深度学习简明教程系列 —— 基础知识(合集)

發布時間:2023/12/9 pytorch 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深度学习简明教程系列 —— 基础知识(合集) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本教程是深度學習簡明教程系列的第一部分,旨在提取最精煉且必備的深度學習知識點,供讀者快速學習及本人查閱復習所用,大多內容是本人結合個人理解補充細節整合而成,參考鏈接放在文章最后。

目錄

第一章? 模型評估

1.1? 基礎概念

1.2? P-R曲線

1.3? ROC曲線和AUC

1.4? 目標檢測評價

1.5? 語義分割評價

1.6? 相關面試題

第二章? 深度學習入門

2.1? 機器學習到深度學習

2.2? 前饋神經網絡(MLP)

2.3? 卷積神經網絡(CNN)

2.4? 循環神經網絡(RNN)

2.5? 相關面試題

第三章? 激活函數

3.1? 常用激活函數

3.2? 相關面試題

第四章? 損失函數

4.1? 概覽

4.2? 分類任務損失函數

4.3? 回歸任務損失函數

4.4? 相關面試題

第五章? 優化算法

5.1? 概述

5.2? 存在的挑戰

5.3? 梯度下降優化方法

5.4? 梯度優化額外的策略

?5.5? 相關面試題

第六章? 反向傳播算法(BP算法)

6.1? 神經網絡

6.2? 正向傳播

6.3? 反向傳播

6.4? 總結

6.5? 相關面試題

第七章??梯度消失和梯度爆炸

7.1? 產生原因

7.2? 解決方案

7.3? 相關面試題

第八章? 范數正則化

8.1? 正則化概述

8.2??L0范數與L1范數

8.3? L2范數

8.4??正則化參數的選擇

8.5? 相關面試題

第九章??Batch Normalization

9.1? 使用BN的原因

9.2? 什么是BN

9.3? BN具體是怎么做的

9.4? 其他Normalization方法

9.5? 相關面試題

第十章? Dropout

10.1??Dropout簡介

10.2? 模型變化

10.3? 相關面試題

第十一章? 注意力機制

11.1? 注意力機制分類

11.2? 注意力模塊

11.3? 相關面試題


?

第一章? 模型評估

1.1? 基礎概念

假設有個樣本,其中有個樣本分類正確,則有:

  • 準確率(Accuracy):

  • 錯誤率(Error):

這兩個指標雖然常用,但無法滿足所有任務需求,我們還會用查準率(Precision)、召回率(Recall)、誤檢率(Noise Factor)、漏檢率(Prob?of Miss)來衡量分類效果。在二分類問題中,可以根據樣本真實類別和預測類別的組合劃分為:

  • 真陽(TP):預測為真,實際為真;

  • 假陽(FP):預測為真,實際為假;

  • 真陰(TN):預測為假,實際為假;

  • 假陰(FN):預測為假,實際為真。

因此有:

  • 查準率(Precision):,意即預測的正例有幾個是對的;

  • 召回率(Recall):,意即真正的正例預測了幾個;

  • 誤檢率(Noise Factor):,意即預測的正例有幾個是錯的;

  • 漏檢率(Prob?of Miss):,意即漏掉幾個正例沒檢測出來。

1.2? P-R曲線

查準率和召回率是一對矛盾的度量指標,一般呈現負相關,在很多情況下,我們可以通過繪制出學習器的P-R曲線(Precision - Recall Curve)來比較學習器的好壞。P-R圖以查準率為縱軸,召回率為橫軸,大致如下圖所示:

P-R曲線

如果一個學習器的P-R曲線被另一個學習器的P-R曲線完全包住,則可斷言外層的學習器性能優于內層,例如上面的A和B優于學習器C。但是A和B的性能無法直接判斷,我們可以根據曲線下方的面積大小來進行比較,但更常用的是平衡點或者是F1值:

  • 平衡點(BEP)是 P = R 時的取值,如果這個值較大,則說明學習器的性能較好。
  • F1 = 2 * P * R /( P + R ),同樣,F1值越大,我們可以認為該學習器的性能較好。

注意:一條P-R曲線要對應一個閾值。通過選擇合適的閾值,比如50%,對樣本進行劃分,概率大于50%的就認為是正例,小于50%的就是負例,從而計算相應的精準率和召回率。

1.3? ROC曲線和AUC

1.3.1? ROC曲線

接受者操作特性曲線(Receiver Operating Characteristic Curve),簡稱ROC曲線,縱軸是擊中率(TPR),橫軸是虛警率(FPR)。

擊中率,也即真正類率(True Postive Rate):TPR =?TP/(TP+FN),代表分類器預測的正類中實際正例占所有正例的比例。

虛警率,也即負正類率(False Postive Rate):FPR = FP/(FP+TN),代表分類器預測的正類中實際負例占所有負例的比例。

下圖為ROC曲線示意圖,因現實任務中通常利用有限個測試樣例來繪制ROC圖,因此應為無法產生光滑曲線,如右圖所示。

ROC曲線

繪圖過程:給定m個正例子,n個反例子,根據學習器預測結果進行排序,先把分類閾值設為最大,使得所有例子均預測為反例,此時TPR和FPR均為0,在(0,0)處標記一個點,再將分類閾值依次設為每個樣例的預測值,即依次將每個例子劃分為正例。設前一個坐標為(x,y),若當前為真正例,對應標記點為(x,y+1/m),若當前為假正例,則標記點為(x+1/n,y),然后依次連接各點。

注意:

  • ROC曲線也需要相應的閾值才可以進行繪制,原理同上的P-R曲線。
  • ROC曲線越左上凸越好,P-R曲線越右上凸越好。

1.3.2? AUC

AUC (Area under Curve):ROC曲線下的面積,介于0.1和1之間,作為數值可以直觀的評價分類器的好壞,值越大越好。

  • AUC = 1,是完美分類器,采用這個預測模型時,存在至少一個閾值能得出完美預測。絕大多數預測的場合,不存在完美分類器;
  • 0.5 < AUC < 1,優于隨機猜測。這個分類器(模型)妥善設定閾值的話,能有預測價值;
  • AUC = 0.5,跟隨機猜測一樣(例:丟硬幣),模型沒有預測價值。

1.4? 目標檢測評價

1.4.1? mAP

mAP(mean Average Precision)即各類別AP的平均值。由此我們可以知道,要計算mAP必須先繪出各類別P-R曲線,計算出AP。

1)VOC2010之前

只需要選取當Recall >= 0, 0.1, 0.2, ..., 1共11個點時的Precision最大值,然后AP就是這11個Precision的平均值。具體來說,計算precision時采用一種插值方法,即對于某個recall值r,precision值取所有recall>=r中的最大值(這樣保證了p-r曲線是單調遞減的,避免曲線出現抖動)。

11-point interpolation

2)VOC2010及其之后

需要針對每一個不同的Recall值r(包括0和1),Precision值取所有recall >= r+1中的最大值,然后計算PR曲線下面積作為AP值。

Interpolating all points

?

AP衡量的是對一個類檢測好壞,mAP就是對多個類的檢測好壞。就是簡單粗暴的把所有類的AP值取平均就好了。

1.5? 語義分割評價

評價指標一般包含如下三個方面:

  • 執行時間(execution time)
  • 內存占用(memory footprint)
  • 準確度(accuracy)

1.5.1? 準確度

?

1.6? 相關面試題

Q:

A:

?

第二章? 深度學習入門

2.1? 機器學習到深度學習

機器學習從發展角度來講可以被分為頻率派(統計機器學習)和貝葉斯派(概率圖模型)。

  • 統計機器學習中主要應用到的四個思想分別是:正則化(L1、L2)、核化(Kernel SVM)、集成化(AdaBoost、RF)和層次化(Neural Network);其中,本文的主角——神經網絡主要包括:多層感知機(MLP)、自編碼器(AutoEncoder)、卷積神經網絡(CNN)和循環神經網絡(RNN),隨著網絡層次的加深,我們統稱它們為深度神經網絡(DNN)。
  • 概率圖模型中主要包括三種模型分別是:有向圖模型(Beyesian Network)、無向圖模型(Markov Network)和混合模型(Mixed Network);其中,加入深度后它們又各自發展成了深度有向網絡(Deep Directed Network)、深度玻爾茲曼機(Deep Boltzman Machine)、深度信念網絡(Deep Belief Network),我們統稱它們為深度生成模型(Deep Generative Model)。

狹義上的深度學習主要指的就是深度神經網絡,廣義上的深度學習就包括了深度生成模型,思維導圖如下:

?

2.2? 前饋神經網絡(MLP)

2.2.1? MLP簡介

前饋神經網絡由輸入層、若干個隱層和輸出層組成,每層有若干個神經元,前層每個神經元和后層所有神經元均有連接(Fully Connected),連接的邊上帶有權重,神經元的輸出就是輸入和權重之積經過激活函數映射之后得到的值。

多層感知器能夠學習任意非線性函數,其中非線性是通過引入激活函數來實現的,我們訓練神經網絡其實就是不斷更新權值,使得網絡輸出結果能夠以較小的誤差正確擬合我們的數據。

2.2.2? MLP面臨的挑戰

在利用MLP解決圖像分類問題時,首先要將二維圖像轉換成一維向量,然后再對模型進行訓練。這樣做有兩個缺點:

1)隨著圖像尺寸的增大,可訓練參數的數量會急劇增加;

2)MLP會丟失圖像的空間特征。

2.3? 卷積神經網絡(CNN)

2.3.1? 理解卷積

通俗來講,圖像處理中的卷積就是通過一個模板矩陣,在圖像上進行滑窗,把對應位置上的元素相乘后加起來,得到最終的結果,可以形象理解為把原圖像一塊區域“卷”起來融合成新圖像的一個像素點,這個模板矩陣即為卷積核。

假設原圖像的大小為??,卷積核大小為??,往圖像兩邊填充??個像素,滑窗步長為??,則經過卷積后特征圖的大小為:

假設原圖像通道數為C1,卷積后通道數為C2,需要訓練的參數量為:

浮點數相乘計算的次數為:

2.3.2? CNN簡介

卷積神經網絡(CNN)目前在深度學習領域非常熱門,在圖像和視頻處理項目中尤其普遍。CNN的核心就在于卷積層,卷積層會使用若干個卷積核,在圖像上進行滑窗卷積操作,通過卷積對圖像特征進行抽象和提取,這么做有兩個特點:

  • 稀疏連接:CNN中后層神經元只于前層局部區域有連接;
  • 權重共享:同一個卷積核的參數在滑窗計算過程中都是一樣的。
  • 卷積核的參數全部都是需要通過學習得到的,和ANN學習權重參數一樣,而以上兩個特性可以大幅降低訓練參數數量,所以非常適合用于處理圖像問題。

    • 卷積核的厚度 = 被卷積的圖像的通道數
    • 卷積核的個數 = 卷積操作后輸出的通道數

    除了卷積層外,CNN中可能還包括池化層、激活層以及全連接層:

    1)池化層(Pooling)通常位于卷積操作之后,其作用在于特征融合和降維,其實也是一種類似卷積的操作,只是池化層的所有參數都是超參數(Average Pooling / Max Pooling),都是不用學習得到的,池化操作的降維改變的是圖像的寬高,而不改變通道數

    2)激活層的主要作用在于增加非線性,值得注意的是卷積層中的激活過程針對的是每一個像素值,比如某卷積層輸出中某個通道的 i 行 j 列像素值為x,只要這個數x>0,則x=x;x<0,則x=0。

    3)全連接層:負責邏輯推斷,所有的參數都需要學習得到。CNN中的全連接層用于鏈接卷積層的輸出,并去除空間信息(通道數),是一種將三維矩陣變成向量的過程(一種全卷積操作),其操作如下:

    輸入特征圖是W×H×C,那么卷積核的尺寸為W×H×C,這樣的話整個輸入特征圖就變成了一個數,一共有k個數(第一層全連接層的神經元個數),就有K個W×H×C的卷積核,所以全連接層(尤其是第一層)的參數量是非常可怕的。

    2.3.3??理解感受野

    感受野用來表示神經網絡內部的不同位置的神經元對原圖像的感受范圍的大小。神經元之所以無法對原始圖像的全部信息進行感知,是因為在這些網絡結構中普遍使用卷積層和pooling層,在層與層之間均為局部相連(通過sliding filter)。神經元感受野的值越大表示其能接觸到的原始圖像范圍就越大,也意味著他可能蘊含更為全局、語義層次更高的特征;而值越小則表示其所包含的特征越趨向于局部和細節。因此感受野的值可以大致用來判斷每一層的抽象層次。

    由于圖像是二維的,具有空間信息,因此感受野的實質其實也是一個二維區域。但業界通常將感受野定義為一個正方形區域,因此也就使用邊長來描述其大小了。感受野的抽象公式如下:

    其中,?為第n個卷積層的感受野,?和??分別表示第n個卷積層的kernel_size和stride。

    2.3.4? 特殊卷積結構

    1、分組卷積(Group convolution)

    分組卷積最早出現在AlexNet中,由于當時的硬件資源有限,訓練AlexNet時卷積操作不能全部放在同一個GPU處理,因此作者把feature maps分給多個GPU分別進行處理,最過程中把多個GPU的結果進行通道concat。通過使用分組卷積可以大大減少參數量。

    2、Inception結構

    傳統的層疊式網絡,基本上都是一個個卷積層的堆疊,每層只用一個尺寸的卷積核,例如VGG結構中使用了大量的3×3卷積層。事實上,同一層feature map可以分別使用多個不同尺寸的卷積核,以獲得不同尺度的特征,再把這些特征結合起來(concat),得到的特征往往比使用單一卷積核的要好,谷歌的GoogleNet,或者說Inception系列的網絡,就使用了多個卷積核的結構。

    3、Bottleneck結構

    發明GoogleNet的團隊發現,如果僅僅引入多個尺寸的卷積核,會帶來大量的額外的參數,受到Network In Network中1×1卷積核的啟發,為了解決這個問題,他們往Inception結構中加入了一些1×1的卷積核,如下圖所示:

    1×1卷積核也被認為是影響深遠的操作,它主要用來改變通道數,降低參數量,往后大型的網絡為了降低參數量都會應用上1×1卷積核。我們來做個對比計算,假設輸入feature map的維度為256維,要求輸出維度也是256維。有以下兩種操作:

    • 256維的輸入直接經過一個3×3×256的卷積層,輸出一個256維的feature map,那么參數量為:256×3×3×256 = 589824
    • 256維的輸入先經過一個1×1×64的卷積層,再經過一個3×3×64的卷積層,最后經過一個1×1×256的卷積層,輸出256維,參數量為:256×1×1×64 + 64×3×3×64 + 64×1×1×256 = 69632,足足把第一種操作的參數量降低到九分之一。

    4、深度可分離卷積(DepthWise Convolution)

    標準的卷積過程如下圖所示,一個2×2的卷積核在卷積時,對應圖像區域中的所有通道均被同時考慮,問題在于,為什么一定要同時考慮圖像區域和通道?我們為什么不能把通道和空間區域分開考慮?

    標準卷積

    Xception網絡就是基于以上的問題發明而來。我們首先對每一個通道進行各自的卷積操作,有多少個通道就有多少個過濾器。得到新的通道feature maps之后,這時再對這批新的通道feature maps進行標準的1×1跨通道卷積操作。這種操作被稱為 “DepthWise Convolution” ,縮寫“DW”,它的直接作用就在于可以大幅降低參數量。

    深度可分離卷積
    • 直接接一個3×3×256的卷積核,參數量為:3×3×3×256 = 6912
    • DW操作,分兩步完成,參數量為:3×3×3 + 3×1×1×256 = 795,又把參數量降低到九分之一。

    5、通道洗牌

    在AlexNet的Group Convolution當中,特征的通道被平均分到不同組里面,最后再通過兩個全連接層來融合特征,這樣一來,就只能在最后時刻才融合不同組之間的特征,對模型的泛化性是相當不利的。為了解決這個問題,ShuffleNet在每一次層疊這種Group conv層前,都進行一次channel shuffle,shuffle過的通道被分配到不同組當中。進行完一次group conv之后,再一次channel shuffle,然后分到下一層組卷積當中,以此循環。

    經過channel shuffle之后,Group conv輸出的特征能考慮到更多通道,輸出的特征自然代表性就更高。另外,AlexNet的分組卷積,實際上是標準卷積操作,而在ShuffleNet里面的分組卷積操作是depthwise卷積,因此結合了通道洗牌和分組depthwise卷積的ShuffleNet,能得到超少量的參數以及超越mobilenet、媲美AlexNet的準確率。

    6、通道加權

    無論是在Inception、DenseNet或者ShuffleNet里面,我們對所有通道產生的特征都是不分權重直接結合的,那為什么要認為所有通道的特征對模型的作用就是相等的呢? 這是一個好問題,于是,ImageNet 2017冠軍SENet就出來了。

    從上圖可以看到,一組特征在上一層被輸出,這時候分兩條路線,第一條直接通過,第二條進行如下操作:

  • 首先進行Squeeze操作(Global Average Pooling),把每個通道二維的特征圖壓縮成一個一維向量,從而得到一個特征通道向量(每個數字代表對應通道的特征);
  • 然后進行Excitation操作,把這一列特征通道向量輸入兩個全連接層和sigmoid,建模出特征通道間的相關性,得到的輸出其實就是每個通道對應的權重;
  • 最后,把這些權重通過Scale乘法通道加權到原來的特征上(第一條路),這樣就完成了特征通道的權重分配。
  • 7、空洞卷積(Dilated Convolution)

    標準的3×3卷積核只能看到對應區域3×3的大小,但是為了能讓卷積核看到更大的范圍,dilated conv使其成為了可能。dilated conv原論文中的結構如圖所示:

    上圖b可以理解為卷積核大小依然是3×3,但是每個卷積點之間有1個空洞(dilated rate = 1),也就是在綠色7×7區域里面,只有9個紅色點位置作了卷積處理,其余點權重為0。這樣即使卷積核大小不變,但它看到的區域變得更大了。

    8、可變形卷積(Deformable Convolution)

    傳統的卷積核一般都是長方形或正方形,但MSRA提出了一個相當反直覺的見解,認為卷積核的形狀可以是變化的,變形的卷積核能讓它只看感興趣的圖像區域 ,這樣識別出來的特征更佳。

    要做到這個操作,可以直接在原來的卷積核的基礎上再加一層卷積核,這層卷積核學習的是下一層卷積核的位置偏移量(offset),實際增加的計算量是相當少的,但能實現可變形卷積核,識別特征的效果更好。

    在實際操作時,并不是真正地把卷積核進行擴展,而是對卷積前圖片的像素重新整合,變相地實現卷積核的擴張,具體來說可變性卷積的流程為:

  • 原始圖片大小為b*h*w*c,記為U,經過一個普通卷積,卷積填充為same,對應的輸出結果為(b*h*w*2*k*k),記為V,輸出的結果是指原圖片batch中卷積核在每個像素上的偏移量(k*k的卷積核具有x偏移與y偏移,因此通道數為2*k*k);
  • 將U中圖片的像素索引值與V相加,得到偏移后的position(即在原始圖片U中的坐標值),需要將position值限定為圖片大小以內。但position只是一個坐標值,而且還是float類型的,我們需要這些float類型的坐標值獲取像素。
  • 例如取一個坐標值(a,b),將其轉換為四個整數,floor(a), ceil(a), floor(b), ceil(b),將這四個整數進行整合,得到四對坐標(floor(a),floor(b)), ((floor(a),ceil(b)), ((ceil(a),floor(b)), ((ceil(a),ceil(b))。這四對坐標每個坐標都對應U中的一個像素值,而我們需要得到(a,b)的像素值,這里采用雙線性差值的方式計算(一方面得到的像素準確,另一方面可以進行反向傳播)。
  • 在得到position的所有像素后,即得到了一個新圖片M,將這個新圖片M作為輸入數據輸入到別的層中,如普通卷積。
  • 9、上采樣、上池化和轉置卷積

    1)上采樣(UnSampling)

    UnSampling階段沒有使用MaxPooling時的位置信息,而是直接將內容以插值方式來擴充Feature Map,屬于人工特征工程,沒有要學習的參數。常用上采樣方法有:最近鄰插值(Nearest neighbor interpolation)、雙線性插值(Bi-Linear interpolation)、雙立方插值(Bi-Cubic interpolation)

    ?

    上采樣

    2)上池化(UnPooling)

    在Maxpooling的時候保留最大值的位置信息,之后在UnPooling階段使用該信息擴充Feature Map,除最大值位置以外,其余補0。

    ?

    上池化

    3)轉置卷積(Deconvolution)

    反卷積是一種特殊的正向卷積,先按照一定的比例通過補0來擴大輸入圖像的尺寸,接著旋轉卷積核(參數與之前正向卷積過程中使用到的卷積核參數一致),再進行卷積。具體步驟如下:

  • 設卷積核大小為k*k,輸入為方形矩陣;
  • 對輸入進行四邊補零,單邊補零的數量為k-1;
  • 將卷積核旋轉180°,在新的輸入上進行直接卷積。
  • ?

    ?

    ?

    下圖展示一個反卷積的工作過程,乍看一下好像反卷積和卷積的工作過程差不多,主要的區別在于反卷積輸出圖片的尺寸會大于輸入圖片的尺寸,通過增加padding來實現這一操作。

    下圖中的反卷積的stride為2,通過間隔插入padding來實現的。同樣,可以根據反卷積的o、s、k、p參數來計算反卷積的輸出i,也就是卷積的輸入。公式如下:i=(o?1)?s+k?2?p,其實就是根據上式推導出來的。

    2.3.5? 卷積的可視化

    1、可視化方案

    總體思路就是將某一層的feature maps 經過相反的結構。如經過max pooling層那么就在對稱位置記住所取位置后,unpooling到相應位置,如經過relu那么在對稱位置在經過一次relu,如經過conv那么在對稱位置使用相同的Filter的轉置進行deconv。

  • 反池化:我們知道,池化是不可逆的過程,然而我們可以通過記錄池化過程中,最大激活值得坐標位置。然后在反池化的時候,只把池化過程中最大激活值所在的位置坐標的值激活,其它的值置為0,當然這個過程只是一種近似,因為我們在池化的過程中,除了最大值所在的位置,其它的值也是不為0的。
  • 反激活:反激活過程和激活過程沒有什么差別,都是直接采用relu函數。
  • 反卷積:對于反卷積過程,采用卷積過程轉置后的卷積核(參數一樣,只不過把參數矩陣水平和垂直方向翻轉了一下),反卷積實際上應該叫卷積轉置。
  • 最后可視化網絡如下圖所示:

    網絡的整個過程,從右邊開始:輸入圖片-->卷積-->Relu-->最大池化-->得到結果特征圖-->反池化-->Relu-->反卷積。

    舉個例子:假如你想要查看Alexnet 的conv5提取到了什么東西,我們就用conv5的特征圖后面接一個反卷積網絡,然后通過:反池化、反激活、反卷積,這樣的一個過程,把本來一張13*13大小的特征圖(conv5大小為13*13),放大回去,最后得到一張與原始輸入圖片一樣大小的圖片(227*227)。

    2、理解可視化

    從上圖可看出:

    • layer 1、layer 2學習到的特征基本上是顏色、邊緣等低層特征
    • layer 3則開始稍微變得復雜,學習到的是紋理特征,比如上面的一些網格紋理;
    • layer 4學習到的則是比較有區別性的特征,比如狗頭等物體的局部;
    • layer 5學習到的則是物體整體的信息,具有辨別性關鍵特征

    總的來說,通過CNN學習后,我們學習到的特征,是具有辨別性的特征,比如要我們區分人臉和狗頭,那么通過CNN學習后,背景部位的激活度基本很少,我們通過可視化就可以看到我們提取到的特征忽視了背景,而是把關鍵的信息給提取出來了。

    3、特征學習過程

    在網絡訓練過程中,每一層學習到的特征是怎么變化的,上面每一張圖片是網絡的某一層特征圖,然后每一行有8個小圖片,分別表示網絡epochs次數為:1、2、5、10、20、30、40、64的特征圖,可以看出前幾層(lower)收斂較快,后幾層收斂較慢。

    上圖是對應著圖像平移、縮放、旋轉給featuremap帶來的變化,可以看出第一層中對于圖像變化非常敏感,第7層就接近于線性變化,最后的輸變化就相對較小了。

    2.3.6? 總結

    總的來說,卷積核的發展有如下幾個方面和特點:

    卷積核方面:

  • 大卷積核用多個小卷積核代替;
  • 單一尺寸卷積核用多尺寸卷積核代替;
  • 固定形狀卷積核趨于使用可變形卷積核;
  • 使用1×1卷積核(bottleneck結構)。
  • 卷積層通道方面:

  • 標準卷積用depthwise卷積代替;
  • 使用分組卷積;
  • 分組卷積前使用通道洗牌;
  • 通道加權計算。
  • 卷積層連接方面:

  • 使用skip connection,讓模型更深;
  • Densely connection,使每一層都融合上其它層的特征輸出(DenseNet)
  • 2.4? 循環神經網絡(RNN)

    2.4.1? 基礎RNN結構

    普通神經網絡由于結構問題,對于時序任務,會獨立的去處理每個數據項,難以有效學習各個數據項之間的上下文依賴關系。

    RNN的提出主要就是用來解決序列問題,強調的是先后順序,借助RNN的hidden state記憶單元,使得一個序列位置的輸出在數學上和之前的所有序列的輸入都是有關系的,常見RNN網絡結構如下:

    左邊是RNN網絡,右邊是RNN網絡按時序展開的形式,其實就是同一個神經網絡單元(同樣的權重在各個時間步共享),t 時刻的hidden status是當前的時間步的數據和上一時間步的hidden status(記憶)拼接成大的矩陣后經過一個tanh函數激活的結果,同時需要把結果??作為記憶信息輸入到下一時刻(??初始化為0)。

    內部具體結構如下圖所示:

    RNN的幾種結構:

    1)RNN(N vs N)網絡結構

    2)RNN(N vs 1)網絡結構

    輸出經過一個softmax后即可得到分類結果

    3)RNN(1 vs N)網絡結構

    4)RNN(N vs M)網絡結構

    RNN存在的問題:

  • 原始的RNN中,由于隱狀態信息中的長期信息計算時會反復連乘權重矩陣,如果權重矩陣W小于1,就會導致長期信息對后面數據項的影響近乎為0,從而無法學習長期依賴關系;
  • RNN存在梯度消失問題:RNN梯度消失是因為在反向傳播求損失函數偏導時,需要連乘tanh函數的導數,而tanh的導數值域在0到1之間,鏈式法則中的連乘效應將導致求得的偏導越來越小,從而導致梯度消失(RNN 中同樣的權重在各個時間步共享,最終的梯度 g = 各個時間步的梯度 gt 的和,因此RNN中總的梯度是不會消失的,RNN 所謂梯度消失的真正含義是,梯度被近距離梯度主導,導致模型難以學到遠距離的依賴關系);
  • RNN存在梯度消失問題:當Wh參數初始化為足夠大,使得tanh函數的導數乘以W大于1,則連乘效應將導致偏導極大,從而導致梯度爆炸。
  • 2.4.2? LSTM結構

    為了解決RNN存在的幾個問題,提出了LSTM神經網絡,它可以通過門控機制解決無法學習長期依賴的問題(將梯度乘性問題轉變成加性問題),有挑選的將信息放入到細胞狀態線里,從某種角度類似時間線上的attention機制。LSTM結構圖如下所示:

    1、細胞狀態和隱狀態

    LSTM相比RNN的hidden status還引入了細胞狀態來記錄信息,細胞狀態通過門結構gate來添加新的記憶和刪除舊的記憶信息。

    添加和刪除信息的原理:輸入矩陣通過sigmoid激活函數后就會得到0~1取值范圍的矩陣,再和上一時刻的cell state矩陣進行點乘,就可以實現過濾部分信息的效果。

    2、門控結構

    LSTM通過遺忘門來決定從上個隱狀態記憶中忘記哪些信息,通過輸入門來決定輸入哪部分信息,通過輸出門來決定輸出哪部分信息,以此解決長時依賴問題。下面我們詳細介紹一下LSTM中的各種門:

    1)遺忘門

    通過遺忘門可以通過過濾矩陣選擇性忘記cell state中的部分記憶信息。

    2)輸入門

    這一步進行了兩個操作:一個是經過輸入門產生了一個過濾矩陣來決定那些信息來加入到本時刻的cell state中;另一步是通過上一時刻的hidden state和新的輸入來計算這步的待輸入信息;然后,待輸入信息和輸入門產生的過濾矩陣點乘,產生最終需添加到cell state的新信息。

    3)輸出門

    將新的cell state信息經過tanh激活后,再和輸出門產生的過濾矩陣點乘,得到此刻的隱狀態?

    LSTM中梯度的傳播有很多條路徑,細胞記憶上多是逐元素的相乘和相加,梯度流穩定,因此能夠解決RNN無法學習長期依賴和梯度消失的問題;但是,LSTM 仍然有可能發生梯度爆炸,不過,由于 LSTM 的其他路徑非常崎嶇,和普通 RNN 相比多經過了很多次激活函數(導數都小于 1),因此 LSTM 發生梯度爆炸的頻率要低得多。

    2.4.3? GRU結構

    GRU的結構如下,主要包含重置門和更新門,把GRU看著LSTM的變體,相當于取消了LSTM中的cell state,只使用了hidden state,并且使用update gate更新門來替換LSTM中的輸入門和遺忘門,取消了LSTM中的輸出門,新增了reset gate重置門。這樣做的好處是在達到LSTM相近的效果下,GRU參數更少,訓練的計算開銷更小,訓練速度更快。

    重置門:多大程度上擦除以前的隱狀態

    更新門:忘記傳遞下來的? 中的某些維度信息,并加入當前時刻輸入的某些維度信息。

    2.5? 相關面試題

    Q:用Pytorch搭建一個神經網絡的大概流程是什么樣的?

    A:

  • 首先,定義一個類,也就是我們的神經網絡模型,繼承自nn.Module;
  • 這個類有兩個方法,第一個函數是__init__(self),可以在里面自己初始化或者是載入網絡結構;第二函數是forward(self, input),接收樣本數據,并在我們定義的網絡上正向傳播,返回計算結果;
  • 完成網絡模型類的定義后,我們會在全局變量中定義一些超參數,譬如batch_size、學習率、權重衰減、動量等等;
  • 在訓練時,我們先聲明一個網絡模型,然后根據需求定義優化器和損失函數;
  • 之后,我們還可以再載入預訓練的模型參數,并DataLoader加載我們的樣本集;
  • 最后,開始若干輪訓練,每一次都將樣本在網絡上傳播,計算loss,然后結合優化器,將損失反向傳播。
  • 訓練完后,就可以獲得最終模型,把權重存下來即可。
  • Q:Pytorch和Tensorflow的區別

    A:

  • Tensorflow是一種靜態框架,在使用時需要先構造一個計算圖,構造完之后這個計算圖就不能改變了。然后我們再開啟會話,輸入數據進行計算。而Pytorch是一種動態框架,計算圖是在運行時構建的,可以直接輸入數據進行計算,不需要采用會話;
  • Tensorflow是靜態計算圖,數據參數在CPU與GPU之間遷移麻煩,調試也麻煩;Pytorch是動態計算圖,數據參數在CPU與GPU之間遷移十分靈活,調試簡便;
  • Q:

    A:

    第三章? 激活函數

    定義:在神經網絡中,神經元節點的激活函數定義了對神經元輸出的映射,即神經元的輸出經過激活函數處理后再作為輸出。

    作用:神經網絡中激活函數的主要作用是提供網絡的非線性建模能力,如不特別說明,激活函數一般而言是非線性函數。

    3.1? 常用激活函數

    3.1.1??Sigmoid函數

    Sigmoid 是使用范圍最廣的一類激活函數,具有指數函數形狀 。定義為:

    可見,sigmoid在定義域內處處可導,兩側導數逐漸趨近于0,也稱為軟飽和激活函數;與軟飽和相對的是硬飽和激活函數,即:f'(x)=0,當 |x| > c,其中 c 為常數。

    缺點:1)梯度消失;2)輸出均值始終大于0,收斂慢。

    3.1.2? Tanh函數

    可見,tanh(x)=2sigmoid(2x)-1,也具有軟飽和性。tanh 網絡的收斂速度要比sigmoid快。因為 tanh 的輸出均值比 sigmoid 更接近 0,SGD會更接近 natural gradient(一種二次優化技術),從而降低所需的迭代次數。

    缺點:1)梯度消失。

    3.1.3? ReLU函數

    與傳統的sigmoid激活函數相比,ReLU能夠有效緩解梯度消失問題,從而直接以監督的方式訓練深度神經網絡,無需依賴無監督的逐層預訓練,這也是2012年深度卷積神經網絡在ILSVRC競賽中取得里程碑式突破的重要原因之一。

    可見,ReLU 在x<0 時硬飽和;由于 x>0時導數為 1,所以,ReLU 能夠在x>0時保持梯度不衰減,從而緩解梯度消失問題。但其仍存在幾個問題:

  • 隨著訓練的推進,部分輸入會落入硬飽和區,導致對應權重無法更新,這種現象被稱為“神經元死亡”。
  • ReLU還經常被“詬病”的一個問題是輸出存在偏移現象,即輸出均值恒大于零,偏移現象和神經元死亡會共同影響網絡的收斂性。
  • 3.1.4? PReLU函數

    PReLU是ReLU 和 LReLU的改進版本,具有非飽和性:

    與Leaky ReLU相比,PReLU中的負半軸斜率a可學習而非固定,雖然PReLU 引入了額外的參數,但基本不需要擔心過擬合。與ReLU相比,PReLU收斂速度更快,因為PReLU的輸出更接近0均值。

    3.1.5? RReLU函數

    數學形式與PReLU類似,但RReLU是一種非確定性激活函數,其參數是隨機的。這種隨機性類似于一種噪聲,能夠在一定程度上起到正則效果。

    3.1.6??Maxout函數

    Maxout是ReLU的推廣,其可以看做是在深度學習網絡中加入一層激活函數層,包含一個參數n。這一層相比ReLU,sigmoid等,其特殊之處在于增加了n個神經元,然后輸出激活值最大的值。

    Maxout網絡能夠近似任意連續函數,且當w2,b2,…,wn,bn為0時,退化為ReLU。Maxout能夠緩解梯度消失,同時又規避了ReLU神經元死亡的缺點,但增加了參數和計算量。

    3.1.7? ELU函數

    ELU融合了sigmoid和ReLU,具有左側軟飽性。其正式定義為:

    右側線性部分使得ELU能夠緩解梯度消失,而左側軟飽能夠讓ELU對輸入變化或噪聲更魯棒。ELU的輸出均值接近于零,所以收斂速度更快。

    3.2? 相關面試題

    Q:

    A:

    ?

    ?

    第四章? 損失函數

    4.1? 概覽

    4.2? 分類任務損失函數

    4.2.1? 二分類交叉熵損失(sigmoid_cross_entropy)

    其中,?是樣本標簽(0/1),?是模型預測樣本為正例的概率。

    4.2.2? 二分類平衡交叉熵損失(balanced_sigmoid_cross_entropy)

    其中,?是樣本標簽(0/1),?是模型預測樣本為正例的概率,?是一個超參數。

    4.2.3? 多分類交叉熵損失(softmax_cross_entropy)

    其中,?是類別數,?是樣本標簽的onehot表示,?中每個元素??表示樣本屬于第??類的概率。

    4.2.4? Focal Loss

    Focal Loss主要用于解決多分類任務中樣本不平衡的現象,可以獲得更好的分類效果:

    其中,? 用于平衡不同類別樣本的重要性,?表示給第 ?類樣本分配的權重,數量少的類別分配更大的權重,數量多的減小權重;?用于控制預測結果的loss大小,概率大說明是容易分類的樣本,loss就會減小,概率小說明是困難、錯分的樣本,loss就會增大,通過這一參數可以使模型更關注于困難樣本。論文中α=0.25,γ=2效果最好。

    4.2.5??Dice Loss

    dice系數源于二分類,本質上是衡量兩個樣本的重疊部分,二分類時使用該loss,本質就是不斷學習,使得交比并越來越大。

    最終Dice Loss = 1 - DSC

    4.2.6??合頁損失(hinge loss)

    svm中使用的損失函數,由于合頁損失優化到滿足小于一定gap距離就會停止優化,而交叉熵損失卻是一直在優化,所以,通常情況下,交叉熵損失效果優于合頁損失。

    • 當??大于等于+1或者小于等于-1時,都是分類器確定的分類結果,此時的損失函數loss為0;
    • 當預測值時,分類器對分類結果不確定,loss不為0。顯然,當??時,loss達到最大值。

    4.2.7? KL散度

    KL散度( Kullback–Leibler divergence),也叫相對熵,是描述兩個概率分布P和Q差異的一種方法。

    從上述公式中我們可以看出,KL散度 = 交叉熵 - 熵。

    4.3? 回歸任務損失函數

    4.3.1? 均方誤差(Mean Square Error, MSE)

    MSE表示了預測值與目標值之間差值的平方和然后求平均。

    L2損失表示了預測值與目標值之間差值的平方和然后開更方,L2表示的是歐幾里得距離。

    MSE和L2的曲線走勢都一樣。區別在于一個是求的平均,一個是求的開方。

    4.3.2??平均絕對誤差(Mean Absolute Error, MAE)

    MAE表示了預測值與目標值之間差值的絕對值然后求平均。

    L1表示了預測值與目標值之間差值的絕對值,L1也叫做曼哈頓距離。

    MAE和L1的區別在于一個求了均值,一個沒有求,兩者的曲線走勢也是完全一致的。

    總結:MAE/L1 Loss 對于局外點更魯棒,但它的導數不連續使得尋找最優解的過程低效;MSE/L2 Loss 對于局外點敏感,但在優化過程中更為穩定和準確。

    4.3.3??Huber Loss和Smooth L1 Loss

    Huber loss具備了MAE和MSE各自的優點,當δ趨向于0時它就退化成了MAE,而當δ趨向于無窮時則退化為了MSE。

    Smooth L1 loss具備了L1 loss和L2 loss各自的優點,本質就是L1和L2的組合。

    Huber loss和Smooth L1 loss具有相同的曲線走勢,當Huber loss中的δ等于1時,Huber loss等價于Smooth L1 loss。

    對于Huber損失來說,δ的選擇十分重要,它決定了模型處理局外點的行為。當殘差大于δ時使用L1損失,很小時則使用更為合適的L2損失來進行優化。Huber損失函數克服了MAE和MSE的缺點,不僅可以保持損失函數具有連續的導數,同時可以利用MSE梯度隨誤差減小的特性來得到更精確的最小值,也對局外點具有更好的魯棒性。但Huber損失函數的良好表現得益于精心訓練的超參數δ。

    4.3.4??對數雙曲余弦(Log Cosh Loss)

    ?

    其優點在于對于很小的誤差來說log(cosh(x))與(x2)/2很相近,而對于很大的誤差則與abs(x)-log2很相近。這意味著log-cosh損失函數可以在擁有MSE優點的同時也不會受到局外點的太多影響。它擁有Huber的所有優點,并且在每一個點都是二次可導的。

    4.4? 相關面試題

    Q:

    A:

    ?

    第五章? 優化算法

    5.1? 概述

    機器學習的本質是建立優化模型,通過優化方法,不斷迭代參數向量,找到使目標函數最優的參數向量,最終建立模型。通常用到的優化方法:梯度下降方法、牛頓法、擬牛頓法等。這些優化方法的本質就是在更新參數。

    5.1.1? 梯度下降法

    梯度下降是一種最小化目標函數 J(θ) 的方法,其中 是模型參數,而最小化目標函數是通過在其關于 θ 的 梯度 的相反方向更新 θ 來實現的;而學習率(learning rate)則決定了在到達(局部)最小值的過程中每一步走多長。

    梯度下降目前主要有三種方式:

    • 批量梯度下降(BGD,每次進行一次參數更新需要在整個訓練集上計算梯度);
    • 隨機梯度下降(SGD,每次只使用一個隨機的樣本進行參數更新);
    • 小批量梯度下降(MBGD,每次從訓練集中取出 n 個樣本作為一個 mini-batch,以此來進行一次參數更新)。根據數據量的大小,我們在參數更新的準確性和執行更新所需時間之間做了一個權衡。

    Q:MBGD中batch size的選擇

    A:

    1)為什么 batch size 會影響訓練結果

    ?

    2)在合理范圍內,增大 Batch_Size 有何好處

  • 內存利用率提高了,大矩陣乘法的并行化效率提高;

  • 跑完一個epoch(全數據集)所需的迭代次數減少,對于相同數據量的處理速度進一步加快;

  • 在一定范圍內,一般來說 Batch_Size 越大,其確定的下降方向越準,引起訓練震蕩越小。

  • 3)盲目增大 Batch_Size 有何壞處

  • 內存利用率提高了,但是內存容量可能撐不住了;

  • 跑完一次 epoch(全數據集)所需的迭代次數減少,但所花費的時間大大增加了,從而對參數的修正也就顯得更加緩慢;

  • Batch_Size 增大到一定程度,其確定的下降方向已經基本不再變化。

  • 運行結果如上圖所示,其中絕對時間做了標準化處理。運行結果與上文分析相印證:

    5.1.2? 牛頓法

    首先得明確,牛頓法是為了求解函數值為零的時候變量的取值問題的,具體地,當要求解 f(θ)=0 時,如果 f 可導,那么可以通過迭代公式

    來迭代求得最小值,可以通過一個動圖來說明這個過程。

    在機器學習中,我們應用牛頓法求解目標函數的一階導數為0時的參數,進而求出目標函數最小值時的參數。那么迭代公式變為:

    當θ是向量時,牛頓法可以使用下面式子表示:

    其中H叫做海森矩陣,其實就是目標函數對參數向量 θ 的二階導數。下面給出牛頓法的完整算法描述:

  • 給定參數初值??和精度閾值??,并令t = 0;
  • 計算目標函數對于參數向量的一階導數??和二階導數 H;
  • 若?,則停止迭代,否則確定搜索方向?;
  • 計算新的參數;
  • 令,轉至第二步。
  • 通過比較牛頓法和梯度下降法的迭代公式,可以發現兩者及其相似,海森矩陣的逆就好比梯度下降法的學習率參數alpha。

    牛頓法的優缺點總結:

    優點:二階收斂,收斂速度快;同時,海森矩陣的的逆在迭代中不斷減小,起到逐漸縮小步長的效果。

    缺點:牛頓法是一種迭代算法,每一步都需要求解目標函數的Hessian矩陣的逆矩陣,計算比較復雜。

    5.1.3? 擬牛頓法

    擬牛頓法的本質思想是改善牛頓法每次需要求解復雜的Hessian矩陣的逆矩陣的缺陷,它使用正定矩陣來近似Hessian矩陣的逆,從而簡化了運算的復雜度。

    這樣的迭代與牛頓法類似,區別就在于用近似矩陣??代替真實的Hesse矩陣。所以擬牛頓法最關鍵的地方就是每一步迭代中矩陣?的更新。具體來說,求近似矩陣的方法有:

    1)DFP算法

    2)BFGS算法

    3)L-BFGS算法

    5.2? 存在的挑戰

    在深度學習中,我們很少去用牛頓法,而是采用梯度下降法,但是標準的 MBGD 并不保證好的收斂,也提出了以下需要被解決的問題:

  • 選擇一個好的學習率是非常困難的。太小的學習率導致收斂非常緩慢,而太大的學習率則會阻礙收斂,導致損失函數在最優點附近震蕩甚至發散。
  • 學習率不能做到自適應數據的特點。學習率的減小規則和閾值也是需要在訓練前定義好的,另外,相同的學習率被應用到所有參數更新中。如果我們的數據比較稀疏,特征有非常多不同的頻率,那么此時我們可能并不想要以相同的程度更新他們,反而是對更少出現的特征給予更大的更新。
  • 對于神經網絡來說,另一個最小化高度非凸誤差函數的關鍵挑戰是避免陷入他們大量的次局部最優點(suboptimal)傳統的梯度下降方法難以逃脫鞍點,因為其各個維度上梯度都趨近于0。
  • 5.3? 梯度下降優化方法

    5.3.1? 動量法(Momentum)

    SGD 在遇到溝壑時會比較困難(即在一個維度上比另一個維度更陡峭的曲面),這些曲面通常包圍著局部最優點。在這些場景中,SGD 震蕩且緩慢的沿著溝壑的下坡方向朝著局部最優點前進,如下圖所示:

    動量(Momentum)是一種在相關方向加速 SGD 的方法,并且能夠減少震蕩。

    原理:它通過在當前更新向量(梯度方向)中加入了先前一步的狀態,對于那些當前的梯度方向與上一次梯度方向相同的向量維度進行加強,即這些方向上更快了;對于那些當前的梯度方向與上一次梯度方向不同的向量維度進行削減,即這些方向上減慢了。因此可以獲得更快的收斂速度與減少振蕩。

    其具體計算公式如下

    其中,動量項 γ 通常設置為 0.9 或者相似的值。

    5.3.2??Nesterov Accelerated Gradient(NAG)

    Momentum中,θ 每次都會多走??的量;在NAG中,我們直接讓 θ 先走到 ?之后的地方,然后再根據那里的梯度前進一步,這種預期更新防止我們下降得太快,也帶來了更高的響應速度,這在一些任務中非常有效的提升了性能。

    • 動量法首先計算當前梯度(圖 4 中的小藍色向量),然后在更新累積梯度方向上大幅度的跳躍(圖 4 中的大藍色向量);
    • NAG 首先在先前的累積梯度方向上進行大幅度的跳躍(圖 4 中的棕色向量),評估這個梯度并做一下修正(圖 4 中的紅色向量),這就構成一次完整的 NAG 更新(圖 4 中的綠色向量)。

    NAG算法相對于Momentum多了一個本次梯度相對上次梯度的變化量,這個變化量本質上是對目標函數二階導的近似。由于利用了二階導的信息,NAG算法才會比Momentum具有更快的收斂速度。

    通過上面的兩種方法,可以做到每次學習過程中能夠根據損失函數的斜率做到自適應更新來加速SGD的收斂。下一步便需要對每個參數根據參數的重要性進行各自自適應更新。

    5.3.3??Adagrad

    Adagrad也是一種基于梯度的優化算法,它能夠對不同時刻的參數 θ?自適應不同的學習速率,對稀疏特征,得到大的學習更新,對非稀疏特征,得到較小的學習更新,因此該優化算法適合處理稀疏特征數據。其計算公式如下:

    其中??是一個對角矩陣,對角元素??是參數??從開始到時間點?t?為止的梯度平方和;??是一個平滑項,用于防止分母為 0 ,通常為?10?8?左右;?為目標函數關于參數?θ?在 t 時刻的梯度。

    Adagrad的優缺點

    優勢:在于它能夠為每個參數自適應不同的學習速率,而一般的人工都是設定為0.01。

    缺點:在于需要計算參數梯度序列平方和,并且學習速率趨勢是不斷衰減最終達到一個非常小的值。

    5.3.4??RMSProp

    RMSProp是 Adagrad 的擴展,旨在幫助緩解后者學習率單調下降的問題。與 Adagrad 累積過去所有梯度的平方和不同,RMSProp主要有兩個方面的改進:

    • Adadelta 限制在過去某個大小為w的窗口內的梯度(相當于滑動平均值);
    • 存儲先前 w 個梯度的平方效率不高,Adadelta 的梯度平方和被遞歸的定義為過去所有梯度平方的滑動平均值。

    在 t 時刻的滑動平均值 僅僅取決于先前的平均值和當前的梯度:

    先前我們推導過的 Adagrad 的參數更新向量,我們現在用過去梯度平方和的滑動平均 來代替對角矩陣 :

    由于分母只是一個梯度的均方根誤差(Root Mean Squared,RMS),我們可以用縮寫來代替:

    這種方法即RMSProp,解決了對歷史梯度一直累加而導致學習率一直下降的問題,但仍需要自己選擇初始的學習率。

    Hinton 建議將 γ 設為 0.9 ,默認學習率 η 設為 0.001 。

    5.3.5??Adadelta

    為了解決參數更新中單位不匹配的問題,并自適應的選擇一個學習率,Adadelta定義了另一個關于參數??的滑動平均:

    那么參數的均方根誤差即為:

    由于??未知,采用上一步??來代替學習率??,最終得到Adadelta的更新規則:

    5.3.6? Adam

    Adaptive Moment Estimation是另一種為每個參數計算自適應學習率的方法。除了像 Adadelta 和 RMSprop 一樣存儲歷史梯度平方的滑動平均值??外,Adam 也存儲歷史梯度的滑動平均值?,類似于動量:

    ??與 ?分別是梯度的帶權平均和帶權有偏方差,初始為0向量,Adam的作者發現他們傾向于0向量,特別是在衰減因子β1,β2接近于1時。為了改進這個問題,對 ?與 ?進行偏差修正:

    最終Adam的更新公式為:

    作者建議 β1 的默認值為 0.9 , β2 的默認值為 0.999 ,? 的默認值為 10?8 。實踐證明 Adam 在訓練中非常有效,而且對比其他自適應學習率算法也有優勢。

    5.4? 梯度優化額外的策略

    介紹一些可以和前面討論的算法一起使用的策略,用以進一步提升 SGD 的性能。

    1)Shuffling and Curriculum Learning

    • 為了使得學習過程更加無偏,應該在每次迭代中隨機打亂訓練集中的樣本。
    • 另一方面,在很多情況下,我們是逐步解決問題的,而將訓練集按照某個有意義的順序排列會提高模型的性能和SGD的收斂性,如何將訓練集建立一個有意義的排列被稱為Curriculum Learning。

    2)Batch normalization

    • Batch normalization在每次mini-batch反向傳播之后重新對參數進行0均值、1方差的標準化過程。這樣可以使用更大的學習速率,以及花費更少的精力在參數初始化點上。Batch normalization充當著正則化、減少甚至消除掉Dropout的必要性。

    3)Early stopping

    • 在驗證集上如果連續的多次迭代過程中損失函數不再顯著地降低,那么應該提前結束訓練。

    4)Gradient noise

    ?5.5? 相關面試題

    Q:

    A:

    ?

    第六章? 反向傳播算法(BP算法)

    基本思想:?BP算法就是目前使用較為廣泛的一種參數學習算法。其主要由由信號的正向傳播(求損失)與誤差的反向傳播(誤差回傳)兩個過程組成。

    6.1? 神經網絡

    假設我們有一個神經網絡,第??層的輸入定義為??,經過激活函數后的輸出定義為??,激活函數定義為??,本層的權重定義為?,大致如下圖所示:

    通常來說,這些參數的形式如下:

    ? ? ? ? ? ? ? ? ? ??? ? ? ? ? ? ? ? ? ?? ??

    其中,?表示第??層神經元的個數,例如上圖中的例子,?就是一個三行兩列的矩陣。

    6.2? 正向傳播

    正向傳播就是將樣本輸入到神經網絡,從而獲得輸出值的過程,其中涉及到了兩個重要的公式:

    利用這兩個式子,我們只需要通過權重矩陣和偏置值,就可以一路計算得到神經網絡每一層的輸入??和輸出 ,并記錄下來。

    6.3? 反向傳播

    BP算法是一種更新權重的方法,我們知道每一層都有一個權重??,在BP算法中,我們通過梯度下降法來更新每層的權重:

    其中,L為模型的損失函數,它是關于最后一層輸出??的一個函數,?是學習率。

    該方法的關鍵在于如何求出損失函數關于神經網絡某一隱層權重權值矩陣的偏導。

    在正向傳播中我們可以很容易看出,神經網絡最后一層的輸出??,其實是關于某個隱層輸入??的函數,綜上我們可以得到損失函數L是關于某個隱層權重矩陣的函數:

    為此,通過鏈式法則我們可以得到:

    此時,我們定義左邊這一項為誤差項?,則有:

    其中,我們可以看到??是我們在正向傳播中記錄下來的輸出值,所以問題就轉化為我們如何求得每一層的誤差項 ?了。

    在正向傳播 中,我們有兩個重要公式,通過他們結合鏈式法則,我們可以將??進一步拆解:

    ?

    這個公式告訴我們,只要知道了??層的誤差項和權重矩陣,我們就可以求得??層的誤差項。實際應用到BP算法中,步驟如下:

  • 先求最后一層的誤差項;
  • 根據該層誤差項求得獲得損失函數對于該層權重矩陣的偏導;
  • 利用梯度下降法計算權重矩陣的更新值;
  • 往前遞推前一層的誤差項,轉至第2步,直至更新完所有層的權重。
  • 假設損失函數為MSE,最后一層的誤差項是可以直接根據損失函數?L 計算得到的:

    6.4? 總結

    我們只解決了給一組數據如何更新權重,它叫做標準誤差傳播算法。它對于每個訓練樣本都會改變一次所有的權值。但是它的更新非常非常頻繁,而且容易受到干擾。我們希望誤差累積到一定程度以后再一次性更新,因此需要用累積誤差逆傳播算法因此,我們每次更新應該是要對n個訓練集累積下來的誤差求平均,再用來更新權重矩陣。

    綜上所述,BP算法的整體流程如下:

  • 初始化權重矩陣和偏置;
  • 將訓練集輸入神經網絡正向傳播,記錄下每層的輸入輸出等中間變量;
  • 利用損失函數,先求最后一層的誤差項;
  • 根據該層誤差項求得獲得損失函數對于該層權重矩陣的偏導;
  • 利用梯度下降法計算權重矩陣的更新值;
  • 往前遞推前一層的誤差項,跳至第4步,直至更新完所有層的權重。
  • 具體實際的例子,可以參考:https://www.jianshu.com/p/708e11654913

    6.5? 相關面試題

    Q:

    A:

    ?

    第七章??梯度消失和梯度爆炸

    7.1? 產生原因

    7.1.1? 梯度消失

    以下圖的反向傳播為例,

    假設每一層只有一個神經元且對于每一層輸出:

    其中σ為sigmoid函數,xi為輸入值,zi為凈激活值。我們可以推導出:

    而sigmoid的導數σ'(x)如下圖

    從上圖我們可以看到,σ'(x)的最大值為0.25,而且我們初始化的權重絕對值通常都小于1。于是,當神經網絡的層數越多,在鏈式法則中連乘激活函數的導數越多次,求導的結果就越小,因而會出現梯度消失的現象。

    7.1.2? 梯度爆炸

    若我們初始化的權重w很大,大到乘以激活函數的導數都大于1,即|σ'(z)w|>1,那么連乘后,可能會導致求導的結果很大,形成梯度爆炸。

    7.2? 解決方案

    梯度消失和梯度爆炸本質上是一樣的,都是因為網絡層數太深而引發的梯度反向傳播中的連乘效應。

    7.2.1? 梯度消失解決方案

  • 換用Relu等其他激活函數;

  • 采用BN,將輸入值的分布落入激活函數中對輸入比較敏感的區域(即梯度大的區域),從而避免梯度消失;

  • 采用ResNet殘差結構;

  • 采用LSTM結構;

  • 7.2.2? 梯度爆炸解決方案

  • 采用好的參數初始化方式,如He初始化;

  • 預訓練(pre-training)和微調(fine tuning):預訓練就是把一個已經訓練好的模型參數,應用到另一個任務上作為初始參數的過程;微調就是指將預訓練過的模型作用于自己的數據集,并使參數適應自己數據集的過程;

  • 梯度截斷:設值一個剪切閾值,如果更新梯度時,梯度超過了這個閾值,那么就將其強制限制在這個范圍之內,以此防止梯度爆炸;

  • 采用權重正則化:正則化主要是通過對網絡權重做正則來限制過擬合,但是根據正則項在損失函數中的形式可以看出,如果發生梯度爆炸,那么權值的范數(正則項)就會變的非常大,反過來,通過限制正則化項的大小,也可以在一定程度上限制梯度爆炸的發生。

  • 7.3? 相關面試題

    Q:

    A:

    ?

    第八章? 范數正則化

    監督機器學習中訓練模型時,需要保證模型“簡單”的基礎上最小化訓練誤差,這樣得到的參數才具有好的泛化性能(也就是測試誤差也小),最小化誤差是為了讓我們的模型擬合訓練數據,而模型“簡單”就是通過正則化來實現的,可以防止我們的模型過分擬合訓練數據。

    8.1? 正則化概述

    正則化的使用可以約束我們的模型的特性,能將人對這個模型的先驗知識融入到模型的學習當中,強行地讓學習到的模型具有人想要的特性,例如稀疏、低秩、平滑等等。?一般來說,監督學習可以看做最小化下面的目標函數:

    正則化函數 Ω(w) 有很多種選擇,一般是模型復雜度的單調遞增函數,模型越復雜,正則項值就越大。不同的選擇對參數 w 的約束不同,取得的效果也不同,我們在論文中常見的都聚集在:零范數、一范數、二范數、跡范數、Frobenius范數和核范數等等。

    8.2??L0范數與L1范數

    L0范數和L1范數可以實現參數的稀疏化,L1因具有比L0更好的優化求解特性而被廣泛應用。

    • L0范數是指向量中非0的元素的個數。如果我們用L0范數來正則化一個參數矩陣W的話,就是希望W的大部分元素都是0,即是讓參數矩陣W是稀疏的。
    • L1范數是指向量中各個元素絕對值之和,也叫“稀疏規則算子”(Lasso regularization)。

    Q:為什么L1范數會使權值稀疏?

    A:假設有如下帶L1正則項的損失函數:

    我們在使用梯度下降法求解參數最優解時,就是不斷在參數空間中尋找最優點,如果我們在原始損失函數? 后添加L1正則化項,相當于對? 做了一個約束,此時我們的任務變成在L1約束下尋找參數空間中的最優點,也就是說最優點必須在??等值線與L1圖形首次相交的地方。而在參數空間中,兩者首次相交的地方往往都在權值參數的很多維度等于0的位置。

    下面我們舉一個例子來直觀說明:我們考慮二維的情況,即只有兩個權值w1和w2 ,此時L1=∣w1∣+∣w2∣。我們將求解??的過程畫出等值線,同時將L1正則化的函數L1也在w1w2二維平面上畫出來。如下圖:

    圖中彩色線是? 的等值線,黑色方形是L函數的圖形,在??等值線與L1圖形首次相交的地方就是模型的最優解。我們可以看到,此時參數的值(w1,w2)=(0,w),也就是有一個維度等于0。那么我們推廣到高維空間中,可以直觀想象,因為L1函數有很多『突出的角』(二維情況下四個,多維情況下更多), 與這些角接觸的機率會遠大于與L1其它部位接觸的機率,而在這些角上,權值參數的很多維度等于0,這就是為什么L1正則化可以產生稀疏模型,進而可以用于特征選擇。

    Q:為什么要稀疏?讓參數稀疏有什么好處呢?

    A:

    1)特征選擇(Feature Selection)

    大家對稀疏規則化趨之若鶩的一個關鍵原因在于它能實現特征的自動選擇。一般來說,?的大部分特征和最終的輸出 ?相關性很低,在最小化目標函數的時候考慮? 這些額外的特征,雖然可以獲得更小的訓練誤差,但在預測新的樣本時,這些沒用的信息反而會被考慮,從而干擾了對正確 ?的預測。稀疏規則化算子的引入就是為了完成特征自動選擇的任務,它會通過學習去掉和輸出相關性低的特征(特征對應的權重置0),保留相關性高的特征。

    2)可解釋性(Interpretability)

    另一個青睞于稀疏的理由是,由于我們只選擇出少量特征,模型就會變得“簡單”,因此我們就能更容易的去分析、解釋一個模型。例如說患某種病的概率是y,我們收集到了1000中可能影響患病概率的因素,通過學習我們得到的權重矩陣W里只有很少的非零元素,假設只有5個非零的?,我們就有理由相信這些對應的特征在患病分析上面提供的信息是巨大的,決策性的。也就是說,患不患這種病只和這5個因素有關,那醫生就好分析多了。但如果1000個? 都非0,醫生面對這1000種因素,便難以分析患病的緣由。

    8.3? L2范數

    L2范數是向量各元素的平方和然后求平方根。

    在損失函數中加入L2正則項,訓練時會有選擇的讓某些與模型輸出相關性低的特征權值變得很小,趨近于0。

    Q:為什么w越小,模型越簡單?

    A:可以假設一個線性回歸方程,如果某個特征的參數很大,這個特征稍微變動一點點,就會對輸出造成很大影響;但如果參數足夠小,數據偏移得多一點也不會對結果造成什么影響,也就是說模型的『抗擾動能力強』

    因此,擬合過程中通常都傾向于讓權值盡可能小,最后構造一個所有參數都比較小的模型,一般認為這樣參數值小的模型比較簡單,能適應不同的數據集,在一定程度上避免了過擬合現象。

    8.4??正則化參數的選擇

    1)L1正則化參數

    通常越大的λ可以讓代價函數在參數為0時取到最小值。

    2)L2正則化參數

    λ越大,?衰減得越快。另一個理解可以參考下圖,λ越大,L2圓的半徑越小,最后求得代價函數最值時各參數也會變得很小。

    8.5? 相關面試題

    Q:

    A:

    ?

    第九章??Batch Normalization

    9.1? 使用BN的原因

    首先我們來回顧一下MBGD的過程:假設訓練數據集合T包含 N 個樣本,而每個Mini-Batch的Batch Size為 b ,于是整個訓練數據可被分成 N/b 個Mini-Batch。在模型通過SGD進行訓練時,一般跑完一個Mini-Batch的實例,叫做完成訓練的一步(step),跑完N/b步則整個訓練數據完成一輪訓練,則稱為完成一個Epoch。完成一個Epoch訓練過程后,對訓練數據做隨機Shuffle打亂訓練數據順序,重復上述步驟,然后開始下一個Epoch的訓練,對模型完整充分的訓練由多輪Epoch構成。

    由上述過程可以看出,對于Mini-Batch SGD訓練方法來說,Mini-Batch內的每個實例需要走一遍當前的網絡,產生當前參數下神經網絡的預測值,并根據預測值計算損失,然后反向傳播更新權重參數。這種時候,通常會出現一個叫Covariance Shift的問題:

    • 在輸入層上,如果一批樣本的分布與另一批樣本的分布顯著不同:[0,1] vs [10,100],對于一個淺層模型而言,訓練第一批樣本時,模型可能在描繪函數A,訓練第二批樣本時,模型發現自己在描繪函數B,完全不同于A。這樣就是推翻自己重復勞動,訓練低效。
    • 輸入層的這種情況,對于其他層而言,也是一樣無法逃避。對于中間某個隱層的某些神經元,它們的輸出值可能會遠大于同層其他神經元,導致這些神經元的分布與其他神經元大幅偏離,就會出現本層的Covariance Shift的問題,這樣子訓練就會很低效。

    總結:對于神經網絡某一層的某些神經元,如果它們的激活值分布與同層其他神經元大幅偏離,就會出現Covariance Shift的問題,導致訓練效率低下,而解決方案就是統一每一層激活值的分布。

    9.2? 什么是BN

    規范化(Normalization)是一種對數值的特殊函數變換方法,也就是會在原始數值x外套一層起規范化作用的函數,轉換后的數值滿足一定的分布特性,即:

    因為神經網絡里主要有兩類實體:神經元或者連接神經元的帶權邊,所以深度學習中的Normalization可以分為兩大類:

    • 對神經元激活值/凈激活值進行Normalization操作,如BatchNorm/LayerNorm/InstanceNorm/GroupNorm等;
    • 對神經元帶權邊進行Normalization操作,如Weight Norm等;

    不論哪種Normalization方法,其規范化目標都是一樣的,就是將其激活值規整為均值為0,方差為1的正態分布。具體到Batch Normalization,它的整個規范化過程可以分為兩步:

    1)將激活值規范到均值為0,方差為1的正態分布范圍內。

    其中,?為某個神經元原始激活值,?為規范后的值,μ是神經元集合S中包含的m個神經元激活值的均值,即:

    ?為根據均值和集合S中神經元各自激活值求出的激活值標準差:

    其中,?ε是為了增加訓練穩定性而加入的小的常量數據。

    2)經過第一步的Normalization操作后,會導致新的分布喪失從前層傳遞過來的信息,且無法有效利用激活函數的非線性功能;因此,第二步中加入了縮放因子 γ 和平移因子 β,每個神經元在訓練過程中會自動學習這兩個調節因子,以自行決定是否需要對新分布做一定程度的縮放和平移(如果讓γ=σ、β=μ,則其可以取消Normalization)。

    這一步的核心思想就是讓神經網絡自己學習找到一個比較好平衡點,既能享受非線性較強的表達能力,又避免激活值的分布出現Covariance Shift,導致網絡收斂速度太慢。

    BN的效果:

  • 可以加快模型收斂速度,不用再依賴精細的參數初始化過程,還可以調大學習率等各種方便;
  • 用多個樣本間計算統計量(均值、方差),引入了隨機噪聲,能夠對模型參數起到正則化的作用,有利于增強模型泛化能力。
  • BN的缺點:

  • 如果Batch Size太小,就得不到有效得統計量,也就是說噪音太大,那么BN效果會明顯下降;
  • 對于像素級圖片生成任務來說,BN效果不佳;
  • RNN等動態網絡使用BN效果不佳且使用起來不方便;
  • 訓練時和推理時統計量不一致:對于BN來說,采用Mini-Batch內實例來計算統計量,在訓練時沒有問題,但在推理時由于是單實例的,所以就無法獲得BN計算所需的均值和方差。一般解決方法是采用訓練時刻記錄的各個Mini-Batch的統計量的數學期望,以此來推算全局的均值和方差,在線推理時采用這樣推導出的統計量。雖說實際使用并沒大問題,但是確實存在訓練和推理時刻統計量計算方法不一致的問題。
  • 9.3? BN具體是怎么做的

    目前各類Normalizaiton方法大同小異,最主要的區別在于神經元集合S的范圍怎么定,不同的方法采用了不同的神經元集合定義方法(用于計算均值和方差)。

    9.3.1? MLP中的BN

    假設在訓練時某個batch包含n個樣本,對于前向神經網絡來說,這n個樣本分別通過同一個神經元k的時候會產生n個激活值,使用BN時就是對這n個同一個神經元被不同樣本激發的激活值進行規范化。

    9.3.2? CNN中的BN

    對于CNN中某個卷積層對應輸出特征圖的第k個通道來說,假設某個Batch包含n個樣本,那么每個樣本在這個通道k都會產生一個二維激活平面,也就是說Batch中n個樣本分別通過同一個卷積核的輸出通道k的時候產生了n個激活平面。假設激活平面為?,那么n個樣本總共包含??個激活值,使用BN就是對這??個激活值進行規范化。

    ?

    9.4? 其他Normalization方法

    BN要求計算統計量的時候必須在同一個Mini-Batch內的實例之間進行統計,因此形成了Batch內實例之間的相互依賴和影響的關系。如何從根本上解決這些問題?一個自然的想法是:把對Batch的依賴去掉,轉換統計集合范圍。在統計均值方差的時候,不依賴Batch內數據,只用當前處理的單個訓練數據來獲得均值方差的統計量,這樣因為不再依賴Batch內其它訓練數據,那么就不存在因為Batch約束導致的問題。在BN后的幾乎所有改進模型都是在這個指導思想下進行的。

    9.4.1??Layer Normalization

    為了能夠在只有當前一個訓練實例的情形下,也能找到一個合理的統計范圍,一個最直接的想法是:MLP的同一隱層自己包含了若干神經元;同理,CNN中同一個卷積層包含k個輸出通道,每個通道包含m*n個神經元,整個通道包含了k*m*n個神經元;類似的,RNN的每個時間步的隱層也包含了若干神經元。那么我們完全可以直接用同層隱層神經元的響應值作為集合S的范圍來求均值和方差,這就是Layer Normalization的基本思想。下圖分示了MLP、CNN和RNN的Layer Normalization的集合S計算范圍,因為很直觀,所以這里不展開詳述。

    但Layer Normalization目前看好像也只適合應用在RNN場景下,在CNN等環境下效果是不如BatchNorm或者GroupNorm等模型的。

    9.4.2??Instance Normalization

    一個樣本在經過某個卷積層后得到了??的輸出特征圖,Instance Normalization就是對其中的每個通道k上??個激活值都單獨進行規范化。也正是因此,這種方法只能在CNN中使用。

    Instance Normalization對于一些圖片生成類的任務比如圖片風格轉換來說效果是明顯優于BN的,但在很多其它圖像類任務比如分類等場景效果不如BN。

    9.4.3??Group Normalization

    從上面的Layer Normalization和Instance Normalization可以看出,這是兩種極端情況,Layer Normalization是將同層所有神經元作為統計范圍,而Instance Normalization則是CNN中將同一卷積層中每個卷積核對應的輸出通道單獨作為自己的統計范圍。那么,有沒有介于兩者之間的統計范圍呢?

    通道分組是CNN常用的模型優化技巧,所以自然而然會想到對CNN中某一層卷積層的輸出或者輸入通道進行分組,在分組范圍內進行統計,這就是Group Normalization的核心思想。

    Group Normalization在要求Batch Size比較小的場景下或者物體檢測/視頻分類等應用場景下效果是優于BN的。

    9.5? 相關面試題

    Q:

    A:

    ?

    第十章? Dropout

    10.1??Dropout簡介

    dropout是指在深度學習網絡的訓練過程中,對于神經網絡單元,按照一定的概率將其暫時從網絡中丟棄。因此每一次都是在訓練一個不同的網絡,消除減弱了神經元節點間的聯合適應性,增強了泛化能力,所以對過擬合有抑制作用。

    10.2? 模型變化

    為了達到ensemble的特性,有了dropout后,神經網絡的訓練和預測就會發生一些變化。

    10.2.1? 訓練層面

    無可避免的,訓練網絡的每個單元要添加一道概率流程。

    對應的公式變化如下如下:

    • 沒有dropout的神經網絡

    • 有dropout的神經網絡

    10.2.2??預測層面

    預測的時候,不需要舍棄神經元。

    其他Drop技術:

  • Dropout:完全隨機扔

  • SpatialDropout:按channel隨機扔

  • Stochastic Depth:按res block隨機扔

  • DropBlock:每個feature map上按spatial塊(n*n的方塊)隨機扔

  • Cutout:在訓練時把輸入圖像按spatial塊隨機扔

  • DropConnect:將與神經元相連的輸入權值以一定概率置0

  • 10.3? 相關面試題

    Q:

    A:

    ?

    第十一章? 注意力機制

    概念:注意力機制是用來模擬人類對環境的生理感知機制而提出的,它是一種方法論,沒有嚴格的數學定義。比如,傳統的局部圖像特征提取、顯著性檢測、滑動窗口方法等都可以看作一種注意力機制。在神經網絡中,注意力機制通常就是一個額外的神經網絡模塊,能夠硬性選擇輸入的某些部分,或者柔性地給輸入的不同部分分配不通的權值。

    作用:

  • 結構化的選取輸入的子集,從而降低數據的維度,減少計算負擔。
  • 注意力機制能夠幫助模型選擇更好的中間特征,從而提高輸出的質量。
  • 11.1? 注意力機制分類

    注意力機制可以分為四類:

    • 基于輸入項的柔性注意力(Item-wise Soft Attention)
    • 基于輸入項的硬性注意力(Item-wise Hard Attention)
    • 基于位置的柔性注意力(Location-wise Soft Attention)
    • 基于位置的硬性注意力(Location-wise Hard Attention)

    11.1.1? 基于項的注意力機制

    1)輸入

    對于基于項的注意力和基于位置的注意力,它們的輸入形式是不同的。

    • 基于項的注意力的輸入需要是包含明確項的序列,或者需要額外的預處理步驟來生成包含明確項的序列(項可以是一個向量、矩陣,甚至一個特征圖);
    • 基于位置的注意力則是針對輸入為一個單獨的特征圖設計的,所有的目標可以通過位置指定。

    2)輸出

    基于項的注意力在項的層面操作。原始輸入經過神經網絡處理后(如RNN或CNN),形成了一個每一項具有一個單獨編碼的序列。

    • 基于項的柔性注意力為每一項計算一個權重,然后對所有項進行線性加權合并。合并后的編碼就是注意力機制操作后的特征,用于做預測;
    • 基于項的硬性注意力的不同在于它會做出硬性的選擇,而不是線性加權。具體就是根據注意力的權重隨機地選取若干(通常是一個)編碼作為最終的特征。

    11.1.2? 基于位置的注意力機制

    基于位置的注意力直接在一個單獨的特征圖上進行操作。

    • 基于位置的硬性注意力從輸入的特征圖中離散地選取一個子區域,作為最終的特征,選取的位置是由注意力模塊計算出來的;
    • 基于位置的柔性注意力則對整個特征圖做一個變換,使得感興趣的部分能夠突出出來(加權)。

    11.2? 注意力模塊

    注意力機制通常由一個連接在原神經網絡之后的額外的神經網絡實現,整個模型仍然是端對端的,因此注意力模塊能夠和原模型一起同步訓練。對于柔性注意力,注意力模塊對其輸入是可微的,所以整個模型仍可用梯度方法來優化。而硬性注意力機制要做出硬性的決定,離散地選擇其輸入的一部分,這樣整個系統對于輸入不再是可微的。所以強化學習中的一些技術被用來優化包含硬性注意力的模型(強化學習的機制是通過收益函數來激勵)。

    下面我們通過幾個例子直觀了解注意力模塊在神經網絡中的應用:

    1)Squeeze-and-Excitation Networks

    SENet中提出顯示的建模特征通道之間的相互依賴關系,這其實就是通道維度的一種注意力機制,體來說,就是通過學習的方式來自動獲取到每個特征通道的重要程度,然后依照這個重要程度去提升有用的特征并抑制對當前任務用處不大的特征。

    通過上圖我們可以看到,SENet就是將某一層特征圖作一次Squeeze操作,通過對各個通道進行全局平均池化,將一個channel上整個空間的特征編碼為一個全局特征;隨后為了抓取各個通道之間的關系,采用兩個全連接層進行非線性關系學習,其中,第一個全連接層用來降維,第二個全連接層恢復維度,并采用Sigmoid將輸出的Channel Attention Featuremap的值限定在0-1之間,作為各個通道的注意力權重;最后,通過將權重和原始特征圖的各個通道進行相乘,獲得包含了通道重要性信息的新特征圖。

    2)CBAM: Convolutional Block Attention Module?

    CBAM是一種結合了空間(spatial)和通道(channel)的注意力機制模塊,相比于senet只關注通道的注意力機制可以取得更好的效果。其具體模塊示意圖如下:

    其中主要包括兩個模塊:Channel Attention Module 和?Spatial Attention Module,下面分別來介紹一下。

    Channel Attention Module

    CAM其實和SENet中的通道注意力模塊類似,CBAM將輸入的featuremap,分別經過基于特征平面的global max pooling 和global average pooling;然后分別連接MLP,將MLP輸出的兩個對應特征進行elementwise加和操作,再經過sigmoid激活操作,生成最終的channel attention featuremap;最后,將該channel attention featuremap和input featuremap做elementwise乘法操作,生成Spatial attention模塊需要的輸入特征圖。

    Spatial Attention Module

    將Channel Attention Module 輸出的特征圖作為本模塊的輸入特征圖。首先做一個基于通道的global max pooling 和global average pooling,然后將這2個結果基于 channel 做concat操作;隨后經過一個卷積操作,降維為單個channel,再經過sigmoid生成激活值在0-1之間的Spatial Attention Feature;最后將該feature和該模塊的輸入feature做乘法,得到最終生成的特征。

    11.3? 相關面試題

    Q:

    A:

    ?

    參考:

  • https://www.zhihu.com/question/53405779

  • https://zhuanlan.zhihu.com/p/61880018

  • https://www.jianshu.com/p/ac46cb7e6f87

  • https://zhuanlan.zhihu.com/p/28749411

  • https://zhuanlan.zhihu.com/p/28492837

  • https://zhuanlan.zhihu.com/p/22142013

  • https://blog.csdn.net/u014380165/article/details/76946358

  • https://blog.csdn.net/qq_14845119/article/details/80787753?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2

  • https://blog.csdn.net/u010099080/article/details/78177781

  • https://www.cnblogs.com/tianqizhi/p/9713951.html

  • https://zhuanlan.zhihu.com/p/45190898

  • https://blog.csdn.net/zouxy09/article/details/24971995

  • https://blog.csdn.net/jinping_shi/article/details/52433975

  • https://zhuanlan.zhihu.com/p/43200897

  • https://blog.csdn.net/stdcoutzyx/article/details/49022443

  • https://www.zhihu.com/question/32673260/answer/71137399

  • https://www.zhihu.com/question/61607442/answer/440401209

  • https://zhuanlan.zhihu.com/p/56501461

  • 總結

    以上是生活随笔為你收集整理的深度学习简明教程系列 —— 基础知识(合集)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    国产成人黄色在线 | 天天插一插 | 国产精品久久久久久久久久东京 | 亚洲精品视频播放 | 毛片基地黄久久久久久天堂 | 免费成人黄色片 | 人人爽人人澡人人添人人人人 | 色综合五月| 国产黄色在线 | 中文av一区二区 | 精品亚洲视频在线观看 | 婷婷丁香在线视频 | 日韩精品欧美一区 | 在线观看中文字幕dvd播放 | 国产破处视频在线播放 | 日韩一级电影在线观看 | 国产一区欧美二区 | 欧美在线久久 | 成人网色| 精品一区二区三区四区在线 | 婷婷深爱五月 | 欧美日韩高清国产 | 久久欧美视频 | 超碰999| 亚洲精品高清在线观看 | 亚洲国产综合在线 | 久久久久久久久久久久久9999 | 狠狠狠狠狠狠干 | 粉嫩av一区二区三区免费 | 黄av免费在线观看 | 欧美激情精品一区 | 丁香5月婷婷久久 | 国产一区二区中文字幕 | 国产手机在线观看 | 国产91九色视频 | 在线免费黄色 | 久久av免费电影 | 波多野结衣视频一区二区 | 一级α片免费看 | aa一级片| 国产原厂视频在线观看 | 99视频网站 | www.超碰| 国产在线播放一区 | 96精品高清视频在线观看软件特色 | 91在线porny国产在线看 | 香蕉视频在线视频 | 国产高h视频 | 97在线视频免费观看 | 久久综合爱 | 中文字幕av网站 | 少妇bbbb | 亚洲我射av | 中文字幕视频观看 | 久久福利综合 | 日日噜噜噜噜夜夜爽亚洲精品 | 丁香花在线视频观看免费 | 国产高清免费在线播放 | 国产又粗又猛又黄又爽的视频 | 国产又黄又爽无遮挡 | 久久久久久久久久毛片 | 欧美日韩中 | 日韩精品第一区 | 成年人在线 | 一区二区三区四区影院 | 亚洲免费成人 | 国产精品黄色影片导航在线观看 | 国产亚洲精品久久久久久 | 在线有码中文字幕 | 日韩精品欧美专区 | www夜夜操com| 婷婷av在线 | 91看片网址 | 狠狠色噜噜狠狠狠合久 | 国产网红在线观看 | 国产成视频在线观看 | 99久久精品无码一区二区毛片 | 在线视频免费观看 | 不卡视频一区二区三区 | 亚洲国产人午在线一二区 | 高潮毛片无遮挡高清免费 | 夜夜骑日日 | 麻豆成人精品 | 亚洲精品久久在线 | 在线精品视频免费观看 | 九九免费在线观看视频 | 久久九九网站 | 亚洲综合视频在线 | 国产精品免费观看久久 | 久久久久久久久久久电影 | www免费在线观看 | 国产一区二区三区四区大秀 | 日韩精品久久久久久久电影竹菊 | 国产精品mv在线观看 | 欧美在线日韩在线 | 国产精品久久久久久久久久久久 | 久久久久久久av麻豆果冻 | 爱色婷婷 | 国产999久久久 | 在线中文字幕播放 | 精品在线播放视频 | 国产激情久久久 | 在线 国产 日韩 | 亚洲一区视频免费观看 | 一级α片免费看 | 免费观看十分钟 | 亚洲九九| 婷婷av色综合 | 久久人人爽 | 国内久久久久久 | 国产一级片播放 | 四虎影院在线观看av | 国产日韩欧美综合在线 | 中文字幕在线观看视频一区二区三区 | 中国一级特黄毛片大片久久 | 99精彩视频 | www.激情五月.com | 亚州视频在线 | 欧美精品xxx | 国产精品乱码久久久久 | 国产成人一区二区三区电影 | 欧美一区二区三区免费看 | 免费亚洲一区二区 | 日本激情视频中文字幕 | 五月宗合网 | 最新婷婷色 | 中文字幕 影院 | wwwwww国产 | 日韩久久午夜一级啪啪 | 国产精品不卡在线观看 | 国产精品男女视频 | 国产在线专区 | 日韩精品久久久久久久电影99爱 | 免费色黄 | 亚洲欧美视频在线 | 三级av在线 | 一区二区三区视频在线 | 91视频啪| av大全免费在线观看 | 国产午夜在线观看 | 日韩av成人 | 色全色在线资源网 | 日韩三级视频在线观看 | 日本视频高清 | 中文av资源站 | 丁香激情五月 | 一本一道久久a久久精品 | 久久久久久高潮国产精品视 | 久久伦理| 又黄又爽又无遮挡的视频 | 午夜影视剧场 | 久久久午夜精品理论片中文字幕 | 97超碰中文字幕 | 欧美成人区| 一区二区精品国产 | 91高清免费观看 | 日韩中出在线 | 久久精品国产美女 | 亚洲国产伊人 | 日韩欧美在线观看 | 一区二区三区免费看 | 波多野结衣一区二区 | 中文字幕在线观看第一区 | 国产手机在线观看 | 最近最新中文字幕视频 | 99 视频 高清 | av在线电影网站 | 不卡的av在线播放 | 久久精品视频免费播放 | 激情久久伊人 | 日韩精品aaa| av电影免费看 | 美女黄久久 | 午夜在线免费观看视频 | 狠狠亚洲 | 日韩爱爱网站 | 亚洲欧美激情精品一区二区 | 国产中文字幕一区 | 久久久精品99 | 日韩久久一区二区 | 久操操| 亚洲三级黄 | 免费观看国产成人 | 日韩在线高清视频 | 国产日韩欧美自拍 | 日韩精品中文字幕av | 人人操日日干 | 欧美日韩1区 | 国产精品婷婷午夜在线观看 | 国产精品成人一区二区三区吃奶 | 啪啪av在线 | 狠狠插狠狠操 | 香蕉免费在线 | 欧美日韩一区二区在线 | 九九视频免费观看视频精品 | 中文字幕4 | 成人av电影网址 | 成人性生交大片免费观看网站 | 久久精品成人欧美大片古装 | 亚洲mv大片欧洲mv大片免费 | 亚洲精品国产视频 | 国产精品网红直播 | 黄色免费观看视频 | 天天爽夜夜爽精品视频婷婷 | 99精品久久99久久久久 | 亚洲天堂网在线视频观看 | 国产大片免费久久 | 五月开心六月伊人色婷婷 | 中日韩免费视频 | 操操操天天操 | 99久久国产免费,99久久国产免费大片 | 日韩在线高清 | 五月激情亚洲 | 综合色在线观看 | 亚洲精品一区中文字幕乱码 | 欧美日韩免费一区 | 在线观看国产永久免费视频 | 亚洲丝袜一区二区 | 欧美日韩不卡一区二区三区 | 久久国产一二区 | 欧美激情精品久久久久久免费印度 | 久久久久网站 | 久久精品中文字幕一区二区三区 | 97热在线观看 | 手机av看片 | 亚洲尺码电影av久久 | 亚洲精品视频在线观看免费视频 | 亚洲精品视频在线播放 | 美女很黄免费网站 | 国产成人精品在线 | 福利久久 | 国产亚洲成人精品 | 色婷婷综合久久久久 | 国产精品永久在线观看 | 国产成人精品免费在线观看 | 99精品国产在热久久下载 | 亚洲视频免费在线观看 | 国产婷婷在线观看 | 天天综合狠狠精品 | 久久国产综合视频 | 视频二区 | a天堂在线看 | 国产精品视频 | 天堂av在线中文在线 | 激情婷婷六月 | 九九免费精品视频在线观看 | 一区二区三区精品久久久 | 热久在线 | 久久精品观看 | 九九视频免费在线观看 | 人人搞人人干 | 超碰午夜 | caobi视频 | 日本韩国在线不卡 | 99国内精品| 国产精品久久久久毛片大屁完整版 | 狠狠躁天天躁综合网 | a在线免费 | 国产色视频一区二区三区qq号 | 欧美性春潮 | 狠狠色狠狠色综合系列 | 91精品人成在线观看 | 视频国产一区二区三区 | 国产色黄网站 | 免费中午字幕无吗 | a√天堂资源 | 日韩欧美视频在线免费观看 | 狠狠色狠狠色综合日日92 | 国产精美视频 | 免费亚洲一区二区 | 国产精品久久久久久久久久尿 | 日韩精品在线视频免费观看 | 五月婷婷伊人网 | 久久影视一区二区 | 欧美日韩中文另类 | 亚洲精品美女 | 人人干人人超 | 日日精品 | 精品亚洲一区二区 | 美女视频久久 | 国产美女精品视频免费观看 | 免费福利在线播放 | 99re6热在线精品视频 | 国产成人精品久久久久蜜臀 | 亚洲美女视频网 | 美女视频黄频大全免费 | 视频91在线 | 又黄又爽又湿又无遮挡的在线视频 | 五月婷婷在线视频观看 | 国产精品免费视频久久久 | 欧美成人在线免费 | 亚洲永久国产精品 | 国产在线高清视频 | 西西444www | 久久夜色精品国产欧美乱 | 色婷婷播放| 91精品国产欧美一区二区 | 国产日韩精品一区二区在线观看播放 | 精品国产伦一区二区三区免费 | 久色小说 | 精品国内自产拍在线观看视频 | 91女神的呻吟细腰翘臀美女 | 天天干婷婷 | 在线观看亚洲电影 | av资源免费在线观看 | 九草视频在线 | 一本一本久久a久久精品综合 | 在线v片免费观看视频 | 天天操天天色天天 | 特级毛片爽www免费版 | 在线观影网站 | 久久99久国产精品黄毛片入口 | 天天操欧美 | 天天射天天射 | 日韩理论在线播放 | 精品9999| 婷婷精品国产欧美精品亚洲人人爽 | 日韩簧片在线观看 | 精品一区在线看 | 男女日麻批 | 欧美日韩在线观看一区二区 | 国产成人综合图片 | 啪啪午夜免费 | 视频二区 | 美女视频黄免费 | 国产成人av一区二区三区在线观看 | 91高清一区 | 久久人人爽爽人人爽人人片av | 国产高清专区 | 日韩伦理片hd| 日韩一级片网址 | 精品亚洲网| 美女黄久久 | av观看在线观看 | 天天干天天拍天天操天天拍 | 亚洲国产成人精品在线 | 国产成免费视频 | 探花视频在线版播放免费观看 | 久久免费精品 | 国产精品99久久久久久有的能看 | 天天操夜夜摸 | 国产在线精品国自产拍影院 | 国产精品美女视频 | 99自拍视频在线观看 | 日本在线观看中文字幕无线观看 | 开心激情五月婷婷 | 免费国产在线精品 | 毛片激情永久免费 | 国产精品淫| 天天操天天操一操 | 美女久久一区 | 天天碰天天操 | 国产精品自在线拍国产 | 日日干激情五月 | 麻豆系列在线观看 | 91精品视频免费观看 | 不卡视频在线 | www.亚洲视频 | 欧美日韩中文在线 | 人人精品久久 | aa一级片 | 久久久官网 | 91视频久久久久久 | 久久久久久美女 | 婷婷播播网 | 色视频网站在线观看一=区 a视频免费在线观看 | 中文字幕在线观看视频免费 | 亚洲电影久久 | 久久99九九99精品 | 欧美一区二区视频97 | 国产中文字幕视频在线观看 | 久久五月婷婷丁香社区 | 91漂亮少妇露脸在线播放 | 特级毛片爽www免费版 | 超碰在线天天 | 欧美aa在线 | 视频一区二区免费 | 国产中文字幕在线看 | 亚洲春色综合另类校园电影 | 久久免费国产 | 免费无遮挡动漫网站 | 久草在线视频免赞 | 久久久久久久久久久网站 | 91视频中文字幕 | 天天干天天操人体 | 玖玖精品视频 | 射九九 | 日本丰满少妇免费一区 | 欧美一区二区伦理片 | 亚洲天堂网站视频 | 国产色在线观看 | 国产综合久久 | 久久a国产| www.成人精品 | 国产精品2018 | 亚洲激精日韩激精欧美精品 | 999国内精品永久免费视频 | 东方av在线免费观看 | 国产亚洲精品美女久久 | 亚洲精品国产精品乱码在线观看 | 色综合小说 | 成人一级黄色片 | 麻豆精品国产传媒 | 在线视频电影 | 成年人黄色免费视频 | 97视频免费在线 | av在线一二三区 | 中文字幕在线网址 | 欧美激情视频免费看 | 一级黄色片在线免费观看 | 五月婷婷综 | 色婷婷视频在线 | 激情久久久久 | 夜夜躁狠狠躁日日躁 | 视频国产精品 | 国产精品资源网 | 亚洲成年人免费网站 | 五月天婷婷在线观看视频 | 国产亚洲综合性久久久影院 | 亚洲综合欧美日韩狠狠色 | 日韩欧美精选 | 亚洲精选视频免费看 | 激情五月色播五月 | 欧美精品一区二区三区一线天视频 | 99精品在线免费在线观看 | 久久看视频| 中文字幕av全部资源www中文字幕在线观看 | 色婷婷久久久综合中文字幕 | 日韩精品大片 | 在线激情小视频 | 国产精品久久久久久久久久了 | 在线观看色视频 | 日韩精品在线视频 | 免费看三片 | 亚洲精品视频免费在线观看 | 精品人人爽 | 国产精品久久久久久久久蜜臀 | 亚洲精品合集 | 亚州av免费 | 欧美亚洲国产一卡 | 日韩欧美电影在线 | 在线看的av网站 | 亚洲天天 | 91欧美国产 | 又爽又黄在线观看 | 亚洲一区动漫 | 国产美女网站在线观看 | 久久久久久毛片 | 一区二区三区观看 | 欧美另类巨大 | 九色视频网站 | 狠狠操综合网 | 欧美在线你懂的 | 亚洲国产av精品毛片鲁大师 | 这里只有精品视频在线观看 | 精品国内自产拍在线观看视频 | 玖玖视频在线 | 综合色综合色 | 免费网站在线 | 亚洲精品国产精品国自产在线 | 久久久福利视频 | 中文字幕在线中文 | 日韩高清久久 | 免费黄色a级毛片 | 白丝av免费观看 | 日韩免费看片 | 在线一区av | 黄色精品在线看 | 在线va网站 | 在线免费视频 你懂得 | 久久中文字幕导航 | 成人欧美一区二区三区黑人麻豆 | 欧美日韩精品在线观看视频 | 婷婷在线免费观看 | 国产免费久久 | 91在线播 | 黄色最新网址 | 亚洲国产精品激情在线观看 | 色婷婷88av视频一二三区 | 日本高清免费中文字幕 | 人人狠狠综合久久亚洲婷 | 国模精品一区二区三区 | 国产区精品在线 | a级国产乱理论片在线观看 特级毛片在线观看 | 久久综合久久综合这里只有精品 | 久久久久国产精品免费免费搜索 | 黄色av电影网 | 免费精品视频在线观看 | 91av福利视频 | 色偷偷88欧美精品久久久 | 热99久久精品 | 伊人中文在线 | 欧美日韩视频在线一区 | 欧洲色吧| 免费成人av在线看 | 国产首页 | 精品日韩av | 国产精品久久久久婷婷 | 久久久久亚洲精品成人网小说 | 国内精品美女在线观看 | 91成人区 | 丁香六月综合网 | 午夜电影 电影 | 国产精品成人国产乱 | 99精品一级欧美片免费播放 | 亚洲视频高清 | 日韩久久午夜一级啪啪 | 中文字幕日韩av | 国产91九色视频 | 久草资源免费 | 色综合综合 | 久久精品麻豆 | 91av视频网站| 国产精品久久久久9999吃药 | 麻豆久久精品 | 亚洲国产中文字幕在线观看 | 久久国内免费视频 | 激情图片久久 | 成人黄色电影在线播放 | 在线观看欧美成人 | 99在线视频播放 | 国产精品九九九九九九 | 波多野结衣在线观看一区二区三区 | 黄色国产在线 | 亚洲精品97| 五月天婷婷丁香花 | 国产一二三在线视频 | 一区二区三区在线免费播放 | 成人免费观看a | 玖玖国产精品视频 | 亚洲第一区精品 | 天天射综合网视频 | 久草电影免费在线观看 | 亚在线播放中文视频 | 91中文在线视频 | 亚洲黄色成人av | 中文字幕视频三区 | 欧美精品亚洲精品日韩精品 | 日韩三级免费 | 毛片的网址 | 99一级片 | 亚洲综合在线发布 | 91人人揉日日捏人人看 | 伊人伊成久久人综合网小说 | 亚洲午夜精品电影 | 高清av中文在线字幕观看1 | 久久综合9988久久爱 | 日本精品免费看 | 高清有码中文字幕 | 懂色av一区二区在线播放 | 久久福利国产 | 亚洲九九九在线观看 | 国产xxxx做受性欧美88 | 99久久国产免费免费 | 色婷婷国产在线 | 国产成人精品午夜在线播放 | 91九色网址| 亚洲精品国产视频 | 亚洲最大av网 | 国产美女在线免费观看 | a资源在线 | 成人久久18免费网站 | 日韩欧美在线观看一区 | 中文字幕 国产视频 | 免费在线国产视频 | 99一级片| 在线一区二区三区 | 国产黄色大全 | 国语精品视频 | 婷婷丁香狠狠爱 | 91精品国产99久久久久久红楼 | 中文字幕av在线不卡 | 国产高清视频在线免费观看 | 欧洲成人av | 午夜骚影 | 国产精品一区二区三区久久 | 国产亚洲精品bv在线观看 | 久久免费国产精品1 | 麻豆国产精品永久免费视频 | 青青草国产精品视频 | 午夜精品久久久久99热app | 久草在线视频在线 | 又黄又爽的视频在线观看网站 | 人人看人人草 | 精品播放 | av在线成人 | 中文字幕一区二区三区精华液 | 69精品人人人人 | 91精品国自产在线偷拍蜜桃 | 婷婷日韩| 日本精品中文字幕在线观看 | 亚洲国产精彩中文乱码av | 99视频精品免费视频 | 成人免费视频播放 | 日韩com| 国产极品尤物在线 | 国产精品一区二区av | 一区二区三区高清在线 | www欧美xxxx| 伊人精品影院 | 91福利社区在线观看 | 亚洲综合在线观看视频 | 国产aa免费视频 | 国产精品爽爽久久久久久蜜臀 | 国产精品99久久久精品免费观看 | 在线免费观看涩涩 | 精品国精品自拍自在线 | 久久久在线免费观看 | 欧美成人免费在线 | 狠狠干天天操 | 青草视频免费观看 | 久久激情婷婷 | 欧美日韩免费在线观看视频 | 狠狠干狠狠久久 | 九九三级毛片 | 亚洲欧美国产日韩在线观看 | 亚洲深夜影院 | www.看片网站 | 国产精品1区 | 在线观看视频在线观看 | 在线观看中文av | 中文字幕精品三区 | 国产精品伦一区二区三区视频 | 久久综合国产伦精品免费 | 国产精品中文字幕在线 | 天天操天天干天天操天天干 | 波多野结衣精品视频 | 亚洲欧洲成人 | 午夜久久精品 | 亚洲精品电影在线 | 天天拍天天爽 | 日韩中文字幕在线看 | 人人爱爱人人 | 久久精品99精品国产香蕉 | 激情综合六月 | 免费人人干 | 91av亚洲 | 成人a大片| 亚洲成人av在线 | 91丨九色丨高潮 | 中文字幕 国产精品 | 久久精品中文字幕少妇 | 999色视频 | 欧美性极品xxxx娇小 | av片中文 | 狠狠综合久久 | 精品一区二区三区在线播放 | 久久不卡电影 | 日韩av影视在线观看 | 久久精品99精品国产香蕉 | 天天操天天色天天射 | 久久久久久久久久久精 | 操操色 | 国产精品久久久久久五月尺 | 激情五月婷婷综合网 | 日韩天堂在线观看 | 国产精品久久久久久久久久白浆 | 激情欧美一区二区三区 | 亚洲综合视频在线播放 | 久久久久激情视频 | 96国产精品| 93久久精品日日躁夜夜躁欧美 | 中文字幕亚洲高清 | 欧美日韩精品在线观看视频 | 日韩一级黄色片 | 午夜精品一区二区三区免费 | 国产一级片毛片 | 最新日韩在线观看视频 | 午夜国产福利视频 | 欧美精品久久久久久久久老牛影院 | 黄色av电影一级片 | 极品嫩模被强到高潮呻吟91 | 九色91视频| 色婷婷99 | 成年人国产在线观看 | 在线小视频国产 | 中文字幕乱码一区二区 | 国产亚洲精品久久久久久移动网络 | 国产成人三级一区二区在线观看一 | 国产成人l区| 天堂在线视频免费观看 | 在线有码中文字幕 | 草久草久 | 九九热精 | 操操操人人人 | 亚洲在线精品 | 不卡的一区二区三区 | 日韩免费高清在线 | 亚洲理论片 | 国产精品美女在线观看 | 成人国产精品一区二区 | 免费在线观看成人小视频 | 亚洲国产午夜视频 | 成年人看片网站 | 中文在线a在线 | 9幺看片 | 日韩欧美在线观看一区二区三区 | 久久在线观看视频 | 超碰在线最新地址 | 欧美日本不卡视频 | 午夜精品视频福利 | 成人一区在线观看 | 亚洲精品伦理在线 | 国产福利91精品一区 | 国产精品电影一区二区 | www.成人sex | 日日夜夜狠狠操 | 少妇bbb | 色综合天天综合 | 中文字幕一区二区三区在线视频 | 在线观看日韩视频 | 99久久精品久久久久久动态片 | 成人av电影网址 | 五月综合激情网 | 97色免费视频 | 久久精品中文字幕一区二区三区 | 久久超级碰视频 | 一区二区三区精品在线视频 | 97国产视频| 国产五十路毛片 | 亚洲激情综合网 | 九九九九色 | 精品综合久久久 | 国产在线观看不卡 | 国产小视频免费在线观看 | 国产一级片一区二区三区 | 欧美一区二区三区在线视频观看 | 精品福利av | 午夜精品视频福利 | 欧美另类巨大 | 亚洲乱码精品久久久久 | 在线观看视频你懂 | 99久久99| 婷婷综合 | 成人香蕉视频 | 最近中文字幕在线播放 | 久久久久福利视频 | 91久久国产综合精品女同国语 | 日韩精品欧美专区 | 天天干天天搞天天射 | 狠狠色噜噜狠狠 | 2024av| 欧美成人aa| 日韩在线视频网 | 中文字幕欧美日韩va免费视频 | 9999国产精品 | 免费看污片 | 国产精品久久久久久久99 | 成人精品视频久久久久 | 玖玖999| 狠狠干.com| av在线免费播放网站 | 国产69精品久久久久久 | 免费在线观看成年人视频 | 日韩一级黄色片 | 91成人亚洲| 天堂在线视频中文网 | 综合激情伊人 | 超碰97人人在线 | 丝袜美腿一区 | 亚洲精品中文在线观看 | 色资源网免费观看视频 | 五月开心婷婷网 | 午夜精品久久久久久99热明星 | 黄色国产高清 | 亚洲欧美日韩一区二区三区在线观看 | 免费在线观看av网址 | 国产录像在线观看 | 久久99免费视频 | 成人播放器 | 九九久久影视 | 国产成人一区二区三区在线观看 | 很黄很黄的网站免费的 | 在线观看91精品国产网站 | 成人中文字幕在线 | 日本精品视频一区二区 | 一级片视频免费观看 | 国产一区二区三区午夜 | 亚洲五月综合 | 国产精品网红直播 | 夜夜爱av | 久久久久在线 | 九九在线国产视频 | 天天干天天拍天天操天天拍 | 欧美精品在线免费 | 久久国内精品 | 五月天伊人网 | 麻豆久久精品 | 2023亚洲精品国偷拍自产在线 | 亚洲国产精品成人综合 | 韩国三级一区 | 日韩在线中文字幕 | 伊人网站| 日韩欧美在线视频一区二区 | 日韩区欠美精品av视频 | 久久婷婷五月综合色丁香 | 高清av免费看 | 久久黄色免费视频 | 国产精品福利久久久 | 国产精品一区二区免费 | 91天堂素人约啪 | 探花视频在线观看+在线播放 | 免费观看日韩av | 黄色亚洲 | 国产一区二区三区免费观看视频 | 亚洲特级片 | 伊人色**天天综合婷婷 | 国产91丝袜在线播放动漫 | 五月婷婷六月丁香 | 国产精品欧美在线 | 91免费试看 | 粉嫩av一区二区三区四区五区 | 天天色天天射天天综合网 | 黄av资源 | 久久在线精品视频 | 久久久成人精品 | 日本中文字幕在线看 | 三级av免费| av日韩精品 | av在线不卡观看 | 黄色日本免费 | 亚洲国产精品资源 | 黄色app网站在线观看 | 成人免费观看完整版电影 | 四虎在线免费视频 | 免费观看一级视频 | 国内丰满少妇猛烈精品播 | av色网站 | 丝袜美女视频网站 | 五月天激情综合 | 亚洲在线视频观看 | 婷婷九月激情 | 成年人视频在线免费观看 | 国产成人三级一区二区在线观看一 | 亚洲国产视频a | 免费a v在线 | 色视频网址 | 人人爽人人澡人人添人人人人 | 久久亚洲精品电影 | 麻豆国产精品视频 | jizz欧美性9 国产一区高清在线观看 | 久久久99精品免费观看app | 99精品在这里 | 日韩中文免费视频 | 久久夜视频 | 久久天堂亚洲 | 国产艹b视频 | 五月的婷婷 | 中文字幕在线中文 | 日韩特级片 | 色播激情五月 | 西西444www大胆高清图片 | 日韩中文字幕网站 | 久久人网 | 黄色tv视频 | 欧美做受xxx | 九九免费观看全部免费视频 | 欧美成年网站 | 在线观看成人小视频 | 日韩大片免费在线观看 | 日韩欧美精品在线 | 国产精品福利午夜在线观看 | 国产一级片网站 | 黄色小说视频网站 | 日韩视频一区二区三区在线播放免费观看 | 精品日韩在线 | 成人久久18免费网站麻豆 | 久久精品这里都是精品 | 久久精品波多野结衣 | 激情网站免费观看 | 99精品免费久久久久久久久 | 欧美一级特黄aaaaaa大片在线观看 | 国产99久久久久久免费看 | 91精品国自产在线 | av免费线看 | 综合色中色| 成人午夜免费剧场 | 日韩久久久久久久久久 | 激情综合五月网 | 99久热 | 亚洲一级电影在线观看 | 日日操日日 | 亚洲精品在线视频观看 | 狠狠色噜噜狠狠 | www.色午夜.com| 国产精品理论片在线观看 | 婷婷视频 | 日本公妇色中文字幕 | 国产精品美 | 精品成人在线 | 亚洲日日射 | 国产精品美女久久久网av | 亚洲成人黄色网址 | 黄色成人影院 | 在线观看成年人 | 欧美一级片免费观看 | 狠狠激情中文字幕 | 日本中文字幕电影在线免费观看 | 国产精品久久久久久久久蜜臀 | 黄色免费在线看 | 99av国产精品欲麻豆 | 亚洲午夜精品一区二区三区电影院 | 免费观看黄色12片一级视频 | 国产精品毛片一区视频播 | 国产中文 | 青青河边草手机免费 | 日日色综合| av中文字幕网 | 亚洲欧美综合精品久久成人 | 丁香婷婷久久久综合精品国产 | 欧美日韩一级视频 | 在线播放精品一区二区三区 | 97超碰国产精品女人人人爽 | 国产精品欧美精品 | 在线三级av | av日韩国产 | 午夜久久久久久久久久影院 | 亚洲综合在线五月天 | 国产一在线精品一区在线观看 | 草久视频在线观看 | 波多野结衣在线观看一区 | 国产成人精品一区二区三区免费 | 久久艹久久 | 免费人成网 | 久久久久激情视频 | 最近免费观看的电影完整版 | 亚洲国产网站 | 超碰97人人在线 | 午夜狠狠干 | 国内精品视频久久 | 精品国产一区二区三区噜噜噜 | 啪啪免费视频网站 | 奇米网777 | 视频精品一区二区三区 | 香蕉久草 | 综合网五月天 | 亚洲精品女人久久久 | 97**国产露脸精品国产 | 欧美 日韩 久久 | 日韩有色 | 亚洲影音先锋 | 国产麻豆电影在线观看 | 91精品啪在线观看国产81旧版 | 日韩精品在线免费播放 | 欧美国产日韩一区二区三区 | 国产精品久久久久久久久久免费看 | 最新av在线播放 | 国产精品久久久久久久妇 | 99精品一级欧美片免费播放 | 深夜免费福利网站 | 91免费日韩| 毛片一区二区 | 夜夜操天天摸 | 国产成人精品三级 | 久章草在线观看 | 日本性生活一级片 | 久久免费资源 | 亚洲.www| 久久这里精品视频 | 亚洲乱码精品久久久 | 国产理论一区二区三区 | 99精品小视频 | 免费久久精品视频 | av中文字幕在线免费观看 | 国产亚洲va综合人人澡精品 | 在线观看中文字幕网站 | 综合国产视频 | 久久免费成人网 | av电影在线观看完整版一区二区 | 欧美日韩国产亚洲乱码字幕 | 婷婷新五月 | 一区二区三区福利 | 中文字幕综合在线 | 免费一级黄色 | 91一区一区三区 | 国产一区在线免费观看视频 | 玖玖爱在线观看 | 久久久国际精品 | 国产精品精 | 在线观看久 | 在线观看电影av | 精品久久久久久久久久国产 | 日韩欧美不卡 | 91麻豆精品国产自产在线 | 精品国产精品国产偷麻豆 | 欧美成人亚洲 | 国产不卡视频在线 | 五月婷综合网 | 国产精品久久久久久久久蜜臀 | 国产在线p | 一本一本久久a久久精品综合妖精 | 在线观看国产成人av片 | 天天草天天摸 | 99性视频 | 日韩色综合 | 日韩高清无线码2023 | 五月天综合在线 | 国产精品专区在线观看 |