1孙援、CUDA(compute unified device architecture)可用于并行計算:
GTX1060 CUDA核心數(shù):1280 顯存大刑咎埂:6G
2熊镣、隨機梯度下降:計算偏導數(shù)需要的計算量很大,而采用隨機梯度下降(即采用采樣的概念)從中提取一部分樣本來募书,這些樣本中的特征已經(jīng)可以在一定程度上代表完整訓練集的特征绪囱。 Tensorflow中可以指定一個batch的size,規(guī)定每次被隨機選擇參與歸納的樣本數(shù)。
3莹捡、梯度消失與梯度爆炸問題:
梯度消失:兩個節(jié)點相連的神經(jīng)網(wǎng)絡(luò)鬼吵,在使用鏈式法則的時候,會對導數(shù)進行連乘篮赢。即使用Sigmoid函數(shù)在自變量很大或者很小的時候齿椅,由下圖可以看出,導數(shù)接近于0荷逞,這樣在導數(shù)連乘的時候會使得w沒什么變化媒咳。
而對于這種問題比較好的解決方案是改用ReLu(修正線性單元)激活函數(shù),如下圖所示:
這樣在第一象限中導數(shù)恒為1种远,不會很容易出現(xiàn)很大很小的值涩澡,求解復合函數(shù)的導數(shù)更簡單。
4坠敷、歸一化:
一般采用線性函數(shù)歸一化(max-min)妙同、0均值標準化(z-score standardization),在深度學習中膝迎,常見的是使用batch-normalization粥帚,這樣可以讓網(wǎng)絡(luò)盡可能避免沒有數(shù)據(jù),代碼為:
h2=tf.contrib.layers.batch_norm(h1,center=True,scale=True,is_training=false,scope=’bn’).
5限次、參數(shù)初始化問題:
常見的初始化為使用以0為均值芒涡,1為方差的分布生成后除以當前層的神經(jīng)單元個數(shù)的算術(shù)平方根柴灯。或者初始為以0為均值费尽,以很小的值為標準差的正態(tài)分布的方式赠群。
中心極限定理:任何獨立隨機變量和極限分布都為正態(tài)分布。
6旱幼、正則化:
為防止出現(xiàn)過擬合問題查描,則進行正則化約束。方法是在損失函數(shù)中加入一個正則化項柏卤,以防止模型的規(guī)模過大所產(chǎn)生的過擬合冬三。
這個因子的含義是把整個模型中所有的權(quán)重w的絕對值加起來,lamda是懲罰因子缘缚,表示對這一項的重視程度勾笆。
L1正則化項即采用L1范數(shù),L2正則化就是所有權(quán)重的平方之和桥滨。
C0往往是經(jīng)驗風險匠襟,即誤差所帶來的代價,其收斂中心點記為黑色圓的圓心该园,其收斂中心為精確解,而藍色的圓中心為正則化項的收斂點帅韧,即結(jié)構(gòu)風險的最小化的收斂點里初,那么引入正則化項后,黑色大圓與藍色圓相切的切點即為最后模型的收斂點忽舟。
7双妨、其他超參數(shù):有一些值需要在算法訓練之前設(shè)定,無法通過學習獲得叮阅,這就需要經(jīng)驗獲得或者進行一定的預估刁品、嘗試。比如深度學習中的學習率浩姥,K-means算法中的簇數(shù)k.
8挑随、Dropout:方法的目的在于克制過擬合狀態(tài),由于網(wǎng)絡(luò)VC維很高勒叠,記憶能力很強兜挨,所以有些細枝末節(jié)的特征也會被網(wǎng)絡(luò)記憶,從而削弱網(wǎng)絡(luò)整體的泛化性能眯分,使得其沒有辦法在驗證集通過拌汇,僅有較好的訓練集分類性能。這時候選擇性的(隨機)臨時丟棄(關(guān)閉)一些節(jié)點弊决,可以降低VC維噪舀,減小過擬合風險。
Keep_prob=tf.placehoder(tf.float32)
H_fc1_drop=tf.nn.dropout(h_fc1,keep_prob)