本篇博文來自學習稀牛學院AI數學課程中的學習筆記
引子:房價預測
給定一組房價資料$x^{(i)},y^{(i)}$,其中x可以是標量scala,也可以是向量,比如可以為房屋面積,還可以包含房屋年齡,地段等資訊,y為房屋價格。我們需要找出x和y之間的關係,也就是一個模型,將來給定輸入的一個未知資料,我們可以預測房價。模型可以先以線性迴歸模型$y= \omega x + b$作為預設的模型,我們的任務就是要根據已知的資料來求解對應的$\omega和b$模型引數。
無約束優化問題
房價預測問題,我們可以抽象為以下無約束優化問題:
- 如果自變數x為標量,比如只包含一個面積特徵的話,我們的模型就是$f: R \rightarrow R$,目標為:$min f(x) \; x \in R$
- 如果自變數為向量,則我們的模型就是$f: R^n \rightarrow R$,我們的目標就是$min f(x) \; x \in R^n$
優化問題中的極值點情況
全域性最大,全域性最小;
區域性最大,區域性最小;
既不是最大也不是最小的駐點---鞍點
實際優化中絕大部分都是區域性極值的優化問題!
導數,梯度,Hessian海森矩陣
一階情況
如果函式自變數為為標量,其一階導數我們很熟悉$f'(x)$.例如$(x^2)'=2$
相應地,如果函式的自變數為向量,這時其一階導數就是梯度$g(X) = \triangledown f(X) = \frac{\partial f(X)}{\partial X} = \begin{bmatrix}\frac{\partial f(x)}{\partial x_1}\\ ...\\ \frac{\partial f(x)}{\partial x_n}\end{bmatrix}$,例如$z=x^2+y^2$其梯度就為$\triangledown (x^2+y^2) = \begin{bmatrix} 2x\\ 2y\end{bmatrix}$
二階情況
如果函式的自變數為標量,其二階導數我們會非常熟悉$f"(x)$,例如$(x^2)"=2$
相應地,如果函式的自變數為向量,這時其二階導數就稱為海森矩陣
$H(X)=\triangledown ^2 f(x) = \begin{bmatrix} \frac{\partial ^2 f(x)}{\partial ^2 x_1} & \frac{\partial ^2 f(x)}{\partial x_1 \partial x_2} & ... & \frac{\partial ^2 f(x)}{\partial x_1 \partial x_n}\\ \frac{\partial ^2 f(x)}{\partial x_2 \partial x_1} & \frac{\partial ^2 f(x)}{\partial ^2 x_2}& ... & \frac{\partial ^2 f(x)}{\partial x_2 \partial x_n}\\ ... & ... & ... & ... \\ \frac{\partial ^2 f(x)}{\partial x_n \partial x_1} & \frac{\partial ^2 f(x)}{\partial x_n \partial x_2} & ... & \frac{\partial ^2 f(x)}{\partial ^2 x_n} \end{bmatrix}$
比如函式$z=x^2+y^2+\omega^2+2xy+2x\omega+2y\omega$,其對應的海森矩陣就是
$\begin{bmatrix}2 & 2 & 2\\2 & 2 &2 \\2 & 2 &2 \end{bmatrix}$
海森矩陣是一個$(n,n)$的對稱矩陣
二次型
給定矩陣$A \in R^{nxn}$,以下函式形式
$X^TAX= \sum_{i=1}^{n}x_i(AX)_i=\sum_{i=1}^{n}x_i(\sum_{j=1}^{n}a_{ij}x_j) = \sum_{i=1}^{n}\sum_{j=1}^{n}x_ix_ja_{ij}$
被稱為二次型。比如$x_1^2+x_2^2+x_3^2+2x_1x_3$ 這種所有項都是二次齊次形式的式子被稱為二次型。
一般來說,只要提到二次型,其對應的矩陣A就是對稱矩陣。
比如$f(x) = x_1^2+x_2^2+x_3^2$其對應的矩陣$A$就為
$\begin{bmatrix} 1 & 0 & 0\\ 0 & 1 & 0\\ 0 & 0 &1 \end{bmatrix}$
矩陣的正定負定及不定
給定一個對稱矩陣$A\in R^{nxn}$,(因為正定往往用於矩陣伴隨的二次型正負的判定,因此我們只研究對稱矩陣的正定性),如果對於所有$x\in R^n$,都有其二次型$X^TAX \geq 0$則稱矩陣$A$為半正定矩陣;此時,其特徵值都是非負數,即$\lambda(A) \geq 0$.
如果對於所有非0 的x,其二次型都是正數,這時我們稱矩陣為正定矩陣
由於海森矩陣是對稱矩陣,因此海森矩陣就可以研究其正定和負定特性了。
當海森矩陣為正定時,其二次型就是正數,其特徵值就是大於0
二次型梯度計算
對於向量$a,x$,對稱矩陣$A$,有以下的梯度計算公式:
$\triangledown (a^TX) = a, \triangledown ^2(a^TX)=0$
$\triangledown (X^TAX) = 2 AX, \triangledown ^2 (X^TAX) = 2A $
最小二乘及其梯度計算
$f(X) = ||AX -b||^2_2=(AX-b)^T(AX-b)=X^TA^TAX-2b^TAX + b^Tb$
$\triangledown f(X) = \triangledown (||AX -b||^2_2)= 2A^TAX-2A^Tb$
再比如$\triangledown f(X) = \triangledown (X^TAX+2b^TX+c) = 2AX+2b$
函式的泰勒級數展開
使用泰勒級數展開研究函式的極值
當只保留泰勒級數一階項時,我們研究使得$f(x_k+\delta) \ge f(x_k)$,則一階導數(梯度)必須為0,因為$\delta$可以大於0,也可以小於0,要保證$f(x_k+\delta) \ge f(x_k)$則必須有梯度等於0
梯度等於0是在$x_k$處取得極值的必要條件。要研究其是極大還是極小值,我們需要繼續研究二階項,如果$f''(x_k) > 0$則取得極小值,相反,如果$f''(x_k) < 0$則在$x_k$處取得極大值
針對輸入為向量的情況是類似的:
梯度$g(x_k) = 0$求得的$x_k$是候選駐點,要研究極大極小甚至鞍點需要看二次項,也就是二次型$\delta ^TH(x_k)\delta$的正負性,這可以由$f(x)$的二階導數海森矩陣的正定負定來判斷:
當$H(x_k) \succ 0$正定時,$x_k$這一點為區域性極小點(反之則為區域性最大點)。如果$H(x_k)$是一個不定矩陣,則是一個鞍點。
函式極值的解析解法
1. 令梯度$\triangledown f(x) =0$,求解得到平衡點(駐點)
2. 計算駐點對應的海森矩陣,判斷其正定性:如果是正定則是極小值,如果負定則是極大值,如果不定則是鞍點
無約束優化數值計算迭代法
由於解析解大多數情況下無法直接求得,因此人們發明了優化迭代的數值計算方法
一般步驟:
1. 選擇一個初始點,設定一個收斂容差 $\epsilon $,計數$k=0$
2.決定搜尋方向$d_k$,使得函式在該方向迭代時數值下降。這是不同優化演算法最核心的差別!
3.決定步長$\alpha_k$(學習率),使得$f(x_k+\alpha_kd_k)$對於$\alpha_k \ge 0$最小化(也就是求得最優的步長!因為步長太小則優化收斂的速度太慢,步長太大,則有可能造成震盪衝過極值點),構建$x_{k+1} = x_k+ \alpha_kd_k$
4.如果$||d_k|| < \epsilon$則停止輸出$x_{k+1}$;否則繼續重複迭代
梯度下降法
我們先省略掉學習率,只考慮迭代方向的影響因素,通過泰勒級數我們知道
$f(x_k+d_k)\approx f(x_k) + g^T(x_k)d_k$,其中$f(x_k),g^T(x_k)$都是常數,要使得$f(x_k+d_k)$下降變小,則須在$f(x_k)$加上一個負數,而$g^T(x_k)d_k$實際上就是兩個向量內積,我們知道當向量方向相反時內積為負並且內積絕對值最大其值為$||-g(x_k)||^2$,自然我們可以選擇$d_k = -g^T(x_k)$這時函式$f(x_k+d_k)$在$x_k$點將下降的最快!
牛頓法
在梯度下降法中,為簡化問題,我們直接把泰勒級數的二階項省略,通過選取負梯度方向作為迭代方向。但是我們知道二階項一般來說並不是非常小(雖然相對一階項來說確實夠小),因此直接使用梯度下降法中選取的一階梯度負方向可能並不是$f(x)$的全域性最優方向。牛頓法就是將二階項新增進泰勒級數展開式從而探究最優迭代方向的成果。
$f(x_k+d_k)\approx f(x_k) + g^T(x_k)d_k + \frac{1}{2}d^T_kH(x_k)d_k$
上面的泰勒展開中,只有$d_k$為未知量,我們將$f(x_k+d_k)$視為$d_k$的函式,來尋找最優的迭代方向:
$d_k = \underset{d_k}{argmin}(f(x_k+d_k))$,
令$\frac{\partial f(x_k+d_k)}{\partial d_k} = 0\Rightarrow g(x_k)+H(x_k)d_k=0$,
如果海森矩陣是正定矩陣,我們可以選擇$d_k = -H^{-1}(x_k)g(x_k)$ ,帶入$f(x_k+d_k)$必然得出其值小於$f(x_k)$
也就是說,當海森矩陣$H(x_k)$為正定時,$d_k = -H^{-1}(x_k)g(x_k)$就是使得函式下降最快的方向!!
這個方向將會比梯度下降法中的負梯度方向更加精準(因為泰勒展開更加精準,因此下降方向將更加準確!),因此迭代收斂必將更快!
擬牛頓法
雖然牛頓法理論上非常棒,但是工程中有以下問題:
1. 如果實際工程中的維數n較大,而海森矩陣H本身是nXn的矩陣就將變得更加龐大,
2. $H^-1$非常難求。
3.牛頓法中要求海森矩陣在$x_k$點是正定矩陣,本身這就比較難以滿足
因此,聰明的數學家就發明了擬牛頓法.其解決思路為:
當海森矩陣H不是正定矩陣時,可以對H矩陣進行修正:
$H(x_k)+E,E=\delta I, \delta > 0$, delta很小。矩陣的特徵值有以下性質:矩陣加上一個單位陣以後其特徵值也將加上delta
擬牛頓方的核心思想是使用一階的量去近似逼近二階的量(H矩陣以及H矩陣的逆)。
我們先統一梯度下降法和牛頓法中對方向的選取:
$d_k = - S_kg_k$,其中$S_k = \left\{\begin{matrix} I & steppest(SGD))\\ H_k^{-1} & Newton \end{matrix}\right.$
我們定義$\delta_k = x_{k+1} - x_k, \gamma_k = g_{k+1}-g_k$,他們都是在第$k$步迭代時已知的值
我們用$S_{k+1}$去逼近H矩陣的逆,令迭代中,須滿足$S_{k+1}\gamma_k = \delta _k$,通過微分的定義,我們知道$S_{k+1}$
實際上可以看做梯度對x變化的比值的導數,也就是海森矩陣的逆。
DFP
在DFP演算法中,選擇$\triangle S_k = \alpha u u^T + \beta vv^T$,其中我們需要注意的是$uu^T$實際上是rank為1的矩陣!
計算出來每一步迭代時的$S_k$後再算出$d_k$就是更新的方向
BFGS
線性迴歸問題求解
有了上面介紹的矩陣梯度及優化方法,我們再回過頭來看看房價預測的線性迴歸問題求解。
學習的目標: $f(x) = \omega ^Tx +b$,使得$f(x^{(i)}) \approx y^{(i)}$,為了方便計算,我們全部整合為一個矩陣乘法:
$$\bar \omega = \begin{bmatrix} \omega \\ b \end{bmatrix} X = \begin{bmatrix} x^{(1)T}& 1\\ ... & ... \\ x^{(N)T}& 1 \end{bmatrix}_{NX(d+1)}$$
也就是說我們的目標是求解引數$\bar \omega$使得:$y \approx X \bar \omega$
為此,我們定義2範數平方損失函式,求解使得該損失函式最小化的引數
$min ||y-X \omega||^2_2$
- 解析方式求解:
令 $g(\bar \omega) = 0 \Rightarrow 2X^T(X \bar \omega - y)=0 \Rightarrow \omega ^* = (X^TX)^{-1}X^Ty $
- 梯度下降法
$g(\bar W) = 2X^T(X \bar W -y)=2 \sum_{i=1}^{N}x^{(i)}(W^Tx^{(i)}-y^{(i)})$
$\bar W \leftarrow \bar W - \alpha g(\bar W)$
- 隨機梯度下降法SGD
由於梯度下降法每次迭代時,所有的樣本資料都參與計算,如果樣本量很大的話,迭代非常緩慢,因此實際工程中可能使用隨機梯度下降法,每一個樣本都做一次迭代。但是這可能導致抖動比較大
$g(\bar W) = 2X^T(X \bar W -y)=2 x^{(i)}(W^Tx^{(i)}-y^{(i)})$
- min-batch 隨機梯度下降法
BP演算法求導加法注意事項
凸優化
凸集,仿射集
仿射集:如果一個集合$C \in R^n$是仿射的,則$C$中任意兩點間的直線也在該集合中,也就是
$x = \theta x_1 + (1- \theta) x_2 \in C, \theta \in R$
凸集:如果一個集合$C \in R^n$是凸的,則對於任意的$x,y \in C$, $\theta x + (1- \theta) y \in C, 0 \ge \theta \ge1$
仿射集必然是凸集, 凸集未必是仿射集
常見的凸集:
$R^n, R^n_+$,也就是說實數集和正,負實數集都是凸集
超平面: $C = \{ x|a^Tx = b \}$, 既是凸集又是仿射集
半空間: $C = \{ x|a^Tx \ge b \}, C = \{ x|a^Tx \le b \}$是凸集
範數球:$||X||_2 \le 1$
向量範數:
- 2-norm: $||X||_2=\sqrt {\sum_{i=1}^{n}|x_i|^2}=(X^TX)^{1/2}$
- 1-norm $||X||_1=\sum_{i=1}^{n}|x_i|$,取分量絕對值之和
- $ \infty-norm $: $||X||_\infty= max|x_i|$,取絕對值最大的分量
- p-norm, $p \ge 1$, $||X||_p= (\sum_{i=1}^{n}|x_i|^p)^{1/p}$ 通用形式
以上範數為歐幾里德範數,滿足以下三條定理:
- $|| X || \ge 0$, 非負性
- $||\alpha X|| = |\alpha| || X||$,齊次性
- $|| x+y|| \le ||x|| + ||y||$ 三角不等式
還有一條零範數,是取向量非0元的個數 $||X||_0$, 比如[ 1, 0, 0,0,1]的零範數為2
凸集的性質
凸集的交集是凸集
比如, $S = \{||X|| \le 1, X \ge 0 \} $, 第一個是範數球為凸集,第二個為半空間,為凸集合,他們的交集也為凸集
凸集的並集不一定是凸集
由這個凸集的交集是凸集這個性質很容易得出:有限個半空間和半平面的交集為凸集
$P = \{ X| AX \le b, CX = d \}$為凸集
凸函式
如果一個函式滿足以下兩點,我們就稱之為凸函式:
- dom(f)(函式f的定義域)為凸集
- 對於任何$x,y \in dom(f), 0 \le \theta \le 1$,都有$f(\theta x + (1- \theta) y) \le \theta f(x) +(1- \theta)f(y)$成立
其幾何意義為: 連線函式曲線上的任何兩點組成的線段都在函式的上方,這樣的函式為凸函式
凸函式的區域性最優解就是全域性最優解
凸函式的判斷準則
一階充要條件: $f(x_1) \ge f(x) + \triangledown ^Tf(x)(x_1-x)$對於所有x1,x都成立
二階充分必要條件: 如果函式f二階可導,則函式f是凸函式的充分必要條件是其海森矩陣為非負定矩陣$H(x) \succeq 0$
凸函式舉例
- $ax+b$
- $x^2$
- $-logx, x > 0$
- $xlogx x \ge 0$
- $f(x)=a^Tx+b$ 既凸又凹
- $f(x) = X^TPX + 2q^TX + r$, 由於其海森矩陣為P,只要P為半正定矩陣,該函式就為凸函式
- $f(x) = ||X||^2_2 = X^TX$由於海森矩陣為$I$正定,因此2範數平方為凸函式
凸函式的性質
凸函式的區域性最優解就是全域性最優解
仿射變換補充知識:
仿射變換的公式表示:
保凸:
- $f(x)$為凸函式,則自變數仿射變換後的函式$f(AX+b)$也為凸函式,例如: $||Y-AX||_2$為凸
- g凸,h凸,如果h非遞減,則複合函式$f(x)=h(g(x))$也是凸函式。比如$g(x)=||y-AX||_2$為凸函式,$h(x)=x^2$在$x \ge 0$部分非遞減,那麼$f(x)=||y-AX||^2_2$在$X \ge 0$為凸函式
- f1,f2,..,fm為凸,$ w_1,w_2,...,w_m \ge 0$,則$w_1f_1+w_2f_2,+..,+w_mf_m$函式為凸,這一點非常重要!比如$f(x)=||y-AX||^2_2 + \gamma ||X||^2_2$為凸函式
- 逐點最大: f1,f2,...,fm為凸,則$f(x) = max \{ f_1(x),f_2(x),..,f_m(x)\}$也為凸函式。對於連續情況同樣適用。$f(x,y)$如果對於每個$y \in A$凸,則$sup_{y \in A}f(x,y)=max_{y \in A}f(x,y) = max \{(f(x,y_1),f(x,y_2),..f(x,y_m))\}$上確界為凸函式
凸函式和凸集的關係:凸函式的$\alpha$水平集必然是凸集
$S_\alpha = \{ x|f(x) \le \alpha \}$
如果$f(x)$為凸函式,則上述$S_\alpha$為函式f的$\alpha$水平集,必然為凸集
凸優化問題標準形式
在機器學習中,最重要的一點是我們需要將實際問題抽象轉化為一個數學的優化問題,一旦這個抽象轉換完成,實際上問題就已經解決。特別地,如果我們能轉化為一個凸優化問題,則更是能夠得到全域性最優解。因為對於優化問題,有非常成熟的數值計算方法迭代計算出對應的最優解。比如:如果是無約束優化問題,直接使用梯度下降,擬牛頓迭代等即可解決;對於有約束的優化問題,我們可以使用對偶理論將有約束問題轉化為無約束優化問題後也可以使用對應的迭代演算法求解。
本質上,凸優化就是在一個凸集上極小化一個凸的目標函式!
1. 問題的數學表達
minimize $\; f_0(x)$
subject to : $f_i(x) \le 0 ,i=1,2,..,m, h_i(x) = 0,i=1,2,..,p$
2. 是凸優化的條件:
- 目標函式$f_0(x)$是凸函式,可行域必須是凸集(也就是由約束條件定義的x可行域是凸集)
- 不等式約束函式$f_i(x)$是凸函式
- 等式約束函式$h_i(x)$是仿射函式,即$h_i(x) = AX+b$
典型的凸優化問題:
1. 線性規劃問題 LP
minimize $\; C^TX +d$
subject to : $GX \le h , AX = b$
2. 二次規劃問題(P半正定) QP
minimize $\; 1/2 X^TPX + C^TX + d$
subject to : $GX \le h AX = b$
3. QCQP(P, Qi均半正定)
minimize $\; 1/2 X^TPX + C^TX+d$
subject to : $1/2 X^TQ_iX + R_i^TX+S_i \le 0, i =1,2,3...m, AX = b$
矩陣的4個子空間的關係
特徵分解
對於方陣A如果滿足$AX = \lambda X$,則稱$\lambda$為A的特徵值,X為特徵向量;
對於$AX_i = \lambda X_i$,如果所有的特徵值都不相同,則相應的所有的特徵向量線性無關,此時矩陣A就可以被對角化為:
$A = V \Lambda V^{-1}$, 其中V為$[X_1,X_2,..,X_n]$是對應的特徵向量, $\Lambda = Diag(\lambda_1,..,\lambda_n)$
實對稱矩陣的對角化
實對稱矩陣$A$的優良性質
1. $A$的所有特徵值為實數;
2.$A$的不同特徵值所對應的特徵向量不但線性無關,而且相互正交,也就是說特徵向量組成的矩陣U為正交矩陣。即:$A=U \Lambda U^T ,UU^T=U^TU=I$
定理: 設$A$為n階實對稱矩陣,則必然存在正交矩陣$P$,使得$PAP^{-1}=diag(\lambda_1, \lambda_2,...,\lambda_n)$,其中$\lambda_1, \lambda_2,...,\lambda_n$為矩陣$A$的特徵值,
也就是說實對稱矩陣可以被正交對角化
對角化過程:
1. 求解A的特徵值;
2.求對應於每個特徵值的特徵向量:通過以下方程求解$(\lambda I - A)x=0$得到基礎解系。對於單特徵值,只需將屬於它的特徵向量規範化;對於r重特徵值,需要先求出屬於它的r個線性無關的特徵向量,然後對這r個特徵向量進行正交規範化,這樣就可以得到n個兩兩正交的單位特徵向量;
3.以正交規範化的特徵向量為列組成矩陣,他就是要求解的矩陣P
$A = U \Lambda U^T = [u_1,..,u_n]\begin{bmatrix} \lambda_1 & & \\ & ... & \\ & & \lambda_n \end{bmatrix}\begin{bmatrix} u_1^T\\ ...\\ u_n^T \end{bmatrix}=\sum_{i=1}^{n}\lambda_iu_iu_i^T$
特徵值可以視作某種能量,能量越大,則對應的佔比就更大
https://wenku.baidu.com/view/5a3f1a234b35eefdc8d333f1.html
https://wenku.baidu.com/view/5fcd300810a6f524ccbf8532.
對稱矩陣特徵分解和子空間的關係
從$max(X^TAX), ||X||^2_2=1$優化問題來看特徵值
我們可以通過拉格朗日對偶$L(X,\lambda) = X^TAX-\lambda X^TX$,計算梯度令其為0,$\bigtriangledown L(X, \lambda) = 2AX -2 \lambda X =0 \Rightarrow AX = \lambda X$
從上面的式子可以看出要最大化 $X^TAX$,必須使得X滿足$AX = \lambda X$,將已知條件再帶進去,就得到:
$X^TAX = \lambda X^TX = \lambda ||X||^2_2=\lambda$
也就是說要最大化矩陣A的二次型,就等價於找到矩陣A的最大特徵值!!!
PCA降維
目標:通過數學變換,將原始的高維空間轉變為一個低維空間;
給定d維空間的樣本$X=[X_1,X_2,...,X_N] \in R^{dXN}$,變換之後得到$d' < d$維空間中的樣本:
$$Z=[Z_1,Z_2,...,Z_N]=W^TX$$
其中$W \in R^{dXd'}$是變換矩陣, $Z \in R^{d'XN}$是樣本在新空間中的表達。我們的目標就是尋求這樣的變換矩陣W$,
投影解釋: $W = [W_1,W_2,...,W_{d'}]$, 為$d'$個d維向量,$Z_n = W^TX_n$, 也就是說資料樣本從高維向低維空間中變換後的向量就等於轉換矩陣乘以高維空間原始樣本向量。
特別地,如果我們先只看一維的話,就是$W_1^TX_n$就是二者的內積!!而內積又和投影有關,我們接下來繼續看PCA到底在做什麼:
從上圖可以看到,所謂PCA就是指樣本協方差矩陣(方陣)按照特徵值大小排序(因為要使得投影后資料方差最大化等價於二次型最大化等價於尋找最大特徵值!),分別找到相應特徵值對應的特徵物件。。
SVD理論
我們知道在PCA特徵分解中是對樣本資料的協方差矩陣做的,而更一般性地,對於非方陣,我們就要研究奇異值分解了。
任何$A \in R^{mXn}$的矩陣都可以分解為$A = U \sum V^T$,其中$U \in R^{mXm}, V \in R^{nXn}, \sum \in R^{mXn}$
奇異值分解SVD是特徵分解的廣義化,因為特徵分解是對方陣來說的,而SVD奇異值分解則對任何矩陣都成立