【Deep Learning】深度学习中的函数类型
神經(jīng)網(wǎng)絡(luò)包含四類函數(shù):組合函數(shù)(Combination Function)、激活函數(shù)(Activation Function)、誤差函數(shù)(Error Function)、目標(biāo)函數(shù)(Object Function)。
1、組合函數(shù)
在神經(jīng)網(wǎng)絡(luò)中,輸入層之后的網(wǎng)絡(luò),每個(gè)神經(jīng)元的功能是將上一層產(chǎn)生的向量通過自身的函數(shù)生成一個(gè)標(biāo)量值,這個(gè)標(biāo)量值就是下一層神經(jīng)元的網(wǎng)絡(luò)輸入變量。組合函數(shù)是網(wǎng)絡(luò)中間將向量映射為標(biāo)量的函數(shù),即∑。
常見的組合函數(shù)包括線性組合函數(shù)和基于歐氏空間距離的函數(shù)。
2、激活函數(shù)
神經(jīng)元將一維向量的網(wǎng)絡(luò)輸入變量通過一個(gè)函數(shù)映射為另外一個(gè)一維向量的數(shù)值,這個(gè)函數(shù)稱為激活函數(shù),其產(chǎn)生的值稱為激活狀態(tài)。除輸出層外,激活狀態(tài)的值通過神經(jīng)網(wǎng)絡(luò)的鏈接輸入到下一層的一個(gè)或者多個(gè)神經(jīng)元里面。
激活函數(shù)將一個(gè)實(shí)數(shù)域上的值映射到一個(gè)有限域中,也稱為坍縮函數(shù),如常見的tanh或logistic函數(shù),都將無限的實(shí)數(shù)域上的數(shù)值壓縮到(-1,1)或(0,1)之間的有限域中。如果這個(gè)激活函數(shù)不做任何變換,則被成為Identity或者線性激活函數(shù)。
激活函數(shù)的主要作用是為隱含層引入非線性。一個(gè)只有線性關(guān)系隱含層的多層神經(jīng)網(wǎng)絡(luò)不會(huì)比一般的只包含輸入層和輸出層的兩層神經(jīng)網(wǎng)絡(luò)更強(qiáng)大,因?yàn)榫€性函數(shù)的函數(shù)仍然是一個(gè)線性函數(shù)。但是加入非線性之后,多層神經(jīng)網(wǎng)絡(luò)的預(yù)測(cè)能力就得到顯著提高。
對(duì)于后向傳播算法,激活函數(shù)必須可微,而且如果這個(gè)函數(shù)是在有限域中的話,則效果更好,因此像logistic、tanh、高斯函數(shù)是比較常見選擇,這類函數(shù)也統(tǒng)稱為sigmoid函數(shù)。類似于tanh或arctan這樣包含正和負(fù)的值域的函數(shù)通常收斂速度更快,因?yàn)閿?shù)值條件(conditioning number)更好。
早起的理論認(rèn)為sigmoid函數(shù)通常比threshold激活函數(shù)(如ReLU等激活函數(shù))好。理由是因?yàn)椴捎胻hreshod激活函數(shù)后誤差函數(shù)是逐級(jí)常數(shù)(stepwise constant),從而不能使用高效的后向傳播算法來計(jì)算一階導(dǎo)數(shù)(gradient)。即使不采用梯度算法,而是采用如simulated annealing或基因算法,sigmoid激活函數(shù)也被認(rèn)為是一個(gè)較好的選擇;因?yàn)閟igmoid函數(shù)是連續(xù)可微的,參數(shù)的微小變化就會(huì)帶來輸出的變化,有助于判斷參數(shù)的變動(dòng)是否有利于最終目標(biāo)函數(shù)的優(yōu)化。如果采用threshold激活函數(shù),參數(shù)的微小變化并不能在輸出產(chǎn)生變動(dòng),因此算法收斂會(huì)慢很多。
但sigmoid函數(shù)存在梯度消亡(gradient vanishing)問題(Sepp Hochreiter的1991年碩士 論文提出)。梯度消亡是指梯度(誤差的信號(hào))隨著隱層數(shù)的增加成指數(shù)減小。這是因?yàn)樵诤笙騻鞑ニ惴ㄖ?#xff0c;對(duì)梯度的計(jì)算使用鏈?zhǔn)椒▌t,因此在第n層時(shí)要將前面各層的梯度都相乘,但由于sigmoid函數(shù)的值域在(-1,1)或(0,1)之間,因此多個(gè)很小的數(shù)相乘以后第n層的梯度會(huì)接近于0,造成模型訓(xùn)練的困難。而threshold激活函數(shù)的值域不在(-1,1)之間,如ReLU的取值范圍是[0,+inf),因此沒有這樣的問題。
另外,如Hard Max這樣的threshold激活函數(shù):max(0,x),可以在隱藏層中引入稀疏性(sparsity),也有助于模型的訓(xùn)練。
對(duì)于輸出層,應(yīng)盡量選擇適合因變量分布的激活函數(shù):
1)對(duì)于只有0、1取值的雙值因變量,logistic是較好的選擇;
2)對(duì)于有多個(gè)取值的離散因變量,如0到9數(shù)字的識(shí)別,softmax激活函數(shù)是logistic激活函數(shù)的自然衍生;
3)對(duì)于有有限值域的連續(xù)因變量,logistic或tanh激活函數(shù)都可用,但要將因變量的值域伸縮到logistic或tanh對(duì)應(yīng)的值域中;
4)如果因變量取值為正,但沒有上限,則指數(shù)函數(shù)是一個(gè)較好的選擇;
5)如因變量沒有有限值域,或者雖然是有限值域但邊界未知,可采用線性函數(shù)作為激活函數(shù)。
輸出層的激活函數(shù)選擇,和對(duì)應(yīng)的統(tǒng)計(jì)學(xué)模型應(yīng)用有類似地方,可理解為廣義線性模型中的聯(lián)結(jié)函數(shù)(Link Function)的功能。
3、誤差函數(shù)
監(jiān)督學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò)需要一個(gè)函數(shù)來測(cè)度模型輸出值p和真實(shí)的因變量值y之間的差異,即殘差或誤差。衡量模型質(zhì)量是誤差偏離0的相對(duì)值,即誤差函數(shù)的值越接近于0,模型性能越好。
誤差函數(shù)也稱為損失函數(shù),常用的函數(shù)如下:
1)均方差MSE:用在實(shí)數(shù)值域連續(xù)變量的回歸問題上,并且對(duì)于殘差較大的情況給予更多的權(quán)重;
2)平均絕對(duì)差MAE:和均方差應(yīng)用場(chǎng)景一樣,在時(shí)間序列預(yù)測(cè)問題中也常用,MAE每個(gè)誤差點(diǎn)對(duì)總體誤差的貢獻(xiàn)與其誤差絕對(duì)值成線性比例關(guān)系,而MSE沒有這特特性;
3)交叉熵?fù)p失(cross-entropy):也叫做對(duì)數(shù)損失函數(shù),是針對(duì)分類模型的性能比較設(shè)計(jì)的,用于二分類或多分類,即二分類交叉熵和多分類交叉熵,交叉熵可解釋為映射到最可能的類別的概率的對(duì)數(shù),因此當(dāng)預(yù)測(cè)值的分布和實(shí)際因變量的分布盡可能一致時(shí),交叉熵最小。
4、目標(biāo)函數(shù)
目標(biāo)函數(shù)在訓(xùn)練階段最小化的對(duì)象。神經(jīng)網(wǎng)絡(luò)的訓(xùn)練表現(xiàn)為在最小化訓(xùn)練集上估計(jì)值和真實(shí)值之間的誤差。如采用正則化來規(guī)范模型,減少過擬合情況,則目標(biāo)函數(shù)是誤差函數(shù)和正則函數(shù)的和。如采用權(quán)重衰減(weight decay)方法,正則函數(shù)為權(quán)重的平方和,和嶺回歸(ridge regression)使用的技巧一樣。如運(yùn)用貝葉斯思路,可將權(quán)重的先驗(yàn)分布的對(duì)數(shù)作為正則項(xiàng)。如不采用正則項(xiàng),則目標(biāo)函數(shù)和總的或平均誤差函數(shù)一樣。
總結(jié)
以上是生活随笔為你收集整理的【Deep Learning】深度学习中的函数类型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SVM-SMO算法python实现
- 下一篇: NeurIPS 2019最热趋势-贝叶斯