深度學習與神經網路學習筆記一

weixin_34249678發表於2017-07-07

參考文章
https://www.analyticsvidhya.com/blog/2016/03/introduction-deep-learning-fundamentals-neural-networks/?spm=5176.100239.blogcont117233.10.n2UTWC

概念那些就不解釋了,Google一下就有很多資料。

單一神經元節點如何工作

5112817-288676af44f241a5.jpg
Single NN Working

X1, X2, ...Xn是這個神經元的輸入,
X0時偏移量
W1,W2...Wn代表權重
從輸入資料X1, X2, ...Xn產生的輸出資料a的表示式是:

5112817-591b0a86ca0cdab7.png

f是一個啟用函式,可以是高斯函式,雙曲函式,也可以是簡單的線性函式
在這篇文章中,我用以下的啟用函式:
5112817-ad92a3d60b28a21a.png
啟用函式

使用單一節點實現布林運算

布林運算包括與,或,非,異或等等……

與運算:

另X0 = -1.5;輸出a = f(-1.5 + X1 + X2);得到真值表:

X1 X2 X1 & X2 -1.5 + X1 + X2 a
1 1 1 0.5 1
1 0 0 -0.5 0
0 1 0 -0.5 0
0 0 0 -1.5 0

這樣就用一個神經元節點成功地實現了與運算。注意,X0可以是[-2, -1)之間的任何數。

或運算:

另X0 = -0.5;輸出a = f(-0.5 + X1 + X2);得到真值表:

X1 X2 X1 & X2 -0.5 + X1 + X2 a
1 1 1 1.5 1
1 0 0 0.5 1
0 1 0 0.5 1
0 0 0 -0.5 0

同樣,用單一神經元節點成功實現了或運算。

非運算:

另X0 = 0;輸出a = f(1- 2X1);得到真值表:

X1 !X1 1- 2X1 a
1 0 -1 0
0 1 1 1

同樣,用單一神經元節點成功實現了非運算。

使用多個神經元節點實現同或門

同或門XNOR又稱異或非門,異或是指相同為0,不同為1,XNOR恰好相反
實現證明一個神經元節點不能實現同或門:
可以證明:
A XNOR B = NOT (A XOR B)
= NOT [ (A or B) and (!A OR !B) ]
= !(A OR B) OR !(!A OR !B)
=(!A and !B) OR (A and B)
利用表示式a = f(0.5-X1-X2)可以表示(!A and !B);
因此,用一個神經元節點表示(!A and !B),用另一個神經元節點表示(A and B),最後將這兩個神經元節點做或運算就可以表示XNOR,如圖所示:

5112817-f093e1995babe9b9.jpg
XNOR

a1: !A and !B
a2: A and B
a3: a1 or a2

相關文章