【火炉炼AI】深度学习001-神经网络的基本单元-感知器
【火爐煉AI】深度學習001-神經網絡的基本單元-感知器
(本文所使用的Python庫和版本號: Python 3.6, Numpy 1.14, scikit-learn 0.19, matplotlib 2.2 )
在人工智能領域,深度學習已經脫穎而出,越來越成為大型復雜問題的首選解決方案。深度學習相對傳統機器學習的區別主要在于,使用模擬人類大腦的神經網絡來構建模型。早期的淺層次神經網絡也可以認為是機器學習領域的一個分支,但是目前,由于神經網絡的層次不斷加深,參數越來越復雜,能夠的解決實際問題越來越多,研究神經網絡,特別是深度神經網絡的文章越來越多,故而深度學習被劃分到一個單獨的分支中。
1. 感知器簡介
為了更好的理解神經網絡,我們首先來看看神經網絡的基本組成單元-神經元,神經元是生物學的術語,在計算機領域,我們稱之為感知器。
感知器是一種早期的神經網絡模型,由美國學者F.Rosenblatt于1957年提出.感知器中第一次引入了學習的概念,使人腦所具備的學習功能在基于符號處理的數學到了一定程度模擬,所以引起了廣泛的關注。
感知器的結構:
1,輸入:一個感知器有一個或多個輸入,用于接收特征數值。
1,權重:每個輸入都有一個權重,表示該輸入對結果的影響力。
2,偏置:雖然權重能夠表示該輸入對結果的影響力,但為了更好的擬合結果,有時還需要對輸入進行左右移動,即平行地增大或減小,故而有了偏置。
3,輸出:經過計算后會給出一個或多個輸出。
通俗一點來理解,感知器就像一個復雜一點的函數y=f(u,v),其中的u,v就是輸入的特征數值,f表示權重和偏置的組合方式,也就是計算過程,y為輸出。所以可以用下列公式來表示感知器。
其中的x表示輸入,w為權重,sita為偏置,f則為激活函數,v為輸出。所以,完全可以將感知器理解成一個復雜一點的函數。
2. 感知器的訓練
如果我們要用一條直線擬合一系列數據,假設該直線的方程為y=a*x+b,那么,我們要做的就是計算出最合適的a和b即可。同理,由于感知器的函數中有兩個未知變量(權重和偏置),故而,我們要做的就是計算出最合適的權重和偏置,這一計算過程就是感知器的訓練。
感知器的訓練是基于感知器規則的,感知器規則認為,如果樣本輸入函數是線性可分的,那么感知器學習算法經過有限次迭代之后,便可以收斂得到正確的權值和偏置,也就是說,不管開始時權重和偏置是多少,經過N次迭代后,總能得到唯一的確定的權重和唯一的確定的偏置。這也就是為什么我們在初始時設置權重和偏置為隨機數或0的原因。
感知器的訓練過程可以簡單概括為:在訓練時,每次從訓練數據中取出一個樣本的輸入向量,使用感知器計算其輸出,再根據感知器規則來調整權重。每處理一個樣本就調整一次權重。經過多輪迭代后(即全部的訓練數據被反復處理多輪),就可以訓練出感知器的權重,使之實現目標函數。
關于感知器的數學推導和基本理論,可以參考博文:感知器(Perception)
那么,從代碼上如何訓練感知器了?運行下列代碼之前,請先通過pip install neurolab來安裝neurolab模塊。
首先準備數據集,并將數據集的分布情況顯示出來,這部分代碼太簡單,可以直接看代碼。
# 建立感知器模型 import neurolab as nl perceptron = nl.net.newp([[dataset_X[:,0].min(),dataset_X[:,0].max()], # 指定特征1的最小和最大值[dataset_X[:,1].min(),dataset_X[:,1].max()]], # 特征2的min和max1) # 只有1個感知器 # 為了適合于train,需要將dataset_y處理成二維 dataset_y=dataset_y[:,np.newaxis] cost=perceptron.train(dataset_X,dataset_y,epochs=50,show=10,lr=0.01) # 訓練該單個感知器,50個回合,每10個回合顯示一下訓練結果,學習速率為0.01# 顯示下訓練過程中cost的變化趨勢 plt.plot(cost) plt.xlabel('Number of epochs') plt.ylabel('Training cost') plt.grid() plt.title('Training cost progress')########################小**********結###############################
1,感知器方面主要是理解其基本的含義和理論知識,因為感知器是神經網絡的基本組成單元。
2,感知器的訓練在以后的深度學習中用處不大,一般成熟的深度學習框架都已經整合了這部分內容,此處僅僅用于演示。
#################################################################
注:本部分代碼已經全部上傳到(我的github)上,歡迎下載。
參考資料:
1, Python機器學習經典實例,Prateek Joshi著,陶俊杰,陳小莉譯
總結
以上是生活随笔為你收集整理的【火炉炼AI】深度学习001-神经网络的基本单元-感知器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 开发实用Linux命令
- 下一篇: GPS脚环计步、AI“鸡”脸识别,如何确