tft每日頭條

 > 生活

 > 人工智能與編程知識點歸納

人工智能與編程知識點歸納

生活 更新时间:2024-08-08 22:18:41
一、激活函數作用

激活函數的主要作用是提供網絡的非線性建模能力。如果沒有激活函數,那麼該網絡僅能夠表達線性映射,此時即便有再多的隐藏層,其整個網絡跟單層神經網絡也是等價的。因此也可以認為,隻有加入了激活函數之後,深度神經網絡才具備了分層的非線性映射學習能力。

回到頂部

二、激活函數所具有的幾個性質

非線性: 當激活函數是線性的時候,一個兩層的神經網絡就可以逼近基本上所有的函數了。但是,如果激活函數是恒等激活函數的時候(即f(x)=x),就不滿足這個性質了,而且如果MLP(Multi-Layer Perceptron,即多層感知器)使用的是恒等激活函數,那麼其實整個網絡跟單層神經網絡是等價的。

可微性: 當優化方法是基于梯度的時候,這個性質是必須的。

單調性: 當激活函數是單調的時候,單層網絡能夠保證是凸函數。

f(x)≈x: 當激活函數滿足這個性質的時候,如果參數的初始化是random的很小的值,那麼神經網絡的訓練将會很高效;如果不滿足這個性質,那麼就需要很用心地去設置初始值。

輸出值的範圍: 當激活函數輸出值是 有限 的時候,基于梯度的優化方法會更加穩定,因為特征的表示受有限權值的影響更顯著;當激活函數的輸出是 無限 的時候,模型的訓練會更加高效,不過在這種情況下,一般需要更小的learning rate。

回到頂部

三、四種激活函數3.1:Sigmoid

Sigmoid 因其在 logistic 回歸中的重要地位而被人熟知,值域在 0 到 1 之間。Logistic Sigmoid(或者按通常的叫法,Sigmoid)激活函數給神經網絡引進了概率的概念。它的導數是非零的,并且很容易計算(是其初始輸出的函數)。然而,在分類任務中,sigmoid 正逐漸被 Tanh 函數取代作為标準的激活函數,因為後者為奇函數(關于原點對稱)。

人工智能與編程知識點歸納(人工智能學習基礎)1

人工智能與編程知識點歸納(人工智能學習基礎)2

優點:

  1. Sigmoid函數的輸出映射在(0,1)之間,單調連續,輸出範圍有限,如果是非常大的負數,那麼輸出就是0;如果是非常大的正數,輸出就是1。優化穩定,可以用作輸出層。
  2. 求導容易。
  3. sigmoid 函數曾經被使用的很多,不過近年來,用它的人越來越少了。

缺點:

  1. 容易飽和和終止梯度傳遞("死神經元");
  2. sigmoid函數的輸出沒有0中心化。
3.2:雙曲正切函數(Tanh)

在分類任務中,雙曲正切函數(Tanh)逐漸取代 Sigmoid 函數作為标準的激活函數,其具有很多神經網絡所鐘愛的特征。它是完全可微分的,反對稱,對稱中心在原點。為了解決學習緩慢和/或梯度消失問題,可以使用這個函數的更加平緩的變體(log-log、softsign、symmetrical sigmoid 等等)。

人工智能與編程知識點歸納(人工智能學習基礎)3

人工智能與編程知識點歸納(人工智能學習基礎)4

優點

  1. 比Sigmoid函數收斂速度更快。
  2. 相比Sigmoid函數,其輸出以0為中心。

缺點

還是沒有改變Sigmoid函數的最大問題——由于飽和性産生的梯度消失。

3.3:修正線性單元(Rectified linear unit,ReLU)

是神經網絡中最常用的激活函數。它保留了 step 函數的生物學啟發(隻有輸入超出阈值時神經元才激活),不過當輸入為正的時候,導數不為零,從而允許基于梯度的學習(盡管在 x=0 的時候,導數是未定義的)。使用這個函數能使計算變得很快,因為無論是函數還是其導數都不包含複雜的數學運算。然而,當輸入為負值的時候,ReLU 的學習速度可能會變得很慢,甚至使神經元直接無效,因為此時輸入小于零而梯度為零,從而其權重無法得到更新,在剩下的訓練過程中會一直保持靜默。

人工智能與編程知識點歸納(人工智能學習基礎)5

