678 words
3 minutes

Machine Learning : Perceptron, Linear Regression

Perceptron#

Intro#

  • 深度學習基礎單元(神經元)
  • Linear classifier

Perceptron Learning Algorithm#

基本定義#

  • 資料 : (x,y)(x1,x2)(x, y) \Rightarrow (x_1, x_2)
  • 方程式 : w0c+w1x1+w2x2=(w0,w1,w2)(c,x1,x2)=0w_0c + w_1x_1 + w_2x_2 = (w_0, w_1, w_2) \cdot (c, x_1, x_2) = 0
  • 資料點位於直線右側時, 等式結果為正, 反之則為負

基本算法 : 修正錯誤#

  • 遇到錯誤的點時將往x方向的法向量加入w, 迫使資料點被放置於直線的另一側

img

實作方式#

  • 指定迭代次數, 若參數可正確分類則return

處理高維度資料#

  • 訂立一個 threshold, 取內積結果與 threshold 相差的正負值

img

關於迭代次數與參數正確性成正相關的證明#

\mathbf w^{(t)}\ 對樣本 (xk,yk)(x_k,y_k) 分類錯誤時,PLA會做以下更新 :

w(t+1)=w(t)+ykxk \mathbf w^{(t+1)} = \mathbf w^{(t)} + y_k x_k

假設現在是第t次 :

w(t+1)w\*=(w(t)+ykxk)w\*=w(t)w\*+yk(xkw\*)\begin{aligned} \mathbf{w}^{(t+1)} \cdot \mathbf{w}^{\*} &= (\mathbf{w}^{(t)} + y_k x_k) \cdot \mathbf{w}^{\*} \\\\ &= \mathbf{w}^{(t)} \cdot \mathbf{w}^{\*} + y_k (x_k \cdot \mathbf{w}^{\*}) \end{aligned}

線性可分 yk(xk ⁣w\*)γ\Rightarrow y_k (x_k\!\cdot \mathbf w^{\*})\ge\gamma

w(t+1) ⁣w\*w(t) ⁣w\*+γ \mathbf w^{(t+1)}\!\cdot \mathbf w^{\*} \ge \mathbf w^{(t)}\!\cdot \mathbf w^{\*} + \gamma

接著計算更新之後的Norm :

w(t+1)2=w(t)+ykxk2=w(t)2+2ykw(t) ⁣xk+xk2w(t)2+0+R2(ykw(t) ⁣xk0)=w(t)2+R2\begin{aligned} \|\mathbf w^{(t+1)}\|^2 &= \|\mathbf w^{(t)} + y_k x_k\|^2\\\\ &= \|\mathbf w^{(t)}\|^2 + 2y_k\mathbf w^{(t)}\!\cdot x_k + \|x_k\|^2\\\\ &\le \|\mathbf w^{(t)}\|^2 + 0 + R^2 \quad(\because y_k\mathbf w^{(t)}\!\cdot x_k\le0)\\\\ &= \|\mathbf w^{(t)}\|^2 + R^2 \end{aligned}

M次更新後可得 :

w(M)2MR2\|\mathbf w^{(M)}\|^2 \le M R^2

並且可以分別得到dot至少成長 :

w(M) ⁣w\*Mγ\mathbf w^{(M)}\!\cdot \mathbf w^{\*}\ge M \gamma

以及norm至多成長 :

w(M)RM\|\mathbf w^{(M)}\|\le R\sqrt{M}

因此可以得到Cosine的下界 :

cosθM=w(M) ⁣w\*w(M)w\*Mγ(RM)w\*=MγRw\*\begin{aligned} \cos\theta_M &= \frac{\mathbf w^{(M)}\!\cdot \mathbf w^{\*}} {\|\mathbf w^{(M)}\|\|\mathbf w^{\*}\|}\\\\ &\ge \frac{M\gamma}{(R\sqrt{M})\|\mathbf w^{\*}\|} = \frac{\sqrt{M}\gamma}{R\|\mathbf w^{\*}\|} \end{aligned}

其中右式為單調增加

雜訊容忍#

  • 加總錯誤次數
  • Minimize

不過由於需要minimize的為indicator, 無法解開(NP-hard), 可改進此演算法

Pocket Algorithm#

  • 更新模式與PLA相同
  • 若新的權重優於原版才更新為新的 wtw_t

Linear Regression#

Intro#

  • 與Perceptron很類似, 不過不是取sign, 是取內積作為函數的output
  • 以擬合資料走向為目標, 想辦法最小化殘差量

Error measure#

使用的誤差平方

imgs

Algorithm#

先定義資料集 {(xi,yi)}i=1n,xiRp\{(\mathbf x_i, y_i)\}_{i=1}^n,\quad \mathbf x_i\in\mathbb{R}^p :

X=[1x11x12x1p1x21x22x2p1xn1xn2xnp],β=[β0β1βp],y=[y1y2yn]X = \begin{bmatrix} 1 & x_{11} & x_{12} & \cdots & x_{1p} \\\\ 1 & x_{21} & x_{22} & \cdots & x_{2p} \\\\ \vdots & \vdots & \vdots & \ddots & \vdots \\\\ 1 & x_{n1} & x_{n2} & \cdots & x_{np} \end{bmatrix} ,\quad \boldsymbol\beta = \begin{bmatrix} \beta_0 \\\\ \beta_1 \\\\ \vdots \\\\ \beta_p \end{bmatrix} ,\quad \mathbf y = \begin{bmatrix} y_1 \\\\ y_2 \\\\ \vdots \\\\ y_n \end{bmatrix}

模型就會是 :

y^=Xβ\hat{\mathbf y}=X\,\boldsymbol\beta

接著定義Loss:

J(β)=yXβ22=(yXβ)(yXβ)J(\boldsymbol\beta) = \|\mathbf y - X\boldsymbol\beta\|_2^2 = (\mathbf y - X\boldsymbol\beta)^\top(\mathbf y - X\boldsymbol\beta)

接著求微分,然後令他為0 (求解正規方程) :

Jβ=2X(yXβ)  =!0XXβ=Xy\frac{\partial J}{\partial \boldsymbol\beta} = -2X^\top(\mathbf y - X\boldsymbol\beta) \;\overset{!}{=} \mathbf0 \quad\Longrightarrow\quad X^\top X \boldsymbol\beta = X^\top \mathbf y

假設 XXX^\top X 可逆(大部分情況都是可逆) :

β=(XX)1Xy\boldsymbol\beta = (X^\top X)^{-1} X^\top \mathbf y

Applications#

線性回歸也可套用到二元分類, 利用公式去推算初始的線, 加快算法的收斂速度

img12

Machine Learning : Perceptron, Linear Regression
https://blog.cyberangel.work/posts/ml-perceptron/
Author
Ethan
Published at
2025-03-13
License
CC BY-NC-SA 4.0
Last updated on 2025-03-13,266 days ago

Some content may be outdated

Table of Contents