《人工智能》課件第6章 人工神經(jīng)網(wǎng)絡(luò)_第1頁
《人工智能》課件第6章 人工神經(jīng)網(wǎng)絡(luò)_第2頁
《人工智能》課件第6章 人工神經(jīng)網(wǎng)絡(luò)_第3頁
《人工智能》課件第6章 人工神經(jīng)網(wǎng)絡(luò)_第4頁
《人工智能》課件第6章 人工神經(jīng)網(wǎng)絡(luò)_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第6章人工神經(jīng)網(wǎng)絡(luò)主要內(nèi)容感知機(jī)多層感知機(jī)多層感知機(jī)的應(yīng)用其他神經(jīng)網(wǎng)絡(luò)感知機(jī)大腦與神經(jīng)網(wǎng)絡(luò)感知機(jī)感知機(jī)模型1957年康奈爾大學(xué)的Rosenblatt提出了感知機(jī)的概念。感知機(jī)感知機(jī)模型激活函數(shù)感知機(jī)

感知機(jī)

感知機(jī)應(yīng)用感知機(jī)(Perceptron)進(jìn)行分類模型:Sklearn的感知機(jī)Perceptron類數(shù)據(jù)集:鳶尾花(Iris)數(shù)據(jù)集In[1]:fromsklearnimportdatasets...:importnumpyasnp...:iris=datasets.load_iris()...:X=iris.data[:,[0,1]]...:y=iris.target...:fromsklearn.model_selectionimporttrain_test_split...:X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3,random_state=0)In[2]:foriinrange(0,10):...:print(X_train[i][0],X_train[i][1],y_train[i])...:感知機(jī)應(yīng)用感知機(jī)(Perceptron)進(jìn)行分類數(shù)據(jù)預(yù)處理建立感知機(jī)模型,并進(jìn)行訓(xùn)練和預(yù)測(cè),訓(xùn)練周期數(shù)取40,學(xué)習(xí)率取0.1。In[4]:sc=StandardScaler()...:sc.fit(X_train)...:X_train_std=sc.transform(X_train)...:X_test_std=sc.transform(X_test)...:print(sc.mean_,sc.var_)In[5]:ppn=Perceptron(n_iter=40,eta0=0.1,random_state=0)...:ppn.fit(X_train_std,y_train)

...:y_pred=ppn.predict(X_test_std)感知機(jī)局限性單個(gè)的感知機(jī)可以求解與、或問題,但是對(duì)于異或(XOR)問題卻無能為力。究其原因,感知機(jī)使用超平面區(qū)分正向類和負(fù)向類,如圖7-6的與和或問題,用一條直線即可將邏輯運(yùn)算的結(jié)果分開,這屬于線性分類問題。但是,對(duì)于異或問題,屬于非線性分類問題,無法用一條直線將兩類結(jié)果分割開。多層感知機(jī)模型由多層人工神經(jīng)元組成,每層包括多個(gè)神經(jīng)元,層內(nèi)的神經(jīng)元之間沒有鏈接,層與層之間的神經(jīng)元全連接,每一層神經(jīng)元的輸出作為下一層的輸入。每個(gè)多層感知機(jī)有一個(gè)輸入層和一個(gè)輸出層,輸入層用來接收特征,輸出層用來輸出因變量的預(yù)測(cè)值。輸入層和輸出層之間可以有多個(gè)層,這些層用來表示潛在的變量,所以被稱之為隱含層,一個(gè)多層感知機(jī)中,可以有一到多個(gè)隱含層。是一個(gè)前饋網(wǎng)絡(luò)。多層感知機(jī)模型多層感知機(jī)

多層感知機(jī)BP算法——多層感知機(jī)的訓(xùn)練BP算法是一種迭代算法,每次迭代由兩個(gè)步驟組成,即預(yù)測(cè)正向傳遞和誤差的反向傳播。在正向階段,特征從輸入開始按照前饋規(guī)則經(jīng)各隱含層直至輸出層,完成一次預(yù)測(cè),損失函數(shù)利用輸出來計(jì)算預(yù)測(cè)的誤差。反向傳播則是通過誤差從代價(jià)函數(shù)向輸入層傳播,估計(jì)每個(gè)神經(jīng)元(或者權(quán)重)對(duì)誤差的貢獻(xiàn),計(jì)算各權(quán)重的梯度,更新權(quán)重值,完成一次迭代。該過程持續(xù)迭代直至模型收斂。多層感知機(jī)BP算法示例一個(gè)三層感知機(jī):激活函數(shù)采用Sigmoid函數(shù),參數(shù)估計(jì)采用梯度下降法;特征向量為[0.8,0.3],目標(biāo)值為0.5,學(xué)習(xí)率設(shè)置為0.1。多層感知機(jī)BP算法示例正向傳遞

