機器怎樣學習?

本系列是臺灣大學資訊工程系林軒田(Hsuan-Tien Lin)教授開設的《機器學習基石》課程的梳理。重在梳理,而非詳細的筆記,所以可能會略去一些細節。算法

該課程共16講,分爲4個部分:安全

  1. 機器何時可以學習?(When Can Machines Learn?)
  2. 機器爲何可以學習?(Why Can Machines Learn?)
  3. 機器怎樣學習?(How Can Machines Learn?)
  4. 機器怎樣能夠學得更好?(How Can Machines Learn Better?)

本文是第3部分,對應原課程中的9-12講。app

本部分的主要內容:dom

  • 線性迴歸算法詳解,以及泛化能力的保證、可否用於二分類問題等;
  • 邏輯迴歸算法詳解,並引入梯度降低方法;
  • 闡述PLA、線性迴歸、邏輯迴歸3種方法在分類問題上的聯繫與區別,並引入隨機梯度降低方法;
  • 多分類問題中的OVA、OVO方法;
  • 特徵的非線性變換,以及該如何控制變換後的複雜度。

1 線性迴歸

在第一部分中講過機器學習的分類,當\(\mathcal{Y}=\mathbb{R}\)時,就是迴歸。機器學習

1.1 線性迴歸算法

線性迴歸的假設集十分簡單,\(h(\mathbf{x})=\mathbf{w}^T\mathbf{x}\),其實就是感知機模型去除了符號函數。函數

它的逐點偏差度量可設爲\(\text{err}(\hat{y}, y)=(\hat{y}-y)^2\),那麼樣本內外的偏差分別爲學習

\[E_{\text{in}}(\mathbf{w})=\dfrac{1}{N}\sum\limits_{n=1}^{N}(\mathbf{w}^T \mathbf{x}_n-y_n)^2 \]

大數據

\[E_{\text{out}}(\mathbf{w})=\mathop{\mathcal{E}}\limits_{(\mathbf{x},y)\sim P}(\mathbf{w}^T \mathbf{x}-y)^2 \]

要最小化\(E_{\text{in}}\)很簡單,當它取到最小時必有梯度\(0\),所以可先計算出它的梯度:ui

\[\nabla E_{\text{in}}(\mathbf{w})=\dfrac{2}{N}(X^T X\mathbf{w}-X^T \mathbf{y}) \]

令它爲\(0\)便可。如圖所示:spa

\(X^T X\)可逆(當\(N\gg d+1\)時基本上會知足),則可直接得出

\[\mathbf{w}_{\text{LIN}}=(X^T X)^{-1} X^T \mathbf{y} \]

若是\(X^T X\)是奇異的呢?可先定義「僞逆」(pseudo-inverse)\(X^\dagger\),在定義完後有

\[\mathbf{w}_{\text{LIN}}=X^\dagger \mathbf{y} \]

在實踐中,建議直接使用\(X^\dagger\),一方面可避免判斷\(X^T X\)是否可逆,另外一方面就算在幾乎不可逆的狀況下,它也是在數值上穩定的。

1.2 線性迴歸的泛化

線性迴歸看起來沒有「學習」過程,是一步到位的,那麼它算機器學習嗎?

事實上,只要能夠保證\(E_{\text{out}}(\mathbf{w}_\text{LIN})\)足夠小,那麼就能夠說「發生了」學習。

在這裏,咱們不從VC維理論出發,而從另外一個角度說明爲何\(E_{\text{out}}(\mathbf{w}_\text{LIN})\)會足夠小。

咱們先來看平均的\(E_{\text{in}}\)有多大:

\[\overline{E_{\text{in}}}=\mathop{\mathcal{E}}\limits_{\mathcal{D}\sim P^N}\{E_{\text{in}}(\mathbf{w}_\text{LIN} \text{ w.r.t } \mathcal{D})\} \]

其中

\[\begin{split} E_{\text{in}}(\mathbf{w}_\text{LIN})&=\dfrac{1}{N}\Vert \mathbf{y}-\hat{\mathbf{y}}\Vert^2\\ &=\dfrac{1}{N}\Vert (I-XX^\dagger)\mathbf{y}\Vert^2 \end{split}\]

