展示類網(wǎng)站建設(shè)qianhu微建站
1、call 方法
是一個(gè)特殊的方法,它允許類的實(shí)例表現(xiàn)得像函數(shù)一樣。也就是說,你可以使用圓括號 () 來調(diào)用一個(gè)實(shí)例,就像調(diào)用普通函數(shù)一樣。
當(dāng)你調(diào)用 model(input_data) 時(shí),實(shí)際上是調(diào)用了模型的 __ call __ 方法,其會(huì)自動(dòng)調(diào)用 forward() 方法,完成前向傳播的計(jì)算。而不需要(顯示地)手動(dòng)調(diào)用 model.forward(input_data)。
2、什么是卷積神經(jīng)網(wǎng)絡(luò)
卷積神經(jīng)網(wǎng)絡(luò)是一種帶有卷積結(jié)構(gòu)的深度神經(jīng)網(wǎng)絡(luò),卷積結(jié)構(gòu)可以減少深層網(wǎng)絡(luò)占用的內(nèi)存量,其三個(gè)關(guān)鍵的操作,其一是局部感受野,其二是權(quán)值共享,其三是 pooling 層,有效的減少了網(wǎng)絡(luò)的參數(shù)個(gè)數(shù),緩解了模型的過擬合問題。
3、卷積神經(jīng)網(wǎng)絡(luò)注意事項(xiàng)
數(shù)據(jù)驅(qū)動(dòng)的模型一般依賴于數(shù)據(jù)集的大小,CNN 和其他經(jīng)驗(yàn)?zāi)P鸵粯?#xff0c;能夠適用于任意大小的數(shù)據(jù)集,但用于訓(xùn)練的數(shù)據(jù)集應(yīng)該足夠大, 能夠覆蓋問題域中所有已知可能出現(xiàn)的問題。
4、正交初始化(Orthogonal Initialization)
是一種用于神經(jīng)網(wǎng)絡(luò)權(quán)重初始化的方法,旨在使權(quán)重矩陣具有正交性。正交矩陣的行或列是彼此正交并且單位化的,這種初始化方式有助于維持梯度的規(guī)模,防止在深度神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程中發(fā)生梯度爆炸或消失。
正交初始化的具體實(shí)現(xiàn)步驟
生成隨機(jī)矩陣:首先,從均值為0、方差為1的高斯分布中隨機(jī)生成一個(gè)矩陣。
奇異值分解(SVD):對生成的隨機(jī)矩陣進(jìn)行奇異值分解(SVD),得到兩個(gè)正交矩陣U和V,以及一個(gè)對角矩陣Σ。
選擇正交矩陣:從U和V中選擇一個(gè)作為初始化后的權(quán)重矩陣。通常選擇形狀與目標(biāo)權(quán)重矩陣匹配的那個(gè)。
正太分布、均勻分布和正交分布都叫隨機(jī)初始化
5、零值初始化
在零值初始化中,所有權(quán)重 W 和偏置 b 都被設(shè)置為零:
W=0,b=0
零值初始化的問題
對稱性問題:
如果所有權(quán)重都初始化為零,那么在訓(xùn)練過程中,所有神經(jīng)元的輸出和梯度更新都會(huì)相同。這導(dǎo)致模型無法有效學(xué)習(xí),因?yàn)樗械碾[含單元都計(jì)算相同的函數(shù),這種情況稱為對稱性問題(Symmetry Breaking Problem)。
例如,對于一個(gè)簡單的神經(jīng)網(wǎng)絡(luò),如果所有權(quán)重都初始化為零,那么每個(gè)神經(jīng)元的輸入和輸出在每一層都會(huì)相同,梯度更新也會(huì)相同,從而無法打破對稱性。
梯度消失問題:
由于所有初始值都為零,梯度在反向傳播過程中也會(huì)非常小,這可能導(dǎo)致梯度消失問題,使得模型難以收斂。
6、如何選擇激活函數(shù)
(1)任選其一:若網(wǎng)絡(luò)層數(shù)不多
(2)ReLU:若網(wǎng)絡(luò)層數(shù)較多
不宜選擇sigmoid、tanh,因?yàn)樗鼈兊膶?dǎo)數(shù)都小于1,sigmoid的導(dǎo)數(shù)更是在[0, 1/4]之間。
根據(jù)微積分鏈?zhǔn)椒▌t,隨著網(wǎng)絡(luò)層數(shù)增加,導(dǎo)數(shù)或偏導(dǎo)將指數(shù)級變小。
所以,網(wǎng)絡(luò)層數(shù)較多的激活函數(shù)其導(dǎo)數(shù)不宜小于1也不能大于1,大于1將導(dǎo)致梯度爆炸,導(dǎo)數(shù)為1最好,而relu正好滿足這個(gè)要求。
7、全局平均池化
常用于卷積神經(jīng)網(wǎng)絡(luò)的末端,以替代傳統(tǒng)的全連接層,減少模型的參數(shù)量,簡化網(wǎng)絡(luò)結(jié)構(gòu),提高計(jì)算效率
8、正則化為啥能夠防止過擬合
首先,模型越復(fù)雜,越容易過擬合,即我們想要擬合的是一般規(guī)律,但是模型卻會(huì)把一些噪聲也擬合進(jìn)來。
其次,權(quán)重參數(shù)可以決定模型復(fù)雜度,當(dāng)很多參數(shù)接近0(影響變小),甚至為0時(shí),模型的很多項(xiàng)將失效,可以借助多項(xiàng)式理解,復(fù)雜度自然降低。
最后,正則化項(xiàng)可以讓很多權(quán)重參數(shù)為0,比如L2正則化項(xiàng),它是由權(quán)重參數(shù)的平方求和再求平方根,所以為了讓損失函數(shù)最小,受到正則化項(xiàng)的懲罰,權(quán)重參數(shù)就會(huì)盡量小。
8.1 L1正則化
形式為參數(shù)的絕對值求和再乘以一個(gè)正則化超參數(shù)
目的是使冗余的參數(shù)置零,只保留權(quán)重大的前N個(gè)參數(shù)。所以也叫做特征選擇。
8.2 L2正則化
L2正則化(權(quán)重衰減) —— 過擬合參數(shù)趨近于0
L2正則化(L2范數(shù)),通常表示為:||W||2:指權(quán)值向量 W 中各個(gè)元素的平方和,然后求平方根。
特點(diǎn):又叫權(quán)重衰減。即抑制模型中產(chǎn)生過擬合的參數(shù),使其趨近于0(而不等于0),影響變小。
特點(diǎn):傾向于讓所有參數(shù)的權(quán)值盡可能小。
8.3 dropout正則化
對于使用了 Dropout 的神經(jīng)網(wǎng)絡(luò),在反向傳播時(shí),只會(huì)對參與正向傳播的神經(jīng)元的權(quán)重參數(shù)進(jìn)行更新,被丟棄的神經(jīng)元的權(quán)重參數(shù)不會(huì)更新。以下是具體的原因和過程:
Dropout 的工作原理
在訓(xùn)練過程中,Dropout 隨機(jī)地丟棄(即置零)一部分神經(jīng)元的輸出。這意味著在每次前向傳播時(shí),有一部分神經(jīng)元的輸出被置為零,這些神經(jīng)元在當(dāng)前的前向傳播中不參與計(jì)算。
反向傳播的鏈?zhǔn)椒▌t
反向傳播是基于鏈?zhǔn)椒▌t進(jìn)行的。鏈?zhǔn)椒▌t表明,每個(gè)權(quán)重參數(shù)的梯度是通過其對應(yīng)的神經(jīng)元的輸出和下游神經(jīng)元的梯度計(jì)算得到的。如果一個(gè)神經(jīng)元的輸出在前向傳播中被置為零,那么在反向傳播時(shí),這個(gè)神經(jīng)元的梯度也會(huì)被置為零,因?yàn)樗妮敵鰧ψ罱K的損失函數(shù)沒有貢獻(xiàn)。
權(quán)重參數(shù)的更新
在反向傳播時(shí),每個(gè)權(quán)重參數(shù)的更新量是根據(jù)其梯度計(jì)算得到的。如果一個(gè)神經(jīng)元的梯度為零,那么其對應(yīng)的權(quán)重參數(shù)的更新量也為零,即這個(gè)權(quán)重參數(shù)不會(huì)被更新。
在卷積層中的應(yīng)用
在 CNN 中,卷積層的輸出是一個(gè)多維的特征圖(feature map)。Dropout 在卷積層中的應(yīng)用通常有兩種形式:標(biāo)準(zhǔn) Dropout 和 Spatial Dropout。
標(biāo)準(zhǔn) Dropout
工作原理:
標(biāo)準(zhǔn) Dropout 會(huì)在特征圖的每個(gè)元素上獨(dú)立地應(yīng)用 Dropout。也就是說,每個(gè)特征圖中的每個(gè)像素點(diǎn)都有一定的概率被置為零。
例如,假設(shè)有一個(gè)特征圖的形狀為 (N,C,H,W),其中 N 是批量大小,C 是通道數(shù),H 和 W 是特征圖的高度和寬度。標(biāo)準(zhǔn) Dropout 會(huì)在每個(gè)元素上獨(dú)立地應(yīng)用 Dropout,每個(gè)元素被丟棄的概率為 p。
實(shí)現(xiàn):
在 PyTorch 中,可以使用 nn.Dropout 來實(shí)現(xiàn)標(biāo)準(zhǔn) Dropout。
self.dropout = nn.Dropout(p=0.5)
Spatial Dropout
工作原理:
Spatial Dropout 與標(biāo)準(zhǔn) Dropout 不同,它是在特征圖的整個(gè)通道上應(yīng)用 Dropout。也就是說,整個(gè)通道的特征圖要么全部保留,要么全部丟棄。
例如,假設(shè)有一個(gè)特征圖的形狀為 (N,C,H,W),Spatial Dropout 會(huì)在每個(gè)通道上獨(dú)立地應(yīng)用 Dropout,每個(gè)通道被丟棄的概率為 p。
這種方法可以更好地保留特征圖的空間結(jié)構(gòu),因?yàn)檎麄€(gè)通道的特征圖要么全部保留,要么全部丟棄,不會(huì)破壞特征圖的空間相關(guān)性。
實(shí)現(xiàn):
在 PyTorch 中,可以使用 nn.Dropout2d 來實(shí)現(xiàn) Spatial Dropout。
self.dropout = nn.Dropout2d(p=0.5)
參考
https://blog.csdn.net/shinuone/article/details/127289512
https://blog.csdn.net/jiaoyangwm/article/details/80011656