機器學習--多層感知機(2)


簡單的感知機的使用界限
上一節介紹了一個簡單的感知機的運作過程,如下圖:

 

由於輸出的是0和1,所以激活函數f(u)的結果也是0或者1。

雖然簡單的感知機可以解決一些問題,但是當涉及到比較復雜的問題的時候簡單的感知機明顯無法
做到我們想要的。比如XOR運算。

對於簡單的感知機的權重計算方法,在上一節已經介紹過了。那么具體到真實的數據化是怎么變化的呢。
我們用以下幾個例子具體說明。(為了方便說明只使用兩個輸入元x1,x2)

OR運算
首先,對於OR運算,簡單回顧一下定義

1 OR 1 = 1
1 OR 0 = 0
0 OR 1 = 0
0 OR 0 = 0

對於簡單的感知機,輸入值x1,x2我們假設存在x2 = -x1 + 1。按照感知機常用的表達式
w0 + w1x1 + w2x2 = 0,我們可以換算成-1 + x1 +x2 = 0。那么對於下圖中的左邊紅色點可以知道
-1 + x1 +x2 > 0 而右邊的藍色點 -1 + x1 +x2 < 0。也就是我們的到的權重為
w = (-1,1,1)時,我們就可以計算OR運算了。

對於AND運算也可以使用同樣的推導方式。

但是對於XOR運算就不一樣了。

XOR
首先看一下XOR的結果
1 XOR 1 = 0
1 XOR 0 = 1
0 XOR 1 = 1
0 XOR 0 = 0
感覺有點奇怪,用簡單的感知機好像無法計算吧。

多層感知機
x1 OXR x2的表達可以換成以下的計算方式:

x1 XOR x2 = (x1 OR x2) AND (x1 NAND x2)

對於上面這個運算,我們用感知機的圖展示出來是這個樣子的。

整理在一起就是這樣的一個表達了。

使用這種多層感知機就可以解決那些使用線性方程所無法解決的問題了。當然不止是XOR這種3層結構,
還可以使用4層,5層甚至更多。當然都是視問題而定。


當然對於這種XOR問題,我們基本看一眼就知道權重是什么,在實際的訓練時,我們只可能輸入數據和期待結果,對於中間層需要什么
數據是無法預測的,那么對於這樣的數據我們應該怎樣計算他的權重呢?
我們一會回答這個問題。

 多個分類結果的機器學習

到現在為止我們的內容都只是涉及到兩個指定結果的感知機,比如垃圾郵件與否。
在實際工作中,我們可能會根據需要把郵件分為:垃圾郵件,私人郵件,工作郵件等等。
在這樣的需求下多層感知機的存在也是非常必要的。

多層感知機
為了實現多層感知機(也就是通常所說的深度神經網絡)我們會用到BP算法(也就是反向傳播算法)。
為了理解這個算法還是需要一點數學基礎的,可以先去Google以下BP算法。
具體的過程先介紹一下(下一篇文章的內容):
  * 多城感知機的激活函數需要有微分
  * 有效的激活函數有很多
  * 簡單介紹激活函數和它的導數

以上


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM