深度學(xué)習(xí)模型參數(shù)初始化是指在訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)時(shí),對(duì)網(wǎng)絡(luò)的權(quán)重和偏置進(jìn)行初始化的過程。合適的參數(shù)初始化可以加速模型的收斂,并提高模型的性能。
? 1 基本介紹
在深度學(xué)習(xí)中,常用的參數(shù)初始化方法有以下幾種:
- 零初始化(Zero Initialization):將所有權(quán)重和偏置初始化為0。然而,這種方法會(huì)導(dǎo)致所有神經(jīng)元具有相同的輸出,無法破壞對(duì)稱性,因此不常用。
- 隨機(jī)初始化(Random Initialization):將權(quán)重和偏置隨機(jī)初始化為較小的隨機(jī)值。這種方法可以打破對(duì)稱性,但并不能保證初始化的權(quán)重和偏置能夠適應(yīng)網(wǎng)絡(luò)的輸入和輸出分布。
- Xavier初始化(Xavier Initialization):根據(jù)每一層的輸入維度和輸出維度的大小來進(jìn)行初始化。Xavier初始化方法根據(jù)激活函數(shù)的導(dǎo)數(shù)和輸入輸出的維度來調(diào)整初始化的范圍,使得每一層的激活值保持在一個(gè)合適的范圍內(nèi)。
- He初始化(He Initialization):類似于Xavier初始化,但在計(jì)算權(quán)重的標(biāo)準(zhǔn)差時(shí),將輸入維度除以2。這是由于ReLU等非線性激活函數(shù)的性質(zhì)導(dǎo)致的。
- 預(yù)訓(xùn)練初始化(Pretraining Initialization):在某些情況下,可以使用預(yù)訓(xùn)練的模型參數(shù)來初始化新的模型。例如,利用在大規(guī)模數(shù)據(jù)集上預(yù)訓(xùn)練的模型參數(shù)來初始化新任務(wù)的模型,可以加快模型的收斂速度。
需要注意的是,不同的參數(shù)初始化方法適用于不同的網(wǎng)絡(luò)架構(gòu)和激活函數(shù)。在實(shí)際應(yīng)用中,需要根據(jù)具體情況選擇適當(dāng)?shù)膮?shù)初始化方法。此外,還可以通過調(diào)整學(xué)習(xí)率和正則化等技巧來進(jìn)一步優(yōu)化訓(xùn)練過程。
? 2 零初始化(不常用)
?? 2.1 理論
這里主要分析一下神經(jīng)網(wǎng)絡(luò)為什么不能將參數(shù)全部初始化為0
假設(shè)我們有下面的網(wǎng)絡(luò)(為了簡單,全部以線性函數(shù)計(jì)算):
第一層計(jì)算為:
第二層計(jì)算為:
以參數(shù)W11和W12的反向傳播為例,梯度為:
因?yàn)槎际?,則梯度為0,則參數(shù)更新停止。
? 3 Xavier初始化
第二節(jié)我們簡單總結(jié)了為什么神經(jīng)網(wǎng)絡(luò)參數(shù)不能輸出化為0,接下來我們討論Xavier初始化。
?? 3.1 介紹
在神經(jīng)網(wǎng)絡(luò)中,每個(gè)神經(jīng)元的輸入是由上一層的神經(jīng)元輸出和權(quán)重參數(shù)決定的。如果權(quán)重參數(shù)初始化過大,會(huì)導(dǎo)致輸入值變得很大,從而使得激活函數(shù)的導(dǎo)數(shù)趨近于0,造成梯度消失問題。相反,如果權(quán)重參數(shù)初始化過小,會(huì)導(dǎo)致輸入值變得很小,從而使得激活函數(shù)的導(dǎo)數(shù)趨近于1,造成梯度爆炸問題。
Xavier初始化通過根據(jù)網(wǎng)絡(luò)層的輸入和輸出維度來合理地初始化權(quán)重參數(shù),使得權(quán)重參數(shù)的方差保持在一個(gè)相對(duì)穩(wěn)定的范圍內(nèi)。這樣可以避免梯度消失和梯度爆炸問題,有助于提高網(wǎng)絡(luò)的訓(xùn)練效果。
?? 3.2 推導(dǎo)
這里我們以下列網(wǎng)絡(luò)為例:
首先看前向傳播
方差為(這里應(yīng)用概率論相關(guān)計(jì)算公式,需要注意的是這里Xi經(jīng)過歸一化,E(Xi)=0)
如果Xi和Wi獨(dú)立同分布,那么D(a1)的最終公式為
這里代表著輸入維度
而我們的目標(biāo)是,因此
。
與上述計(jì)算方式一樣,反向傳播最終結(jié)果是。只是這里,
是輸出的維度大小。
但是和
一般情況下是不同的,因此,這里采取一種折中的方式
令,我們讓
在區(qū)間[a, b]上均勻采樣(均勻分布)
結(jié)合均勻分布方差公式,解出Xavier初始化采樣范圍為
文章來源:http://www.zghlxwxcb.cn/news/detail-573037.html
?? 3.3 構(gòu)造
torch.nn.init.xavier_uniform_(tensor, a=0, b=1)
- tensor:需要填充的張量
- a:均勻分布的下界
- b:均勻分布的上界
?? 3.4 例子
w = torch.empty(3, 5)
nn.init.uniform_(w)
result:文章來源地址http://www.zghlxwxcb.cn/news/detail-573037.html
tensor([[0.2116, 0.3085, 0.5448, 0.6113, 0.7697],
[0.8300, 0.2938, 0.4597, 0.4698, 0.0624],
[0.5034, 0.1166, 0.3133, 0.3615, 0.3757]])
到了這里,關(guān)于Pytorch基本使用—參數(shù)初始化的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!