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