--------------------------------
Author : ShawnDong
updateDate :2018.9.29
Blog : ShawnDong98.github.io
--------------------------------
激活函數(shù)
- 是什么裁眯?
目前主要的激活函數(shù)有以下幾種:
傳統(tǒng)神經(jīng)網(wǎng)絡(luò)中最常用的兩個(gè)激活函數(shù)為sigmoid和tanh穿稳,sigmoid被視為神經(jīng)網(wǎng)絡(luò)的額核心所在逢艘。
sigmoid:
非線性的sigmoid函數(shù)對(duì)中央?yún)^(qū)的信號(hào)增益較大它改,對(duì)兩側(cè)區(qū)的信號(hào)增益較小搔课,在信號(hào)的特征空間映射上,有很好的效果柬讨。
tanh:
由于sigmoid和tanh激活函數(shù)左右兩端在很大程度上接近極值,容易飽和袍啡,因此正在進(jìn)行計(jì)算時(shí)當(dāng)傳遞的數(shù)值過大或過小時(shí)會(huì)使神經(jīng)元梯度接近于0踩官,使得模型計(jì)算時(shí)會(huì)多次計(jì)算接近于0的梯度,花費(fèi)了學(xué)習(xí)時(shí)間卻使得權(quán)重沒有更新境输。
ReLu:
ReLu對(duì)于達(dá)到閾值的數(shù)據(jù)其激活力度隨著數(shù)值的加大而增大蔗牡,呈線性關(guān)系。
ReLu計(jì)算簡(jiǎn)單嗅剖,單純一個(gè)值的輸入輸出不需要進(jìn)行一系列的復(fù)雜計(jì)算辩越,從而獲得激活值。
ReLu進(jìn)行模型計(jì)算時(shí)黔攒,一部分神經(jīng)元在計(jì)算時(shí)如果有一個(gè)大的梯度經(jīng)過,則此神經(jīng)元的梯度會(huì)被強(qiáng)行設(shè)置為0,而在整個(gè)其后的訓(xùn)練過程中這個(gè)神經(jīng)元都不會(huì)被激活督惰,這會(huì)導(dǎo)致數(shù)據(jù)多樣化的丟失不傅,但是也能防止過擬合。
Relu當(dāng)輸入是負(fù)數(shù)的時(shí)候赏胚,ReLU是完全不被激活的访娶,這就表明一旦輸入到了負(fù)數(shù),ReLU就會(huì)死掉觉阅。這樣在前向傳播過程中崖疤,還不算什么問題,有的區(qū)域是敏感的留拾,有的是不敏感的戳晌。但是到了反向傳播過程中,輸入負(fù)數(shù)痴柔,梯度就會(huì)完全到0沦偎,這個(gè)和sigmod函數(shù)、tanh函數(shù)有一樣的問題咳蔚。
ELU:
ELU函數(shù)是針對(duì)ReLU函數(shù)的一個(gè)改進(jìn)型豪嚎,相比于ReLU函數(shù),在輸入為負(fù)數(shù)的情況下谈火,是有一定的輸出的侈询,而且這部分輸出還具有一定的抗干擾能力。這樣可以消除ReLU死掉的問題糯耍,不過還是有梯度飽和和指數(shù)運(yùn)算的問題扔字。
PReLu:
PReLU也是針對(duì)ReLU的一個(gè)改進(jìn)型,在負(fù)數(shù)區(qū)域內(nèi)温技,PReLU有一個(gè)很小的斜率革为,這樣也可以避免ReLU死掉的問題。相比于ELU舵鳞,PReLU在負(fù)數(shù)區(qū)域內(nèi)是線性運(yùn)算震檩,斜率雖然小,但是不會(huì)趨于0蜓堕,這算是一定的優(yōu)勢(shì)吧
- 為什么抛虏?
對(duì)于神經(jīng)網(wǎng)絡(luò)的擬合,其過程可以認(rèn)為是在不停地將相似的數(shù)據(jù)和特征疊加在一起套才,而激活函數(shù)就起到在這些疊加層之間進(jìn)行切割的作用迂猴,使其在真實(shí)的貼近過程中還有一個(gè)能夠被相互區(qū)分的能力
- 怎么用?
來(lái)自于莫凡老師的說(shuō)法背伴,激活函數(shù)就是將輸入”掰彎“沸毁,將神經(jīng)元的輸入映射到輸出端儡率。
卷積層
- 是什么?
卷積核是一個(gè)大小遠(yuǎn)遠(yuǎn)小于圖像的矩陣以清,對(duì)于圖像大矩陣中的每個(gè)像素,計(jì)算其周圍的像素和卷積核對(duì)應(yīng)位置的乘積崎逃,最后將將結(jié)果相加最終得到的值就是該像素的值掷倔,這樣就完成了一次卷積。
數(shù)字圖像處理卷積運(yùn)算主要有兩種思維:
稀疏矩陣:對(duì)于稀疏矩陣來(lái)說(shuō)个绍, 卷積網(wǎng)絡(luò)具有稀疏性勒葱, 卷積核的大小遠(yuǎn)遠(yuǎn)小于輸入數(shù)據(jù)矩陣的大小。這樣能夠在計(jì)算后獲取更少的參數(shù)特征巴柿,極大地減少了后續(xù)的計(jì)算量凛虽。
參數(shù)共享:在提取特征過程中,一個(gè)模型在多個(gè)參數(shù)之中使用相同的參數(shù)
- 為什么广恢?
卷積核中不同位置權(quán)重不同凯旋,因?yàn)闄?quán)重不同,在卷積核在和圖像的每個(gè)像素及其周圍像素相乘時(shí)钉迷,可以提取圖像的特征信息至非。
- 怎么用?
在tensorflow中對(duì)卷積復(fù)雜的數(shù)學(xué)運(yùn)算進(jìn)行了很好的封裝糠聪,調(diào)用函數(shù)
tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=None, name=None)
池化層
- 是什么荒椭?
計(jì)算圖像一個(gè)區(qū)域上的某個(gè)特定特征的平均值(或最大值)作為特征提取。這種聚合的操作叫做池化舰蟆,根據(jù)不同的池化方式叫做平均池化和最大池化趣惠。
- 為什么?
理論上卷積后得到圖像的特征身害,可以通過這些特征去訓(xùn)練分類器味悄,但是這樣會(huì)面臨計(jì)算量的挑戰(zhàn),池化使得特征具有低得多的維度题造。
- 怎么用傍菇?
TensorFlow中池化運(yùn)算的函數(shù)如下:
tf.nn.max_pool(value, ksize, strides, padding, name=None)
全連接層
- 是什么?
正如其名界赔,全連接層就起到將已經(jīng)訓(xùn)練得到的特征(也就是卷積池化后的輸出)和最終輸出(也就是最終分類)連接起來(lái)的作用丢习。
- 為什么?
全連接層將學(xué)習(xí)到的“分布式特征表示”映射到標(biāo)記空間的作用 (其實(shí)就是將已經(jīng)提取的特征淮悼,通過分類器咐低,進(jìn)行分類的過程(如softmax激勵(lì)函數(shù)))
- 怎么用?
TensorFlow中使用分類器進(jìn)行分類的過程其實(shí)也就是全連接的過程
tf.nn.softmax()
如何防止過擬合
- 是什么袜腥?
在TensorFlow訓(xùn)練的過程中见擦,因?yàn)槿M合偏離程度較大的點(diǎn)钉汗,導(dǎo)致曲線變形。
- 為什么鲤屡?
- 訓(xùn)練集的數(shù)量級(jí)和模型的復(fù)雜度不匹配损痰,訓(xùn)練集的數(shù)量級(jí)要小于模型的復(fù)雜度。
- 訓(xùn)練集和測(cè)試集特征分布不一致酒来;
- 樣本里的噪音數(shù)據(jù)干擾過大卢未,大到模型過分記住了噪音特征,反而忽略了真實(shí)的輸入輸出間的關(guān)系堰汉;
- 權(quán)值學(xué)習(xí)迭代次數(shù)足夠多(Overtraining)辽社,擬合了訓(xùn)練數(shù)據(jù)中的噪聲和訓(xùn)練樣例中沒有代表性的特征
- 怎么用?
1翘鸭、使用Dropout滴铅,訓(xùn)練過程按一定幾率關(guān)閉或忽略某些層的節(jié)點(diǎn)。
2就乓、權(quán)重衰減(正則化):將權(quán)值大小加入到損失函數(shù)中
此外還有獲取更多數(shù)據(jù)集汉匙,采用合適模型,Early Stopping生蚁, 可變化的學(xué)習(xí)率盹兢, 使用Batch_Normalization,交叉驗(yàn)證守伸,PCA特征提取绎秒,增加各種噪音等方式來(lái)降低過擬合。