可將\(H=XX^\dagger\)稱爲hat matrix,由於它可將\(\mathbf{y}\)映射到\(\hat{\mathbf{y}}\)。由下圖可知,若\(\mathbf{y}\)由理想的\(f(X)\in \text{span}\)加上噪聲\(\mathbf{noise}\)生成,那麼\(I-H\)也可將\(\mathbf{noise}\)映射爲\(\mathbf{y}-\hat{\mathbf{y}}\)

\(\text{trace}(I-H)=N-(d+1)\),跡能夠理解爲「能量」,所以有

\[\begin{split} E_{\text{in}}(\mathbf{w}_\text{LIN}) &= \dfrac{1}{N}\Vert \mathbf{y}-\hat{\mathbf{y}}\Vert^2\\ &= \dfrac{1}{N}\Vert (I-H)\mathbf{noise}\Vert^2\\ &= \dfrac{1}{N}(N-(d+1))\Vert\mathbf{noise}\Vert^2 \end{split} \]

若是對\(E_{\text{in}}\)取平均,大概能夠理解爲

\[\overline{E_{\text{in}}}=\mathbf{noise}\text{ level} \cdot (1-\dfrac{d+1}{N}) \]

相似地有

\[\overline{E_{\text{out}}}=\mathbf{noise}\text{ level} \cdot (1+\dfrac{d+1}{N}) \]

(證實過程略)。

所以\(\overline{E_{\text{in}}}\)\(\overline{E_{\text{out}}}\)的關係如圖:

\(N\to\infty\),則兩者都收斂於\(\sigma^2\)\(\mathbf{noise}\text{ level}\)),泛化偏差的指望爲\(\dfrac{2(d+1)}{N}\)。所以,學習是會「發生」的!

VC維理論說明的是\(E_{\text{in}}\)\(E_{\text{out}}\)相差較遠的機率有上限,而這裏說明的是它們的平均差距會收斂。角度不一樣,但兩種方式都說明了泛化的能力。

1.3 用線性迴歸進行二分類

在線性分類中,\(\mathcal{Y}=\{+1,-1\}\)\(h(\mathbf{x})=\text{sign}({\mathbf{w}^T\mathbf{x}})\)\(\text{err}(\hat{y},y)=\mathbf{1}_{[\hat{y}\ne y]}\),找它的最優解是個NP-hard問題。

因爲\(\{+1,-1\}\subset \mathbb{R}\),即樣本的正負類別也能用實數表示,而在線性迴歸中\(\mathcal{Y}=\mathbb{R}\),那麼,直接來一發線性迴歸,獲得\(\mathbf{w}_\text{LIN}\),而後讓\(g(\mathbf{x})=\text{sign}(\mathbf{w}_\text{LIN}^T\mathbf{x})\),這是否可行呢?

把線性分類和線性迴歸的偏差度量分別記爲\(\text{err}_{0/1}=\mathbf{1}_{[\text{sign}(\mathbf{w}^T\mathbf{x})\ne y]}\)\(\text{err}_\text{sqr}=({\mathbf{w}^T\mathbf{x}- y})^2\),它們的關係以下圖:

從中可直觀地看出,\(\text{err}_{0/1} \le \text{err}_\text{sqr}\)必定成立。由此,有

\[\begin{split} &\text{classification} E_\text{out}(\mathbf{w})\\ \overset{VC}{\le} & \text{classification} E_\text{in}(\mathbf{w})+\sqrt{\cdots}\\ \le & \text{regression} E_\text{in}(\mathbf{w})+\sqrt{\cdots} \end{split} \]

也就是說,讓迴歸的\(E_{\text{in}}\)作得足夠好,也可使得分類的\(E_{\text{out}}\)足夠小,只不過上限更寬鬆一些而已。這樣作就是用邊界的緊度(bound tightness)換取計算效率(efficiency)

通常\(\mathbf{w}_\text{LIN}\)可用來做爲PLA或pocket算法的初始向量。

2 邏輯迴歸

2.1 邏輯迴歸算法

二分類中,咱們感興趣的是

\[f(\mathbf{x})=\text{sign}(P(+1|\mathbf{x})-\dfrac{1}{2}) \in {+1,-1} \]

