1. 程式人生 > >嘗試理解神經網絡中的激活函數

嘗試理解神經網絡中的激活函數

使用 相差 輸出 部分 規律 表示 tro 矩陣 識別

激活函數引用:https://www.cnblogs.com/ms-uap/p/9962978.html

首先,單個神經元是長這樣的:

技術分享圖片技術分享圖片

也就是,當A=σ(Z)=Z時,不使用激活函數的話,那麽,單個神經網絡,輸出只能是A = ΣWX + b

1. 從訓練數據來理解。(參考:https://blog.csdn.net/weixin_38275649/article/details/80340538)

假如我們的神經網絡,僅僅是一個單細胞的神經元

聯想我們的樣本,例如在做圖片識別的時候,通常來說,訓練數據:

x1,x2,x3,是某動物的概率。(例如:有毛發:1,有獠牙:1,毛色R:255,毛色G:109,毛色B:100,是豹子的概率:0.75)

顯然,如果拿A=σ(Z) = sigmoid(Z) = 0.75,看起來就很合適了(當然,強行的Z=0.75好像也沒什麽問題,且看第2點)

2. 從非線性組合的角度來理解。(參考:https://zhuanlan.zhihu.com/p/27661298)

在測繪中,通常我們擬合曲面的時候,有如下樣本數據:

x,y,z

目標是,知道範圍內的x,y,獲得z。

先說一下通常的做法(我認為這是建模與神經網絡訓練十分重要的區別):


首先,我們假定它有一個模型:Z = w0 + w1 * x + w2 * y + w3 * x * y + w4 * x2 + w5 * y2 + w6 * x 2* y + w7 * y2

* x + w8 * x3 + w9* y3 + ……(一般就w0~w9到此為止了)

假定,(w0~w9),其初始值為(w‘0~w‘9),也就是:(0.1,……0.1)

假如我們使用高斯牛頓叠代法來求解,我們不直接解w0~w9,令wi = w‘i +dwi,我們要解的是dwi ,也就是初始值的改正值:

原函數變為:Z = (w‘0 + dw0) + (w‘1+dw1) * x + (w‘2 + dw2) * y + (w‘3 + dw3 ) * x * y + ……;

也就是:Z = Z ‘ + dw0 + dw1 * x + dw2 * y + w3 * x * y + ……;

也就是:AW = (Z - Z‘)= b

W = [dw0,……dw9]T

而A的每一行,根據各個樣本,有An = [1,x,y,xy,x2,y2 ……]

解AW=b

根據最小二乘原理,解AW=b。

ATAW=ATb

W = (ATA)-1ATb,解得W = [dw0,……dw9]T

將解的結果,代回w‘‘i = w‘i +dwi , (w‘‘0~w‘‘9)作為新的初始值,繼續叠代解

直到:上次叠代的(Z - Z‘)2 和本次叠代的 (Z - Z‘)2 相差無幾。

***如有需要以離區域中心加權,可以引入權矩陣: W = (ATPA)-1ATPb,P通常是對角陣,意思是Z與Z之間高程是獨立觀測量,也就是說Zi ≠ f(Zj)。

***P對角上的數值可以為 di / ∑ d,d是離中心的距離 ; 在測繪上,可以表示為 1 / (Z測量誤差)2

***權值,代表我們對這個樣本的關註程度,樣本誤差越小,權值越大。

在曲面不太復雜,且有一定的規律的時候,這種方法通常效果很理想。因為其考慮了XY之間的非線性因素。


如果以“單細胞神元” , 且激活函數A=σ(Z)=Z時,我們頂多可以 Z = WX + b , W = [w1,w2] , X = [x,y]T

這樣完全只是一個空間平面而已。(w1* x + w2* y - z + b = 0)

進而,我們考慮:

A=σ(Z) = sigmoid(Z) ,參考https://zhuanlan.zhihu.com/p/27661298

sigmoid 泰勒展開部分,可以解決函數僅僅為線性函數的問題。但是:

sigmoid函數的值,只能是0~1之間,顯然,我們要的Z值,肯定不是這樣的(Z是根據地形,數值可能是2.xxx ,3.xxxx各種)

那麽,能解決這個問題,只能是多層神經網絡:https://www.cnblogs.com/ms-uap/p/10031484.html


嘗試理解神經網絡中的激活函數