詳解機器學習之感知機理論與實踐

來自微信公眾號 深度學習自然語言處理

閱讀大概需要5分鐘

上期回顧

詳解機器學習之the Learning Problem

導讀

本章講的是讓他機器學習說yes/no,目錄分為:

  1. 感知機假設集合
  2. 感知機學習演算法(PLA)
  3. 確保數據集線性可分
  4. 非線性可分數據
  5. 實踐代碼與效果

Perceptron Hypothesis Set

我們還以是否給辦理信用卡為例,上面是客戶的信息。

x是上面的客戶信息向量,每一個維度對應一個權重w,w理解為這個維度的重要性。這個我們設定一個閾值,客戶的每個信息*權重超過了閾值則就給辦理,否則不給辦理。

其中

我們簡化下,將+1設為good,-1設為bad。因為權重*x求和-閾值是一個數,經過sign函數,如果大於0就返回+1,小於0就返回-1,來判斷。

我們再來簡化下這個公式:

這裡的閾值可以看做是*+1的一個變數,將+1看做已知的向量元素x,即:

然後就可以合併:

最終變為兩個向量的內積形式。

那麼我們的h長什麼樣子呢?我們在二維上用圖表示:

其中:

(x1,x2)為平面上的點

label y為已知,平面上表示為o為+1,x為-1

假設h集合,為平面上的很多線,在線的兩邊分別為正的,負的。

在數學上,這個叫做線性分類器linear classifiers。

Perceptron Algorithm Learning(PLA)

我們知道集合h裡面有我們想要的最終g,但是h集合裡面有太多的選擇了,我們怎麼也不能一個一個選吧?比如上面的二維分類中的h集合里是所有的平面的線條,但是我們怎麼也不能一個一個拿來試試吧。我們要想人一樣的,想做下試試,再根據錯誤反饋慢慢調整。

比如下面這條線,我們能不能稍微弄動下,把正確的包含進來呢?

方法如下:

對於每條數據(x,y)來說,如果發現通過通過函數返回值和label y不一樣,那麼我們就更新,怎麼更新呢?

當y=+1時,所得的內積後的值為負數,那代表w和x的夾角太大了,要縮小下,通過公式:

將新的w更新到w和x之間。

當y=-1時,所得的內積後的值為正數,那代表w和x的夾角太小了,要擴大下,通過公式:

將新的w更新到w和x之外。

直到沒有錯誤為止,停止更新,返回w向量即可。

一句話表示這個簡單的演算法:

知錯能改,善莫大焉。

這裡有個我拓展個知識:

向量w是該二維平面的法向量:

其實向量w是n維超平面的法向量,因為上圖是二維的,所以超平面是一條線。

這裡再補充點超平面的知識:

超平面分離定理是應用凸集到最優化理論中的重要結果,這個結果在最優化理論中有重要的位置。所謂兩個凸集分離,直觀地看是指兩個凸集合沒有交叉和重合的部分,因此可以用一張超平面將兩者隔在兩邊。

Guarantee of PLA

我們的數據必須是能用一條線(或者一個平面)分開,我們叫這個為線性可分linear separable,如圖:

線性可分

線性不可分

Non-Separable Data

像這種線性不可分的怎麼辦呢?這個其實很簡單,找犯錯誤最小的就行。公式為:

可是。。這個是個NP-hard問題,而NP-hard問題是直接難倒計算機界的一大難題,至今未解。所以,這樣最佳的分割線還是找不到的。

以上圖片(除了紙上的推導)來自台大林軒田機器學習基石視頻

代碼實踐

初始化數據

顯示的正常分類結果為:

循環迭代更新

每日托福單詞

notion n.概念,觀念

protein n. 蛋白質

norm n.標準,規範

politic adj.精明的,有策略的

contain v. 抑制,控制

推薦閱讀:

TAG:機器學習 | 深度學習DeepLearning |