一、激活函數
激活函數的主要作用是提供網絡的非線性建模能力。如果沒有激活函數,那麼該網絡僅能夠表達線性映射,此時即便有再多的隱藏層,其整個網絡跟單層神經網絡也是等價的。因此也可以認爲,只有加入了激活函數之後,深度神經網絡才具備了分層的非線性映射學習能力。 那麼激活函數應該具有什麼樣的性質呢?
可微性: 當優化方法是基於梯度的時候,這個性質是必須的。
單調性: 當激活函數是單調的時候,單層網絡能夠保證是凸函數。
1.1 sigmoid函數
標準的sigmoid函數取值範圍在(0,1)之間,即將x映射在(0,1)之間分佈。在實際運用中,可調整輸出值分佈的區間,如下公式所示:
則其分佈區間在:(0,A)之間;
1.2 softmax函數
將N維的向量值
爲什麼要採用這麼複雜的公式,不直接用如下線性的映射方法呢?
主要的原因是在深度學習時,大多采用反向傳播的方法,此時需要Loss函數N階可導,
注意:softmax只是一種映射的方法,其本身並不是Loss函數;
二、交叉熵
交叉熵可理解爲衡量預測概率P與直接概率q之間距離的一種方法,公式如下:
例如,對於3維數組的概率p爲[0.5,0.3,0,2],而真實分佈概率q爲[0.3,0.2,0.5],那麼p之間的距離是多少呢?我們不能通過簡單的加減法得到,而交叉熵函數則提供了一種計算方法,計算如下:
H(p,q) = -(0.5*log0.3+0.3*log0.2+0.1*log0.5)
若另有3維數組的概率p1爲[0.3,0.2,0.5],那麼其交叉熵爲
H(p,q) = -(0.3*log0.3+0.2*log0.2+0.5*log0.5)
在深度學習中,可以將交叉熵作爲Loss函數,目標減少p與q之間的距離;
三、優化器
3.1 梯度下降法GradientDescentOptimizer
原理:若函數f(x,y,z)可導,則(αf/αx0, αf/αy0, αf/αz0)爲函數在點(x0,y0,z0)中變化最快的方向。
對於深度學習,往往是求Loss函數是最小值,即函數f(x,y,z)的極小值點。在一定的區間內,越接近極值點時,梯度值越小,變化越慢,而越遠離極值點時,變化越快,從而可以實現Loss函數有方向的收斂。
3.2 AdagradOptimizer
原理:基於梯度下降法,對梯度值的選取進行了優化。優法方法如下:
式中:
由此公式可知:
優點:若前期
缺點:容易陷於局部最優,後期
3.3 MomentumOptimizerOptimizer
原理:基於梯度下降法,對於梯度值進行優化,優化方法如下:
式中:
衝量優化法會累積之前所有梯度值,根據衰減程序疊加入優化的步長
3.4 AdamOptimizer
原理:基於梯度下降法,對於梯度值進行優化,優化方法類似矩估計法:
3.5 RMSPropOptimizer
原理:同樣,也是基於梯度法,優化了梯度值
求梯度的平均和
再求隨機均根
將RMS均根做爲學習率的約束
3.6 優化器的總結
上述的總總優化器,最基本的方法基實就是採用梯度法,其他的優化器都是對梯度法的調整步長進行改進。至於改進的效果怎麼樣,具體問題具體分析。
4 學習率
在Tensorflow中,所有的優化器,都需設定學習率。學習率並非是多高深的東西,其實就是對所求得的梯度值進行權重的調整。
例:設梯度向量法所求得的梯度值爲
學習率就是上述的