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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Rosonblatt线性感知器

發(fā)布時(shí)間:2025/3/21 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Rosonblatt线性感知器 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前敘

讀前簡(jiǎn)介

機(jī)器學(xué)習(xí)的流派很多,現(xiàn)在比較流行的便是聯(lián)結(jié)學(xué)派,其計(jì)算的重點(diǎn)在于權(quán)重更新,而其它學(xué)派比如貝葉斯學(xué)派,基于統(tǒng)計(jì)學(xué),進(jìn)化學(xué)派則注重結(jié)構(gòu)學(xué)習(xí).

本篇博客以線性感知器為基礎(chǔ),將會(huì)對(duì)神經(jīng)網(wǎng)絡(luò)與一些機(jī)器學(xué)習(xí)算法進(jìn)行介紹,如果你只想簡(jiǎn)單的了解,那么可以瀏覽一遍即可,當(dāng)然你也可以花費(fèi)些時(shí)間讀這篇文章,那么你也可以受益許多.

神經(jīng)網(wǎng)絡(luò)與聯(lián)結(jié)學(xué)派

神經(jīng)網(wǎng)絡(luò)就是聯(lián)結(jié)學(xué)派的”作品”,從最基本的線性感知器到現(xiàn)在的深度學(xué)習(xí)都隸屬于聯(lián)結(jié)學(xué)派,其實(shí)現(xiàn)人工智能的思想在于利用計(jì)算機(jī)模擬生物神經(jīng)網(wǎng)絡(luò),而計(jì)算過(guò)程最后則轉(zhuǎn)化為求最優(yōu)解問(wèn)題,計(jì)算過(guò)程的核心則在于迭代與權(quán)值更新,主要陷阱為局部最優(yōu)解陷阱等等.

而聯(lián)結(jié)學(xué)派的核心觀點(diǎn)即為:智能的本質(zhì)是連接機(jī)制,神經(jīng)網(wǎng)絡(luò)是一個(gè)由大量簡(jiǎn)單的處理單元組成的高度復(fù)雜的大規(guī)模非線性自適應(yīng)系統(tǒng).聯(lián)結(jié)主義模擬人腦智能行為四個(gè)層面為:?
a.物理結(jié)構(gòu);?
b.計(jì)算模擬?
c.存儲(chǔ)與操作?
d.訓(xùn)練

神經(jīng)網(wǎng)絡(luò)圖解:

Rosonblatt感知器圖解

基本計(jì)算過(guò)程與權(quán)值修正

