1. 程式人生 > >機器學習:如何理解神經網路可以用來解決複雜的非線性函式

機器學習:如何理解神經網路可以用來解決複雜的非線性函式

我們知道神經網路裡面有很多的層,每一層又有很多的神經元。看起來就非常複雜,似乎輸入與輸出都很凌亂,對它的理解也很難。那麼我們可以從單個神經元入手,考慮單個神經元的輸入與輸出之間的關係,再擴充套件到整個神經網路。

這裡寫圖片描述

從圖中可以得到:

hθ(x)=g(30+20x1+20x2)
假如x1和x2的組合如下:
x1 x2 y
0 0 0
0 1 0
1 0 0
1 1 1

我們將x1和x2輸入到假設函式,可以得到:
g(-30+20*0+20*0)=g(-30)≈0
g(-30+20*0+20*1)=g(-10)≈0
g(-30+20*1+20*0)=g(-10)≈0
g(-30+20*1+20*1)=g(10)≈1
事實上,這就像是一個“與”操作。

那麼對於“或”操作也是類似的。“或”操作的θ可以如下選擇:

hθ(x)=g(10+20x1+20x2)
g(-10+20*0+20*0)=g(-10)≈0
g(-10+20*0+20*1)=g(10)≈1
g(-10+20*1+20*0)=g(10)≈1
g(-10+20*1+20*1)=g(30)≈1
可以看到,通過選擇不同的θ值,就可以變成“或”操作。

那麼對於複雜一點的操作,比如“異或”操作呢?

這裡寫圖片描述

“異或”操作使用兩層神經元。通過選擇如圖的引數,我們可以知道:
a(2)1神經元是一個“與”操作。a(2)2神經元是一個“非與”操作。a(3)1神經元是一個“或”操作。這三者的結合就可以得到“異或”操作了。

所以,經過一個神經元,其實就是在做一種判斷,像“與”,“或”這種簡單的邏輯。單個神經元就可以做到了,但是對於複雜的判斷,就不是一個神經元就可以搞定的。隨著複雜程度的增加,神經網路也就形成了。
其實這跟數位電路還有點像。以前學習數位電路的時候,也是從簡單的與非門,或門等簡單的邏輯電路學起,然後複雜的邏輯都是通過簡單邏輯的組合得到的。