感知器演算法與神經網路

2021-07-23 21:57:06 字數 3468 閱讀 2793

感知器作為人工神經網路中最基本的單元,有多個輸入和乙個輸出組成。雖然我們的目的是學習很多神經單元互連的網路,但是我們還是需要先對單個的神經單元進行研究。

感知器演算法的主要流程:

首先得到n個輸入,再將每個輸入值加權,然後判斷感知器輸入的加權和最否達到某一閥值v,若達到,則通過sign函式輸出1,否則輸出-1。

為了統一表示式,我們將上面的閥值v設為-w0,新增變數x0=1,這樣就可以使用w0x0+w1x1+w2x2+…+wnxn>0來代替上面的w1x1+w2x2+…+wnxn>v。於是有:

從上面的公式可知,當權值向量確定時,就可以利用感知器來做分類。

那麼我們如何獲得感知器的權值呢?這需要根據訓練集是否可分來採用不同的方法:

1、訓練集線性可分時 --> 感知器訓練法則

為了得到可接受的權值,通常從隨機的權值開始,然後利用訓練集反覆訓練權值,最後得到能夠正確分類所有樣例的權向量。

具體演算法過程如下:

a)初始化權向量w=(w0,w1,…,wn),將權向量的每個值賦乙個隨機值。

b)對於每個訓練樣例,首先計算其**輸出:

c)當**值不等於真實值時則利用如下公式修改權向量:

各符號含義:

d)重複b)和c),直到訓練集中沒有被錯分的樣例。

演算法分析:

若某個樣例被錯分了,假如目標輸出t為-1,結果感知器o輸出為1,此時為了讓感知器輸出-1,需要將wx減小以輸出-1,而在x的值不變的情況下只能減小w的值,這時通過在原來w後面新增(t-o)x=即可減小w的值(t-o<0, x>0)。

通過逐步調整w的值,最終感知器將會收斂到能夠將所有訓練集正確分類的程度,但前提條件是訓練集線性可分。若訓練集線性不可分,則上述過程不會收斂,將無限迴圈下去。

2、訓練集線性不可分時 --> delta法則(又叫增量法則, lms法則,adaline法則,windrow-hoff法則)

由於在真實情況下,並不能保證訓練集是線性可分的。因而,當訓練集線性不可分時該如何訓練感知器呢?這時我們使用delta法則,通過這種方式可以找出收斂到目標的最佳近似值,

delta法則的關鍵思想是使用梯度下降來搜尋可能的權向量的假設空間,以找到最佳的擬合樣例的權向量[1]。具體來說就是利用損失函式,每次向損失函式的負梯度方向移動,直到損失函式取得最小值(極小值)。我們將訓練誤差函式定義為:

其中d:訓練集合,td為目標輸出,od為感知器輸出.

隨機梯度下降演算法過程如下:

1)初始化權向量w,將權向量的每個值取乙個隨機值。

2)對每個訓練樣例,分別執行以下操作:

a)通過感知器得到樣例的輸出o。

b)根據感知器的輸出,修改權向量w。

3)重複第2)步,當訓練樣例的誤差率小於設定的閥值時,演算法終止。

演算法條件:誤差損失函式需要對權向量可微;假設空間包含連續引數化的假設。

可能存在的問題:若誤差曲面有多個區域性極小值,則不能保證達到全域性最優。

演算法第2)步的權向量公式的推導?請參考下一節梯度下降法則的推導。

二個區別:

1)感知器訓練法則 和 delta法則(增量法則)

關鍵區別在於:感知器訓練法則根據閥值化的感知器輸出的誤差更新權值;而增量法則根據輸入的非閥值化線性組合的誤差來更新權值。

二者的權值更新公式看似一樣,實則不同:感知器法則的o是指閥值的輸出:,而增量法則中的o是線性單元的輸出:

2)(標準)梯度下降 和 隨機梯度下降

梯度下降每輪遍歷所有訓練樣例,將每個樣例得到權向量的差值進行累加,最終將這些差值之和累加到初始的權向量上;而隨機梯度下降則是在每個訓練樣例中都會更新權重,最終得到乙個損失函式較小的權向量。

3、梯度下降法則的推導

梯度下降演算法的核心就是每次向損失函式下降最陡峭的方向移動,而最陡峭的方向通常就是損失函式對權向量求偏導數得到的向量的反方向。

為了計算以上向量,我們逐個計算每個分量:

每次的權重更新量為:

使用這種方法來進行權重更新的方法叫做梯度下降,此方法將所有訓練集權值計算了乙個總和,然後將權值更新。此方法更新依次權值需要將所有訓練集全部訓練一次,故而速度較慢,效率較低。

為此改進這種蝸牛的更新速度,於是有了隨機梯度下降演算法,權向量更新公式為:

它在每個樣例中迭代的過程中都會進行權值更新,通過這種方式能更加靈活的調整權值,使得權值以更快的速度收斂。

首先什麼是人工神經網路?簡單來說就是將單個感知器作為乙個神經網路節點,然後用此類節點組成乙個層次網路結構,我們稱此網路即為人工神經網路(本人自己的理解)。當網路的層次大於等於3層(輸入層+隱藏層(大於等於1)+輸出層)時,我們稱之為多層人工神經網路。

增量法每個輸出都是輸入的線性組合,這樣當多個線性單元連線在一起後最終也只能得到輸入的線性組合,這和只有乙個感知器單元節點沒有很大不同。 為了解決上面存在的問題,一方面,我們不能直接使用線性組合的方式直接輸出,需要在輸出的時候新增乙個處理函式;另一方面,新增的處理函式一定要是可微的,這樣我們才能使用梯度下降演算法。滿足上面條件的函式非常的多,但是最經典的莫過於sigmoid函式,又稱logistic函式。

其對應的公式如下:

其中,該單元也可以被稱作是logistic回歸模型。當將多個單元組合起來並具有分層結構時,就形成了神經網路模型。下圖展示了乙個具有乙個隱含層的神經網路。

其對應的公式如下:

比較類似的,可以拓展到有2,3,4,5,…個隱含層。

神經網路的訓練方法也同logistic類似,不過由於其多層性,還需要利用鏈式求導法則對隱含層的節點進行求導,即梯度下降+鏈式求導法則,專業名稱為反向傳播。

參考:liuwu265     

dztgc            

雨石              

神經網路 感知器訓練演算法

感知器訓練 perceptron rule 物件 單個單元 perceptron unit 用途 處理線性可分的資料集 對下列公式進行有限次的迭代 repeat x,y 目的 設定權值以便獲得與預期相同的資料集 方式 通過不斷地修改權值來實現目的,這裡採用給權值w賦予學習速率的方式,但碰到乙個問題是...

神經網路(單層感知器)

感知器是神經網路中的乙個概念,在1950s由frank rosenblatt第一次引入。單層感知器是最簡單的神經網路。它包含輸入層和輸出層,而輸入層和輸出層是直接相連的。與最早提出的mp模型不同,神經元突觸權值可變,因此可以通過一定規則進行學習。可以快速 可靠地解決線性可分的問題。單層感知器由乙個線...

神經網路 單層感知器

神經網路是非常重要的且用途廣泛,通過模擬人體的處理資訊方式來解決問題,下面就來介紹一下單層感知器。import numpy as np import matplotlib.pyplot as plt 輸入資料 x np.array 1,3,3 1,4,3 1,1,1 1,0,2 標籤y np.arr...