多層感知機(jī)

多層感知機(jī)的應(yīng)用逼近XOR問題采用一個(gè)三層感知機(jī),其中輸入層2個(gè)神經(jīng)元,對(duì)應(yīng)2個(gè)特征,隱含層2個(gè)神經(jīng)元,輸出一個(gè)神經(jīng)元,對(duì)應(yīng)目標(biāo),采用Sigmoid函數(shù)作為每個(gè)神經(jīng)元的激活函數(shù)。激活函數(shù)

importnumpyasnp#Soigmoid函數(shù)defsigmoid(x):return1.0/(1.0+np.exp(-x))

#sigmoid導(dǎo)函數(shù)性質(zhì):f'(t)=f(t)(1-f(t))#參數(shù)y采用sigmoid函數(shù)的返回值defsigmoid_prime(y):returny*(1.0-y)多層感知機(jī)的應(yīng)用逼近XOR問題MLP類classMLP:def__init__(self,layers):""":參數(shù)layers:神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)(輸入層-隱含層-輸出層包含的結(jié)點(diǎn)數(shù)列表)"""self.activation=sigmoidself.activation_prime=sigmoid_prime#存儲(chǔ)權(quán)值矩陣

self.weights=[]#rangeofweightvalues(-1,1)#初始化輸入層和隱含層之間的權(quán)值

foriinrange(1,len(layers)-1):r=2*np.random.random((layers[i-1]+1,layers[i]+1))-1#add1forbiasnodeself.weights.append(r)

多層感知機(jī)的應(yīng)用逼近XOR問題MLP類#初始化輸出層權(quán)值

r=2*np.random.random((layers[i]+1,layers[i+1]))-1self.weights.append(r)#rangeofweightvalues(-1,1)

#初始化輸入層和隱含層之間的權(quán)值

foriinrange(1,len(layers)-1):

r=2*np.random.random((layers[i-1]+1,layers[i]+1))-1#add1forbiasnode

self.weights.append(r)

#初始化輸出層權(quán)值

r=2*np.random.random((layers[i]+1,layers[i+1]))-1

self.weights.append(r)多層感知機(jī)的應(yīng)用逼近XOR問題fit()函數(shù)deffit(self,X,Y,learning_rate=0.2,epochs=10000):#AddcolumnofonestoX#ThisistoaddthebiasunittotheinputlayerX=np.hstack([np.ones((X.shape[0],1)),X])

forkinrange(epochs):#訓(xùn)練固定次數(shù)#Returnrandomintegersfromthediscreteuniformdistributionintheinterval[0,low).i=np.random.randint(X.shape[0],high=None)a=[X[i]]#從m個(gè)輸入樣本中隨機(jī)選一組

forlinrange(len(self.weights)):#權(quán)值矩陣中每一列代表該層中的一個(gè)結(jié)點(diǎn)與上一層所有結(jié)點(diǎn)之間的權(quán)值dot_value=np.dot(a[l],self.weights[l])activation=self.activation(dot_value)a.append(activation)多層感知機(jī)的應(yīng)用逼近XOR問題fit()函數(shù)

#反向遞推計(jì)算delta:從輸出層開始,先算出該層的delta,再向前計(jì)算error=Y[i]-a[-1]#計(jì)算輸出層deltadeltas=[error*self.activation_prime(a[-1])]

#從倒數(shù)第2層開始反向計(jì)算deltaforlinrange(len(a)-2,0,-1):deltas.append(deltas[-1].dot(self.weights[l].T)*self.activation_prime(a[l]))

#[level3(output)->level2(hidden)]=>[level2(hidden)->level3(output)]deltas.reverse()#逆轉(zhuǎn)列表中的元素

