學習神經網路,必然會遇到啟用函式,那麼:
本文嘗試對此進行**。
人工神經網路是仿照了大腦的神經網路系統來處理資料的,它由節點組成了層,通常乙個網路又有多個層(除了輸入層和輸出層之外,有多個隱藏層),每個節點就是乙個神經元。資訊從輸入層進入,傳到隱藏層(如圖所示),按照簡化的模型,輸入資料乘以權重(weight)加上乙個偏置(bias),然後應用啟用函式得到該神經元的輸出,再將此輸出傳給下一層的神經元。
此流程在各個層的神經元中不斷重複,直到最後一層輸出層。尋找隱藏層的權重引數和偏置的過程,就是常說的「學習」過程,其遵循的基本原則就是使得網路最終的輸出誤差最小化。
可以將啟用函式理解為控制當前層的神經元與下一層的神經元之間的資訊傳遞的「門」,它決定當前的神經元是否被啟用,可以用下圖幫助理解。
參考上面的圖示,如果沒有啟用函式,該神經元的輸入和輸出之間就是線性變換。線性函式雖然容易求解,但是它所能解決的問題有限,特別是針對複雜問題的時候。由此推廣,如果神經網路沒有啟用函式,它也就變成了線性回歸模型。所以,需要乙個啟用函式。
那麼,需要什麼樣的啟用函式呢?
啟用函式可以分為兩種型別:
圖示的是乙個線性啟用函式和乙個常函式,通過線性啟用函式所得到的輸出,相對於輸入而言,只是比例的變化。
從上面的函式示例可知,線性函式求導數之後得到了常數,也就是與輸入資料無關,這樣就無法通過反向傳播演算法更新權重引數。另外,如果用線性函式作為啟用函式,不論網路有多少層,最後的輸出與第一層的輸入都是線性關係。
現代神經網路使用的都是非線性啟用函式,這樣可以建立輸入與輸出鍵的複雜對映關係,網路也能通過「學習」來更新引數。並且,因為非線性函式的導數與輸入有關,從而可以通過向後傳播演算法計算梯度,也可以構建多層神經網路,以處理複雜問題。
sigmoid函式是s形函式,當以概率形式表示**值時,我們使用這個函式。
sigmoid函式的優點在於它可導,並且值域在0到1之間,使得神經元的輸出標準化。也正是這些優點,讓它成為了神經網路最早採用的啟用函式。它的不足也很明顯,首先就是在 x
xx 增加或減少到一定程度時,函式值變化很小,這就是所謂的「梯度消失」,致使網路的收斂速度變慢,進而耗費更多的計算資源。另外,輸出值不是以 0
00 為中心,而是 0.5
0.50.
5。tanh函式,即雙曲正切函式,也是「s」形,但是sigmoid函式僅冠名給了上面的那個函式。
tanh函式的最大優點是輸出值以 0
00 為中心,分屬為正數和負數兩大類別,另外此函式及其導數都是單調的,這使得它具有了sigmoid函式的優勢,又克服了某些不足。當然,tanh的不足與sigmoid一樣,「梯度消失」的問題都還存在,進而導致收斂速度變慢。
rectified linear unit,譯為「線性整流函式」或者「修正線性單元」,通常我們就直接稱為 relu 函式。
relu函式的明顯優點在於收斂速度快,當然,不要覺得它看起來是線性的(在大於 0
00 的部分),這個函式其實是非線性函式,它可導,因此可以用於反向傳播演算法。它的不足在於當輸入趨近於零或為負時,函式的梯度變為零,網路無法執行反向傳播,無法學習。
leaky relu函式式 relu函式的特殊化,就如同名稱中的 leaky(漏水)那樣,如圖所示,當 x
<
0x \lt 0
x<
0 時,其函式值不再等於 0
00,而是有乙個小小的坡度(水可以沿著斜坡流下去)。
leaky relu函式相對於relu函式而言,變化的主要是 x
<
0x \lt 0
x<
0 區域,其值不再是乙個固定數值,導數也不為0了,於是就可以應用於反向傳播演算法。也是因為這個修正,使得leaky relu函式不再針對輸入值小於零的時候有固定的值了,從而會導致正向傳播的時候,如果學習率設定的比較大,會出現較大數量的神經元未啟用現象,真乃「成也蕭何敗蕭何」。
leaky relu函式的這種思想,還可以進一步擴充套件,比如不將 x
xx 與常數項相乘,可以將其與超引數相乘,所得到的的函式稱為「引數relu」函式。
softmax函式比較適合作為多分類模型的啟用函式,一般會與交叉熵損失函式相配。
softmax函式的輸出結果是0到1之間的概率值,對應著輸入資料屬於某個類別的概率,因此適合於多分類模型。通常,softmax函式只應用於輸出層。
以上介紹的幾個不同的啟用函式,各有優缺點,那麼,在神經網路中,應該選擇哪個函式作為啟用函式呢?
首先要建立乙個觀念:不存在普遍適用各種神經網路的萬能的啟用函式。在選擇啟用函式的時候,要考慮很多條件限制:
所以,要結合具體問題以及啟用函式的特點,恰當地選擇。下面是一些經驗,供參考:
本文討論了啟用函式的問題,在神經網路中,上述討論都不是唯一確定的,比如啟用函式的型別,這裡羅列出來的是目前常見的,是不是在未來針對某個問題,研究者還會找到新的函式呢?完全有可能。至於如何選擇啟用函式,更是仁者見仁智者見智的了。
月薪3W的遊戲運營都做哪些工作?
隨著手遊市場的份額不斷擴大,遊戲行業的從業人員人數也逐年增多。大多數人的詢問運營的工作是幹什麼的時候,都無法給出乙個標準 統一的答案。運營的工作,會根據每家公司實際情況而定,大部分情況下囊括推廣 策劃 商務 設計等。今天溪谷軟體 vlcms.com 為大家詳細介紹一下遊戲運營,為初級遊戲運營補充一些...
3w併發mysql架構 高併發寫入mysql的設計
最近開發乙個專案。客戶端每隔10秒提交100行資料給服務端,服務端查重後寫入。客戶端約在幾萬左右,提交資料比較集中,不考慮讀資料的問題。現在的設計是 資料庫按客戶端進行分表。每個表的資料量不高。服務端獲得資料後,先插入redis佇列,然後在通過定時任務插入資料庫。問題是 1 服務端提供給客戶端的介面...
一道月薪3W的java面試題
1.智商測試開始 小明和小強都是張老師的學生,張老師的生日是某月某日,2人都不知道張老師的生日。2.3.生日是下列10組中一天 4.5.3月4日3月5日3月8日6月4日6月7日9月1日9月5日12月1日12月2日12月8日 6.7.張老師把月份告訴了小明,把日子告訴了小強,張老師問他們知道他的生日是...