人工智能是应用数学,需要的数学知识包括:
微积分
线性代数
概率论
最优化
其他
微分几何,泛函分析和识别函数,离散数学(图论)。
f ′ ( x 0 ) = lim Δ x → 0 f ( x 0 + Δ x ) − f ( x 0 ) Δ x {f}'\left ( x_0 \right )= \lim\limits_{\Delta x\rightarrow 0}\frac{f( x_0+\Delta x )-f(x_0)}{\Delta x} f′(x0)=Δx→0limΔxf(x0+Δx)−f(x0)
max ( 0 , x ) \max(0,x) max(0,x)
f ′ ( t ) = lim Δ t → 0 Δ s Δ t f'(t)=\lim\limits_{\Delta t\rightarrow 0}\frac {\Delta s}{\Delta t} f′(t)=Δt→0limΔtΔs
( f ( g ( x ) ) ) ′ = f ′ ( g ) g ′ ( x ) (f(g(x)))'=f'(g)g'(x) (f(g(x)))′=f′(g)g′(x) 链式求导法则
求极值,backpropagation 激活函数
sigmoid函数: σ ( x ) = 1 1 + e − x \sigma(x)=\frac{1}{1+e^{-x}} σ(x)=1+e−x1 ; σ ′ ( x ) = [ 1 − σ ( x ) ] σ ( x ) \sigma'(x)=[1-\sigma(x)]\sigma(x) σ′(x)=[1−σ(x)]σ(x)
tanh (双曲正切)函数: tanh ( x ) = sinh x cosh x = e x − e − x e x + e − x \tanh(x)=\frac{\sinh x}{\cosh x}=\frac{e^x-e^{-x}}{e^x+e^{-x}} tanh(x)=coshxsinhx=ex+e−xex−e−x
tanh ′ ( x ) = 1 − tanh 2 ( x ) \tanh'(x)=1-\tanh^2(x) tanh′(x)=1−tanh2(x)
对导数再次求导: f ( n ) ( x ) f^{(n)}(x) f(n)(x)
导数大于0,单调增;导数小于0,单调减。
极值处函数的导数(若有)等于0,导数等于0处不一定是极值。
极值点是函数图像的某段子区间内上极大值或者极小值点的横坐标。极值点出现在函数的驻点(导数为0的点)或不可导点处(导函数不存在,也可以取得极值,此时驻点不存在)。
注:中国大陆数学界某些机构关于函数凹凸性定义和国外的定义是相反的。
国外定义中,凸函数是向下凸的(不同于我们传统意义上的"凸")。
凹凸函数定义:
设函数 f f f 为定义在区间 I I I 上的函数,若对 ( a , b ) (a,b) (a,b) 上任意两点 x 1 x_1 x1 、 x 2 x_2 x2 ,恒有:
(1) f ( x 1 + x 2 2 ) > f ( x 1 ) + f ( x 2 ) 2 f(\frac{x_1+x_2}{2})>\frac{f(x_1)+f(x_2)}{2} f(2x1+x2)>2f(x1)+f(x2),则称 f f f 为 ( a , b ) (a,b) (a,b) 上的凹函数或者上凸函数或者 A 型函数;
(2) f ( x 1 + x 2 2 ) < f ( x 1 ) + f ( x 2 ) 2 f(\frac{x_1+x_2}{2})<\frac{f(x_1)+f(x_2)}{2} f(2x1+x2)<2f(x1)+f(x2),则称 f f f 为 ( a , b ) (a,b) (a,b) 上的凸函数或者下凸函数或者 V 型函数;
多项式函数来近似一个可导函数。
f ( x ) = f ( x 0 ) 0 ! + f ′ ( x 0 ) 1 ! ( x − x 0 ) + f ′ ′ ( x 0 ) 2 ! ( x − x 0 ) 2 + . . . + f n ( x 0 ) n ! ( x − x 0 ) n + R n ( x ) f(x)=\frac{f(x_0)}{0!}+\frac{f'(x_0)}{1!}(x-x_0)+\frac{f''(x_0)}{2!}(x-x_0)^2+...+\frac{f^{n}(x_0)}{n!}(x-x_0)^n + R_n(x) f(x)=0!f(x0)+1!f′(x0)(x−x0)+2!f′′(x0)(x−x0)2+...+n!fn(x0)(x−x0)n+Rn(x)
f ( x ) = f ( x k ) + ( x − x k ) f ′ ( x k ) + 1 2 ( x − x k ) 2 f ′ ′ ( x k ) + o n f(x)=f(x_k)+(x-x_k)f'(x_k)+\frac{1}{2}(x-x_k)^2f''(x_k)+o^n f(x)=f(xk)+(x−xk)f′(xk)+21(x−xk)2f′′(xk)+on
机器学习中求极值用的,梯度下降法(保留泰勒展开一阶项),牛顿法(保留泰勒展开二阶项)。
一维数组,几何意义是空间中的点, n n n 维向量集合的全体构成了 n n n 维欧式空间 R n R^n Rn ;
行向量(编程语言中把数据存为它),列向量(数学上常用);
向量运算
加减:分量加减, E r r o r = y − y ^ Error=\boldsymbol{y}-\hat{\boldsymbol{y}} Error=y−y^
数乘:数和分量相乘, w t + 1 = w t − α g \boldsymbol{w}^{t+1}=\boldsymbol{w}^t-\alpha \boldsymbol{g} wt+1=wt−αg
向量的内积(点乘): X T Y X^TY XTY
np.dot(a,b)
运算法则: A + B + C = A + ( B + C ) A+B+C=A+(B+C) A+B+C=A+(B+C) ; k ∗ ( X + Y ) = k X + k Y k*(X+Y)=kX+kY k∗(X+Y)=kX+kY
np.zeros()
; 全 1 向量:np.ones()
;二维数组,方阵,对称矩阵: a i j = a j i a_{ij}=a_{ji} aij=aji
单位阵:np.identity()
、np.eye()
矩阵运算:加减、数乘、转置(a.T
、a.transpose(1,0)
)
矩阵的乘法:a*b
a/b
(按对应位相乘除),np.dot(a,b)
是把第一个矩阵的每一行和第二个矩阵的每一列做内积。
A + B + C = A + ( B + C ) A+B+C=A+(B+C) A+B+C=A+(B+C); ( A B ) C = A ( B C ) (AB)C=A(BC) (AB)C=A(BC); ( A + B ) C = A C + B C (A+B)C=AC+BC (A+B)C=AC+BC; A ( B + C ) = A B + A C A(B+C)=AB+AC A(B+C)=AB+AC; A B ≠ B A AB\ne BA AB=BA
转置公式: ( A B ) T = B T A T (AB)^T=B^TA^T (AB)T=BTAT
np.linalg.inv(A)
(linear algebra)∣ a 11 a 12 a 21 a 22 ∣ = a 11 a 22 − a 12 a 21 \begin{vmatrix}a_{11} & a_{12} \\a_{21} & a_{22}\end{vmatrix}=a_{11}a_{22}-a_{12}a_{21} ∣∣∣∣a11a21a12a22∣∣∣∣=a11a22−a12a21
∣ a 11 a 12 a 13 a 21 a 22 a 23 a 31 a 32 a 33 ∣ = a 11 a 22 a 33 + a 12 a 23 a 31 + a 13 a 21 a 32 − a 13 a 22 a 31 − a 12 a 21 a 33 − a 11 a 23 a 32 \begin{vmatrix}a_{11}& a_{12} &a_{13}\\a_{21}& a_{22} &a_{23}\\ a_{31}& a_{32} &a_{33}\end{vmatrix}=a_{11}a_{22}a_{33}+a_{12}a_{23}a_{31}+a_{13}a_{21}a_{32}-a_{13}a_{22}a_{31}-a_{12}a_{21}a_{33}-a_{11}a_{23}a_{32} ∣∣∣∣∣∣a11a21a31a12a22a32a13a23a33∣∣∣∣∣∣=a11a22a33+a12a23a31+a13a21a32−a13a22a31−a12a21a33−a11a23a32
np.linalg.det(A)
其他的自变量固定不动,对其中某一个变量求导数。
∂ f ∂ x i = lim Δ x i → 0 f ( x 1 , . . . , x i + Δ x i , . . . , x n ) − f ( x 1 , . . . , x i , . . . , x n ) Δ x i \frac{\partial f}{\partial x_i}=\lim \limits_{\Delta x_i\rightarrow 0}\frac{f\left ( x_1,...,x_i+\Delta x_i,...,x_n \right )-f\left ( x_1,...,x_i,...,x_n \right )}{\Delta x_i} ∂xi∂f=Δxi→0limΔxif(x1,...,xi+Δxi,...,xn)−f(x1,...,xi,...,xn)
from sympy import diff,symbols
x,y = symbols('x y')
f = x**2 + x*y - y**2
diff(f,x)
>>> 2*x + y
diff(f,x,2)
= ∂ 2 f ∂ 2 x \frac{\partial ^2f}{\partial^2 x} ∂2x∂2fdiff(f,y).subs(y,2)
= ∂ f ∂ y ∣ y = 2 \frac{\partial f}{\partial y}\Big |_{y=2} ∂y∂f∣∣∣y=2∇ f ( x ) = ( ∂ f ∂ x 1 , ∂ f ∂ x 2 , ⋯ , ∂ f ∂ x n ) T \nabla f(\boldsymbol{x})=\left ( \frac{\partial f}{\partial x_1}, \frac{\partial f}{\partial x_2},\cdots,\frac{\partial f}{\partial x_n}\right )^T ∇f(x)=(∂x1∂f,∂x2∂f,⋯,∂xn∂f)T
一阶偏导数构成的矩阵,简化求导公式。
一个函数 f f f 把 n n n 维向量 x \boldsymbol{x} x 映射为 k k k 维向量 y \boldsymbol{y} y: y = f ( x ) \boldsymbol{y}=f(\boldsymbol{x}) y=f(x)
[ ∂ y 1 ∂ x 1 ∂ y 1 ∂ x 2 ⋯ ∂ y 1 ∂ x n ∂ y 2 ∂ x 1 ∂ y 2 ∂ x 2 ⋯ ∂ y 2 ∂ x n ⋯ ⋯ ⋯ ⋯ ∂ y k ∂ x 1 ∂ y k ∂ x 2 ⋯ ∂ y k ∂ x n ] \begin{bmatrix} \frac{\partial y_1}{\partial x_1} & \frac{\partial y_1}{\partial x_2} & \cdots & \frac{\partial y_1}{\partial x_n}\\ \frac{\partial y_2}{\partial x_1} & \frac{\partial y_2}{\partial x_2} & \cdots & \frac{\partial y_2}{\partial x_n} \\ \cdots & \cdots & \cdots & \cdots\\ \frac{\partial y_k}{\partial x_1} & \frac{\partial y_k}{\partial x_2} & \cdots & \frac{\partial y_k}{\partial x_n} \end{bmatrix} ⎣⎢⎢⎢⎡∂x1∂y1∂x1∂y2⋯∂x1∂yk∂x2∂y1∂x2∂y2⋯∂x2∂yk⋯⋯⋯⋯∂xn∂y1∂xn∂y2⋯∂xn∂yk⎦⎥⎥⎥⎤
第 k k k 行就是 y k y_k yk 对 x 1 , x 2 , ⋯ , x n x_1,x_2,\cdots,x_n x1,x2,⋯,xn 求偏导。
[ ∂ 2 f ∂ x 1 2 ∂ 2 f ∂ x 1 ∂ x 2 ⋯ ∂ 2 f ∂ x 1 ∂ x n ∂ 2 f ∂ x 2 ∂ x 1 ∂ 2 f ∂ x 2 2 ⋯ ∂ 2 f ∂ x 2 ∂ x n ⋯ ⋯ ⋯ ⋯ ∂ 2 f ∂ x n ∂ x 1 ∂ 2 f ∂ x n ∂ x 2 ⋯ ∂ 2 f ∂ x n 2 ] \begin{bmatrix} \frac{\partial^2 f}{{\partial x_1}^2} & \frac{\partial^2 f}{\partial x_1\partial x_2} & \cdots & \frac{\partial^2 f}{\partial x_1\partial x_n}\\ \frac{\partial^2 f}{\partial x_2\partial x_1} & \frac{\partial^2 f}{{\partial x_2}^2} & \cdots & \frac{\partial^2 f}{\partial x_2\partial x_n} \\ \cdots & \cdots & \cdots & \cdots\\ \frac{\partial^2 f}{\partial x_n\partial x_1} & \frac{\partial^2 f}{\partial x_n\partial x_2} & \cdots & \frac{\partial^2 f}{{\partial x_n}^2} \end{bmatrix} ⎣⎢⎢⎢⎡∂x12∂2f∂x2∂x1∂2f⋯∂xn∂x1∂2f∂x1∂x2∂2f∂x22∂2f⋯∂xn∂x2∂2f⋯⋯⋯⋯∂x1∂xn∂2f∂x2∂xn∂2f⋯∂xn2∂2f⎦⎥⎥⎥⎤
它的所有元素是二阶偏导数,Hessian 矩阵是对称矩阵。
Hessian 矩阵和函数凹凸性有密切关系。Hessian 矩阵正定,函数为凸函数,负定则为凹函数。
一元函数: f ( x ) f(x) f(x) 一阶导数等于0处有极值,当 f ( x ) f(x) f(x) 的二阶导数大于0时是极小值,当二阶导数小于0时是极大值,参考 x 2 x^2 x2。
多元函数的极值判别法则:看 Hessian 矩阵在 f ( x ) f(\boldsymbol{x}) f(x) 的二阶导数等于0处,即驻点处。
矩阵正定:对于任意向量 x ≠ 0 ⃗ \boldsymbol{x}\ne \vec{0} x=0 ,都有 x T A x > 0 \boldsymbol{x}^T\boldsymbol{A}\boldsymbol{x}>0 xTAx>0,则是正定矩阵,如果是 ≥ \ge ≥,则是半正定矩阵。
判断原则:
矩阵特征值全部大于0;
矩阵所有的顺序主子式都大于0;
矩阵合同于单位阵。
f ( x 1 , x 2 , ⋯ , x n ) = a 11 x 1 2 + a 22 x 2 2 + ⋯ + a n n x n 2 + 2 a 12 x 1 x 2 + 2 a 13 x 1 x 3 + ⋯ + 2 a n − 1 , n x n − 1 x n f\left ( x_1,x_2,\cdots,x_n \right )=a_{11}x_1^2+a_{22}x_2^2+\cdots+a_{nn}x_n^2+2a_{12}x_1x_2+2a_{13}x_1x_3+\cdots+2a_{n-1,n}x_{n-1}x_{n} f(x1,x2,⋯,xn)=a11x12+a22x22+⋯+annxn2+2a12x1x2+2a13x1x3+⋯+2an−1,nxn−1xn
( x 1 , ⋯ , x n ) [ a 11 a 12 ⋯ a 1 n a 21 a 22 ⋯ a 2 n ⋯ ⋯ ⋯ ⋯ a n 1 a n 2 ⋯ a n n ] ( x 1 ⋯ ⋯ x n ) \left ( x_1,\cdots,x_n \right )\begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n}\\ a_{21} & a_{22} & \cdots & a_{2n}\\ \cdots & \cdots & \cdots & \cdots\\ a_{n1} & a_{n2} & \cdots & a_{nn} \end{bmatrix}\begin{pmatrix} x_1\\ \cdots\\ \cdots\\ x_n \end{pmatrix} (x1,⋯,xn)⎣⎢⎢⎡a11a21⋯an1a12a22⋯an2⋯⋯⋯⋯a1na2n⋯ann⎦⎥⎥⎤⎝⎜⎜⎛x1⋯⋯xn⎠⎟⎟⎞
矩阵与向量的乘法相当于对向量做了一个线性变换,变换后不一定和原来在一条直线上。
设 A \boldsymbol{A} A 是 n n n 阶方阵,若存在数 λ \lambda λ 和非零 n n n 维向量 x \boldsymbol{x} x,使得 A x = λ x \boldsymbol{A}\boldsymbol{x}=\lambda \boldsymbol{x} Ax=λx 成立,则称 λ \lambda λ 是矩阵 A \boldsymbol{A} A 的一个特征值 (characteristic value) 或本征值 (eigenvalue)。
A x = λ x ⇒ ( A − λ I ) x = 0 \boldsymbol{Ax}=\lambda \boldsymbol{x} \Rightarrow \left ( \boldsymbol{A}-\lambda \boldsymbol{I }\right )\boldsymbol{x}=0 Ax=λx⇒(A−λI)x=0,有非零解的充要条件是系数行列式 ∣ λ I − A ∣ = 0 \left | \lambda \boldsymbol{I}-\boldsymbol{A} \right |=0 ∣λI−A∣=0
∣ λ I − A ∣ = λ n + α 1 λ n − 1 + α 2 λ n − 2 + ⋯ + α n − 1 λ + α n \left | \lambda \boldsymbol{I}-\boldsymbol{A} \right |=\lambda ^n+\alpha _1\lambda ^{n-1}+\alpha _2\lambda ^{n-2}+\cdots+\alpha _{n-1}\lambda+\alpha _n ∣λI−A∣=λn+α1λn−1+α2λn−2+⋯+αn−1λ+αn
5 次和 5 次以上代数方程没有求根公式,工程上计算矩阵特征值使用 QR 算法。
t r ( A ) = ∑ i = 1 n a i i = λ 1 + λ 2 + ⋯ + λ n = ∑ i = 1 n λ i tr(\boldsymbol{A}) = \sum\limits_{i=1}^{n}a_{ii}=\lambda _1+\lambda _2+\cdots+\lambda _n=\sum\limits_{i=1}^{n}\lambda _i tr(A)=i=1∑naii=λ1+λ2+⋯+λn=i=1∑nλi, ∏ i = 1 n λ i = ∣ A ∣ \prod\limits_{i=1}^{n}\lambda _i=\left | \boldsymbol{A} \right | i=1∏nλi=∣A∣
np.linalg.eig(X)
n × n n\times n n×n 矩阵 A \boldsymbol{A} A 的 n n n 个特征值 λ 1 ≤ λ 2 ≤ ⋯ ≤ λ n \lambda_1\le\lambda_2\le\cdots\le\lambda_n λ1≤λ2≤⋯≤λn,以及这 n n n 个特征值所对应的特征向量 ( w 1 w 2 ⋯ w n ) \begin{pmatrix}w_1 & w_2 & \cdots & w_n \end{pmatrix} (w1w2⋯wn),那么矩阵 A \boldsymbol{A} A 可以用特征分解表示:$ \boldsymbol{A}=\boldsymbol{W}\boldsymbol{\Sigma}\boldsymbol{W}^{-1}$。特征向量可被正交单位化从而使 W \boldsymbol{W} W 为正交矩阵。
定理1:设 M \boldsymbol{M} M 为 n × n n\times n n×n 的矩阵,其特征值为 λ 1 , λ 2 , ⋯ , λ n \lambda_1,\lambda_2,\cdots,\lambda_n λ1,λ2,⋯,λn,特征向量为 V 1 , V 2 , ⋯ , V n \boldsymbol{V}_1,\boldsymbol{V}_2,\cdots,\boldsymbol{V}_n V1,V2,⋯,Vn,形成线性无关集合,以每个特征向量为列构成矩阵 A = [ V 1 V 2 ⋯ V n ] \boldsymbol{A}= \begin{bmatrix}\boldsymbol{V}_1 & \boldsymbol{V}_2 & \cdots & \boldsymbol{V}_n \end{bmatrix} A=[V1V2⋯Vn]。矩阵 A \boldsymbol{A} A 可以将矩阵 M \boldsymbol{M} M 对角化,乘积矩阵 A − 1 M A \boldsymbol{A}^{-1}\boldsymbol{M}\boldsymbol{A} A−1MA 的主对角元素是矩阵 M \boldsymbol{M} M 的特征值:
A − 1 M A = ( λ 1 0 ⋯ 0 0 λ 2 ⋯ 0 ⋮ ⋮ ⋱ ⋮ 0 0 ⋯ λ n ) \boldsymbol{A}^{-1}\boldsymbol{M}\boldsymbol{A}=\begin{pmatrix}\lambda_1 & 0 & \cdots & 0\\ 0 & \lambda_2 &\cdots & 0\\ \vdots & \vdots & \ddots &\vdots \\ 0 & 0 & \cdots & \lambda_n \end{pmatrix} A−1MA=⎝⎜⎜⎜⎛λ10⋮00λ2⋮0⋯⋯⋱⋯00⋮λn⎠⎟⎟⎟⎞
反之,若存在可逆矩阵 A \boldsymbol{A} A ,使 A − 1 M A \boldsymbol{A}^{-1}\boldsymbol{M}\boldsymbol{A} A−1MA 为对角矩阵,则矩阵 A \boldsymbol{A} A 的列等于矩阵 M \boldsymbol{M} M 的特征向量, A − 1 M A \boldsymbol{A}^{-1}\boldsymbol{M}\boldsymbol{A} A−1MA 的主对角元素为矩阵 M \boldsymbol{M} M 的特征值。
正交矩阵 P − 1 = P T \boldsymbol{P}^{-1}=\boldsymbol{P}^T P−1=PT ,行和列相互之间是正交的。
特征分解 (Eigendecomposition),又称谱分解 (Spectral decomposition),只有可对角化矩阵才可以作特征分解。一个矩阵可以拆分成一个正交阵和对角矩阵以及正交阵的逆的乘积。
f ( x ) = f ( x k ) + [ ∇ f ( x k ) ] T ( x − x k ) + 1 2 ( x − x k ) T H ( x k ) ( x − x k ) + o n f(\boldsymbol{x})=f(\boldsymbol{x}_k)+[\nabla f(\boldsymbol{x}_k)]^T(\boldsymbol{x}-\boldsymbol{x}_k)+\frac {1}{2}(\boldsymbol{x}-\boldsymbol{x}_k)^TH(\boldsymbol{x}_k)(\boldsymbol{x}-\boldsymbol{x}_k)+\boldsymbol{o}^n f(x)=f(xk)+[∇f(xk)]T(x−xk)+21(x−xk)TH(xk)(x−xk)+on
注: ∇ f ( x k ) \nabla f(\boldsymbol{x}_k) ∇f(xk) 是梯度, H ( x k ) H(\boldsymbol{x}_k) H(xk) 是 Hessian 矩阵, x T A x ⇒ a x 2 \boldsymbol{x}^T\boldsymbol{A}\boldsymbol{x }\Rightarrow ax^2 xTAx⇒ax2 。
n × n n\times n n×n 方阵 A T A \boldsymbol{A}^T\boldsymbol{A} ATA 求 n n n 个特征向量: ( A T A ) v i = λ i v i (\boldsymbol{A}^T\boldsymbol{A})\boldsymbol{v}_i=\lambda_i\boldsymbol{v}_i (ATA)vi=λivi ,将所有特征向量张成 n × n n\times n n×n 的矩阵 V \boldsymbol{V} V ,其中每个特征向量叫 A \boldsymbol{A} A 的右奇异向量;
m × m m\times m m×m 方阵 A A T \boldsymbol{A}\boldsymbol{A}^T AAT 求 m m m 个特征向量: ( A A T ) u i = λ i u i (\boldsymbol{A}\boldsymbol{A}^T)\boldsymbol{u}_i=\lambda_i\boldsymbol{u}_i (AAT)ui=λiui ,将所有特征向量张成 m × m m\times m m×m 的矩阵 U \boldsymbol{U} U ,其中每个特征向量叫 A \boldsymbol{A} A 的左奇异向量;
A = U Σ V T ⇒ A V = U Σ V T V ⇒ A V = U Σ ⇒ A v i = σ i u i ⇒ σ i = A v i / u i \boldsymbol{A}=\boldsymbol{U}\boldsymbol{\Sigma}\boldsymbol{V}^T\Rightarrow \boldsymbol{A}\boldsymbol{V}=\boldsymbol{U}\boldsymbol{\Sigma}\boldsymbol{V}^T\boldsymbol{V}\Rightarrow \boldsymbol{A}\boldsymbol{V}=\boldsymbol{U}\boldsymbol{\Sigma}\Rightarrow \boldsymbol{A}\boldsymbol{v}_i=\boldsymbol{\sigma}_i\boldsymbol{u}_i\Rightarrow \boldsymbol{\sigma}_i=\boldsymbol{A}\boldsymbol{v}_i/\boldsymbol{u}_i A=UΣVT⇒AV=UΣVTV⇒AV=UΣ⇒Avi=σiui⇒σi=Avi/ui
A T A = V Σ 2 V T , A A T = U Σ 2 U T \boldsymbol{A}^T\boldsymbol{A}=\boldsymbol{V}\boldsymbol{\Sigma}^2\boldsymbol{V}^T,\boldsymbol{A}\boldsymbol{A}^T=\boldsymbol{U}\boldsymbol{\Sigma}^2\boldsymbol{U}^T ATA=VΣ2VT,AAT=UΣ2UT
A T A \boldsymbol{A}^T\boldsymbol{A} ATA 特征值与奇异值: σ i = λ i \sigma_i=\sqrt{\lambda_i} σi=λi
奇异值矩阵中按照从大到小排列,且减少得特别快,即可以用最大的 k k k 个奇异值和对应的左右奇异向量来近似描述矩阵:
A m × n = U m × m Σ m × n V n × n T ≈ U m × k Σ k × k V n × k T \boldsymbol{A}_{m\times n}=\boldsymbol{U}_{m\times m}\boldsymbol{\Sigma}_{m\times n}\boldsymbol{V}_{n\times n}^T\approx \boldsymbol{U}_{m\times k}\boldsymbol{\Sigma}_{k\times k}\boldsymbol{V}_{n\times k}^T Am×n=Um×mΣm×nVn×nT≈Um×kΣk×kVn×kT
大的矩阵用三个小矩阵近似描述;
若 Σ \boldsymbol{\Sigma} Σ 中有 k k k 个非0值: σ 1 ≥ σ 2 ≥ ⋯ ≥ σ k > 0 \sigma_1\ge \sigma_2\ge\cdots\ge\sigma_k>0 σ1≥σ2≥⋯≥σk>0,则此时乘回去即是 A \boldsymbol{A} A;
import numpy as np
u, sigma, v = np.linalg.svd(arr)
new_arr = np.mat(u[:,0:2])*np.mat(np.diag(sigma[0:2]))*np.mat(v[0:2,:])
np.rint(new_arr)
PCA (principal components analysis) 主成分分析
总体方差: σ 2 = ∑ ( X − μ ) 2 N \sigma^2=\frac{\sum(X-\mu)^2}N σ2=N∑(X−μ)2,样本方差: s 2 = ∑ ( X − X ˉ ) n − 1 s^2=\frac{\sum (X-\bar{X})}{n-1} s2=n−1∑(X−Xˉ),
D ( X ) = E [ ( X − E ( X ) ) 2 ] = E ( X 2 ) − [ E ( X ) ] 2 D(X)=E[(X-E(X))^2]=E(X^2)-[E(X)]^2 D(X)=E[(X−E(X))2]=E(X2)−[E(X)]2,
D ( X ± Y ) = D ( X ) + D ( Y ) ± 2 C o v ( X , Y ) D(X\pm Y)=D(X)+D(Y)\pm2Cov(X,Y) D(X±Y)=D(X)+D(Y)±2Cov(X,Y), C o v ( X , Y ) = E { [ X − E ( X ) ] [ Y − E ( Y ) ] } Cov(X,Y)=E\{[X-E(X)][Y-E(Y)]\} Cov(X,Y)=E{[X−E(X)][Y−E(Y)]}
左奇异向量压缩行,右奇异向量压缩列,即取奇异值较大的左奇异向量或右奇异向量与原数据相乘。
用概率论建模,假设它服从某种概率分布
随机事件 (必然事件,不可能事件) 和随机事件概率
随机事件独立: p ( b ∣ a ) = p ( b ) p(b|a)=p(b) p(b∣a)=p(b) , p ( a , b ) = p ( a ) p ( b ) p(a,b)=p(a)p(b) p(a,b)=p(a)p(b), p ( a 1 , ⋯ , a n ) = ∏ i = 1 n p ( a i ) p(a_1,\cdots,a_n)=\prod\limits_{i=1}^{n}p(a_i) p(a1,⋯,an)=i=1∏np(ai)
随机变量:(1) 离散;(2) 连续,概率密度函数 f ( x ) ≥ 0 , ∫ − ∞ + ∞ f ( x ) d x = 1 f(x)\ge0,\int_{-\infty}^{+\infty}f(x)dx=1 f(x)≥0,∫−∞+∞f(x)dx=1
F ( y ) = p ( x ≤ y ) = ∫ − ∞ y f ( x ) d x , ∫ x 1 x 2 f ( x ) d x = F ( x 2 ) − F ( x 1 ) F(y)=p(x\le y)=\int_{-\infty}^{y}f(x)dx,\int_{x_1}^{x_2}f(x)dx=F(x_2)-F(x_1) F(y)=p(x≤y)=∫−∞yf(x)dx,∫x1x2f(x)dx=F(x2)−F(x1)
对于两个随机事件 a a a 和 b b b ,在 a a a 发生的情况下 b b b 发生的概率为 p ( b ∣ a ) = p ( a , b ) p ( a ) p(b|a)=\frac{p(a,b)}{p(a)} p(b∣a)=p(a)p(a,b)
贝叶斯公式: p ( a ∣ b ) = p ( a ) p ( b ∣ a ) p ( b ) p(a|b)=\frac{p(a)p(b|a)}{p(b)} p(a∣b)=p(b)p(a)p(b∣a), a a a 为因, b b b 是果,知道原因后结果发生的概率是先验概率,贝叶斯公式得到的是后验概率。
p ( b ) p ( a ∣ b ) = p ( a , b ) = p ( a ) p ( b ∣ a ) p(b)p(a|b)=p(a,b)=p(a)p(b|a) p(b)p(a∣b)=p(a,b)=p(a)p(b∣a)
最大化后验概率 MAP
数学期望就是概率意义的平均值
E ( x ) = ∑ x i p ( x i ) , E ( x ) = ∫ − ∞ + ∞ x f ( x ) d x E(x)=\sum x_ip(x_i),E(x)=\int_{-\infty}^{+\infty}xf(x)dx E(x)=∑xip(xi),E(x)=∫−∞+∞xf(x)dx
方差反应数据的波动程度
D ( x ) = ∑ ( x i − E ( x ) ) 2 p ( x i ) D(x)=\sum (x_i-E(x))^2p(x_i) D(x)=∑(xi−E(x))2p(xi)
D ( x ) = ∫ − ∞ + ∞ ( x − E ( x ) ) 2 f ( x ) d x D(x)=\int_{-\infty}^{+\infty} (x-E(x))^2f(x)dx D(x)=∫−∞+∞(x−E(x))2f(x)dx
有关性质
E ( a + b X ) = a + b E X E(a+bX)=a+bEX E(a+bX)=a+bEX
V a r X = E ( X − μ ) 2 = E ( X 2 ) − ( E ( X ) ) 2 VarX=E(X-\mu)^2=E(X^2)-(E(X))^2 VarX=E(X−μ)2=E(X2)−(E(X))2
正态分布: σ \sigma σ 越大越矮胖
f ( x ) = 1 2 π σ e − ( x − μ ) 2 2 σ 2 f(x)=\frac{1}{\sqrt{2\pi }\sigma }e^{-\frac{(x-\mu )^2}{2\sigma ^2}} f(x)=2πσ1e−2σ2(x−μ)2
均匀分布:
f ( x ) = { 1 b − a a ≤ x ≤ b 0 x < a , x > b f(x)=\left\{\begin{matrix} \frac{1}{b-a}\quad a\le x\le b\\ 0\quad xb \end{matrix}\right. f(x)={b−a1a≤x≤b0x<a,x>b
二项分布
p ( x = 1 ) = p , p ( x = 0 ) = 1 − p p(x=1)=p,p(x=0)=1-p p(x=1)=p,p(x=0)=1−p
随机变量推广至随机向量
离散型: p ( x = x i ) p(\boldsymbol{x}=\boldsymbol{x}_i) p(x=xi) 向量取值为某一向量
连续型: f ( x ) ≥ 0 , ∭ f ( x ) d x = 1 f(\boldsymbol{x})\ge 0, \iiint f(\boldsymbol{x})d\boldsymbol{x}=1 f(x)≥0,∭f(x)dx=1,二维时: f ( x 1 , x 2 ) ≥ 0 , f ( x ) ≥ 0 , ∫ − ∞ + ∞ f ( x 1 , x 2 ) d x 1 d x 2 = 1 f(x_1,x_2)\ge 0, f(x)\ge0,\int_{-\infty}^{+\infty}f(x_1,x_2)dx_1dx_2=1 f(x1,x2)≥0,f(x)≥0,∫−∞+∞f(x1,x2)dx1dx2=1
随机变量的独立性: f ( x 1 , x 2 , ⋯ , x n ) = f ( x 1 ) f ( x 2 ) ⋯ f ( x n ) f(x_1,x_2,\cdots,x_n)=f(x_1)f(x_2)\cdots f(x_n) f(x1,x2,⋯,xn)=f(x1)f(x2)⋯f(xn)
随机向量的常见分布:正态分布
f ( x ) = 1 ( 2 π ) n 2 ∣ Σ ∣ 1 2 e − 1 2 ( x − μ ) T Σ − 1 ( x − μ ) , x ∈ R n f(x)=\frac{1}{(2\pi)^{n\over 2}\left | \Sigma \right |^{1\over 2}}e^{-\frac{1}{2}(x-\mu)^T\Sigma ^{-1}(x-\mu)}\ ,x\in \mathbb{R}^n f(x)=(2π)2n∣Σ∣211e−21(x−μ)TΣ−1(x−μ) ,x∈Rn
Σ \Sigma Σ 是协方差矩阵。
对于两个随机变量:
c o v ( x 1 , x 2 ) = E ( ( x 1 − E ( x 1 ) ) ( x 2 − E ( x 2 ) ) ) c o v ( x 1 , x 2 ) = E ( x 1 x 2 ) − E ( x 1 ) E ( x 2 ) cov(x_1,x_2)=E((x_1-E(x_1))(x_2-E(x_2)))\\ cov(x_1,x_2)=E(x_1x_2)-E(x_1)E(x_2) cov(x1,x2)=E((x1−E(x1))(x2−E(x2)))cov(x1,x2)=E(x1x2)−E(x1)E(x2)
协方差矩阵
[ x 1 x 1 x 1 x 2 ⋯ x 1 x n x 2 x 1 ⋱ ⋯ x 2 x n ⋮ ⋮ ⋱ ⋮ x n x 1 ⋯ ⋯ x n x n ] \begin{bmatrix} x_1x_1 & x_1x_2 & \cdots & x_1x_n\\ x_2x_1 & \ddots & \cdots & x_2x_n\\ \vdots & \vdots & \ddots & \vdots \\ x_nx_1 & \cdots & \cdots & x_nx_n \end{bmatrix} ⎣⎢⎢⎢⎡x1x1x2x1⋮xnx1x1x2⋱⋮⋯⋯⋯⋱⋯x1xnx2xn⋮xnxn⎦⎥⎥⎥⎤
求 f ( x ) f(x) f(x) 的极大值或极小值, x x x 是优化变量,就是自变量, f ( x ) f(x) f(x) 是目标函数,可能带有约束条件,满足约束并在定义域内的集合叫可行域;
max f ( x ) ⇔ min f ( x ) g i ( x ) = 0 , i = 1 , ⋯ , m h j ( x ) ≤ 0 j = 1 , ⋯ , n \max f(x) \Leftrightarrow\min f(x)\\ g_i(x)=0,\quad i=1,\cdots,m\\ h_j(x)\le 0\quad j=1,\cdots,n maxf(x)⇔minf(x)gi(x)=0,i=1,⋯,mhj(x)≤0j=1,⋯,n
局部极小值:任意在 x 0 x_0 x0 的领域存在, f ( x ) ≥ f ( x 0 ) , ∀ x ∈ δ ( x 0 ) f(x)\ge f(x_0), \forall x\in \delta (x_0) f(x)≥f(x0),∀x∈δ(x0)
通过大量实践发现在高维度的优化问题中,局部极小值 (local minimum)和全局极小值没有太大的区别,甚至有时候有更好的泛化能力。
为什么要迭代求解?(求导困难,求根困难),(初始值,逼近)
x k + 1 = x k − γ ∇ f ( x k ) \boldsymbol{x}_{k+1}=\boldsymbol{x}_k-\gamma \nabla f(\boldsymbol{x}_k) xk+1=xk−γ∇f(xk)
推导:
η \eta η 是步长,不能太大,否则不满足约等于条件。
x k + 1 = x − H k − 1 g k \boldsymbol{x}_{k+1}=\boldsymbol{x}-\boldsymbol{H}_k^{-1}\boldsymbol{g}_k xk+1=x−Hk−1gk
思想:找梯度为0的点。
推导:
多元函数的泰勒展开公式展开二次以上的项
f ( x ) = f ( x 0 ) + [ ∇ f ( x 0 ) ] T ( x − x 0 ) + 1 2 ( x − x 0 ) T H ( x 0 ) ( x − x 0 ) + o ( x − x 0 ) f(\boldsymbol{x})=f(\boldsymbol{x}_0)+[\nabla f(\boldsymbol{x}_0)]^T(\boldsymbol{x}-\boldsymbol{x}_0)+\frac {1}{2}(\boldsymbol{x}-\boldsymbol{x}_0)^TH(\boldsymbol{x}_0)(\boldsymbol{x}-\boldsymbol{x}_0)+\boldsymbol{o}(\boldsymbol{x}-\boldsymbol{x}_0) f(x)=f(x0)+[∇f(x0)]T(x−x0)+21(x−x0)TH(x0)(x−x0)+o(x−x0)
取近似
f ( x ) ≈ f ( x 0 ) + [ ∇ f ( x 0 ) ] T ( x − x 0 ) + 1 2 ( x − x 0 ) T H ( x 0 ) ( x − x 0 ) f(\boldsymbol{x})\approx f(\boldsymbol{x}_0)+[\nabla f(\boldsymbol{x}_0)]^T(\boldsymbol{x}-\boldsymbol{x}_0)+\frac {1}{2}(\boldsymbol{x}-\boldsymbol{x}_0)^TH(\boldsymbol{x}_0)(\boldsymbol{x}-\boldsymbol{x}_0) f(x)≈f(x0)+[∇f(x0)]T(x−x0)+21(x−x0)TH(x0)(x−x0)
由于 ( w T x ) ′ = w (\boldsymbol{w}^T\boldsymbol{x})'=\boldsymbol{w} (wTx)′=w, ( x T A x ) ′ = ( A + A T ) x (\boldsymbol{x}^T\boldsymbol{A}\boldsymbol{x})'= (\boldsymbol{A}+\boldsymbol{A}^T)\boldsymbol{x} (xTAx)′=(A+AT)x,故有:
∇ f ( x ) ≈ ∇ f ( x 0 ) + H ( x 0 ) ( x − x 0 ) = g + H ( x − x 0 ) \nabla f(\boldsymbol{x})\approx \nabla f(\boldsymbol{x}_0)+H(\boldsymbol{x}_0)(\boldsymbol{x}-\boldsymbol{x}_0)=\boldsymbol{g}+\boldsymbol{H}(\boldsymbol{x}-\boldsymbol{x}_0) ∇f(x)≈∇f(x0)+H(x0)(x−x0)=g+H(x−x0)
令 ∇ f ( x ) = 0 \nabla f(\boldsymbol{x})=0 ∇f(x)=0,如果 Hessian 矩阵可逆,则有
g + H ( x − x 0 ) = 0 ⇒ x − x 0 = − H − 1 g \boldsymbol{g}+\boldsymbol{H}(\boldsymbol{x}-\boldsymbol{x}_0)=0\\ \Rightarrow \boldsymbol{x}-\boldsymbol{x}_0=-\boldsymbol{H}^{-1}\boldsymbol{g} g+H(x−x0)=0⇒x−x0=−H−1g
对比:
x k + 1 = x k − η ⋅ g k x k + 1 = x k − η ⋅ H k − 1 ⋅ g k \boldsymbol{x}_{k+1}=\boldsymbol{x}_k-\eta\cdot\boldsymbol{g}_k\\ \boldsymbol{x}_{k+1}=\boldsymbol{x}_k-\eta\cdot\boldsymbol{H}^{-1}_k\cdot\boldsymbol{g}_k xk+1=xk−η⋅gkxk+1=xk−η⋅Hk−1⋅gk
牛顿法步长设定不好就有可能不收敛,不是迭代就一定使得函数值下降,一般用 line search 的技术,选择一些值如 1 0 − 4 , 1 0 − 6 10^{-4},10^{-6} 10−4,10−6,看哪个步长使得 f ( x k + 1 ) f(\boldsymbol{x}_{k+1}) f(xk+1) 更小。
牛顿法收敛更快。
前面数值优化面临两个问题,对这类问题进行限定:
同时满足这两个条件的叫凸优化问题,才能说局部极小值就是全局极小值。
目标函数是凸函数,可行域是凸集,则局部最优解一定是全局最优解。
证明:(反证法)
假设有一点 x x x 是局部最小值,但不是全局最小值,则存在另一个点 y y y 是全局最小值,这时 f ( y ) < f ( x ) f(y)
证明 x x x 的领域有一个点 z z z 比 x x x 小即可,取 z = θ y + ( 1 − θ ) x , θ = δ 2 ∥ x − y ∥ 2 z=\theta y+(1-\theta)x,\theta=\frac{\delta}{2\|x-y\|_2} z=θy+(1−θ)x,θ=2∥x−y∥2δ 即可。
min f ( x ) , x ∈ C \min f(x),x\in C minf(x),x∈C
或者
min f ( x ) c i ( x ) ≤ 0 , i = 1 , ⋯ , m h j ( x ) = 0 , j = 1 , ⋯ , k \min f(x)\\ c_i(x)\le0,i=1,\cdots,m\\ h_j(x)=0,j=1,\cdots,k minf(x)ci(x)≤0,i=1,⋯,mhj(x)=0,j=1,⋯,k
将一个有n 个变量与k 个约束条件的最优化问题转换为一个有n + k个变量的方程组的极值问题,其变量不受任何约束;
(1) 等式约束条件
min f ( x ) s . t . h k ( x ) = 0 k = 1 , 2 , ⋯ , l \min f(\boldsymbol{x})\\ s.t.\quad h_k(\boldsymbol{x})=0 \quad k=1,2,\cdots,l minf(x)s.t.hk(x)=0k=1,2,⋯,l
求解步骤:
定义拉格朗日函数:
F ( x , λ ) = f ( x ) + ∑ k = 1 l λ k h k ( x ) F(\boldsymbol{x},\boldsymbol{\lambda})=f(\boldsymbol{x})+\sum\limits_{k=1}^l\lambda_kh_k(\boldsymbol{x}) F(x,λ)=f(x)+k=1∑lλkhk(x)
解变量的偏导方程:
∂ F ∂ x i = 0 , ⋯ , ∂ F ∂ λ k = 0 , ⋯ \frac{\partial F}{\partial x_i}=0,\cdots,\frac{\partial F}{\partial \lambda _k}=0,\cdots ∂xi∂F=0,⋯,∂λk∂F=0,⋯
或者说是分别对 x \boldsymbol{x} x 和 λ \boldsymbol{\lambda} λ 求梯度,然后解方程组
∇ x f + ∑ k = 1 l λ k ∇ x h k = 0 h k ( x ) = 0 \nabla_xf+\sum\limits_{k=1}^l\lambda_k\nabla_xh_k=0\\ h_k(\boldsymbol{x})=0 ∇xf+k=1∑lλk∇xhk=0hk(x)=0
(2) 带不等式约束条件
可参考KKT条件。
min f ( x ) g i ( x ) ≤ 0 , i = 1 , ⋯ , m h j ( x ) = 0 , j = 1 , ⋯ , k \min f(x)\\ g_i(x)\le0,i=1,\cdots,m\\ h_j(x)=0,j=1,\cdots,k minf(x)gi(x)≤0,i=1,⋯,mhj(x)=0,j=1,⋯,k
构建一个广义 (包括不等式约束) 的拉格朗日函数:
L ( x , α , β ) = f ( x ) + ∑ i = 1 m α i g i ( x ) + ∑ j = 1 k β i h j ( x ) , α i ≥ 0 L(x,\alpha,\beta)=f(x)+\sum\limits_{i=1}^m\alpha_ig_i(x)+\sum\limits_{j=1}^k\beta_ih_j(x),\alpha_i\ge 0 L(x,α,β)=f(x)+i=1∑mαigi(x)+j=1∑kβihj(x),αi≥0
问题转化为:
p ∗ = min x max α , β , α i ≥ 0 L ( x , α , β ) = min x θ p ( x ) p^*=\min_x \max_{\alpha,\beta,\alpha_i\ge 0}L(x,\alpha,\beta)=\min_x\theta_p(x) p∗=xminα,β,αi≥0maxL(x,α,β)=xminθp(x)
理解可参考:【数学】拉格朗日对偶,从0到完全理解
无论如何, p ∗ p^* p∗ 都不会小于 max α , β , α i ≥ 0 L ( x , α , β ) \max\limits_{\alpha,\beta,\alpha_i\ge 0}L(x,\alpha,\beta) α,β,αi≥0maxL(x,α,β)。
min f ( x ) g i ( x ) ≤ 0 , i = 1 , ⋯ , q h j ( x ) = 0 , j = 1 , ⋯ , p \min f(x)\\ g_i(x)\le0,i=1,\cdots,q\\ h_j(x)=0,j=1,\cdots,p minf(x)gi(x)≤0,i=1,⋯,qhj(x)=0,j=1,⋯,p
L ( x , λ , μ ) = f ( x ) + ∑ j = 1 p λ j h j ( x ) + ∑ i = 1 q μ i g i ( x ) L(x,\lambda,\mu)=f(x)+\sum\limits_{j=1}^p\lambda_jh_j(x)+\sum\limits_{i=1}^q\mu_ig_i(x) L(x,λ,μ)=f(x)+j=1∑pλjhj(x)+i=1∑qμigi(x)
KKT 条件:
∇ x L ( x ∗ ) = ∇ f ( x ∗ ) + ∑ j = 1 p λ i ∗ ∇ h j ( x ∗ ) + ∑ i = 1 q μ i ∗ ∇ g i ( x ∗ ) = 0 μ i ∗ ≥ 0 μ i ∗ g i ( x ∗ ) = 0 h j ( x ∗ ) = 0 g i ( x ∗ ) ≤ 0 \nabla_x L(x^*)=\nabla f(x^*) +\sum\limits_{j=1}^p\lambda_i^*\nabla h_j(x^*)+\sum\limits_{i=1}^q\mu_i^*\nabla g_i(x^*)=0\\ \mu_i^*\ge0\\ \mu_i^*g_i(x^*)=0\\ h_j(x^*)=0\\ g_i(x^*)\le0 ∇xL(x∗)=∇f(x∗)+j=1∑pλi∗∇hj(x∗)+i=1∑qμi∗∇gi(x∗)=0μi∗≥0μi∗gi(x∗)=0hj(x∗)=0gi(x∗)≤0