感知機整理筆記


基於《統計學習方法》的感知機內容以及自己的理解整理如下。
應用場景
按李航老師的定義:感知機(perceptron)是二分類的線性分類模型,其輸入為實例的特征向量,輸出為實例的類別(取+1 ,-1二值),感知機對應於輸入空間(特征空間)中將實例分為正負兩類的分離超平面,屬於判別模型。
使用場景較多,比如對網站某個廣告位進行點擊預估,就可以使用感知機離線訓練樣本,特征空間就是樣本用戶的瀏覽點擊行為等,樣本類別就是用戶屬於曝光、曝光點擊。
感知機是1957年Rosenblatt提出,是神經網絡與支持向量機的基礎,感知機雖然是線性分類模型,但多層感知機組成的神經網絡可以處理非線性問題,神經網絡的單個神經元就是感知機。
 
感知機數學定義

  假設輸入空間(特征空間),輸出空間是,輸入表示實例的特征向量,對應輸入空間(特征空間)點;

輸出表示實例的類別,輸入空間到輸出空間的映射函數稱為感知機。

其中w b為模型參數,w*x表示內積,sign表示指示函數:

 

感知機幾何解釋

線性方程,對應於特征空間 Rn    超平面S,S的法向量為w,S的截距為b。超平面S將特征空間分為兩部分,位於兩部分(特征空間)

的點分為正負兩類,因此也稱為分離超平面。二維空間分離平面示意圖:

 

 感知機的學習策略

給定訓練集,需要找到模型參數w 、b,確定將正負樣例正確分開的超平面。這時我們需要定義損失函數並極小化。損失函數一個自然的想法是誤分類點

的總數,但它不是w 、b的連續可導數;另一個想法是計算所有誤分類點到超平面S的距離,其中任一點到S的距離可表示為:

,其中是w的L2  范數。

對於誤分類的數據(xi ,yi)有:

 

誤分類點集合有:

 

誤分類點到超平面S的距離為:

 

因此所有誤分類點到超平面的距離為:,M為誤分類點的集合。

 

不考慮就得到感知機的損失函數,感知機的學習策略就是在假設空間選取使最小的模型參數w 、b。

 

感知機損失函數極小化方法

感知機誤分類集合M,所有點離超平面S越近,越小,而是連續可導的,對w求偏導得:

對b求偏導得:

 

訓練時隨機選取誤分類點更新:

其中為學習率或步長。

比較直觀的代碼實現:

# 數據線性可分,二分類數據
# 此處為一元一次線性方程
class Model:
    def __init__(self):
        self.w = np.ones(len(data[0])-1, dtype=np.float32)
        self.b = 0
        self.l_rate = 0.1
        # self.data = data
    
    def sign(self, x, w, b):
        y = np.dot(x, w) + b
        return y
    
    # 隨機梯度下降法
    def fit(self, X_train, y_train):
        is_wrong = False
        while not is_wrong:
            wrong_count = 0
            for d in range(len(X_train)):
                X = X_train[d]
                y = y_train[d]
                if y * self.sign(X, self.w, self.b) <= 0:
                    self.w = self.w + self.l_rate*np.dot(y, X)
                    self.b = self.b + self.l_rate*y
                    wrong_count += 1
            if wrong_count == 0:
                is_wrong = True
        return 'Perceptron Model!'
        
    def score(self):
        pass

 感知機的收斂性

Novikoff定理說明:1)線性可分的樣本一定存在超平面將正負樣本分開;

2)誤分類次數有上限,經過有限次搜索可以找到樣本完全正確分開的超平面,也就是說原始形式通過不斷迭代是收斂的。

3)當樣本線性不可分時,感知機算法不收斂,原始形式迭代過程會發生震盪。

4)感知機的算法存在許多解,依賴於初值選擇,也依賴於誤分類點在迭代過程中的順序。

5)在增加約束條件下,可以得到唯一分離超平面。

 

感知機學習對偶形式

  感知機學習算法對偶形式:
  輸入:線性可分的數據集其中,i=1,2...N,學習率

  輸出:a,b: 感知機模型 ,其中a=

  1)

  2)在訓練集中選取數據

  3)如果

  

  

  4)轉至(2)直到沒有誤分類數據。

對偶形式中樣本實例以內積形式預先計算出來,保存在Gram矩陣中

  對偶形式與原始形式本質一樣,它出現的意義在於:樣本點特征向量以內積事先計算好,放在Gram矩陣中,在更新參數a、b時,直接

通過查詢矩陣,可以加快計算。

  不妨假設特征空間是,n很大,而樣本行數N遠小於n,如果采用原始形式時間復雜度為\Theta(n) ;采用對偶形式的話,直接在Gram矩陣

里查表就能拿到內積 x_jx_i ,所以這個誤判檢測的時間復雜度是 \Theta(N),大大降低了時間復雜度。

  換句話說感知機的對偶形式,通過提前計算好樣本點內積並存儲於Grama Matrix,把每輪數據迭代的時間復雜度,從特征空間維度n轉移

到樣本集大小的維度,達到了性能的提升。

 

參考推薦
李航《統計學習方法》


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM