嘗試理解神經網絡中的激活函數
激活函數引用: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
假定,(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
嘗試理解神經網絡中的激活函數