但在不少場景下,咱們想要作的是「軟」(soft)分類,即獲得某個分類的機率,此時感興趣的是

\[f(\mathbf{x})=P(+1|\mathbf{x}) \in [0,1] \]

問題在於,咱們獲得的數據標籤是樣本的類別,而非樣本被分到某個類的機率。

對於一個樣本的全部特徵\(\mathbf{x}=(x_0, x_1, x_2, \cdots,x_d)\),令\(s=\sum\limits_{i=0}^{d} w_i x_i\)。咱們可用邏輯函數(logistic function)\(\theta(s)\)將它轉換成估計的機率。也就是說,邏輯迴歸(logistic regression)的假設\(h(\mathbf{x})=\theta(\mathbf{w}^T\mathbf{x})\)

最經常使用的邏輯函數是

\[\theta(s)=\dfrac{e^s}{1+e^s}=\dfrac{1}{1+e^{-s}} \]

函數圖像以下:

可見,它是個光滑的、單調的、「S」形的(sigmoid)函數。

接下來,要定義邏輯迴歸的\(E_\text{in}(\mathbf{w})\)。先將目標函數\(f(\mathbf{x})=P(+1|\mathbf{x})\)反表示爲

\[P(y|\mathbf{x})=\begin{cases} f(\mathbf{x})&\text{for } y=+1\\ 1-f(\mathbf{x})&\text{for } y=-1 \end{cases} \]

假設手中的數據集爲

\[\mathcal{D}=\{(\mathbf{x}_1,\circ),(\mathbf{x}_2,\times),\ldots, (\mathbf{x}_N,\times)\} \]

那麼,由\(f\)生成\(\mathcal{D}\)的機率爲

