深度學(xué)習(xí)基礎(chǔ)篇(一)
1. 為什么需要做特征歸一化、標準化?
前述
Feature scaling,常見的提法有“特征歸一化”、“標準化”,是數(shù)據(jù)預(yù)處理中的重要技術(shù),有時甚至決定了算法能不能work以及work得好不好。談到feature scaling的必要性,最常用的2個例子可能是:
- 特征間的單位(尺度)可能不同,比如身高和體重,比如攝氏度和華氏度,比如房屋面積和房間數(shù),一個特征的變化范圍可能是[1000, 10000],另一個特征的變化范圍可能是[?0.1,0.2],在進行距離有關(guān)的計算時,單位的不同會導(dǎo)致計算結(jié)果的不同,尺度大的特征會起決定性作用,而尺度小的特征其作用可能會被忽略,為了消除特征間單位和尺度差異的影響,以對每維特征同等看待,需要對特征進行歸一化。
- 原始特征下,因尺度差異,其損失函數(shù)的等高線圖可能是橢圓形,梯度方向垂直于等高線,下降會走zigzag路線,而不是指向local minimum。通過對特征進行zero-mean and unit-variance變換后,其損失函數(shù)的等高線圖更接近圓形,梯度下降的方向震蕩更小,收斂更快,如下圖所示,圖片來自Andrew Ng。
對于歸一化 兩句話概括:1)歸一化后加快了梯度下降求最優(yōu)解的速度
2)歸一化有可能提高精度
1:歸一化后加快了梯度下降求最優(yōu)解的速度
藍色的圈圈圖代表的是兩個特征的等高線。其中左圖兩個特征X1和X2的區(qū)間相差非常大,X1區(qū)間是[0,2000],X2區(qū)間是[1,5],其所形成的等高線非常尖。
當(dāng)使用梯度下降法尋求最優(yōu)解時,很有可能走“之字型”路線(垂直等高線走),從而導(dǎo)致需要迭代很多次才能收斂;
而右圖對兩個原始特征進行了歸一化,其對應(yīng)的等高線顯得很圓,在梯度下降進行求解時能較快的收斂。
因此如果機器學(xué)習(xí)模型使用梯度下降法求最優(yōu)解時,歸一化往往非常有必要,否則很難收斂甚至不能收斂。
如果不歸一化,不同變量的損失梯度圖可能會呈現(xiàn)一個橢圓,這樣在梯度下降的時候迭代次數(shù)會比較多;歸一化后損失的等高線圖就是一個圓,任意一點的切線方向便是梯度下降的方向,這樣便減少了迭代次數(shù),加快了模型訓(xùn)練。
2.提升模型的精度
歸一化的另一好處是提高精度,這在涉及到一些距離計算的算法時效果顯著,比如算法要計算歐氏距離,上圖中x2的取值范圍比較小,涉及到距離計算時其對結(jié)果的影響遠比x1帶來的小,所以這就會造成精度的損失。所以歸一化很有必要,他可以讓各個特征對結(jié)果做出的貢獻相同。
進一步總結(jié)問題
- 加快收斂速度:在使用梯度下降法進行模型訓(xùn)練時,特征的取值范圍差異較大可能導(dǎo)致?lián)p失函數(shù)的等高線形狀不規(guī)則(如“橢圓”或“尖”),這使得梯度下降的路徑變得曲折,增加了收斂所需的迭代次數(shù)。通過歸一化或標準化,特征值范圍被縮放到相似的區(qū)間,等高線變得更規(guī)則(如“圓形”),從而加快收斂速度。
- 提高模型精度:在涉及距離計算的算法(如KNN、KMeans等)中,不同特征的取值范圍會影響距離的計算。如果某個特征的值范圍較小,而其他特征的值范圍較大,距離計算時小范圍特征的貢獻會被忽略,從而影響模型的表現(xiàn)。歸一化和標準化可以確保所有特征在同一尺度上對結(jié)果產(chǎn)生均衡的影響。
- 避免數(shù)值不穩(wěn)定:在某些算法中(如神經(jīng)網(wǎng)絡(luò)),特征值過大或過小可能導(dǎo)致數(shù)值計算不穩(wěn)定,甚至可能出現(xiàn)梯度消失或梯度爆炸的問題。通過歸一化或標準化,可以緩解這些問題,提高模型的穩(wěn)定性。
- 改善模型解釋性:在某些情況下,標準化后的參數(shù)值可以更直接地反映各個特征對模型輸出的影響,便于進行特征選擇和模型解釋。
2. 常用的歸一化的方法有哪些?
1歸一化的方法有哪些?
1. Min-Max歸一化
描述:Min-Max歸一化也稱為線性歸一化或最大最小規(guī)范化,它將數(shù)據(jù)縮放到[0, 1]區(qū)間內(nèi)。這是最簡單的歸一化方法之一。
公式:
其中,是原始數(shù)據(jù),
和
分別是數(shù)據(jù)集中的最小值和最大值,
是歸一化后的數(shù)據(jù)。
2.?Z-Score歸一化(標準化)
描述:Z-Score歸一化也稱為零均值歸一化或標準化,它將數(shù)據(jù)轉(zhuǎn)換為均值為0、標準差為1的分布。這種方法適用于數(shù)據(jù)分布接近正態(tài)分布的情況。
公式:?
其中,?是原始數(shù)據(jù),?
是數(shù)據(jù)的均值,?
是數(shù)據(jù)的標準差,?
是歸一化后的數(shù)據(jù)。
3.非線性歸一化方法
除了上述線性歸一化方法外,還有一些非線性歸一化方法,如對數(shù)變換、平方根變換、指數(shù)變換等。這些方法通過非線性函數(shù)將數(shù)據(jù)映射到新的區(qū)間內(nèi),以改善數(shù)據(jù)的分布特性。
3. 闡述一下感受野的概念。
一、感受野定義
在卷積神經(jīng)網(wǎng)絡(luò)中,感受野(Receptive Field)的定義是卷積神經(jīng)網(wǎng)絡(luò)每一層輸出的特征圖(feature map)上每個像素點在原始圖像上映射的區(qū)域大小,這里的原始圖像是指網(wǎng)絡(luò)的輸入圖像,是經(jīng)過預(yù)處理后的圖像。
?從上圖可看到輸出中的每個元素都由(3,3)的卷積核對應(yīng)輸入中(3,3)的局部區(qū)域“加權(quán)求和”得到,所以該輸出的特征元素對應(yīng)到輸入中的區(qū)域大小就是3×3,既其感受野大小為3×3。
?神經(jīng)元感受野的值越大表示其能接觸到的原始圖像范圍就越大,也意味著它可能蘊含更為全局,語義層次更高的特征;相反,值越小則表示其所包含的特征越趨向局部和細節(jié)。因此感受野的值可以用來大致判斷每一層的抽象層次。
二、感受野大小的計算
很明顯,深層卷積層的感受野大小和它之前所有層的濾波器大小和步長有關(guān)系,而涉及到這兩個參數(shù)的有卷積層和pooling層。所以是個迭代公式。
其中 為第 層的感受野大小為第
層的的感受野大小
為第L層的卷積核大?。ㄒ部梢允荘ooling), Si為第 i 層的卷積步長。一般來說
。
4. 神經(jīng)網(wǎng)絡(luò)的深度和寬度分別指的是什么?
1.深度——神經(jīng)網(wǎng)絡(luò)的層數(shù)
更深的網(wǎng)絡(luò),有更好的非線性表達能力,可以學(xué)習(xí)更復(fù)雜的變換,從而可以擬合更加復(fù)雜的特征,更深的網(wǎng)絡(luò)可以更簡單地學(xué)習(xí)復(fù)雜特征。
網(wǎng)絡(luò)加深會帶來梯度不穩(wěn)定、網(wǎng)絡(luò)退化的問題,過深的網(wǎng)絡(luò)會使淺層學(xué)習(xí)能力下降。深度到了一定程度,性能就不會提升了,還有可能會下降。
2.寬度——每層的通道數(shù)
足夠的寬度可以保證每一層都學(xué)到豐富的特征,比如不同方向,不同頻率的紋理特征。寬度太窄,特征提取不充分,學(xué)習(xí)不到足夠信息,模型性能受限。
寬度貢獻了網(wǎng)絡(luò)大量計算量,太寬的網(wǎng)絡(luò)會提取過多重復(fù)特征,加大模型計算負擔(dān)。
提升網(wǎng)絡(luò)性能可以先從寬度入手,提高每一層的通道的利用率、用其他通道的信息補充較窄的層,找到寬度的下限,用盡量小的計算量得到更好的性能。
分辨率——是指網(wǎng)絡(luò)中特征圖的分辨率對于網(wǎng)絡(luò)的分辨率
3.深度和寬度所帶來的優(yōu)缺點
1. 深度
- 優(yōu)點:非線性表達能力:更深的網(wǎng)絡(luò)可以通過堆疊多個非線性變換來學(xué)習(xí)復(fù)雜的特征表示,從而能夠擬合復(fù)雜的函數(shù)。特征層次化:深度網(wǎng)絡(luò)能夠逐層提取特征,從簡單到復(fù)雜。例如,初層可能學(xué)習(xí)邊緣特征,中間層學(xué)習(xí)形狀特征,最后層學(xué)習(xí)更高級的語義特征。
- 缺點:梯度消失/爆炸:在訓(xùn)練過程中,隨著網(wǎng)絡(luò)深度增加,梯度可能會逐層消失或爆炸,導(dǎo)致訓(xùn)練困難。網(wǎng)絡(luò)退化:過深的網(wǎng)絡(luò)可能導(dǎo)致性能下降,特別是在沒有適當(dāng)?shù)恼齽t化和優(yōu)化技術(shù)的情況下。計算資源:更深的網(wǎng)絡(luò)通常需要更多的計算資源和時間進行訓(xùn)練。
2. 寬度
- 優(yōu)點:特征學(xué)習(xí)能力:寬度可以使每層學(xué)習(xí)到更豐富的特征,特別是在處理高維數(shù)據(jù)時,能夠捕捉到不同的特征模式。并行處理:寬度增加了網(wǎng)絡(luò)的參數(shù)數(shù)量,使得模型能夠更好地擬合訓(xùn)練數(shù)據(jù)。
- 缺點:計算量:寬度的增加會顯著增加模型的計算復(fù)雜度和內(nèi)存消耗。過擬合風(fēng)險:如果網(wǎng)絡(luò)過寬而且訓(xùn)練數(shù)據(jù)不足,模型可能會學(xué)習(xí)到噪聲而不是有用的特征,從而導(dǎo)致過擬合。
5. 上/下采樣的作用是什么?通常有哪些方式?
??在計算機視覺領(lǐng)域中,上采樣(upsampling)和下采樣(downsampling)是兩種常見的操作,用于調(diào)整圖像或特征圖的尺寸。
1. 下采樣
一、定義
下采樣是將輸入圖像或特征圖的尺寸減小,通常會降低空間分辨率。通過這種方式,可以提取出更為抽象的特征,同時減少后續(xù)計算所需的資源。
二、目的
減少計算量和內(nèi)存消耗:較小的特征圖意味著更少的參數(shù)和更快的計算速度。特征提?。和ㄟ^下采樣,可以提取出圖像的主要特征,忽略一些細節(jié),從而增強模型的泛化能力。不變性:下采樣有助于實現(xiàn)對平移、旋轉(zhuǎn)和尺度變化的某種程度的不變性。
常見方法:
最大池化 | 在每個局部區(qū)域內(nèi)選擇最大值 | 保留最顯著的特征 | 1. 有效提取顯著特征 | 1. 可能丟失一些細節(jié)信息 |
2. 實現(xiàn)平移不變性 | ||||
平均池化 | 在每個局部區(qū)域內(nèi)計算平均值 | 保留區(qū)域的整體信息 | 1. 計算簡單 | 1. 可能平滑掉重要特征 |
2. 對噪聲有一定的魯棒性 |
2. 上采樣
一、定義
上采樣是將輸入圖像或特征圖的尺寸增大,通常會增加空間分辨率。上采樣的目的是恢復(fù)圖像或特征的細節(jié)信息,以便更好地進行后續(xù)任務(wù)。
二、目的
恢復(fù)細節(jié)信息:在圖像生成、分割等任務(wù)中,上采樣可以幫助恢復(fù)圖像的細節(jié)。提高分辨率:增加特征圖的尺寸,使得模型能夠處理更高分辨率的數(shù)據(jù)。
三、常見方法:
雙線性插值 | 通過考慮相鄰像素的加權(quán)平均值生成新像素值 | 平滑圖像,恢復(fù)細節(jié) | 1. 生成的圖像較為平滑 | 1. 計算復(fù)雜度較高 |
2. 較好地保留了圖像特征 | ||||
最近鄰插值 | 選擇最近的像素值作為新像素的值 | 快速生成新像素 | 1. 計算簡單,速度快 | 1. 可能導(dǎo)致鋸齒狀邊緣 |
2. 實現(xiàn)簡單 | ||||
轉(zhuǎn)置卷積 | 通過學(xué)習(xí)的卷積核對特征圖進行上采樣 | 學(xué)習(xí)復(fù)雜特征,恢復(fù)圖像細節(jié) | 1. 能夠?qū)W習(xí)到更復(fù)雜的特征 | 1. 計算復(fù)雜度高 |
2. 可與其他卷積層共享權(quán)重 | 3. 可能產(chǎn)生棋盤效應(yīng) |
6. 池化層是怎么進行反向傳播的?
Pooling池化操作的反向梯度傳播
CNN網(wǎng)絡(luò)中一個不可導(dǎo)的環(huán)節(jié)就是Pooling池化操作,因為Pooling操作使得feature map的尺寸變化,假如做2×2的池化,假設(shè)那么第l+1
層的feature map有16個梯度,那么第l
層就會有64個梯度,這使得梯度無法對位的進行傳播下去。其實解決這個問題的思想也很簡單,就是把1個像素的梯度傳遞給4個像素,
根據(jù)這條原則,mean pooling和max pooling的反向傳播也是不同的。
mean pooling
mean pooling的前向傳播就是把一個patch中的值求取平均來做pooling,那么反向傳播的過程也就是把某個元素的梯度等分為n份分配給前一層,這樣就保證池化前后的梯度(殘差)之和保持不變,還是比較理解的,圖示如下
mean pooling比較容易讓人理解錯的地方就是會簡單的認為直接把梯度復(fù)制N遍之后直接反向傳播回去,但是這樣會造成loss之和變?yōu)樵瓉淼腘倍,網(wǎng)絡(luò)是會產(chǎn)生梯度爆炸的。
max pooling
對于最大池化,其前向傳播是取某特征區(qū)域的最大值進行輸出,這個區(qū)域僅有最大值神經(jīng)元參與了前向傳播,因此,在反向傳播時,框架僅需要將該區(qū)域的梯度直接分配到最大值神經(jīng)元即可,其他神經(jīng)元的梯度被分配為0且是被舍棄不參與反向傳播的,但如何確認最大值神經(jīng)元,這個還得框架在進行前向傳播時記錄下最大值神經(jīng)元的Max ID位置,這是最大池化與平均池化差異的地方,
那么假設(shè)前向傳播和反向傳播的過程就如下圖所示 :
7. 神經(jīng)網(wǎng)絡(luò)中Addition / Concatenate區(qū)別是什么?
Addition(加法)
- 操作方式:Addition 是對兩個或多個相同形狀的張量進行逐元素相加的操作。例如,對于兩個形狀為?(N,C,H,W)(N,C,H,W)?的張量?AA?和?BB,它們的加法操作結(jié)果也是一個形狀為?(N,C,H,W)(N,C,H,W)?的張量?CC,其中?C[i]=A[i]+B[i]C[i]=A[i]+B[i]。
- 特征融合:Addition 通常用于將特征進行融合,尤其是在殘差網(wǎng)絡(luò)(ResNet)中,通過跳躍連接(skip connections)將輸入與輸出相加,以便保留原始信息。
- 計算復(fù)雜度:Addition 的計算復(fù)雜度相對較低,因為它只涉及簡單的逐元素加法。
Concatenate(拼接)
- 操作方式:Concatenate 是將兩個或多個張量沿某個指定的維度進行拼接的操作。例如,對于兩個形狀為?(N,C,H,W)(N,C,H,W)?的張量?AA?和?BB,如果在通道維度(通常是第二維)進行拼接,結(jié)果的形狀將是?(N,C1+C2,H,W)(N,C1?+C2?,H,W),其中?C1C1??和?C2C2??分別是張量?AA?和?BB?的通道數(shù)。
- 特征組合:Concatenate 通常用于將來自不同來源或不同特征提取器的特征組合在一起,以增加模型的表達能力。
- 計算復(fù)雜度:Concatenate 的計算復(fù)雜度相對較高,因為它需要在內(nèi)存中創(chuàng)建一個新的張量來存儲拼接后的結(jié)果。
總結(jié)
- Addition?是逐元素相加,適用于相同形狀的張量,常用于特征融合和跳躍連接。
- Concatenate?是沿指定維度拼接,適用于不同形狀的張量,常用于特征組合。
8. 深度可分離卷積的概念和作用。
深度可分離卷積是一種卷積操作,旨在減少計算復(fù)雜度和模型參數(shù),同時保持模型的表現(xiàn)。它主要由兩個步驟組成:逐通道卷積和逐點卷積
深度可分離卷積分為兩步
第一,對于來自上一層的多通道特征圖,將其全部拆分為單個通道的特征圖,分別對他們進行單通道卷積,然后重新堆疊到一起。這被稱之為逐通道卷積(Depthwise Convolution)。這個拆分的動作十分關(guān)鍵,在這一步里,它只對來自上一層的特征圖做了尺寸的調(diào)整,而通道數(shù)沒有發(fā)生變化。
第二,將前面得到的特征圖進行第二次卷積,這是采取的卷積核都是1×1大小的,濾波器包含了與上一層通道數(shù)一樣數(shù)量的卷積核。一個濾波器輸出一張?zhí)卣鲌D,因此多個通道,則需要多個濾波器。這又被稱之為逐點卷積(Pointwise Convolution)。
逐通道卷積
Depthwise Convolution的一個卷積核負責(zé)一個通道,一個通道只被一個卷積核卷積。
一張5×5像素、三通道彩色輸入圖片(shape為5×5×3),Depthwise Convolution首先經(jīng)過第一次卷積運算,DW完全是在二維平面內(nèi)進行。卷積核的數(shù)量與上一層的通道數(shù)相同(通道和卷積核一一對應(yīng))。所以一個三通道的圖像經(jīng)過運算后生成了3個Feature map(如果有same padding則尺寸與輸入層相同為5×5),如下圖所示。
其中一個Filter只包含一個大小為3×3的Kernel,卷積部分的參數(shù)個數(shù)計算如下:
Depthwise Convolution完成后的Feature map數(shù)量與輸入層的通道數(shù)相同,無法擴展Feature map。而且這種運算對輸入層的每個通道獨立進行卷積運算,沒有有效的利用不同通道在相同空間位置上的feature信息。因此需要Pointwise Convolution來將這些Feature map進行組合生成新的Feature map
逐點卷積
Pointwise Convolution的運算與常規(guī)卷積運算非常相似,它的卷積核的尺寸為 1×1×M,M為上一層的通道數(shù)。所以這里的卷積運算會將上一步的map在深度方向上進行加權(quán)組合,生成新的Feature map。有幾個卷積核就有幾個輸出Feature map
??經(jīng)過Pointwise Convolution之后,同樣輸出了4張Feature map,與常規(guī)卷積的輸出維度相同
整體結(jié)構(gòu)
深度可分離卷積的整體結(jié)構(gòu)可以表示為:
- 輸入 → 逐通道卷積 → 逐點卷積 → 輸出
作用
- 減少參數(shù)數(shù)量:傳統(tǒng)卷積操作的參數(shù)數(shù)量是?K×K×Cin×CoutK×K×Cin?×Cout?,而深度可分離卷積的參數(shù)數(shù)量為?K×K×C+C×C′K×K×C+C×C′,顯著減少了參數(shù)數(shù)量,尤其是在通道數(shù)?CC?較大時。
- 降低計算復(fù)雜度:深度可分離卷積的計算量遠低于標準卷積。計算復(fù)雜度的降低使得模型在移動設(shè)備和邊緣設(shè)備上更易于部署。
- 保持性能:盡管參數(shù)和計算量減少,但深度可分離卷積在許多任務(wù)上(如圖像分類、目標檢測等)仍能保持良好的性能。這使得它成為輕量級網(wǎng)絡(luò)(如 MobileNet)的核心組件。
9. 轉(zhuǎn)置卷積的原理。
轉(zhuǎn)置卷積(Transposed Convolution) 在語義分割或者對抗神經(jīng)網(wǎng)絡(luò)(GAN)中比較常見,其主要作用就是做上采樣(UpSampling)。在有些地方轉(zhuǎn)置卷積又被稱作fractionally-strided convolution或者deconvolution,但deconvolution具有誤導(dǎo)性,不建議使用。對于轉(zhuǎn)置卷積需要注意的是:
- 轉(zhuǎn)置卷積不是卷積的逆運算
- 轉(zhuǎn)置卷積也是卷積
普通卷積
首先來看普通卷積,如下圖,普通卷積核一步一步滑動窗口得到特征輸出,但實際上在計算機中并不會如上圖所示計算(這樣計算效率比較低),計算機會將卷積核轉(zhuǎn)換成等效的矩陣,將輸入轉(zhuǎn)換為向量。通過輸入向量和卷積核矩陣的相乘獲得輸出向量。輸出的向量經(jīng)過整形便可得到我們的二維輸出特征。具體的操作如下圖所示。
由于上圖3x3卷積核要在輸入上不同的位置卷積4次,所以通過補零的方法將卷積核分別置于一個4x4矩陣的四個角落。這樣輸入可以直接和這四個4x4的矩陣進行卷積,構(gòu)成等效矩陣,而舍去了滑動這一操作步驟。
記向量化的圖像為 I? ,向量化的卷積矩陣為C , 輸出特征向量為 O ,則有:
轉(zhuǎn)置卷積
下面是一般轉(zhuǎn)置卷積操作步驟:
1.在輸入特征圖元素間填充s-1行、列0(其中s表示轉(zhuǎn)置卷積的步距)
2.在輸入特征圖四周填充k-p-1行、列0(其中k表示轉(zhuǎn)置卷積的kernel_size大小,p為轉(zhuǎn)置卷積的padding,注意這里的padding和卷積操作中有些不同)
3.將卷積核參數(shù)上下、左右翻轉(zhuǎn)
4.做正常卷積運算(填充0,步距1)
下圖為轉(zhuǎn)置卷積不同s、p的卷積過程示意圖
轉(zhuǎn)置卷積操作后特征圖的大小可以通過如下公式計算:
總結(jié):
1.轉(zhuǎn)置卷積也是卷積
2.轉(zhuǎn)置卷積不是卷積的逆運算
3.轉(zhuǎn)置卷積的作用是為了上采樣
10.?BN層是什么? BN層的優(yōu)點。
BN層的本質(zhì)原理
BN層(Batch Normalization Layer)是深度學(xué)習(xí)中常用的一種方法,用于加速神經(jīng)網(wǎng)絡(luò)的收斂速度,并且可以減小模型對初始參數(shù)的依賴性,提高模型的魯棒性。BN層是在每個mini-batch數(shù)據(jù)上進行歸一化處理,使得神經(jīng)網(wǎng)絡(luò)的輸入更加平穩(wěn),從而有助于提高模型的收斂速度和泛化能力。
BN層的原理是將每個mini-batch數(shù)據(jù)進行歸一化處理,即將每個特征的均值和方差分別減去和除以當(dāng)前mini-batch數(shù)據(jù)的均值和方差,以使得每個特征的數(shù)值分布在一個相對穩(wěn)定的范圍內(nèi)。此外,為了保證模型的表達能力,BN層還引入了兩個可學(xué)習(xí)參數(shù)gamma和beta,用于調(diào)整歸一化后的特征值的范圍和偏移量。
BN層的優(yōu)點總結(jié)
1.可以加速神經(jīng)網(wǎng)絡(luò)的收斂速度。
2.減小模型對初始參數(shù)的依賴性,提高模型的魯棒性。
3.可以防止梯度消失和梯度爆炸的問題,有助于提高模型的穩(wěn)定性。
4.可以減少模型過擬合的風(fēng)險,提高模型的泛化能力。
5.允許使用更高的學(xué)習(xí)率:由于BN層的穩(wěn)定性,通??梢赃x擇更高的學(xué)習(xí)率,從而加速訓(xùn)練。
總之,BN層是一種常用的正則化方法,可以有效地提高神經(jīng)網(wǎng)絡(luò)的訓(xùn)練速度和泛化能力。
#深度學(xué)習(xí)##面經(jīng)##23屆找工作求助陣地#