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