\[\begin{split} &P(\mathbf{x}_1)f(\mathbf{x}_1)\\ \times &P(\mathbf{x}_2)(1-f(\mathbf{x}_2))\\ \times &\cdots\\ \times &P(\mathbf{x}_N)(1-f(\mathbf{x}_N) \end{split} \]

由咱們的假設\(h\)生成\(\mathcal{D}\)的似然(likelihood)爲

\[\begin{split} &P(\mathbf{x}_1)h(\mathbf{x}_1)\\ \times &P(\mathbf{x}_2)(1-h(\mathbf{x}_2))\\ \times &\cdots\\ \times &P(\mathbf{x}_N)(1-h(\mathbf{x}_N) \end{split} \]

若是\(h\approx f\),那麼\(h\)生成\(\mathcal{D}\)的似然也應該接近於由\(f\)生成\(\mathcal{D}\)的機率,而且由\(f\)生成\(\mathcal{D}\)的機率應該是較大的(正好被咱們抽樣抽到)。因此,機器學習算法能夠取

\[g=\mathop{\arg\max}\limits_{h} \text{likelihood}(h) \]

\(h(\mathbf{x})=\theta(\mathbf{w}^T\mathbf{x})\),由函數的性質可知,\(1-h(\mathbf{x})=h(-\mathbf{x})\),因此

\[\begin{split} &\text{likelihood}(h)\\ =&P(\mathbf{x}_1)h(\mathbf{x}_1)\\ \times &P(\mathbf{x}_2)h(-\mathbf{x}_2)\\ \times &\cdots\\ \times &P(\mathbf{x}_N)h(-\mathbf{x}_N) \end{split} \]

\(P(\mathbf{x}_1)\)\(P(\mathbf{x}_2)\)、……、\(P(\mathbf{x}_N)\)都與\(h\)無關,所以有

\[\text{likelihood}(\text{logistic } h)\propto \prod\limits_{n=1}^N h(y_n\mathbf{x}_n) \]

如今要將它最大化,以找出最終的\(h\)。可先把\(\theta(s)\)代入,再取對數(對數函數單調,不改變最大化取值的點),變爲

\[\max\limits_\mathbf{w} \ln\prod\limits_{n=1}^N\theta(y_n\mathbf{w}^T\mathbf{x}_n) \]

再取相反數(最大化變爲最小化)、除\(N\)(不改變最值點)後,又可變爲

\[\min\limits_\mathbf{w} \dfrac{1}{N}\sum\limits_{n=1}^N - \ln \theta(y_n\mathbf{w}^T\mathbf{x}_n) \]

\(\theta(s)\)展開獲得

\[\min\limits_\mathbf{w} \dfrac{1}{N}\sum\limits_{n=1}^N \ln \left(1+\exp(-y_n\mathbf{w}^T\mathbf{x}_n)\right) \]

\[\text{err}(\mathbf{w},\mathbf{x},y)=\ln\left(1+\exp(-y\mathbf{w}\mathbf{x})\right) \]

這就是交叉熵偏差(cross-entropy error),而\(\sum\limits_{n=1}^N \text{err}(\mathbf{w},\mathbf{x}_n,y_n)\)就是\(E_\text{in}(\mathbf{w})\)

2.2 梯度降低

接下來就要最小化\(E_\text{in}(\mathbf{w})\),它是連續的、可微的、二次可微的、凸的,所以能夠試着讓它梯度爲\(0\)。求出它的梯度

\[\nabla E_{\text{in}}(\mathbf{w})=\dfrac{1}{N}\sum_{n=1}^N\theta(-y_n\mathbf{w}^T\mathbf{x}_n)(-y_n\mathbf{x}_n) \]

它的梯度能夠當作是以\(\theta(\cdot)\)爲權重的\(-y_n\mathbf{x}_n\)的加權平均。要讓它爲0,有兩種方式:

  • 讓全部的\(\theta(-y_n\mathbf{w}^T\mathbf{x}_n)\)都爲0,這意味着全部樣本都知足\(y_n\mathbf{w}_n\mathbf{x}_n\gg 0\),也即\(\mathcal{D}\)是線性可分的;
  • \(\mathcal{D}\)不是線性可分的,要讓加權和爲0,這是個非線性方程,沒有閉式解(closed-form solution)。

可用與PLA中相似的方法進行迭代,即\(\mathbf{w}_{t+1}\leftarrow\mathbf{w}_t+\eta\mathbf{v}\),其中\(\mathbf{v}\)肯定了更新的方向,\(\eta\)肯定了更新的步長,如圖:

怎麼迭代呢?可用貪心算法,一步步讓\(E_\text{in}\)變小。假設已經給定某個\(\eta\),要肯定\(\mathbf{v}\)的方向,每一步的更新問題就轉換成了

\[\min\limits_{\Vert\mathbf{v}\Vert=1}E_\text{in}(\mathbf{w}_t+\eta\mathbf{v}) \]

看起來彷彿更難解了。但若是\(\eta\)足夠小,咱們能夠用局部線性近似展開它(泰勒展開,Taylor expansion):

\[E_\text{in}(\mathbf{w}_t+\eta\mathbf{v})\approx E_\text{in}(\mathbf{w}_t)+\eta\mathbf{v}^T\nabla E_\text{in}(\mathbf{w}_t) \]

式中\(E_\text{in}(\mathbf{w}_t)\)\(\nabla E_\text{in}(\mathbf{w}_t)\)已知,\(\eta\)給定,只需肯定\(\mathbf{v}\)便可,注意到上式第二項本質上是兩個向量內積,當兩個向量方向相反時值最小,所以要最小化上式,可取

\[\mathbf{v}=-\dfrac{\nabla E_\text{in}(\mathbf{w}_t)}{\Vert\nabla E_\text{in}(\mathbf{w}_t)\Vert} \]

梯度降低的迭代更新就變成了:對於給定的較小\(\eta\)

\[\mathbf{w}_{t+1}\leftarrow\mathbf{w}_t-\eta\dfrac{\nabla E_\text{in}(\mathbf{w}_t)}{\Vert\nabla E_\text{in}(\mathbf{w}_t)\Vert} \]

\(\eta\)過小會致使很是慢,太大會致使不穩定,最好用變化的\(\eta\),以下圖所示:

那麼,\(\eta\)怎麼變比較好?可以讓它與\(\Vert\nabla E_\text{in}(\mathbf{w}_t)\Vert\)正相關,將原來固定的\(\eta\)乘上\(\Vert\nabla E_\text{in}(\mathbf{w}_t)\Vert\)便可。這樣,更新規則也就變成了

\[\mathbf{w}_{t+1}\leftarrow\mathbf{w}_t-\eta{\nabla E_\text{in}(\mathbf{w}_t)} \]

這個新的\(\eta\)可叫做固定的學習率learning rate)。

3 分類的線性模型

3.1 三種算法的比較

\(s=\mathbf{w}^T\mathbf{x}\),如下是總結三種模型(線性分類、線性迴歸、邏輯迴歸):

這裏的\(ys\)可稱爲分類正確度分數(classification correctness score),即度量分類有多正確,該值越大,說明分類越「正確」。

若將交叉熵偏差函數\(\text{err}_\text{CE}(s,y)\)作scale(除\(\ln 2\)),獲得

\[\text{err}_\text{SCE}(s,y)=\log_2(1+\exp(-ys)) \]

把它們的偏差函數都畫出來,可得下圖:

從圖中可知,必定有

\[\text{err}_{0/1} \le \text{err}_\text{SCE}(s,y) = \dfrac{1}{\ln 2}\text{err}_\text{CE}(s,y) \]

由此能夠用VC維理論證實,使用\(\text{err}_\text{CE}\)也能夠作好分類任務,有兩種思路:

  • 從分類的角度出發,有

\[\begin{split} E_\text{out}^{0/1}(\mathbf{w})&\le E_\text{in}^{0/1}(\mathbf{w})+\Omega^{0/1}\\ &\le \dfrac{1}{\ln 2} E_\text{in}^\text{CE}(\mathbf{w})+\Omega^{0/1} \end{split} \]

  • 從交叉熵角度出發,有

\[\begin{split} E_\text{out}^{0/1}(\mathbf{w})&\le \dfrac{1}{\ln 2} E_\text{out}^\text{CE}(\mathbf{w})\\ &\le \dfrac{1}{\ln 2} E_\text{in}^\text{CE}(\mathbf{w})+\dfrac{1}{\ln 2}\Omega^\text{CE} \end{split} \]

無論用哪一種方式,只要保證\(E_\text{in}^\text{CE}\)足夠小,均可以保證\(E_\text{out}^{0/1}(\mathbf{w})\)也足夠小,也就是說,使用邏輯迴歸或線性迴歸均可以作線性分類。

用PLA、線性迴歸、邏輯迴歸作分類,三種方法的優缺點以下:

3.2 隨機梯度降低

PLA每次迭代的時間複雜度爲\(O(1)\),但邏輯迴歸(或pocket算法)每次迭代都須要對\(\mathcal{D}\)中的全部樣本進行一次運算,時間複雜度爲\(O(N)\),能不能讓每次迭代的時間複雜度也變成\(O(1)\)

咱們在作更新\(\mathbf{w}_{t+1}\leftarrow\mathbf{w}_t+\eta\mathbf{v}\)時,取了

\[\begin{split} \mathbf{v}&=-\nabla E_{\text{in}}(\mathbf{w}_t)\\ &=-\dfrac{1}{N}\sum_{n=1}^N\theta(-y_n\mathbf{w}_t^T\mathbf{x}_n)(-y_n\mathbf{x}_n) \end{split} \]

能夠看到,計算梯度須要遍歷全部樣本,複雜度實在過高了。可將它裏面的\(\dfrac{1}{N}\sum\limits_{n=1}^{N}\)看做是指望\(\mathcal{E}\),至關於不斷隨機抽一個樣本計算出來的結果的平均。若將隨機抽一個樣本\(n\)算出來的梯度稱爲隨機梯度\(\nabla_\mathbf{w}\text{err}(\mathbf{w},\mathbf{x}_n,y_n)\),那麼真正的梯度可看做是它的指望:

\[\nabla_\mathbf{w} E_\text{in}(\mathbf{w})=\mathop{\mathcal{E}}_{\text{random }n}\nabla_\mathbf{w}\text{err}(\mathbf{w},\mathbf{x}_n,y_n) \]

這樣,就能夠用隨機梯度降低(Stochastic Gradient Descent,SGD)進行迭代。它的好處是很是簡單,計算的成本低,很是適用於大數據或在線學習的狀況,缺點是不夠穩定。

在邏輯迴歸中,用SGD更新的步驟就變成了

\[\mathbf{w}_{t+1}\leftarrow\mathbf{w}_t+\eta\cdot \theta(-y_n\mathbf{w}_t^T\mathbf{x}_n)(y_n\mathbf{x}_n) \]

這與PLA中的更新步驟十分類似,PLA中是這樣的:

\[\mathbf{w}_{t+1}\leftarrow\mathbf{w}_t+1 \cdot \mathbf{1}_{[y_N\ne \text{sign}(\mathbf{w}_t^T \mathbf{x}_n)]}(y_n\mathbf{x}_n) \]

所以用SGD的邏輯迴歸,能夠看做是「軟」的PLA。而反過來,若取\(\eta=1\),則PLA在\(\mathbf{w}_t^T \mathbf{x}_n\)很大的時候也能夠看做是用SGD的邏輯迴歸。

在用SGD時,有兩個經驗法則:

  • 何時中止?\(t\)足夠大的時候就能夠(不要判斷梯度是否真的爲0,不然又會帶來梯度計算的複雜度);
  • \(\mathbf{x}\)在通常範圍內時,就取\(\eta=0.1\)吧。

4 多分類問題

4.1 用邏輯迴歸作多分類

假設\(\mathcal{Y}=\{\square, \diamondsuit,\triangle,\star\}\),數據分佈以下圖:

可對每一個類別分別作一次分類,以下圖:

但這樣作,在最後要把它們結合起來時,會出現問題,有些區域沒法斷定屬於哪一類:

怎麼解決呢?能夠用邏輯迴歸作「軟」分類器,依舊是對每一個類別\(k\),用數據集

\[\mathcal{D}_{[k]}=\{(\mathbf{x}_n,y_n'=2\cdot\mathbf{1}_{[y_n=k]}-1)\}_{n=1}^{N} \]

作一次邏輯迴歸,獲得一個分類器\(\mathbf{w}_{[k]}\)

作完後要將它們結合起來,可取\(g(\mathbf{x})=\arg\max_{k\in\mathcal{Y}}\theta(\mathbf{w}_{[k]}^T\mathbf{x})\),這樣就獲得某個點應該屬於哪一類了:

這樣作稱爲OVA(One-Versus-All) Decomposition,好處是有效率,能夠和相似邏輯迴歸的方法結合起來,但缺點在於當\(K\)很大時,每每會使\(\mathcal{D}_{[k]}\)很是不平衡,好比有100類,而且分佈比較均勻,OVA每次用於訓練的樣本的兩類數據的個數就會很是懸殊。

能夠再進行擴展,如multinomial ('coupled') logistic regression,加入一些如「屬於不一樣類的機率加起來應該爲1」之類的限制,讓它更適合用於多分類。

4.2 用二分類作多分類

爲了克服不平衡問題,能夠對兩兩類別進行訓練,即用數據集

\[\mathcal{D}_{[k,\ell]}=\{(\mathbf{x}_n,y_n'=2\cdot\mathbf{1}_{[y_n=k]}-1):y_n=k\text{ or } y_n=\ell\} \]

進行線性二分類:

最後,取

\[g(\mathbf{x})=\text{tournament champion}\{\mathbf{w}_{[k,\ell]}^T\mathbf{x}\} \]

便可:

這樣的方法叫做OVO(One-Versus-One)Decomposition,好處在於有效率(由於每次訓練用的數據量較少),而且是穩定的,能夠和任何二分類方法相結合,但缺點在於不斷計算\(\mathbf{w}_{[k,\ell]}\)的操做總共的複雜度是\(O(K^2)\),須要更多運算空間。當\(K\)不是很是大時,OVO很經常使用。

5 非線性變換

對於某些數據集來講,無論怎麼使用線性模型,\(E_{in}\)都很大:

5.1 二次的假設集

咱們發現,若是用一個圓來作它的分類界線,它實際上是可分的:

因此咱們要從新設計圓形PLA、圓形迴歸、……嗎?固然不是。咱們能夠將\(\mathbf{x}\in\mathcal{X}\)用變換\(\Phi\)映射到\(\mathbf{z}\in\mathcal{Z}\),使得在\(\mathcal{X}\)中圓形可分的數據在\(\mathcal{Z}\)中線性可分。

經過由\(\Phi_2(\mathbf{x})=(1,x_1,x_2,x_1^2,x_1x_2,x^2_2)\)映射而來的\(\mathcal{Z}\)空間,可構成通常的二次假設集:

\[\mathcal{H}_{\Phi_2}=\{h(\mathbf{x}):h(\mathbf{x})=\tilde h(\Phi_2(\mathbf{x}))\text{ for some linear }\tilde h \text{ on }\mathcal{Z}\} \]

固然也能夠用更高次的非線性變換,用非線性變換的流程以下圖:

具體步驟以下:

  1. 先用\(\Phi\)\(\{(\mathbf{x}_n,y_n)\}\)變換到\(\{(\mathbf{z}_n=\Phi(\mathbf{x}_n),y_n)\}\)
  2. \(\{(\mathbf{z}_n,y_n)\}\)和線性分類算法\(\mathcal{A}\)訓練出模型\(\tilde{\mathbf{w}}\)
  3. 返回\(g(\mathbf{x})=\text{sign}\left(\tilde{\mathbf{w}}^T \Phi(\mathbf{x})\right)\)便可。

5.2 複雜度的代價

假設用\(Q\)次的非線性變換:

\[\begin{split} \Phi_Q(\mathbf{x})=(&1,\\ &x_1,x_2,\ldots,x_d,\\ &x_1^2,x_1 x_2,\ldots,x_d^2,\\ &\cdots,\\ &x_1^Q,x_1^{Q-1}x_2,\ldots,x_d^Q) \end{split} \]

式中的項數\(1+\tilde d\)是多少呢?如有\(d\)個特徵,能夠在補上1後認爲上面式子後邊的每一項都是\(Q\)次的,也就是說要對\(d+1\)項每項都賦予一個次數,而且全部次數之和必須爲\(Q\)。能夠用隔板法:想象共有\(Q+d+1\)個小球,要在它們的空隙中放入\(d\)個隔板,隔成\(d+1\)段,每一段的小球個數減去1表明了對應位置的項的次數,因爲要求每段中至少有1個小球,所以兩端不能放隔板,共有\(Q+d\)個位置可放隔板,共有\(\binom{Q+d}{d}\)种放法,也就是說,上式等號右邊的項數

\[1+\tilde d=\binom{Q+d}{d}=O(Q^d) \]

\(Q\)較大時,一方面計算或存儲的成本很是高,另外一方面\(1+\tilde d\)\(d_\text{VC}(\mathcal{H}_{\Phi_Q})\)的上界,\(Q\)太大會致使\(d_\text{VC}\)過大,模型損失了泛化能力。

5.3 \(Q\)的選擇

如何選擇\(Q\)?假設\(\Phi_0(\mathbf{x})=(1)\)\(\Phi_1(\mathbf{x})=\left(\Phi_0(\mathbf{x}),x_1,x_2,\ldots,x_d,\right)\),……,\(\Phi_Q(\mathbf{x})=\left(\Phi_{Q-1}(\mathbf{x}),x_1^Q,x_1^{Q-1}x_2,\ldots,x_d^Q,\right)\),將它們的假設集分別記爲\(\mathcal{H}_0\)\(\mathcal{H}_1\),……,\(\mathcal{H}_Q\),它們存在嵌套關係

\[\mathcal{H}_0 \subset \mathcal{H}_1\subset\mathcal{H}_2\subset\cdots \]

如圖所示:

而且,它們的VC維知足

\[d_\text{VC}(\mathcal{H}_0)\le d_\text{VC}(\mathcal{H}_1)\le d_\text{VC}(\mathcal{H}_2)\le\cdots \]

若取\(g_i=\arg\min_{h\in \mathcal{H}_i} E_\text{in}(h)\),則它們的\(E_\text{in}\)知足

\[E_\text{in}(g_0)\ge E_\text{in}(g_1)\ge E_\text{in}(g_2)\ge \cdots \]

如何選擇\(Q\)?安全的作法是,先看\(E_\text{in}(g_1)\)是否已經足夠小,若是足夠小,就能夠了,不然,就用再稍微複雜一些的模型,也就是在下圖中向右移動:

相關文章
相關標籤/搜索