基本計(jì)算過(guò)程:

  • 數(shù)據(jù)輸入
  • 計(jì)算誘導(dǎo)局部域,計(jì)算公式如下?

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

    權(quán)值更新(圖片來(lái)自他處):

    代碼

    # 單樣本感知器算法 import numpy as np b = 1 # 偏置 # 該數(shù)據(jù)量下 初始權(quán)值為 0 時(shí) Rosebblatt感知器 訓(xùn)練失敗 a = 0.3 # 學(xué)習(xí)率 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)))


    梯度下降與批量修正算法

    公式如下(圖片來(lái)自書(shū)籍):

    具體算法過(guò)程如下:?
    1) 初始化權(quán)值.學(xué)習(xí)率,以及期望誤差率?
    2) 讀取所有樣本數(shù)據(jù)?
    3) 依次對(duì)樣本進(jìn)行訓(xùn)練.更新權(quán)值,其更新策略如(8-1)所示?
    4) 檢查誤差率是否小于指定誤差率,或者訓(xùn)練次數(shù)已達(dá)到,否則轉(zhuǎn)到第二步執(zhí)行

    code

    import numpy as np b = 1 # 偏置 # 該數(shù)據(jù)量下 初始權(quán)值為 0 時(shí) Rosebblatt感知器 訓(xùn)練失敗 a = 0.5 # 學(xué)習(xí)率 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)) # 權(quán)值更新策略 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感知器 優(yōu)化

    LMS(最小均方算法:Least-Mean-Square)

    均方誤差MSE:參數(shù)估計(jì)中均方誤差是指參數(shù)估計(jì)值與參數(shù)真值之差平方的期望值,即樣本預(yù)測(cè)輸出值與實(shí)際輸出值之差平方的期望值.

    而MSE的策略則是使MSE最小,?
    代價(jià)函數(shù):?
    ?
    在之前的例子中繼續(xù)使用批量修正算法,并在其誤差信號(hào)基礎(chǔ)上計(jì)算梯度向量:?
    ?
    權(quán)值生成方案:?

    # 代碼來(lái)自<機(jī)器學(xué)習(xí)實(shí)踐指南2> import numpy as np # LMS算法實(shí)現(xiàn)邏輯或運(yùn)算 b = 1 # 偏置 # 該數(shù)據(jù)量下 初始權(quán)值為 0 時(shí) Rosebblatt感知器 訓(xùn)練失敗 a = 0.1 # 學(xué)習(xí)率 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) # 實(shí)際輸出值 - 樣本預(yù)測(cè)輸出值 mycount = 0 while True:mye = 0i = 0for xn in x:w,e = neww(w, d[i], xn, a)i+=1mye+=pow(e,2) # 在 ANN 領(lǐng)域 MSE(均方誤差)是指樣本預(yù)測(cè)輸出至于實(shí)際輸出值之差平方的期望mye/=float(i)mycount+=1print(u"第 %d 次調(diào)整后的權(quán)值:"%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算法的一個(gè)限制在于學(xué)習(xí)率的設(shè)定:?
    當(dāng)學(xué)習(xí)率較大時(shí),收斂速度較快?
    當(dāng)學(xué)習(xí)率較小時(shí)才能保證權(quán)值的修正是再讓代價(jià)函數(shù)一步比一步小?
    因而比較科學(xué)的方法應(yīng)該是學(xué)習(xí)率隨著權(quán)值的不斷修改而不斷減小,于是便有了LMS退火算法,其公式如下:?

    退火算法原理源于固體退火原理,其為基于蒙特卡羅迭代求解法的一種啟發(fā)式隨機(jī)搜索過(guò)程

    修改之前的例子:

    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感知機(jī)的局限

    Rosonblatt感知機(jī)的局限在于其本質(zhì)為一個(gè)線性感知機(jī),因此當(dāng)樣本線性不可分時(shí)則使用delta法則進(jìn)行感知機(jī)的訓(xùn)練,而delta的關(guān)鍵思想在于使用梯度下降來(lái)搜索可能的權(quán)向量的假設(shè)空間,已找到最佳擬合訓(xùn)練樣本的權(quán)向量.

    通過(guò)這種方式可以一定程度上對(duì)非線性數(shù)據(jù)進(jìn)行分類,但想要解決Rosonblatt感知器無(wú)法處理非線性關(guān)系(無(wú)法學(xué)習(xí)”異或”邏輯運(yùn)算)的問(wèn)題,需要的是雙層感知機(jī),或者多層感知機(jī)(也就是神經(jīng)網(wǎng)絡(luò)),實(shí)際上在歷史上正是因?yàn)镽osonblatt無(wú)法學(xué)習(xí)線性關(guān)系才導(dǎo)致了神經(jīng)網(wǎng)絡(luò)十幾年的低潮,也正是雙層感知機(jī)找到了異或的學(xué)習(xí)方法以及傳統(tǒng)馮諾依曼計(jì)算機(jī)模擬智能遇到了不可逾越的瓶頸才再一次掀起了神經(jīng)網(wǎng)絡(luò)的熱潮.

    參考資料

    • [1] 麥好 <機(jī)器學(xué)習(xí)實(shí)踐指南 案例應(yīng)用解析 第二版> 機(jī)械工業(yè)出版社 2017.7

    總結(jié)

    以上是生活随笔為你收集整理的Rosonblatt线性感知器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。