計算機可以在眨眼間計算出復雜的數值計算趾诗。從理論上講,它們甚至具有比人腦更大的處理能力 個晶體管,對 神經元的切換時間為 秒恃泪,切換時間約為 秒郑兴。盡管如此,大腦幾乎在各個方面都勝過計算機贝乎。AI要做的是使計算機學習并基于該知識做出決策情连。人工智能正在使用的工具之一就是神經網絡。
神經網絡試圖模仿大腦所具有的一些能力览效,這些能力是計算機不具備的却舀。這些能力中的第一個是泛化能力。從理論上講朽肥,計算機在任何方面都應該勝過大腦禁筏,但是計算機是靜態(tài)的持钉,無法充分發(fā)揮其潛力衡招。另一方面,可以說每强,大腦是可重構的始腾,計算機無法做到這一點。
基本上空执,這就是人工神經網絡要完成的工作-通過復制神經系統的行為將腦功能引入計算機浪箭。
1. 神經網絡背后的生物學
神經系統的最小單位是神經元。這些是具有相似和簡單結構的單元辨绊。然而奶栖,通過持續(xù)的通信,這些單元獲得了巨大的處理能力门坷。簡單地說宣鄙,神經元只是開關。如果這些開關收到一定數量的輸入刺激默蚌,它們就會產生輸出信號冻晤。該輸出信號輸入到另一個神經元。
神經元是神經系統最基本的結構和功能單位绸吸。分為細胞體和突起兩部分鼻弧。
- 細胞體由細胞核、細胞膜锦茁、細胞質組成攘轩,具有聯絡和整合輸入信息并傳出信息的作用。
- 突起有樹突和軸突兩種码俩。
樹突短而分枝多撑刺,直接由細胞體擴張突出,形成樹枝狀握玛,其作用是接受其他神經元軸突傳來的沖動并傳給細胞體够傍。
軸突長而分枝少甫菠,為粗細均勻的細長突起,常起于軸丘冕屯,其作用是接受外來刺激寂诱,再由細胞體傳出。軸突除分出側枝外安聘,其末端形成樹枝樣的神經末梢痰洒。末梢分布于某些組織器官內,形成各種神經末梢裝置浴韭。感覺神經末梢形成各種感受器丘喻;運動神經末梢分布于骨骼肌肉,形成運動終極
2. 神經網絡
與其他算法不同念颈,具有深度學習功能的神經網絡無法直接為任務編程泉粉。相反,就像孩子的大腦正在發(fā)育一樣榴芳,他們需要學習信息嗡靡。學習策略分為三種方法:
- 監(jiān)督學習:這種學習策略是最簡單的,因為有一個標記的數據集窟感,計算機會經過該數據集讨彼,并且對該算法進行修改,直到可以處理該數據集以獲得所需的結果為止柿祈。
- 無監(jiān)督學習:在沒有可用于學習的標記數據集的情況下使用此策略哈误。神經網絡分析數據集,然后代價函數告訴神經網絡距目標有多遠躏嚎。然后蜜自,神經網絡進行調整以提高算法的準確性。
- 強化學習:在該算法中紧索,對神經網絡進行了強化以獲得正面結果袁辈,而對懲罰進行了負面評估,從而迫使神經網絡隨著時間的推移而學習珠漂。
2.1 神經網絡的基礎
神經網絡通常是分層組織的晚缩。層由多個互連的“節(jié)點”組成,這些節(jié)點包含“激活功能”媳危。模式通過“輸入層”呈現給網絡荞彼,該“輸入層”與一個或多個“隱藏層”進行通信,其中實際處理是通過加權“連接”系統完成的待笑。然后鸣皂,隱藏層鏈接到“輸出層”,在該輸出層輸出答案,如下圖所示寞缝。反向傳播(BPNN)“學習”是一個監(jiān)督過程癌压,它通過輸出的前向激活流在每個周期(即,每次向網絡提供新的輸入模式時)發(fā)生荆陆,以及權重調整的向后誤差傳播滩届。更簡單地說,當最初為神經網絡提供某種模式時被啼,它會隨機猜測其可能是什么帜消。然后,它查看其答案與實際答案有多遠浓体,并對其連接權重進行適當調整泡挺。更形象地講,該過程如下所示:
還要注意命浴,每個隱藏層節(jié)點中都有一個S型激活函數娄猫,它使網絡活動變化并幫助其穩(wěn)定。
反向傳播在解決方案的向量空間內沿著誤差表面的最陡向量向著“全局最小值”執(zhí)行梯度下降咳促。全局最小值可能是具有最小誤差的理論解稚新。誤差表面本身是雙曲面勘伺,但很少有“平滑”現象跪腹,如下圖所示。確實飞醉,在大多數問題中冲茸,解決方案空間是非常不規(guī)則的,有許多“坑”和“山”缅帘,這可能導致網絡陷入“局部最小值”轴术,而這并不是最佳的整體解決方案。由于先驗錯誤空間的性質是未知的钦无,因此神經網絡分析通常需要大量的單獨運行才能確定最佳解決方案逗栽。大多數學習規(guī)則都具有內置的數學術語來輔助此過程,從而控制學習的“速度”和“動量”失暂。學習速度實際上是當前解決方案與全局最小值之間的收斂速度彼宠。動量可幫助網絡克服錯誤表面中的障礙(局部最小值)并在全局最小值處或附近沉降下來。
一旦將神經網絡“訓練”到令人滿意的水平弟塞,就可以將其用作其他數據的分析工具凭峡。為此,用戶不再指定任何訓練運行决记,而是僅允許網絡以正向傳播模式工作钉疫。新的輸入呈現給輸入模式晤锹,在其中它們像經過訓練一樣被過濾并由中間層進行處理酣胀,但是牲迫,此時輸出被保留并且沒有反向傳播發(fā)生。前向傳播運行的輸出是數據的預測模型员萍,然后可以將其用于進一步的分析和解釋。
過度訓練神經網絡也是可能的,這意味著該網絡已被精確訓練為僅對一種類型的輸入做出響應癞志;這很像死記硬背。如果發(fā)生這種情況框产,則學習將不再發(fā)生凄杯,并且在神經網絡術語中將網絡稱為“祖母”。在實際應用中秉宿,這種情況不是很有用戒突,因為對于每種新的輸入,都需要一個單獨的祖母網絡描睦。
2.2 神經網絡的局限性
神經網絡分析有很多優(yōu)點和局限性膊存,要正確討論該主題,我們必須查看每種單獨的網絡類型忱叭,這對于一般性的討論不是必需的隔崎。但是,對于反向傳播網絡韵丑,潛在用戶應注意一些特定問題爵卒。
- 在某種意義上,反向傳播神經網絡(以及許多其他類型的網絡)是最終的“黑匣子”撵彻。除了定義網絡的總體架構钓株,并可能最初使用隨機數為網絡播種之外,用戶沒有其他作用陌僵,除了饋送網絡輸入并觀看網絡訓練并等待輸出轴合。實際上,已經有人說過反向傳播碗短,“您幾乎不知道自己在做什么”受葛。某些軟件免費提供的軟件包(NevProp,bp偎谁,Mactivation)確實允許用戶以固定的時間間隔對網絡“進行”采樣总滩,但學習本身會自行進行。
- 反向傳播網絡的訓練也往往比其他類型的網絡慢搭盾。如果在真正的并行計算機系統上運行咳秉,則此問題并不是真正的問題,但是鸯隅,如果在標準串行計算機(即單個SPARC澜建,Mac或PC)上模擬BPNN向挖,則培訓可能會花費一些時間。這是因為機器CPU必須分別計算每個節(jié)點和連接的功能炕舵,這在具有大量數據的超大型網絡中可能會出現問題何之。
2.3 相比傳統技術相比的優(yōu)勢?
根據應用程序的性質和內部數據模式的強度咽筋,通橙芡疲可以期望網絡訓練得很好。這適用于關系可能非常動態(tài)或非線性的問題奸攻。人工神經網絡為常規(guī)技術提供了一種分析替代方法蒜危,而傳統技術通常受到嚴格的正態(tài)性,線性睹耐,變量獨立性等假設的限制辐赞。由于人工神經網絡可以捕獲多種關系,因此它使用戶可以快速而輕松地對現象進行建模硝训。
3. 激活函數
激活函數是確定神經網絡輸出的數學方程式响委。該功能附加到網絡中的每個神經元,并根據每個神經元的輸入是否與模型的預測相關來確定是否應激活(“觸發(fā)”)該功能窖梁。激活功能還有助于將每個神經元的輸出標準化為1到0或-1到1之間的范圍赘风。
激活函數的另一個方面是,它們必須具有高效的計算能力纵刘,因為對于每個數據樣本而言邀窃,它們是在數千乃至數百萬個神經元中計算得出的。現代神經網絡使用一種稱為反向傳播的技術來訓練模型彰导,該模型在激活函數及其導數函數上增加了計算壓力
3.1 激活函數在神經網絡模型中的作用
在神經網絡中蛔翅,稱為輸入的數字數據點被饋送到輸入層的神經元中敲茄。每個神經元都有一個權重位谋,將輸入數字乘以權重就可以得到神經元的輸出,該輸出將傳輸到下一層堰燎。
激活函數是饋送當前神經元的輸入與其進入下一層的輸出之間的數學“門”掏父。它可以像根據規(guī)則或閾值打開和關閉神經元輸出的階躍函數一樣簡單。也可以是將輸入信號映射為神經網絡起作用所需的輸出信號的轉換秆剪。
神經網絡越來越多地使用非線性激活函數赊淑,它可以幫助網絡學習復雜數據,計算和學習幾乎代表問題的任何函數仅讽,并提供準確的預測陶缺。
3.2 三種激活函數類型
二進制步進函數(Binary Step Function)
二進制步進函數是基于閾值的激活函數。如果輸入值高于或低于某個閾值洁灵,則神經元被激活并將完全相同的信號發(fā)送到下一層饱岸。
步進功能的問題在于它不允許多值輸出掺出,例如,它不支持將輸入分類為幾種類別之一苫费。
線性激活函數
線性激活函數的形式為:
A = cx
它獲取輸入汤锨,然后乘以每個神經元的權重,然后創(chuàng)建與輸入成比例的輸出信號百框。從某種意義上說闲礼,線性函數優(yōu)于步進函數,因為它允許多個輸出铐维,而不僅僅是yes和no柬泽。
但是,線性激活函數有兩個主要問題:
1.不能使用反向傳播(梯度下降)來訓練模型-函數的導數是常數嫁蛇,并且與輸入X無關聂抢。因此,無法返回并了解輸入神經元中的權重可以提供更好的預測棠众。
2.神經網絡的所有層都折疊為一個具有線性激活函數琳疏,無論神經網絡中有多少層,最后一層都是第一層的線性函數(因為線性函數的線性組合仍然是線性函數)闸拿。因此空盼,線性激活函數將神經網絡變成一層。
具有線性激活函數的神經網絡就是線性回歸模型新荤。它具有有限的能力和能力來處理輸入數據的復雜度變化的參數揽趾。
非線性激活函數
現代的神經網絡模型使用非線性激活函數。它們使模型可以在網絡的輸入和輸出之間創(chuàng)建復雜的映射苛骨,這對于學習和建模復雜的數據(例如圖像篱瞎,視頻,音頻和非線性或高維數據集)至關重要痒芝。
只要激活函數是非線性的俐筋,幾乎可以想象的任何過程都可以表示為神經網絡中的函數計算。
非線性函數解決了線性激活函數的問題:
它們允許反向傳播严衬,因為它們具有與輸入有關的微分函數澄者。
它們允許“堆疊”多層神經元來創(chuàng)建一個深層的神經網絡。需要多個隱藏的神經元層请琳,以高精度地學習復雜的數據集粱挡。
3.3 非線性激活函數
Sigmoid / Logistic
sigmoid函數也叫Logistic函數,用于隱層神經元輸出俄精,取值范圍為(0,1)询筏,它可以將一個實數映射到(0,1)的區(qū)間,可以用來做二分類竖慧。在特征相差比較復雜或是相差不是特別大時效果比較好嫌套。Sigmoid作為激活函數有以下優(yōu)缺點:
優(yōu)點
- 平滑梯度局冰,易于求導,防止輸出值“跳躍”灌危。
- 輸出值介于0和1之間康二,對每個神經元的輸出進行標準化。
- 清晰的預測 -對于X大于2或低于-2的X勇蝙,趨向于將Y值(預測)帶到曲線的邊緣沫勿,非常接近1或0。這可以實現清晰的預測味混。
缺點
- 梯度消失 –對于非常高或非常低的X值产雹,預測幾乎沒有變化,從而導致梯度消失問題翁锡。這可能導致網絡拒絕進一步學習蔓挖,或者太慢而無法獲得準確的預測。
- 輸出中心不是零馆衔。
- 計算代價大
TanH / Hyperbolic Tangent
是雙曲函數中的一個瘟判,為雙曲正切。在數學中角溃,雙曲正切“tanh”是由基本雙曲函數雙曲正弦和雙曲余弦推導而來拷获。
函數:;定義域:减细,值域:匆瓜。是一個奇函數,其函數圖像為過原點并且穿越Ⅰ未蝌、Ⅲ象限的嚴格單調遞增曲線驮吱,其圖像被限制在兩水平漸近線和之間。
優(yōu)點
- 以零為中心-使具有強負萧吠,中性和強正值的輸入更容易建模左冬。否則就像Sigmoid函數。
缺點
- 像Sigmoid函數
ReLU (Rectified Linear Unit)
線性整流函數(Rectified Linear Unit, ReLU)怎憋,又稱修正線性單元又碌,是一種人工神經網絡中常用的激活函數(activation function),通常指代以斜坡函數及其變種為代表的非線性函數绊袋。
通常意義下,線性整流函數指代數學中的斜坡函數铸鹰,即
而在神經網絡中癌别,線性整流作為神經元的激活函數,定義了該神經元在線性變換之后的非線性輸出結果蹋笼。換言之展姐,對于進入神經元的來自上一層神經網絡的輸入向量躁垛,使用線性整流激活函數的神經元會輸出
至下一層神經元或作為整個神經網絡的輸出(取決現神經元在網絡結構中所處位置)
相比于傳統的神經網絡激活函數,諸如邏輯函數(Logistic sigmoid)和tanh等雙曲函數圾笨,線性整流函數有著以下幾方面的優(yōu)勢:
優(yōu)點
- 計算效率高-允許網絡快速收斂
- 非線性-盡管ReLU看起來像線性函數教馆,但它具有導數函數并允許反向傳播
- 仿生物學原理:相關大腦方面的研究表明生物神經元的信息編碼通常是比較分散及稀疏的。通常情況下擂达,大腦中在同一時間大概只有1%-4%的神經元處于活躍狀態(tài)土铺。使用線性修正以及正則化(regularization)可以對機器神經網絡中神經元的活躍度(即輸出為正值)進行調試;相比之下板鬓,邏輯函數在輸入為0時達到悲敷,即已經是半飽和的穩(wěn)定狀態(tài),不夠符合實際生物學對模擬神經網絡的期望俭令。不過需要指出的是后德,一般情況下,在一個使用修正線性單元(即線性整流)的神經網絡中大概有50%的神經元處于激活態(tài)抄腔。
- 更加有效率的梯度下降以及反向傳播:避免了梯度爆炸和梯度消失問題
- 簡化計算過程:沒有了其他復雜激活函數中諸如指數函數的影響瓢湃;同時活躍度的分散性使得神經網絡整體計算成本下降。
缺點
- 靜止ReLU問題 —當輸入接近零或為負時赫蛇,函數的梯度變?yōu)榱阆浼荆W絡無法執(zhí)行反向傳播,也無法學習棍掐。
Leaky ReLU
數學表達式:y = max(0, x) + leak*min(0,x) (leak是一個很小的常數藏雏,這樣保留了一些負軸的值,使得負軸的信息不會全部丟失)
優(yōu)點
- 防止靜止ReLU問題 -ReLU的這種變化在負區(qū)域具有小的正斜率作煌,因此即使對于負輸入值掘殴,它也確實可以進行反向傳播,否則像ReLU
缺點
- 結果不一致-Leaky ReLU無法為負輸入值提供一致的預測粟誓。
Parametric ReLU
如果奏寨,那么PReLU退化為ReLU;如果是一個很小的固定值(如)鹰服,則PReLU退化為Leaky ReLU(LReLU)病瞳。 有實驗證明,與ReLU相比悲酷,LReLU對最終的結果幾乎沒什么影響
優(yōu)點
- 允許學習負斜率-與Leaky ReLU不同套菜,此函數提供函數負數部分的斜率作為參數。因此设易,可以進行反向傳播并學習最合適的α值逗柴,否則像ReLU。
缺點
- 對于不同的問題可能會有所不同顿肺。
PReLU的幾點說明
(1) PReLU只增加了極少量的參數戏溺,也就意味著網絡的計算量以及過擬合的危險性都只增加了一點點渣蜗。特別的,當不同channels使用相同的時旷祸,參數就更少了耕拷。
(2) BP更新時,采用的是帶動量的更新方式托享,如下公式:
上式的兩個系數分別是動量和學習率骚烧。
需要特別注意的是:更新時不施加權重衰減(L2正則化),因為這會把很大程度上push到0嫌吠。事實上止潘,即使不加正則化,試驗中ai也很少有超過1的
ELU
指數線性單元(exponential linear unit)辫诅, 該激活函數由Djork等人提出,被證實有較高的噪聲魯棒性,同時能夠使得使得神經元的平均激活均值趨近為 0,同時對噪聲更具有魯棒性凭戴。由于需要計算指數,計算量較大。
SELU
SELU是給ELU乘上系數, 即
這個是大于1的炕矮,以前relu么夫,prelu,elu這些激活函數肤视,都是在負半軸坡度平緩档痪,這樣在activation的方差過大的時候可以讓它減小,防止了梯度爆炸邢滑,但是正半軸坡度簡單的設成了1腐螟。而selu的正半軸大于1,在方差過小的的時候可以讓它增大困后,同時防止了梯度消失乐纸。這樣激活函數就有一個不動點,網絡深了以后每一層的輸出都是均值為0方差為1摇予。
Softmax
歸一化指數函數汽绢,或Softmax函數,實際上是有限項離散概率分布的梯度對數歸一化侧戴。是邏輯函數的一種推廣宁昭。它能將一個含任意實數的K維向量z“壓縮”到另一個K維實向量σ(z)中,使得每一個元素的范圍都在(0,1)之間酗宋,并且所有元素的和為1积仗。該函數多于多分類問題中。
優(yōu)點
- 能夠處理其他激活函數中的一個類別的多個類別 -將每個類別的輸出歸一化在0和1之間本缠,并除以它們的總和斥扛,從而得出輸入值屬于特定類別的可能性。
- 對于輸出神經元很有用-Softmax通常僅用于輸出層丹锹,用于需要將輸入分類為多個類別的神經網絡稀颁。
Swish
β是個常數或可訓練的參數.Swish 具備無上界有下界、平滑楣黍、非單調的特性匾灶。
Swish是Google研究人員發(fā)現的一種新的自門激活功能。根據這篇論文租漂,它的性能優(yōu)于ReLU阶女。
在具有運行ReLU和Swish的相同模型的ImageNet上進行的實驗中,新功能將top -1分類精度提高了0.6-0.9%哩治。
當β = 0時,Swish變?yōu)榫€性函數 ,
為0或1. Swish變?yōu)镽eLU: f(x)=2max(0,x)
所以Swish函數可以看做是介于線性函數與ReLU函數之間的平滑函數.
GELU(Gaussian Error Linerar Units)
在神經網絡的建模過程中秃踩,模型很重要的性質就是非線性,同時為了模型泛化能力业筏,需要加入隨機正則憔杨,例如dropout(隨機置一些輸出為0,其實也是一種變相的隨機非線性激活), 而隨機正則與非線性激活是分開的兩個事情蒜胖, 而其實模型的輸入是由非線性激活與隨機正則兩者共同決定的消别。
GELUs正是在激活中引入了隨機正則的思想,是一種對神經元輸入的概率描述台谢,直觀上更符合自然的認識寻狂,同時實驗效果要比Relus與ELUs都要好。
GELUs其實是 dropout朋沮、zoneout蛇券、Relus的綜合,GELUs對于輸入乘以一個0,1組成的mask樊拓,而該mask的生成則是依概率隨機的依賴于輸入纠亚。假設輸入為X, mask為m,則m服從一個伯努利分布, 這么選擇是因為神經元的輸入趨向于正太分布骑脱,這么設定使得當輸入x減小的時候菜枷,輸入會有一個更高的概率被dropout掉,這樣的激活變換就會隨機依賴于輸入了叁丧。
數學表達如下:
這里是正太分布的概率函數啤誊,可以簡單采用正太分布, 要是覺得不刺激當然可以使用參數化的正太分布, 然后通過訓練得到。
對于假設為標準正太分布的GELU(x), 論文中提供了近似計算的數學公式拥娄,如下:
GELU vs Swish
GELU 與 Swish 激活函數(x · σ(βx))的函數形式和性質非常相像蚊锹,一個是固定系數 1.702,另一個是可變系數 β(可以是可訓練的參數稚瘾,也可以是通過搜索來確定的常數)牡昆,兩者的實際應用表現也相差不大。
Maxout
Maxout可以看做是在深度學習網絡中加入一層激活函數層,包含一個參數k.這一層相比ReLU,sigmoid等,其特殊之處在于增加了k個神經元,然后輸出激活值最大的值.
我們常見的隱含層節(jié)點輸出:
而在Maxout網絡中,其隱含層節(jié)點的輸出表達式為:
其中
以如下最簡單的多層感知器(MLP)為例:
假設網絡第i層有2個神經元x1丢烘、x2柱宦,第i+1層的神經元個數為1個.原本只有一層參數,將ReLU或sigmoid等激活函數替換掉,引入Maxout,將變成兩層參數,參數個數增為k倍.
優(yōu)點:
- Maxout的擬合能力非常強,可以擬合任意的凸函數播瞳。
- Maxout具有ReLU的所有優(yōu)點掸刊,線性、不飽和性赢乓。
- 同時沒有ReLU的一些缺點忧侧。如:神經元的死亡。
缺點:
- 從上面的激活函數公式中可以看出牌芋,每個神經元中有兩組(w,b)參數蚓炬,那么參數量就增加了一倍,這就導致了整體參數的數量激增躺屁。
與常規(guī)激活函數不同的是,它是一個可學習的分段線性函數.
然而任何一個凸函數肯夏,都可以由線性分段函數進行逼近近似。其實我們可以把以前所學到的激活函數:ReLU楼咳、abs激活函數熄捍,看成是分成兩段的線性函數,如下示意圖所示:
實驗結果表明Maxout與Dropout組合使用可以發(fā)揮比較好的效果母怜。
那么,前邊的兩種ReLU便是兩種Maxout,函數圖像為兩條直線的拼接,
4. 激活函數的導數或梯度
激活函數的導數(也稱為梯度)對于訓練神經網絡非常重要余耽。
使用稱為反向傳播的過程來訓練神經網絡,這是一種算法苹熏,該算法從模型的輸出追溯到生成該輸出所涉及的不同神經元碟贾,再追溯到應用于每個神經元的原始權重。反向傳播建議每個神經元的最佳權重轨域,這將導致最準確的預測袱耽。
梯度爆炸
由于sigmoid,ReLU等函數的梯度都在[0,1]以內,所以不會引發(fā)梯度爆炸問題干发。 而梯度爆炸需要采用梯度裁剪朱巨、BN、設置較小學習率等方式解決枉长。
5. 激活函數選擇
- 首先嘗試ReLU,速度快,但要注意訓練的狀態(tài).
- 如果ReLU效果欠佳,嘗試Leaky ReLU或Maxout等變種冀续。
- 嘗試tanh正切函數(以零點為中心,零點處梯度為1)
- sigmoid/tanh在RNN(LSTM、注意力機制等)結構中有所應用必峰,作為門控或者概率值.
- 在淺層神經網絡中洪唐,如不超過4層的,可選擇使用多種激勵函數吼蚁,沒有太大的影響凭需。
結論
神經網絡是一個有趣且不斷發(fā)展的話題。而且,這些網絡具有廣泛的應用范圍粒蜈。當前顺献,它們主要用于預測,分類和自動化薪伏,但是我們會發(fā)現越來越多的應用程序滚澜。至于破壞人類和道德價值貶低粗仓,那還是基于人類如何定義去發(fā)展嫁怀,我們作為人類本身是希望它能夠給我?guī)淼妮o助科技發(fā)展、社會進步借浊。我們不可對它過于吹捧塘淑,同時需要對它有一種重視的態(tài)度,因為在未知的事物面前我們可能使想的遠了蚂斤,也有可能我們目前看的還遠遠不夠存捺。
參考
Introduction to Artificial Neural Networks
A Basic Introduction To Neural Networks
7 Types of Neural Network Activation Functions: How to Choose?
Sigmoid, Softmax and their derivatives