机器学习-分类之多层感知机原理及实战
多層感知機(jī)(Multi-Layer Perceptron)
簡介
生物神經(jīng)網(wǎng)絡(luò)具有相互連接的神經(jīng)元,神經(jīng)元帶有接受輸入信號(hào)的樹突,然后基于這些輸入,它們通過軸突向另一個(gè)神經(jīng)元產(chǎn)生輸出信號(hào)。使用人工神經(jīng)網(wǎng)絡(luò)(ANN)來模擬這個(gè)過程,稱為神經(jīng)網(wǎng)絡(luò)。神經(jīng)網(wǎng)絡(luò)是一個(gè)試圖模仿自然生物神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)模式的機(jī)器學(xué)習(xí)框架。創(chuàng)建神經(jīng)網(wǎng)絡(luò)的過程從最基本的形式單個(gè)感知器開始。
感知器就是一個(gè)能夠把訓(xùn)練集的正例和反例劃分為兩個(gè)部分的器件,并且能夠?qū)ξ磥磔斎氲臄?shù)據(jù)進(jìn)行分類。舉個(gè)例子:一個(gè)小孩子的媽媽在教他什么是蘋果什么不是,首先會(huì)去拿一個(gè)蘋果過來說“這個(gè)是蘋果”,然后拿一個(gè)水杯過來說“這不是”,然后拿一個(gè)稍微不一樣的蘋果過來說“這也是”,,,最后,小孩子學(xué)習(xí)到了用一個(gè)模型(判斷蘋果的標(biāo)準(zhǔn))來判斷什么是蘋果什么不是。
感知器具有一個(gè)或者多個(gè)輸入、偏置、激活函數(shù)和單個(gè)輸出。感知器接受輸入,將它們乘以一些權(quán)重,然后將它們傳遞到激活函數(shù)以產(chǎn)生輸出。有許多激活函數(shù)可供選擇,如邏輯函數(shù)、三角函數(shù)、階躍函數(shù)等。我們還確保向感知器添加偏差,這避免了所有輸入可能等于零的問題(這意味著沒有乘以權(quán)重會(huì)有影響)。
原理
感知器的輸入空間(特征空間)一般為Rn?XR^n\supseteq XRn?X,即n維向量空間,輸出空間為Y={+1,?1}Y=\{+1,-1\}Y={+1,?1}即?1-1?1代表反例,+1+1+1代表正例。例如,輸入x∈Xx\in Xx∈X,對(duì)應(yīng)于輸入空間的RnR^nRn中的某個(gè)點(diǎn),而輸出y∈Yy\in Yy∈Y表示改點(diǎn)所在的分類。需要注意的是,輸入xxx是一個(gè)n維的向量,即x=(x1,x2,...xn)x=(x_1,x_2,...x_n)x=(x1?,x2?,...xn?)。現(xiàn)在,已經(jīng)有了輸入和輸出的定義,就可以給出感知機(jī)f(x)f(x)f(x)的模型:f(x)=sign(w×x+b)f(x)=sign(w\times x+b)f(x)=sign(w×x+b)其中,向量x=(x1,x2,...xn)x=(x_1,x_2,...x_n)x=(x1?,x2?,...xn?)中的每個(gè)分量代表輸入向量空間RnR^nRn中向量xxx的每個(gè)分量xix_ixi?的權(quán)重,或者說參數(shù)。b∈Rb \in Rb∈R稱為偏差,w×xw \times xw×x表示向量www和xxx的內(nèi)積,signsignsign是一個(gè)符號(hào)函數(shù),即sign(x)={+1x≥0?1x<0sign(x) =\begin{cases} +1 \ x\ge 0\\ -1 \ x<0 \end{cases}sign(x)={+1?x≥0?1?x<0?上面這個(gè)函數(shù)f(x)f(x)f(x)稱為感知機(jī)。
神經(jīng)網(wǎng)絡(luò)簡述
神經(jīng)網(wǎng)絡(luò)一般由輸入層(Input Layer)、隱藏層(Hidden Layer)、輸出層(Output Layer)組成,每層由單元(Units)組成,輸入層是由訓(xùn)練集的實(shí)例特征向量傳入,經(jīng)過連接節(jié)點(diǎn)的權(quán)重(Weight)傳入下一層,上一層的輸出是下一層的輸入,隱藏層的個(gè)數(shù)是任意的,輸出層和輸入層只有一個(gè)。如圖。
-
當(dāng)有輸出的時(shí)候,可以將其與已知標(biāo)簽進(jìn)行比較,并相應(yīng)地調(diào)整權(quán)重(權(quán)重通常以隨機(jī)初始化值開始)。重復(fù)此過程,直到達(dá)到允許迭代的最大數(shù)量或可接受的錯(cuò)誤率。上面網(wǎng)絡(luò)中如果每個(gè)神經(jīng)元都是由感知器構(gòu)成的,則這個(gè)網(wǎng)絡(luò)稱為Multi-layer Perceptron多層感知機(jī)。多層感知機(jī)的優(yōu)點(diǎn)是:可以學(xué)習(xí)非線性模型,并且可以實(shí)時(shí)學(xué)習(xí);然而,多層感知機(jī)也有自身的缺點(diǎn):有隱藏層的MLP包含一個(gè)非凸性損失函數(shù),存在超過一個(gè)最小值,所以不同的隨機(jī)初始權(quán)重可能導(dǎo)致不同的驗(yàn)證精確度;MLP要求調(diào)整一系列超參數(shù),如隱藏神經(jīng)元、隱藏層的個(gè)數(shù)以及迭代的次數(shù);MLP對(duì)特征縮放比較敏感。
在使用神經(jīng)網(wǎng)絡(luò)前需要注意以下事項(xiàng)。
實(shí)戰(zhàn)
使用多層感知器分析,根據(jù)葡萄酒的各項(xiàng)化學(xué)特征來判斷葡萄酒的優(yōu)劣。使用sklearn封裝的MLPClassifier。
在代碼中設(shè)定的參數(shù)solver='lbfgs’為求解方法設(shè)置,一般有3個(gè)取值。
- lbfgs:使用quasi-Newton方法的優(yōu)化器。(小數(shù)據(jù)集更好,收斂快,效果好)
- sgd:使用隨機(jī)梯度下降。
- adam:使用Kingma、DiederikheJimmy Ba提出的機(jī)遇隨機(jī)梯度的優(yōu)化器。(大數(shù)據(jù)集表現(xiàn)好)
參數(shù)alpha是L2的參數(shù),MLP支持正則化,默認(rèn)L2.
參數(shù)hidden_layer_sizes=(5,2)表示隱藏層有兩層,第一層5個(gè)神經(jīng)元,第二層2個(gè)神經(jīng)元。
補(bǔ)充說明
參考書《Python3數(shù)據(jù)分析與機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》,具體數(shù)據(jù)集和代碼可以查看我的GitHub,歡迎star或者fork。
總結(jié)
以上是生活随笔為你收集整理的机器学习-分类之多层感知机原理及实战的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习-分类之决策树原理及实战
- 下一篇: Web开发-Django模型层