一介紹
該章主要是介紹深層網(wǎng)絡(luò), 該章節(jié)主要按照損失函數(shù),優(yōu)化技巧倆部分進(jìn)行展開(kāi)。
二 損失函數(shù)
在損失函數(shù)介紹幾種經(jīng)典損失函數(shù):
1. 交叉熵:刻畫(huà)了倆個(gè)概率分布之間的距離,它是分類(lèi)問(wèn)題中使用比較廣的一種損失函數(shù),計(jì)算公式如下:
? ? ? ? ? ? ? ? ? ?
注意:H(p,q) != H(q, p)即交叉熵不滿(mǎn)足對(duì)稱(chēng)性,它刻畫(huà)的是通過(guò)概率分布q來(lái)表達(dá)概率分布p的困難程度。因?yàn)檎_答案是希望得到的結(jié)果,所以當(dāng)交叉熵作為損失函數(shù)時(shí),P代表的是正確答案, q代表的是預(yù)測(cè)值。交叉熵刻畫(huà)的是倆個(gè)概率分布的距離,也就是說(shuō)交叉熵值越小,倆個(gè)概率分布越接近。
tips: 因?yàn)閘og x,如果x小于等于0會(huì)報(bào)錯(cuò),所以在損失函數(shù)需要注意這種情況,在tensorlow中tf.clip_by_value可以將一個(gè)張量中的數(shù)值控制在一個(gè)范圍內(nèi)。
2. 自定義損失函數(shù):根據(jù)需要,需要自己定義損失函數(shù),比如:當(dāng)x>y時(shí):
tips:需要用到tf.greater()以及tf.where
tf.where 有三個(gè)參數(shù)。第一個(gè)為選擇條件依據(jù),當(dāng)選擇條件為true時(shí),tf.where函數(shù)會(huì)選擇第二個(gè)參數(shù)中的值,否則使用第三個(gè)參數(shù)中的值。
三神經(jīng)網(wǎng)絡(luò)優(yōu)化算法
3.1 學(xué)習(xí)率設(shè)置
學(xué)習(xí)率決定了參數(shù)更新的幅度。如果幅度過(guò)大,那么可能導(dǎo)致參數(shù)在極優(yōu)值的倆側(cè) 來(lái)回移動(dòng)。為了設(shè)置合理的學(xué)習(xí)率,在本書(shū)中提到了指數(shù)衰減法。tf.train.exponential_decay。原理是可以先使用較大的學(xué)習(xí)率來(lái)得到一個(gè)比較優(yōu)的解,然后隨著迭代的繼續(xù)逐步減小學(xué)習(xí)率。主要是事先的是:? ? ? ? ?learning_rate表示學(xué)習(xí)率, decay_rate表示衰減系數(shù),decay_steps為衰減速度? ? ? ? ? ? ? ? ? ? ? ?tips:函數(shù)還有一個(gè)參數(shù)staircase布爾型, 如果為 true表示在一個(gè)數(shù)據(jù)集內(nèi)學(xué)習(xí)率是一樣的,即decay_rate的指數(shù)取整
3.2 過(guò)擬合問(wèn)題
過(guò)擬合問(wèn)題表示在訓(xùn)練集訓(xùn)練的太好,將噪音數(shù)據(jù)都學(xué)出來(lái)了,在驗(yàn)證集上的表現(xiàn)卻太差。為了讓模型的結(jié)構(gòu)不至于負(fù)責(zé)。引入了正則化的概念。
L1:????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
L2:
? ?????????????????????????????????????????????
將正則化添加到損失函數(shù),可以有效避免過(guò)擬合的問(wèn)題。tensorflow中正則化的表達(dá)式為tf.contrib.layers.l2_regularizer(lambda),lambda為權(quán)重。
3.3 滑動(dòng)平均模型
在tensorflow提供tf.train.ExponentialMovingAverage來(lái)實(shí)現(xiàn)滑動(dòng)平均模型。 該函數(shù)就是給每一個(gè)變量維護(hù)一個(gè)影子變量。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????????????? ? ? ? ? ? tips: decay衰減率控制模型更新速度。如果函數(shù)參數(shù)中有step參數(shù),即模型迭代次數(shù),衰減率為:????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
? ? ? ? ? ? ??
具體代碼如下:
四 總結(jié)
該部分主要介紹了一些trick,可以提高模型的穩(wěn)定性,避免過(guò)擬合。