
之前我寫的一篇 deep learning 文章,在描述為模型加入非線性特性的描述不是完全正確(不好意思,當時學藝不精😅 ),目前已隱藏文章。這篇文章來說明之前不對的點。
之前我誤以為 machine learning (ML) 中的線性 (linear) 模型只能作二元分類 (binary classification),但其實能作多元分類 (multiclass classification)。如圖,是用線性模型 作 3 元分類。
無論是 2 元或多元分類,只要一資料集中,不同類別資料群的分佈滿足一定的空間隔離條件,就能用線性模型作分類。
什麼空間隔離條件?以 2 維平面來說,若在 n > 2 群資料之間找到 「n 條線相交於一點」,那麼就能將平面切成 n 個隔離的平面,就能用線性模型作分類。以圖為例,平面被切成 3 個隔離平面,可用線性模型分類 3 的類別資料群。對 3 維空間,空間隔離條件是 n 個平面相交於「一線」。
以上隔離條件如何由數學式得知?首先由平面坐標 (x1, x2) 中,2 元線性分類器開始作說明,它的線性模型數學式:
y = w1 * x1 + w2 * x2 + b
y 為 logit,再代入 sigmoid function 取得機率值,若取 0.5 為決策 (decision) 值,那麼 >= 0.5 則為一分類 A,若 < 0.5 則為另一分類 B。然後分類 A 與 B 在平面上的決策邊界 (decision boundary) 是什麼?其是就是 y = logit(0.5) = 0 的情況:
y = 0 = w1 * x1 + w2 * x2 + b
=> x2 = w1/w2 * x1 – b/w2
以上方程式為平面中的「一條線」。所以平面中,2 元線性分類器的決策邊界是一條線,來分開 2 個類別!
那麼以圖片中的 2 維平面,要怎麼用線性模型作 3 類別分類?答案是用 3 個線性方程式為一組 yy,所形成的線性模型:
yy = ww * xx + bb
其中各向量、矩陣變數維度為:
yy = [yy1; yy2; yy3]: 3 by 1
ww: 3 by 2
xx: 2 by 1
bb: 3 by 1
若分類決策為 argmax(yy),那麼我們計算 yy1 與 yy2 的決策邊界為 yy1 = yy2:
yy1 = ww11 * xx1 + ww12 * xx2 + bb1 = yy2 = ww21 * xx1 + ww22 * xx2 + bb2
=> (ww11 – ww21) * xx1 + (ww12 – ww22) * xx2 + bb1 – bb2 = 0
以上方程式也是平面中的「一條線」。同理可推出 yy2 與 yy3、yy3 與 yy1 的決策邊界都是「一條線」。
除此之外還可以計算 yy 三組線性方程式共同的決策邊界,也就是 yy1 = yy2 = yy3. 有 2 個方程式,可以解 2 元 (xx1, xx2) 一次聯立方程式 :
yy1 = yy2
yy2 = yy3
因此求得一解 (xx1, xx2) 為平面中「一個點」!
再來為何知道二維平面 ML 線性模型分類器會交於一點?同樣以圖片為例說明,如果新增一分類 yy4,變為 4 元分類。假設 yy4 不與其它分類器交於同一點,比如平行於圖中下方那條紅-紫決策邊界,與灰、紫區有決策邊界,但不與紅區有決策邊界。那麼 yy4 與灰區的決策邊界其實等於紫-灰決策邊界,因為兩者是同一直線方程式,也就是 yy4 等同於紫區分類器(某個 yy 元素),矛盾!
以上線性模型是較好分析的一種機器學習 (ML) 模型,如果再加上一些非線性項(如 ReLU),形成 deep learning,那麼就不好分析了,就比較需要用到 try and error😅
學了以上這些的好處在於更能掌握一些 ML 模型的設計,而不是像我之前有些無腦亂組 deep learning 模型,雖然也能訓練出不錯結果,但會加了許多不必要的模型參數,造成一個比較沒計算 (computing) 與儲存 (file size) 效率的模型。