人工智能與編程知識點歸納(人工智能學習基礎)6

優點

1.相比起Sigmoid和tanh,ReLU在SGD中能夠快速收斂,這是因為它線性(linear)、非飽和(non-saturating)的形式。

2.Sigmoid和tanh涉及了很多很expensive的操作(比如指數),ReLU可以更加簡單地實現。

3.有效緩解了梯度消失的問題。

4.在沒有無監督預訓練的時候也能有較好的表現。

缺點

  1. 沒有邊界,可以使用變種ReLU: min(max(0,x), 6)
  2. 比較脆弱,比較容易陷入出現"死神經元"的情況

• 解決方案: 較小的學習率

3.4:Leaky ReLU

經典(以及廣泛使用的)ReLU 激活函數的變體,帶洩露修正線性單元(Leaky ReLU)的輸出對負值輸入有很小的坡度。由于導數總是不為零,這能減少靜默神經元的出現,允許基于梯度的學習(雖然會很慢)。

人工智能與編程知識點歸納(人工智能學習基礎)7

優缺點:人工神經網絡中為什麼ReLu要好過于tanh和sigmoid function?

1.采用sigmoid等函數,算激活函數時(指數運算),計算量大,反向傳播求誤差梯度時,求導涉及除法和指數運算,計算量相對大,而采用Relu激活函數,整個過程的計算量節省很多。

2.對于深層網絡,sigmoid函數反向傳播時,很容易就會出現梯度消失的情況(在sigmoid接近飽和區時,變換太緩慢,導數趨于0,這種情況會造成信息丢失),這種現象稱為飽和,從而無法完成深層網絡的訓練。而ReLU就不會有飽和傾向,不會有特别小的梯度出現。

3.Relu會使一部分神經元的輸出為0,這樣就造成了網絡的稀疏性,并且減少了參數的相互依存關系,緩解了過拟合問題的發生(以及一些人的生物解釋balabala)。當然現在也有一些對relu的改進,比如prelu,random relu等,在不同的數據集上會有一些訓練速度上或者準确率上的改進。

一般來說,隐藏層最好使用 ReLU 神經元。對于分類任務,Softmax 通常是更好的選擇;對于回歸問題,最好使用 Sigmoid 函數或雙曲正切函數。

如果使用 ReLU,要小心設置 learning rate,注意不要讓網絡出現很多 "dead" 神經元,如果不好解決,可以試試 Leaky ReLU、PReLU 或者 Maxout.

比如GAN就是使用這個函數。

回到頂部

四、其它激活函數:

ELU激活函數:

指數線性激活函數,同樣屬于對ReLU激活函數的x≤0部分的轉換進行指數修正,而不是和Leaky ReLU中的線性修正

人工智能與編程知識點歸納(人工智能學習基礎)8

人工智能與編程知識點歸納(人工智能學習基礎)9

五、激勵層建議:
  1. CNN盡量不要使用sigmoid,如果要使用,建議隻在全連接層使用
  2. 首先使用ReLU,因為疊代速度快,但是有可能效果不佳
  3. 如果使用ReLU失效的情況下,考慮使用Leaky ReLu或者Maxout,此時一般情況都可以解決啦
  4. tanh激活函數在某些情況下有比較好的效果,但是應用場景比較少
附加:

Softmax:

做過多分類任務的同學一定都知道softmax函數。softmax函數,又稱歸一化指數函數。它是二分類函數sigmoid在多分類上的推廣,目的是将多分類的結果以概率的形式展現出來。下圖展示了softmax的計算方法:

人工智能與編程知識點歸納(人工智能學習基礎)10

下面為大家解釋一下為什麼softmax是這種形式。我們知道指數函數的值域取值範圍是零到正無窮。與概率取值相似的地方是它們都是非負實數。那麼我們可以

1)利用指數函數将多分類結果映射到零到正無窮;

2)然後進行歸一化處理,便得到了近似的概率。

總結一下softmax如何将多分類輸出轉換為概率,可以分為兩步:

1)分子:通過指數函數,将實數輸出映射到零到正無窮。

2)分母:将所有結果相加,進行歸一化。

下圖為斯坦福大學CS224n課程中對softmax的解釋:

人工智能與編程知識點歸納(人工智能學習基礎)11

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved