Rosonblatt线性感知器
前敘
讀前簡介
機器學習的流派很多,現在比較流行的便是聯結學派,其計算的重點在于權重更新,而其它學派比如貝葉斯學派,基于統計學,進化學派則注重結構學習.
本篇博客以線性感知器為基礎,將會對神經網絡與一些機器學習算法進行介紹,如果你只想簡單的了解,那么可以瀏覽一遍即可,當然你也可以花費些時間讀這篇文章,那么你也可以受益許多.
神經網絡與聯結學派
神經網絡就是聯結學派的”作品”,從最基本的線性感知器到現在的深度學習都隸屬于聯結學派,其實現人工智能的思想在于利用計算機模擬生物神經網絡,而計算過程最后則轉化為求最優解問題,計算過程的核心則在于迭代與權值更新,主要陷阱為局部最優解陷阱等等.
而聯結學派的核心觀點即為:智能的本質是連接機制,神經網絡是一個由大量簡單的處理單元組成的高度復雜的大規模非線性自適應系統.聯結主義模擬人腦智能行為四個層面為:?
a.物理結構;?
b.計算模擬?
c.存儲與操作?
d.訓練
神經網絡圖解:
Rosonblatt感知器圖解
基本計算過程與權值修正
基本計算過程:
最后求出的超平面:?
權值更新(圖片來自他處):
代碼
# 單樣本感知器算法 import numpy as np b = 1 # 偏置 # 該數據量下 初始權值為 0 時 Rosebblatt感知器 訓練失敗 a = 0.3 # 學習率 x = np.array([[1,1,3],[1,2,5],[1,1,8],[1,2,15],[1,3,7],[1,4,29]]) d = np.array([1,1,-1,-1,1,-1]) w = np.array([b,0,0]) def sgn(v):if v> 0:return 1else:return -1 def comy(myw,myx):return sgn(np.dot(myw.T,myx)) def neww(oldw,myd,myx,a):print("comy:",comy(oldw,myx))return oldw+a*(myd - comy(oldw,myx))*myx i = 0 for xn in x:print("wn:",xn)w =neww(w,d[i],xn,a)i+=1print("w:",w) for xn in x:print("%d or %d => %d"%(xn[1],xn[2],comy(w,xn))) test = np.array([b,9,19]) print("%d or %d => %d"%(test[1],test[2],comy(w,test))) test = np.array([b,9,64]) print("%d or %d => %d"%(test[1],test[2],comy(w,test)))梯度下降與批量修正算法
公式如下(圖片來自書籍):
具體算法過程如下:?
1) 初始化權值.學習率,以及期望誤差率?
2) 讀取所有樣本數據?
3) 依次對樣本進行訓練.更新權值,其更新策略如(8-1)所示?
4) 檢查誤差率是否小于指定誤差率,或者訓練次數已達到,否則轉到第二步執行
code
import numpy as np b = 1 # 偏置 # 該數據量下 初始權值為 0 時 Rosebblatt感知器 訓練失敗 a = 0.5 # 學習率 x = np.array([[1,1,3],[1,2,5],[1,1,8],[1,2,15]]) d = np.array([1,1,-1,-1]) w = np.array([b,0,0]) wucha = 0 ddcount = 50 def sgn(v):if v> 0:return 1else:return -1 def comy(myw,myx):return sgn(np.dot(myw.T,myx)) # 權值更新策略 def tiduxz(myw,myx,mya):i = 0sum_x =np.array([0,0,0])for xn in myx:if comy(myw,xn)!=d[i]:sum_x+=d[i]*xni+=1return mya*sum_x i = 0 while True:tdxz = tiduxz(w,x,a)print('tdxz:',tdxz)w = w+tdxzprint("w:",w)i = i+1if abs(tdxz.sum())<=wucha or i >= ddcount:break test = np.array([1,9,19]) print("%d or %d => %d"%(test[1],test[2],comy(w,test))) test = np.array([1,3,22]) print("%d or %d => %d"%(test[1],test[2],comy(w,test))) print()Rosonblatt感知器 優化
LMS(最小均方算法:Least-Mean-Square)
均方誤差MSE:參數估計中均方誤差是指參數估計值與參數真值之差平方的期望值,即樣本預測輸出值與實際輸出值之差平方的期望值.
而MSE的策略則是使MSE最小,?
代價函數:?
?
在之前的例子中繼續使用批量修正算法,并在其誤差信號基礎上計算梯度向量:?
?
權值生成方案:?
LMS退火算法
LMS算法的一個限制在于學習率的設定:?
當學習率較大時,收斂速度較快?
當學習率較小時才能保證權值的修正是再讓代價函數一步比一步小?
因而比較科學的方法應該是學習率隨著權值的不斷修改而不斷減小,于是便有了LMS退火算法,其公式如下:?
退火算法原理源于固體退火原理,其為基于蒙特卡羅迭代求解法的一種啟發式隨機搜索過程
修改之前的例子:
a0 = 0.1 a = 0.0 def neww(oldw,myd,myx,a):mye = get_e(oldw,myx,myd)a=a0/(1+float(mycount)/r)return (oldw+a*mye*myx,mye)Rosonblatt感知機的局限
Rosonblatt感知機的局限在于其本質為一個線性感知機,因此當樣本線性不可分時則使用delta法則進行感知機的訓練,而delta的關鍵思想在于使用梯度下降來搜索可能的權向量的假設空間,已找到最佳擬合訓練樣本的權向量.
通過這種方式可以一定程度上對非線性數據進行分類,但想要解決Rosonblatt感知器無法處理非線性關系(無法學習”異或”邏輯運算)的問題,需要的是雙層感知機,或者多層感知機(也就是神經網絡),實際上在歷史上正是因為Rosonblatt無法學習線性關系才導致了神經網絡十幾年的低潮,也正是雙層感知機找到了異或的學習方法以及傳統馮諾依曼計算機模擬智能遇到了不可逾越的瓶頸才再一次掀起了神經網絡的熱潮.
參考資料
- [1] 麥好 <機器學習實踐指南 案例應用解析 第二版> 機械工業出版社 2017.7
總結
以上是生活随笔為你收集整理的Rosonblatt线性感知器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python中斐波那契数列的四种写法
- 下一篇: Google提出的新型激活函数:Swis