1. 程式人生 > >感知機(perceptron)--最基本的神經網路演算法模型

感知機(perceptron)--最基本的神經網路演算法模型

人工神經網路(ANN's)是人腦的一個模型

  人工神經網路受到人類中樞神經系統的啟發。就像是人腦生物結構的對應物一樣,ANN's的是建立在簡單的訊號處理元件上,這些元件連線在一起形成一個大的網格。

神經網路可以做什麼?

識別面孔,

識別語音,

讀你的筆跡(我的也許不是),

翻譯文字,

玩遊戲(通常是棋盤遊戲或紙牌遊戲)

控制自動車輛和機器人。

當然還有更多的事情!

神經網路的拓撲結構

  將神經網路的節點編織在一起的方法有很多種,每一種方式都會產生一種或多或少的複雜行為。可能最簡單的拓撲結構是前饋網路。訊號只向一個方向流動;訊號路徑中沒有任何迴圈。

                        

  通常,ANN's的結構是分層的。

輸入層接收輸入訊號並將其傳遞到下一層,即所謂的“隱藏層”。(實際上,在神經網路中可能有多個隱藏層。)最後是傳遞結果的輸出層。

神經網路必須學習

  與傳統的演算法不同,神經網路不能被“程式設計”或“配置”以達到預期的效果。就像人類的大腦一樣,他們必須學會如何完成一項任務。大致說來,有三種學習策略:

監督學習

  最簡單的方法。如果存在已知結果的(足夠大)的測試資料集,則可以使用。然後學習就像這樣:處理一個數據集。將輸出與已知結果進行比較。調整網路並重復。這就是我們要用到的學習策略。

無監督學習

  如果沒有現成的測試資料,並且有可能從所需的行為中得出某種成本函式,有用的話。成本函式就會告訴神經網路它離目標有多遠。

在實際資料處理過程中,網路可以動態調整其引數。

強化學習

  “胡蘿蔔加大棒”的方法。如果神經網路產生連續動作,就可以使用。跟著胡蘿蔔在你的鼻子前面!如果你走錯路——哎喲。隨著時間的推移,網路學習更喜歡正確的行動,避免錯誤的行動。

神經元:神經網路的構建塊

  任何人工神經網路的基本成分都是人造神經元。它們不僅以它們的生物副本命名,而且還以我們大腦中的神經元的行為為模型。

  就像一個生物神經元有樹突接收訊號,一個細胞體處理它們,一個軸突向其他神經元傳送訊號,這個人工神經元有許多輸入通道,一個處理站,一個可以發散給多個其他的人工神經元的輸出。

  

一個人工神經元

  讓我們進一步放大。神經元如何處理它的輸入?

你可能會驚訝地發現神經元內部的計算是多麼簡單。我們可以確定三個處理步驟:

1。每個輸入都按比例放大或縮小。

當一個訊號輸入時,它會乘上分配給特定輸入的權重值。也就是說,如果一個神經元有三個輸入,那麼它就會分別分配三個可以調整的權重。在學習階段,神經網路可以根據最後一個測試結果的誤差來調整權重。

2。所有的訊號都可以加起來。

在下一步中,修改的輸入訊號可以歸結為一個單一的值。在此步驟中,還添加了一個偏移量。這種偏移被稱為偏差。在學習階段,神經網路也會調整偏差。

這就是奇蹟發生的地方!一開始,所有的神經元都有隨機的權重和偏差。但在每次學習迭代之後,權重和偏差都會逐漸調節,這樣下一個結果就會更接近期望的輸出。通過這種方式,神經網路逐漸達到學習模式。

3所示。啟用

最後,神經元的計算結果轉化為輸出訊號。這是通過將結果反饋到啟用函式(也稱為傳遞函式)來完成的。

感知機

  啟用函式最基本的形式是一個簡單的二元函式,它只有兩個可能的結果。儘管看起來很簡單,函式有一個相當複雜的名稱:亥維賽階躍函式。如果輸入為正或零,則該函式返回1,而對於任何負輸入,則返回0。一個神經元的啟用函式是像這樣簡單二元函式就叫做一個感知器。


我們能用一個感知器做一些有用的事情嗎?

如果你仔細想想,就會發現,感知器消耗了大量的資訊,而輸出很少,只有0或1。這怎麼可能有用呢?

有一類問題是單個感知器可以解決的。將輸入向量視為一個點的座標。對於一個有n個元素的向量,這個點會在n維空間中存在。為了使生命(和下面的程式碼)更容易,讓我們假設一個二維平面。像一張紙。

進一步考慮,我們在這個平面上畫了一些隨機點,我們把它們分成兩組,在紙上畫一條直線:這條線把點分成兩組,一個在上面,一個在直線下面。(這兩組被稱為線性可分。)

一個感知器,就像它可能出現的那樣簡單而簡單,它能夠學習這條線的位置,當它完成學習時,它可以判斷一個給定的點是在這條線的上面還是下面。

想象一下:一個感知器已經可以學習如何對點進行分類!

程式碼:用於分類座標點的感知器。

感知機

1.隨機的權重和偏差

2.根據權重和偏差得出結果

3.將結果放入啟用函式中輸出最終結果

訓練

1.隨機的座標

2.放入感知機中得出結果和實際結果比較

3.將結果的差值回饋給感知機修改權重和偏差