1. 程式人生 > >機器學習之基礎知識

機器學習之基礎知識

本週的學習任務包括:迴歸(線性迴歸和邏輯迴歸)、KNN、SVM、決策樹、分類、神經網路、特徵選擇。
我的主要內容就是:神經網路這一部分。
首先來大體瞭解神經網路:
神經網路(neural network):常用的定義就是由具有簡單適應性的簡單單元組成的廣泛並行互連的網路,它的組織能夠模擬生物神經系統對真實世界物體所作出的互動反應。
神經網路是機器學習的一類演算法,它最重要的用途是分類。
為了更好地理解神經網路,首先理解神經網路的組成單元-神經元。
一、感知器
1、基本概念:感知器是最早的“人造神經元”模型。它是由兩層神經元組成的,它接受多個輸入(X1,X2,X3…),產生一個輸出(output),好比神經末梢感受到各種外部環境的變化,最後產生電訊號。
這裡寫圖片描述


2、例子:小明準備週末去看電影,則需要考慮三個因素:①天氣:是否晴天?②同伴:是否有朋友陪同?③價格:電影票的價格是否能接受?
這就構成了一個感知器,有三個外部輸入,最後的決定就是感知器的輸出。如果三個因素都是Yes(用1表示),輸出就是1(去踢球);如果都是NO(用0表示),輸出就是0(不參觀)。
3、權重和閾值
如上述的例子,如果某些因素成立,另一些因素不成立,輸出為什麼?在現實中各種因素很少具有同等重要性:某些因素是決定因素,另一些因素是次要因素。因此可以給這些因素指定權重(weight),代表它們不同的重要性。
這裡寫圖片描述
4、感知器的結構:
一個感知器的組成部分包括:
(1)輸入權值;
(2)啟用函式;
(3)輸出。
5、決策模型
單個感知器構成了一個簡單的決策模型,但真實世界中,實際的決策模型很複雜,是由多個感知器組成的多層網路。
這裡寫圖片描述

上圖中,底層感知器接收外部輸入訊號,作出判斷之後,再發出訊號,作為上層感知器的輸入,直至得到最後的結果。(注意:感知器的輸出依然只有一個,但是可以傳送給多個目標。)
6、向量化
將外部輸入X1,X2,X3…寫成向量,用X表示,同樣權重用W表示,b為負閾值,則感知器模型可以寫成下列形式:
這裡寫圖片描述

7、感知器的訓練
想要獲得權重項和閾值,需要用到感知器訓練演算法:將權重項和閾值初始化為0,然後利用感知器規則迭代地修改Wi和b,直到訓練完成。
其中學習速率是控制每一步調整權的幅度。
每次從訓練資料中取出一個樣本的輸入向量x,使用感知器計算其輸出y,再根據感知器規則調整權重,每處理一個樣本就調整一次權重。經過多輪迭代後,就可以訓練出感知器的權重,使之實現目標函式。、
8、線性單元與梯度下降
感知器的問題:當資料集不是線性可分的時候,感知器規則無法收斂,所以,為了解決這個問題,使用一個可導的線性函式來代替感知器的階躍函式。
二、神經網路的運作過程
1、一個神經網路的搭建,需要滿足三個條件:
(1)輸入和輸出;
(2)權重和閾值;(確定這兩個值是難點)
(3)多層感知器的結構。
2、模型的訓練
計算權重值和閾值的一種方法就是:試錯法。固定其他引數,權重值或者閾值的微小變動記作deltaW或者deltaB,然後觀察輸出的變化。不斷重複這個過程,直到得到對應最精確輸出的那組w和b,就是我們期望得到的值,這個過程就是模型的訓練。
3、運作的過程
(1)確定輸入和輸出;
(2)找到一種或多種演算法,可以從輸入得到輸出;
(3)找到一組已知答案的資料集,用來訓練模型,估算w和b
(4)一旦新的資料產生,輸入模型,就可以得到結果,同時對w和b進行校正。
三、誤差逆傳播演算法(error Back Propagation):是一種神經網路的訓練演算法。
誤差逆傳播演算法不僅可以用於多層前饋神經網路,還可以用於訓練遞迴神經網路,但通常說的“BP網路”,一般是指用BP演算法訓練的多層前饋神經網路。
BP演算法基於梯度下降策略,以目標的負梯度方向對引數進行調整。
1、BP網路結構示意圖如下:

假設輸出層的節點個數為l個,隱層的節點個數為q個,輸入層的節點個數為d個,那麼我們需要學習的引數個數就為d∗q+q+q∗l+l個引數,其中d∗q與q∗l分別是輸入層與隱層的連線權值與隱層和輸出層的連線權值個數,q,l分別是隱層和輸出層的閾值個數。這樣我們就可以將對神經網路的學習問題轉化為引數的優化問題。而優化問題最常用的方法就是梯度下降方法,就是讓目標引數沿著梯度的方向變化從而達到最優值:ωi+1=ωi+ηΔω,其中η為步長,Δω為沿梯度方向的變化量。
假設隱層和輸出層都是使用Sigmoid函式,則網路在訓練樣例上的那麼該網路的均方誤差值即為E。
2、BP演算法的推導
這裡我們將隱層第h個節點與輸出層第j個節點的連線權值ωhj作為優化的目標引數,那麼基於梯度下降方法我們知道該引數的變化量
Δωhj=ηδE/δωhj
根據鏈式規則,我們可以將該公式展開
δE/δωhj=(δE/δyˆj)(δyˆj/δβj)(δβj/δωhj)
其中,δE/δyˆj=yˆj−yj,δyˆj/δβj=yˆj(1−yˆj),δβj/δωhj=bh,因此
δE/δωhj=yˆj(1−yˆj)(yˆj−yj)bh
令gj=yˆj(1−yˆj)(yˆj−yj),那麼
Δωhj=ηgjbh
3、BP演算法的操作步驟:
(1)先將輸入的樣例提供給輸入層神經元,然後逐層將訊號前傳,直到產生輸入層的結果;
(2)計算輸入層的誤差,再將誤差逆向傳播至隱層神經元,最後根據隱層神經元的誤差來對連線權和閾值進行調整。
(3)該迭代過程迴圈進行,直到達到某些停止條件為止,例如訓練誤差達到一個很小的值。
4、BP演算法的目標是要最小化訓練集D上的累積誤差,但上述標準BP演算法每次僅針對一個訓練樣例更新權重和閾值。