---
title: 【機器學習基石筆記】數學基礎 Week2
date: 2020-01-17
is_modified: false
disqus: cynthiahackmd
categories:
- "智慧計算 › 人工智慧"
tags:
- "AI/ML"
- "Coursera"
- "機器學習基石"
- "讀書筆記"
---
{%hackmd @CynthiaChuang/Github-Page-Theme %}
<br>
本週主題 :**Learning to Answer Yes/No**,就是學會~~說 Yes/No 問句~~,其實是學會進行二元分類(Binary classification)
<!--more-->
## 上週回顧
[上週課程](/@CynthiaChuang/Machine-Learning-Foundations-Study-Notes-Mathematical-Foundations-Week1)提到,在機器學習中存在一個 Learning Algorithm $A$ 與一個假說集合 Hypothesis Set $H$,$A$ 在觀察餵入的資料集合 $D$ 後,會從假說集合挑選一個最符合的 $g$ ,這個 $g$ 會在最後應用階段時,被使用來進行分類。
本週延續上週核發信用卡的例子,發不發卡是一個二元分類問題,使用者資料 $x$ 最終經由 $g$ 後,會得到 $y$,也就是 Yes(發卡)或 No(不發卡)結果。
## 感知器 Perceptron
開始上課前,我先岔開查了**感知器(Perceptron)** 這個詞所代表的意思與定義。
感知器這個名詞緣起於類神經網路時期,這個演算法的概念跟真實的生物神經元傳遞訊號的機制類似。
<p class="illustration">
<img src="https://i.imgur.com/mXQvWYG.png" alt="神經元結構">
神經元結構(圖片來源: <a href="https://blog.csdn.net/aws3217150/article/details/46316007">CarlXie-CSDN博客</a>)
</p>
生物的神經細胞可被視為只有兩種狀態的機器 — 激動時為『是』,而未激動時為『否』。而其狀態,取決於所接收到的輸入訊息,及輸入訊息的強度。當強度超過了某個門檻值時,細胞體會激動產生電脈衝,透過軸突發送訊息給下一個神經元。
如果不管生物學上的例子,感知器其實就是一種二元線性分類器(Linear Binary Classifiers),唯有當輸入的訊息符合標準或門檻值時,才會觸發下一個動作(發卡)。
## Perceptron Hypothesis Set
在發卡的例子中,銀行可能掌握了用戶各種屬性資料,如年齡、性別、年收入、負債、工作經歷...等情況。而每位使用者的資料可以向量來表示:
$$
X = \{x_1, x,2, ... ,x_d\}
$$
銀行會對每個條件進行評分,也就是依照每個條件的正/負相關性給予給與==權重==,例如:年收入的權重給予 1,負債的權重給予 -1...等。而權重也可以用向量來表示:
$$
W = \{w_1,w_2,...,w_d\}
$$
而銀行唯有當這些條件的總分,超過門檻值(threshold , $T$)時,才會核發信用卡:
$$
score = \sum_{i=1}^{d}{w_ix_i} , and
\left\{
\begin{array}{l}
score > T ,\ approve
\\
score < T , \ reject
\\
score = 0 ,\ ignored
\end{array}
\right .
$$
<br>
我們將其輸出 $y$ 的結果集合使用符號來表示,可稱為Label,可表示為 $y = \{ +1 (approve) , -1 (reject)\}$ , 0 ignored,因此式子可簡化成:
$$
h(x) = sign(\sum_{i=1}^{d}{w_ix_i} - T) ,\ where\ h(x) ∈ H
$$
其中
$$
sign(x) = \left\{
\begin{array}{l}
+1,\ x >0
\\
-1,\ x < 0
\end{array}
\right .
$$
<br>
為簡化數學式的表示,可針對數學符號再做進一步的化簡:
$$
\begin{aligned}
h(x) &= sign(\sum_{i=1}^{d}{w_ix_i} - T) \\
&= sign(\sum_{i=1}^{d}{w_ix_i} + \underbrace{(-T)}_{w_0} \times \underbrace{(+1)}_{x_0}) \\
&= sign(\sum_{i=0}^{d}{w_ix_i}) \\
&= sign(W^TX)
\end{aligned}
$$
<br>
個人經驗雖然兩者意義上相同,但在實務上偏向使用矩陣運算,因為矩陣運算的可以藉由 GPU 使用 CUDA 來加速。
### Perceptrons in $R^2$
為可視化,我們將感知器使用在二維平面上,即表示只使用兩種條件,例如:年收入與負債兩種,若使用越多條件會映射到更高維度的空間。
因此 $h(x)$ 可表示成 $sign(w_0 + w_1x_1+w_2x_2)$,因為 $sign$ 是以 0 為分界線的函數,因此可設 $w_0 + w_1x_1+w_2x_2=0$ ,該式恰是一條直線方程式,而不同權重 $W$ 會對應到不同的直線。
若將平面上個點依照線段來劃分,所有的點會分落在線段兩側,一側為正另一側為負。而我們期望的目標是能找到一條直線 ,剛好能將不同的 Label 劃分開來。
<p class="illustration">
<img src="https://i.imgur.com/JD6GGY3.png" alt="Perceptrons in R^2">
Perceptrons in R^2(圖片來源: <a href="coursera.org/learn/ntumlone-mathematicalfoundations/lecture/GNlJL/perceptron-learning-algorithm-pla">課程截圖</a>)
</p>
因為感知器的實做其實是藉由一條直線方程,來劃分平面上所有點,因此只能作為一個二元線性分類器(Linear Binary Classifiers)。
## Perceptron Learning Algorithm (PLA)
在上一節中,我們可得知感知器中 Hypothesis Set 的所有可能集合 $H$,也就是平面上所有的直線。一旦有了 $D$ 與 $H$ 後,我們就可以藉由機器學習演算法來挑選最適合的線段。
### 何謂最適合的線段?
之前提過,機器在觀察餵入的資料會從 Hypothesis Set $H$ 中學到一函數 Hypothesis $g$ ,期望上我們希望 $g$ 越接近 Target function $f$ 越好。但之前也提過,我們並不知曉 $f$ 到底長怎樣。因此實做時根本不可能與 $f$ 相互比較。
但我們可使用餵入的資料來協助找到最好的 $g$ ,先忽略錯誤標記及存在雜訊的情況下,我們可以假設所輸入的資料 $x$ 在經由 $f(x)$ 後,可以得到一輸出結果 $y$。 如果我們可以從 $H$ 中找到一條 $g$ ,對每個點其輸出結果與 $f$ 完全一致,我們則認為 $g$ 是個不錯的結果。
因此在這邊對於合適線段的定義應該是,==找到一條只直線 $g$ ,使資料集中所有點的分類結果與本身的 Label 一致==。
### 如何找到最適合的線段?
若在 Hypothesis Set $H$ 不大的情況下,可以每條線段逐一檢查。但在平面上的線段是無窮多的,根本不可能一一檢查。
因此這邊採用逐漸修正的方式,在取得一條初始線段 $g_0$ 的情況下,經過不斷的錯誤修正,對線段進行平移旋轉等操作,最終能找到一條 $g_f$ ,這就是 Perceptron Learning Algorithm (PLA) 演算法的核心。
<br>
:::info
**提醒**
$W$ 其實是直線方程的法向量
:::
### PLA 演算法
具體演算法流程如下:
1. 初始化權重 $W$ 為 $W_0$,設定 $W_0$ = 0
2. 按序或隨機遍歷所有資料,也就是二維平面上所有的點,找出分類結果與真實標籤不符的資料:
1. 若存在,則更新權重 $W$ 後,重新執行步驟二。
2. 若不存在,停止執行。
<br>
其中,我們將所找到分類結果的資料標記為 $(X_{n(t)}, Y_{n(t)})$ ,而權重更新公式如下:
$$
W_{t+1} \leftarrow W_t + Y_{n(t)}X_{n(t)}
$$
<p class="illustration">
<img src="https://i.imgur.com/Q5wRz1x.png" alt="向量修正">
向量修正(圖片來源: <a href="https://www.coursera.org/learn/ntumlone-mathematicalfoundations/lecture/GNlJL/perceptron-learning-algorithm-pla">課程截圖</a>)
</p>
如果 $sign()=-1$,但是 $y=+1$,也就是说 $W$ 和 $X$ 的夾角過大,需要使 $W$ 向 $X$ 靠攏,即左圖。
如果 $sign()=+1$,但是 $y=-1$,也就是说 $W$ 和 $X$ 的夾角過小,需要使 $W$ 與 $X$ 遠離,即右圖。
<br>
雖然 PLA 的核心相當的簡單,但仍有幾個最基本的問題需要解決:
1. 這演算法何時會停下來?
2. 如果停下來,找到的 $g_f$ 真的接近 $f$ 嗎?
## Guarantee of PLA
PLA 演算法停止必須滿足訓練集所有樣本都是==線性可分的(linear separable)==,也就是說平面上必須至少存在一條線的,並且使的線的一側全為藍點,另一側全為紅點。
<p class="illustration">
<img src="https://i.imgur.com/ModWTsc.png" alt="線性可分">
線性可分(圖片來源: <a href="https://www.coursera.org/learn/ntumlone-mathematicalfoundations/lecture/XckQ1/guarantee-of-pla">課程截圖</a>)
</p>
### [證明] PLA 會停止運行
##### `TODO: 證明改成英文的, LaTeX 搭中文好醜`
1. 評估 $W_{t+1}$ 及 $W_{t}$ 與 $W_f$ 的相近程度
$\because$ $D$ 為線性可分
$\therefore$ 必存在一條直線其法向量為 $W_f$ ,使 $D$ 中所有點皆符合 $Y_n = sign(W_f^TX_n)$
<br>
$\because$ 已知存在一條法向量為 $W_f$ 的直線且 $Y_n = sign(W_f^TX_n)$
$\because$ 可知平面上任一點皆與法向量為 $W_f$ 的直線存在一定距離
$\therefore$ 故推知 $Y_nW_f^TX_n > 0$ 且 $min( Y_nW_f^TX_n) > 0$
<br>
$\because$ 在運行 $t$ 次時,存在一個分類錯誤的點 $(X_{n(t)}, Y_{n(t)})$
$\because$ 又 $(X_{n(t)}, Y_{n(t)}) \in D$
$\therefore$ 可推知 $Y_{n(t)}W_f^TX_{n(t)} \geq\ min( Y_nW_f^TX_n) > 0$
<br>
為評估 $W_f$ 與 $W_{t+1}$ 的相近程度,故使向量內積
$$
\begin{aligned}
W_f^TW_{t+1} &= W_f^T( W_t + Y_{n(t)}X_{n(t)} ) \qquad \because\ W_{t+1} \leftarrow W_t + Y_{n(t)}X_{n(t)} \\
&= W_f^TW_t + W_f^TY_{n(t)}X_{n(t)} ) \\
&\geq W_f^TW_t + min( Y_nW_f^TX_n) \qquad \because\ Y_{n(t)}W_f^TX_{n(t)} \geq\ min( Y_nW_f^TX_n) \\
&> W_f^TW_t + 0 \qquad \because\ min( Y_nW_f^TX_n) > 0
\end{aligned}
$$
可得 $W_f^TW_{t+1} > W_f^TW_t$ ,向量內積隨執行次數增加而增加。
<br>
2. 向量內積的增長可能原因有二:==向量長度增加或向量夾縮小==。為排除向量長度增長對向量內積增加的影響,進行下列證明:
$\because$ 在運行 $t$ 次時,存在一個分類錯誤的點 $(X_{n(t)}, Y_{n(t)})$ ,使的 $sign(W_t^T, X_{n(t)}) \neq Y_{n(t)}$
$\therefore$ 可推知 $Y_{n(t)}(W_t^T, X_{n(t)}) \leq 0$
<br>
$\because$ 已知 $W_{t+1} \leftarrow W_t + Y_{n(t)}X_{n(t)}$ ,故可得
$$
\begin{aligned}
{ \parallel W_{t+1} \parallel}^2 &= {\parallel W_t + Y_{n(t)}X_{n(t)} \parallel} ^2 \\
&= {\parallel W_t \parallel} ^2 + 2 W_tY_{n(t)}X_{n(t)} + {\parallel Y_{n(t)}X_{n(t)} \parallel} ^2 \\
&\leq {\parallel W_t \parallel} ^2 + 0 + {\parallel Y_{n(t)}X_{n(t)} \parallel} ^2 \qquad \because Y_{n(t)}(W_t^T, X_{n(t)}) \leq 0 \\
&\leq {\parallel W_t \parallel} ^2 + {max\parallel Y_{n(t)}X_{n(t)} \parallel} ^2 \\
&\leq {\parallel W_t \parallel} ^2 + {max\parallel X_{n(t)} \parallel} ^2 \qquad \because Y_{n(t)} 為
\pm1,取平方後無影響 \\
\end{aligned} \\
$$
可得 ${ \parallel W_{t+1} \parallel}^2 \leq {\parallel W_t \parallel} ^2 + {max\parallel X_{n(t)} \parallel } ^2$ ,證明在運行中向量長度增加緩慢
<br>
3. 證明隨執行次數增加而 $W_{t+1}$ 與 $W_f$ 逐漸靠近
$\because$ 已知向量內積公式為 $\vec a \cdot \vec b = |\vec a||\vec b| cos{\theta}$
$\because$ 又從(1)中得知,向量內積隨執行次數增加而增加
$\because$ 又從(2)中得知,在運行中向量長度增加緩慢
$\therefore$ 向量內積的增加,為 $cos{\theta}$ 增加所導致
$\therefore$ 證明隨執行次數增加而 $W_{t+1}$ 與 $W_f$ 逐漸靠近
<br>
4. 證明PLA會停止
設定初始向量為 $W_0 = 0$,從 0 開始進行 $T$ 次迭代
<br>
由(2)推知:
$$
\begin{aligned}
{ \parallel W_T \parallel}^2 &\leq {\parallel W_{T-1} \parallel} ^2 + {max\parallel X_{n} \parallel} ^2 \\
&\leq {\parallel W_{T-2} \parallel} ^2 + {max\parallel X_{n} \parallel} ^2 +{ max \parallel X_{n} \parallel} ^2 \\
&\leq {\parallel W_{0} \parallel} ^2 + T \cdot {max\parallel X_{n} \parallel} ^2 \\
&\leq T \cdot {max\parallel X_{n} \parallel} ^2 \qquad \because\ W_{0} = 0 \\
\end{aligned}
$$
<br>
由(1)推知:
$$
\begin{aligned}
W_f^TW_{T} &\geq W_f^TW_{T-1}+ min( Y_nW_f^TX_n) \\
&\geq W_f^TW_{T-2}+ min( Y_nW_f^TX_n) + min( Y_nW_f^TX_n) \\
&\geq W_f^TW_{0}+ T \cdot min( Y_nW_f^TX_n) \\
&\geq T \cdot min( Y_nW_f^TX_n) \\
\end{aligned}
$$
<br>
結合上述兩結論,可得
$$
\begin{aligned}
\frac{W_f^T}{ \parallel W_f\parallel} \frac{W_T}{ \parallel W_T \parallel} &\geq \frac {T \cdot min( Y_nW_f^TX_n)}{\parallel W_f\parallel \parallel W_T \parallel} \\
&\geq \frac {T \cdot min( Y_nW_f^TX_n)}{\parallel W_f\parallel \sqrt{T \cdot {max\parallel X_{n(t)} \parallel } ^2 }} \\
&\geq \frac {\sqrt{T} \cdot min( Y_nW_f^TX_n)}{\parallel W_f\parallel max\parallel X_{n(t)} \parallel } \\
&\geq \sqrt{T} \frac { min( Y_nW_f^TX_n)}{\parallel W_f\parallel max\parallel X_{n(t)} \parallel } \\
&\geq \sqrt{T} \cdot C , \qquad C = \frac { min( Y_nW_f^TX_n)}{\parallel W_f\parallel max\parallel X_{n(t)} \parallel } \\
\end{aligned} \\
$$
<br>
已知內積中正規化後,乘積最多為 1
故可得
$$
\begin{aligned}
1 &\geq \frac{W_f^T}{ \parallel W_f\parallel} \frac{W_T}{ \parallel W_T \parallel} \\
& \geq \sqrt{T} \frac { min( Y_nW_f^TX_n)}{\parallel W_f\parallel max\parallel X_{n(t)} \parallel } \\
\end{aligned}
$$
<br>
化簡後
$$
\frac{R^2}{\rho^2} = \frac {\parallel W_f\parallel^2 max\parallel X_{n(t)} \parallel^2 } { min( Y_nW_f^TX_n)^2} \geq T
$$
<br>
其中
$$
R^2 = max\parallel X_{n(t)} \parallel^2 \qquad \qquad \rho^2 = min(Y_n \frac {W_f^T}{\parallel W_f\parallel }X_n)
$$
<br>
從最後一條式子看來T是有上限的,因此在線性可分的情況下,==PLA 最終會停止==。
## Non-Separable Data
PLA 演算法的優缺點相當清楚,優點是簡易實做,可以適用於任何維度,缺點是==資料必須是線性可分的==,可是是否為線性可分通常==無法事前得知==。即使資料是線性可分的,但因為時間複雜度高,執行時間也會耗費相當久。
<br>
另一種情況是 $f$ 產生的資料本身是線性可分,但因雜訊(noise)、輸入錯誤...等因素,最終產生出線性不可分的資料,也會使得 PLA 無法停止。
為避免無窮迴圈的情況發生,因此我們退而求其次,不找不犯錯的線,改找犯錯最少的線:
$$
W_g = argmin \sum_{n=1}^N (Y_n \neq sign(W^TX_n)
$$
<br>
但此類問題已經被證實是一個 **NP-hard 問題**,不可能找到最佳解,只能找到近似解。
<br>
這邊提出了一個近似的演算法 Pocket,它本質是一個貪婪演算法,屬於 PLA 演算法的變形,演算法如下:
1. 初始化權重 $W$ 為 $W_0$,設定 $W_0$ = 0
2. 隨機遍歷所有資料,找出分類結果與真實標籤不符的資料:
1. 若存在,則更新 $W$ 後,並統計新線段存在的錯誤點數。若總數小於所記錄,則更新記錄與對應權重。
2. 若不存在,停止執行。
3. 執行前,請先設定中止條件,如:執行次數、錯誤點少於多少時停止...等。
## 課堂測驗
**Q1 . Assume that each email is represented by the frequency of keyword occurrence, and output +1 indicates a spam. Which keywords below shall have large positive weights in a**
[ ] 1. coffee, tea, hamburger, steak
[V] 2. free, drug, fantastic, deal
[ ] 3. machine, learning, statistics, textbook
[ ] 4. national, Taiwan, university, coursera
<br>
**Q2 . Let $n = n(t)$, according to the rule of PLA below, which formula is true?**
$$
sign(w^T_tx_n)≠y_n ,\ and\ ,\ , w_{t+1} \leftarrow w_t + y_nx_n
$$
[ ] 1. $w^T_{t+1}x_n = y_n$
[ ] 2. $sign(w^T_{t+1}x_n)=y_n$
[V] 3. $y_nw^T_{t+1}x_n \geq y_nw^T_tx_n$
[ ] 4. $y_nw^T_{t+1}x_n < y_nw^T_tx_n$
<br>
**Q3 . Define $R^2 = max_n \parallel x_n\parallel^2$ , $\rho = min_ny_n \frac {w^T_f}{\parallel x_f \parallel} x_n$. We want to show that $T \leq □$. Express the upper bound $□$ by the two terms above.**
[ ] 1. $R/\rho$
[V] 2. $R^2/\rho^2$
[ ] 3. $R/\rho^2$
[ ] 4. $\rho^2/R^2$
<br>
**Q4 .Since we do not know whether $D$ is linear separable in advance, we may decide to just go with pocket instead of PLA. If $D$ is actually linear separable, what's the difference between the two?**
[V] 1. pocket on $D$ is slower than PLA
[ ] 2. pocket on $D$ is faster than PLA
[ ] 3. pocket on $D$ returns a better $g$ in approximating ff than PLA
[ ] 4. pocket on $D$ returns a worse $g$ in approximating ff than PLA
## 其他連結
1. [機器學習基石筆記目錄](/@CynthiaChuang/Machine-Learning-Foundations-Study-Notes-Contents)
## 參考資料
1. [感知器|維基百科](https://zh.wikipedia.org/wiki/%E6%84%9F%E7%9F%A5%E5%99%A8)
2. [FUNcLogs: 感知學習演算法(Perceptron Learning Algorithm)|白話說明](http://function1122.blogspot.com/2010/10/perceptron-learning-algorithm.html)
3. [[資料分析&機器學習] 第3.2講:線性分類-感知器(Perceptron) 介紹|Yeh James – Medium](https://medium.com/@yehjames/%E8%B3%87%E6%96%99%E5%88%86%E6%9E%90-%E6%A9%9F%E5%99%A8%E5%AD%B8%E7%BF%92-%E7%AC%AC3-2%E8%AC%9B-%E7%B7%9A%E6%80%A7%E5%88%86%E9%A1%9E-%E6%84%9F%E7%9F%A5%E5%99%A8-perceptron-%E4%BB%8B%E7%B4%B9-84d8b809f866)
4. [Linear separability|Wikipedia](https://en.wikipedia.org/wiki/Linear_separability)
5. [投影屏15页的constant如何推导出?|coursera](https://www.coursera.org/learn/ntumlone-mathematicalfoundations/discussions/weeks/2/threads/2LLNA2XXEeeA2A7nkPb23A)
## 參考筆記
1. [机器学习基石笔记2——在何时可以使用机器学习(2)|杜少 - 博客园](http://www.cnblogs.com/ymingjingr/p/4271761.html)
2. [机器学习基石笔记2——在何时可以使用机器学习(2)|Deribs4 - 博客园](https://www.cnblogs.com/Deribs4/p/5399759.html)
3. [听课笔记(第二讲): Perceptron-感知机 (台湾国立大学机器学习基石)|豆瓣](https://www.douban.com/note/319669984/)
4. [Coursera台大机器学习基础课程学习笔记1 -- 机器学习定义及PLA算法|HappyAngel - 博客园](http://www.cnblogs.com/HappyAngel/p/3456762.html)
{%hackmd @CynthiaChuang/Github-Page-Footer %}