詳解機器學習之感知機理論與實踐
來自微信公眾號 深度學習自然語言處理
閱讀大概需要5分鐘
上期回顧
詳解機器學習之the Learning Problem
導讀
本章講的是讓他機器學習說yes/no,目錄分為:
- 感知機假設集合
- 感知機學習演算法(PLA)
- 確保數據集線性可分
- 非線性可分數據
- 實踐代碼與效果
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 |