多層感知機(jī)的應(yīng)用逼近XOR問題fit()函數(shù)#backpropagation#1.Multiplyitsoutputdeltaandinputactivationtogetthegradientoftheweight.#2.Subtractaratio(percentage)ofthegradientfromtheweight.foriinrange(len(self.weights)):#逐層調(diào)整權(quán)值layer=np.atleast_2d(a[i])#Viewinputsasarrayswithatleasttwodimensionsdelta=np.atleast_2d(deltas[i])#每輸入一次樣本,就更新一次權(quán)值self.weights[i]+=learning_rate*np.dot(layer.T,delta)多層感知機(jī)的應(yīng)用逼近XOR問題predict()函數(shù)defpredict(self,x):a=np.concatenate((np.ones(1),np.array(x)))#a為輸入向量(行向量)forlinrange(0,len(self.weights)):#逐層計(jì)算輸出a=self.activation(np.dot(a,self.weights[l]))returna多層感知機(jī)的應(yīng)用逼近XOR問題主程序if__name__=='__main__':mlp=MLP([2,2,1])#網(wǎng)絡(luò)結(jié)構(gòu):2輸入1輸出,1個(gè)隱含層(包含2個(gè)結(jié)點(diǎn))X=np.array([[0,0],#輸入矩陣(每行代表一個(gè)樣本,每列代表一個(gè)特征)[0,1],[1,0],[1,1]])Y=np.array([0,1,1,0])#目標(biāo)值

mlp.fit(X,Y)#訓(xùn)練網(wǎng)絡(luò)

print'w:',mlp.weights#調(diào)整后的權(quán)值列表

forsinX:print(s,mlp.predict(s))#測(cè)試多層感知機(jī)的應(yīng)用識(shí)別手寫數(shù)字MNIST數(shù)據(jù)集MNIST(混合美國標(biāo)準(zhǔn)和技術(shù)研究所)數(shù)據(jù)集是由YannLeCun發(fā)起建立的手寫數(shù)字圖象集合,樣本包含0-9的數(shù)字圖像,來自于美國高校學(xué)生和人口普查局的雇員書寫的文檔。目前MNIST已經(jīng)成為圖像分類領(lǐng)域的基準(zhǔn)測(cè)試數(shù)據(jù)集之一,該數(shù)據(jù)集包含60000幅圖像的訓(xùn)練集和10000幅圖像的測(cè)試集,每幅圖像是分辨率為28*28像素的灰度圖像。

多層感知機(jī)的應(yīng)用識(shí)別手寫數(shù)字MNIST數(shù)據(jù)集importmatplotlib.pyplotaspltimportnumpyasnpfromsklearn.datasetsimportfetch_openmlimportmatplotlib.cmascm

mnist=fetch_openml("mnist_784",version=1)

#fetch_mldata('MNISToriginal')counter=1foriinrange(1,5):forjinrange(1,9):plt.subplot(4,8,counter)plt.imshow(mnist.data[int(70000*(np.random.random()))].reshape((28,28)),cmap=cm.Greys_r)plt.axis('off')counter+=1plt.show()多層感知機(jī)的應(yīng)用識(shí)別手寫數(shù)字模型多層感知機(jī)的應(yīng)用識(shí)別手寫數(shù)字利用sklearn包提供的多層感知機(jī)MLPClassifier類來完成識(shí)別任務(wù)#用MLP識(shí)別MNIST字符importmatplotlib.pyplotaspltfromsklearn.datasetsimportfetch_openmlfromsklearn.neural_networkimportMLPClassifierfromsklearn.metricsimportclassification_report#獲取MNIST數(shù)據(jù)集mnist=fetch_openml("mnist_784",version=1)#fetch_mldata('MNISToriginal')#獲取特征和目標(biāo)值X=mnist.datay=mnist.target#像素灰度值歸一化X=X/255.

多層感知機(jī)的應(yīng)用識(shí)別手寫數(shù)字利用sklearn包提供的多層感知機(jī)MLPClassifier類來完成識(shí)別任務(wù)#分割訓(xùn)練集和測(cè)試集X_train,X_test=X[:60000],X[60000:]y_train,y_test=y[:60000],y[60000:]#定義MLP模型,1個(gè)隱含層,含50個(gè)隱結(jié)點(diǎn),訓(xùn)練周期為10#采用SGD算法,學(xué)習(xí)率0.1mlp=MLPClassifier(hidden_layer_sizes=(50,),max_iter=10,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論