深度学习: 参数初始化
深度學(xué)習(xí): 參數(shù)初始化
一、總結(jié)
一句話總結(jié):
1)、好的開始是成功的一半,為了讓你的模型跑贏在起跑線 ,請(qǐng)慎重對(duì)待參數(shù)初始化。
2)、tf的初始化器包括:tf.initializers.he_normal()、tf.initializers.truncated_normal()、tf.contrib.layers.xavier_initializer() 這三種。
1、全零初始化 (Zero Initialization)?
將網(wǎng)絡(luò)中 所有參數(shù) 初始化為 0 。如果所有的參數(shù)都是0,那么所有神經(jīng)元的輸出都將是相同的,那在back propagation的時(shí)候,gradient相同,weight update也相同。同一層內(nèi)所有神經(jīng)元的行為也是相同的。這顯然不可接受。
2、隨機(jī)初始化 (Random Initialization)?
a)、將參數(shù)值(通過(guò)高斯分布或均勻分布)隨機(jī)初始化為 接近0的 一個(gè)很小的隨機(jī)數(shù)(有正有負(fù)),從而使對(duì)稱失效。
b)、W = tf.Variable(np.random.randn(node_in, node_out)) * 0.001
二、深度學(xué)習(xí): 參數(shù)初始化
轉(zhuǎn)自或參考:深度學(xué)習(xí): 參數(shù)初始化
https://blog.csdn.net/JNingWei/article/details/78835390
Introduction
好的開始是成功的一半。
為了讓你的模型跑贏在起跑線 ε=ε=ε=( ̄▽ ̄) ,請(qǐng)慎重對(duì)待參數(shù)初始化。
Note:
tf的初始化器包括:tf.initializers.he_normal()、tf.initializers.truncated_normal()、tf.contrib.layers.xavier_initializer() 這三種。
建議采用默認(rèn)配置。一般不會(huì)在這邊想trick,沒(méi)啥明顯增益。
API
TensorFlow中自帶關(guān)于參數(shù)初始化的API,具體使用見 tensorflow: variable初始化。
全零初始化 (Zero Initialization)
將網(wǎng)絡(luò)中 所有參數(shù) 初始化為 0 。
如果所有的參數(shù)都是0,那么所有神經(jīng)元的輸出都將是相同的,那在back propagation的時(shí)候,gradient相同,weight update也相同。同一層內(nèi)所有神經(jīng)元的行為也是相同的。
這顯然不可接受。
隨機(jī)初始化 (Random Initialization)
將參數(shù)值(通過(guò)高斯分布或均勻分布)隨機(jī)初始化為 接近0的 一個(gè)很小的隨機(jī)數(shù)(有正有負(fù)),從而使對(duì)稱失效。
W = tf.Variable(np.random.randn(node_in, node_out)) * 0.001
Note:
node_in、 node_out表示 輸入神經(jīng)元個(gè)數(shù)、輸出神經(jīng)元個(gè)數(shù);
其中,np.random.randn(node_in, node_out)輸出 服從標(biāo)準(zhǔn)正態(tài)分布的node_in × node_out矩陣;
控制因子:0.001,保證參數(shù)期望接近0;
一旦隨機(jī)分布選擇不當(dāng),就會(huì)導(dǎo)致網(wǎng)絡(luò)優(yōu)化陷入困境。
Xavier初始化 (Xavier Initialization)
W = ( tf.Variable(np.random.randn(node_in, node_out)) / np.sqrt(node_in) ) * 0.001
Note:
加上了 方差規(guī)范化: / np.sqrt(node_in),維持了 輸入、輸出數(shù)據(jù)分布方差的一致性,從而更快地收斂。
He初始化 (He Initialization)
W = ( tf.Variable(np.random.randn(node_in, node_out)) / np.sqrt(node_in/2) ) * 0.001
Note:
考慮到 非線性映射 (relu) 函數(shù) 的影響, 將 方差規(guī)范化 的 分母 修改為 np.sqrt(node_in/2),能讓Relu網(wǎng)絡(luò)更快地收斂。
遷移學(xué)習(xí)初始化 (Pre-train Initialization)
將 預(yù)訓(xùn)練模型的參數(shù) 作為新任務(wù)上的初始化參數(shù)。
數(shù)據(jù)敏感初始化
根據(jù)自身任務(wù)數(shù)據(jù)集而特別定制的參數(shù)初始化方法。
[1] 聊一聊深度學(xué)習(xí)的weight initialization
[2] 深度學(xué)習(xí)之參數(shù)初始化策略
總結(jié)
以上是生活随笔為你收集整理的深度学习: 参数初始化的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 企业分布式微服务云SpringCloud
- 下一篇: ADC/DAC的一些参数