日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Rosonblatt线性感知器

發布時間:2025/3/21 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Rosonblatt线性感知器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前敘

讀前簡介

機器學習的流派很多,現在比較流行的便是聯結學派,其計算的重點在于權重更新,而其它學派比如貝葉斯學派,基于統計學,進化學派則注重結構學習.

本篇博客以線性感知器為基礎,將會對神經網絡與一些機器學習算法進行介紹,如果你只想簡單的了解,那么可以瀏覽一遍即可,當然你也可以花費些時間讀這篇文章,那么你也可以受益許多.

神經網絡與聯結學派

神經網絡就是聯結學派的”作品”,從最基本的線性感知器到現在的深度學習都隸屬于聯結學派,其實現人工智能的思想在于利用計算機模擬生物神經網絡,而計算過程最后則轉化為求最優解問題,計算過程的核心則在于迭代與權值更新,主要陷阱為局部最優解陷阱等等.

而聯結學派的核心觀點即為:智能的本質是連接機制,神經網絡是一個由大量簡單的處理單元組成的高度復雜的大規模非線性自適應系統.聯結主義模擬人腦智能行為四個層面為:?
a.物理結構;?
b.計算模擬?
c.存儲與操作?
d.訓練

神經網絡圖解:

Rosonblatt感知器圖解

基本計算過程與權值修正

基本計算過程:

  • 數據輸入
  • 計算誘導局部域,計算公式如下?

    最后求出的超平面:?
  • 誘導局部域輸入輸出函數(硬限幅函數sgn()),并輸出最后結果
  • # 硬限幅函數 python語言 def sgn(v):if v> 0:return 1else:return -1

    權值更新(圖片來自他處):

    代碼

    # 單樣本感知器算法 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最小,?
    代價函數:?
    ?
    在之前的例子中繼續使用批量修正算法,并在其誤差信號基礎上計算梯度向量:?
    ?
    權值生成方案:?

    # 代碼來自<機器學習實踐指南2> import numpy as np # LMS算法實現邏輯或運算 b = 1 # 偏置 # 該數據量下 初始權值為 0 時 Rosebblatt感知器 訓練失敗 a = 0.1 # 學習率 x = np.array([[1,1,1],[1,1,0],[1,0,1],[1,0,0]]) d = np.array([1,1,1,0]) w = np.array([b,0,0]) expect_e=0.005 maxtrycount=20 def sgn(v):if v> 0:return 1else:return 0 def get_v(myw,myx):return sgn(np.dot(myw.T,myx)) def neww(oldw,myd,myx,a):mye = get_e(oldw,myx,myd)return (oldw+a*mye*myx,mye) def get_e(myw,myx,myd):return myd-get_v(myw,myx) # 實際輸出值 - 樣本預測輸出值 mycount = 0 while True:mye = 0i = 0for xn in x:w,e = neww(w, d[i], xn, a)i+=1mye+=pow(e,2) # 在 ANN 領域 MSE(均方誤差)是指樣本預測輸出至于實際輸出值之差平方的期望mye/=float(i)mycount+=1print(u"第 %d 次調整后的權值:"%mycount)print("w:",w)print(u"誤差: %f "%mye)if abs(mye) < expect_e or mycount > maxtrycount:break for xn in x:print("%d or %d => %d"%(xn[1],xn[2],get_v(w,xn)))

    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线性感知器的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。