《計算智慧型》是北航開的一門研究生課程,主要內容為神經網路的原理和應用。該課程從聖經網路的原理開始,以感知機、簡單神經網路為過渡,最後以深度學習結束。此博文為在學習該門課程的過程中,自己在完成課程作業的過程中的一些**和心得。
作業一:感知機的基本原理與應用題目:
設有兩個模式樣本集合
d1=
d2=
用感知機演算法設計兩個模式類的分類判決函式,並說明,當權值向量w取不同初值時,對訓練效果的影響及原因。
感知機原理:
(1)單層感知機結構及更新公式:
當分類正確時,不更新權值。當分類錯誤時,用公式對權值進行更新。
(2)**實現:
這裡寫**片# -*- coding: utf-8 -*-
"""created on tue oct 18 21:29:09 2016
@author: hansyang
"""import numpy as np
import matplotlib.pyplot as plt
defperception
(data,label,w,b,alpha):
err=sum(abs(np.sign(data*w+b)-label))
count=0
while(err>0):
count+=1
for i in range(len(data)):
while(label[i]*(data[i]*w+b)<0):
w=w+alpha*(label[i]*data[i]).transpose()
b=b+alpha*label[i]
err=sum(abs(np.sign(data*w+b)-label))/2
print('當前為訓練的第%d次迴圈,分類錯誤的個數為:%d'%(count,int(err)))
return w,b
data1=np.matrix([[2,1],[2,2],[3,2]]);
data0=np.matrix([[4,0],[5,0],[5,1]]);
data=np.concatenate((data1,data0),axis=0)
label=np.matrix([1,1,1,-1,-1,-1]);
label=label.transpose();
w=np.matrix([[1000],[1]]);
b=0;
alpha=0.0001;
w,b=perception(data,label,w,b,alpha);
x=[i/100
for i in range(1,600)];
x=np.matrix(x);
y=-(w[0]*x+b)/w[1];
x=x.tolist()
y=y.tolist()
x=x[0]
y=y[0]
plt.plot(x,y,'r--',linewidth=2.0)
plt.plot(data1[:,0],data1[:,1],'b*')
plt.plot(data0[:,0],data0[:,1],'ro')
plt.ylim(-1, 3)
plt.xlim(1, 6)
plt.show()
err=sum(abs(np.sign(data*w+b)-label))/2;
print('分類錯誤的個數為:%d'%err);
(3)結果分析:
選取不同的w,b:
初始值:w=[1,1],b=0,alpha=0.1
訓練後:w=[-0.2,1],b=-0.3
訓練迴圈次數:1
初始值:w=[1000,1],b=0,alpha=0.1
訓練後:w=[-0.2,138.8],b=-138.1
訓練迴圈次數:45
初始值:w=[1,1],b=0,alpha=0.0001
訓練後:w=[-0.1377,0.963],b=-0.2746
訓練迴圈次數:1
初始值:w=[1,1],b=0,alpha=1000
訓練後:w=[-1999,3001],b=1000
訓練迴圈次數:3
初始值:w=[1,1],b=0,alpha=0.0001
訓練後:w=[-0.0001,138.25],b=-138.2539
訓練迴圈次數:104
初始值:w=[1000,1],b=0,alpha=1000
訓練後:w=[-1000,3001],b=1000
訓練迴圈次數:3
結論: 無論w和alpha的初始取值為多少,最終都能得到正確的分類結果。但值得注意的是,當步長alpha過小時,且w的初始值設定得與最終值差距較大時,訓練迴圈次數增多,訓練時間明顯變長。
神經網路 感知機
受生物學的啟發,人工神經網路是有一系列簡單的單元互相緊密聯絡構成的,每個單元有一定數量的實數輸入和唯一的實數輸出。神經網路的乙個重要的用途就是接受和處理感測器產生的複雜輸入並行進行自適應的學習。人工神經網路演算法模擬生物神經網路,是一種模式匹配演算法,通常用於解決分類和回歸問題。人工神經網路是機器學...
神經網路(一) 單層感知機
感知機是乙個二類分類的線性分類模型,用來做分類的,類別用 1和 1表示。樣本中的各個特徵組成了空間中的不同的點,點被分成兩類,1和 1。我們的目的就是找到乙個超平面將這兩類點分開。超平面可以用wx b表示,或者將b改寫成w 0w 0 w0 將x的第一列加上偏置項 全1 那麼我們就可以用wx來表示這個...
感知機與神經網路
其中,x1和x2稱為輸入,w1和w2為權重,表示運算的規則,為閾值,y為輸出 運算規則只有w1x1 w2x2,若結果小於等於 得到輸出為0,大於 則輸出1。自定義感知機 實現邏輯和 def and x1,x2 w1,w2 0.5,0.5 兩個權重 theta 0.7 閾值 tmp x1 w1 x2 ...