对 人工智能数学课高等数学线性微积分数学教程的学习笔记。主要用于快速回忆已学的数学知识点,不适合基础学习。 博客园中同步更新。
1. 数学内容概述
人工智能是应用数学,需要的数学知识包括:
-
微积分
- 主要内容:导数与求导公式,一阶导数与函数的单调性,一元函数极值判定法则,高阶导数,二阶导数与函数的凹凸性,一元导数泰勒展开。
- 主要用微分部分,求函数极值,即机器学习库中的求解器 (solver) 的功能;
- 推荐书籍:高等数学(第七版,同济大学数学系),数学分析新讲(张筑生)
- 知识点:
- 导数与偏导数定义与计算;
- 梯度向量;
- 极值定理,可导函数在极值点处导数或梯度必须为0;
- 雅克比矩阵,向量到向量映射函数的偏导数构成的矩阵,用于求导推导;
- Hessian 矩阵,二阶导数对多元函数的推广,求函数极值;
- 凸函数的定义与判断;
- 泰勒展开公式,多元函数泰勒展开公式,推导出梯度下降法,牛顿法,拟牛顿法等一系列最优化方法;
- 拉格朗日乘数法,拉格朗日对偶,求解带等式约束的极值问题。
-
线性代数
- 主要内容:向量及其运算,矩阵及其运算,张量,行列式,二次型,特征值与特征向量。
- 推荐书籍:工程数学线性代数(同济大学数学系)
- 知识点:
- 向量及其运算,包括加法,减法,数乘,转置,内积;
- 向量和矩阵的范数, L 1 L1 L1 范数(曼哈顿距离)和 L 2 L2 L2 范数(两点间距离);
- 矩阵及其运算,包括加法,减法乘法和数乘;
- 逆矩阵定义和性质;
- 行列式定义和计算;
- 二次型定义;
- 矩阵正定性;
- 矩阵的特征值 (eigenvalue) 与特征向量 (eigenvector) ;
- 矩阵的奇异值分解 (SVD) ;
- 线性方程组的数值解法,尤其是共轭梯度法。
- 数据一般都是向量、矩阵或张量。
-
概率论
- 主要内容:随机事件与概率,条件概率和贝叶斯公式,随机变量,随机变量的期望和方差,常用概率分布(正态分布,均匀分布,伯努利二项分布),随机向量(联合概率密度函数等),协方差和协方差矩阵,最大似然估计。
- 将所处理的样本数据看作随机变量/向量,用概率论的观点对问题进行建模。
- 推荐书籍:概率论与数理统计(第四版)
- 知识点:
- 随机事件概念,概率定义与计算;
- 随机变量与概率分布,尤其是连续性随机变量的概率密度函数和分布函数;
- 条件概率与贝叶斯公式;
- 常见概率分布,正态分布,均匀分布,伯努利二项分布;
- 随机变量的均值方差,协方差;
- 随机变量的独立性;
- 最大似然估计。
-
最优化
- 推荐书籍:凸优化(作者:Stephen Boyd, Lieven Vandenberghe著 王书宁,许鋆,黄晓霖译),非线性规划(第2版,作者:Dimitri P. Bertsekas 著 宋士吉、张玉利、贾庆山 译)
- 凸优化问题
-
其他
微分几何,泛函分析和识别函数,离散数学(图论)。
2. 一元函数微分学
- 导数
- 导数的定义
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)
- 左导数、右导数和右导数
- ReLu函数 Activation Function
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
- 求导公式
- 基本函数
- ( x a ) ′ = a x a − 1 (x^a)'=ax^{a-1} (xa)′=axa−1
- ( a x ) ′ = a x ln a (a^x)'=a^x\ln a (ax)′=axlna ; ( e x ) ′ = e x (e^x)'=e^x (ex)′=ex
- ( l o g a x ) ′ = 1 ln a 1 x (log_a x)'=\frac{1}{\ln a}\frac{1}{x} (logax)′=lna1x1 ; ( ln x ) ′ = 1 x (\ln x)'=\frac{1}{x} (lnx)′=x1
- 定义: lim n → + ∞ ( 1 + 1 n ) n = e \lim\limits_{n\rightarrow+\infty}(1+\frac{1}{n})^n=e n→+∞lim(1+n1)n=e ; lim x → 0 sin x x = 1 \lim\limits_{x\rightarrow0}\frac{\sin x}{x}=1 x→0limxsinx=1; lim n → 0 ( 1 + n ) 1 n = e \lim\limits_{n\rightarrow0}(1+n)^\frac{1}{n}=e n→0lim(1+n)n1=e
- 四则运算法则
- ( f ( x ) + g ( x ) ) ′ = f ′ ( x ) + g ′ ( x ) (f(x)+g(x))'=f'(x)+g'(x) (f(x)+g(x))′=f′(x)+g′(x)
- ( f ( x ) g ( x ) ) ′ = f ′ ( x ) g ( x ) + f ( x ) g ′ ( x ) (f(x)g(x))'=f'(x)g(x)+f(x)g'(x) (f(x)g(x))′=f′(x)g(x)+f(x)g′(x)
- ( f ( x ) g ( x ) ) ′ = f ′ ( x ) g ( x ) − f ( x ) g ′ ( x ) g 2 ( x ) (\frac{f(x)}{g(x)})'=\frac{f'(x)g(x)-f(x)g'(x)}{g^2(x)} (g(x)f(x))′=g2(x)f′(x)g(x)−f(x)g′(x)
- 复合函数求导法则
( 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 ) > 0 f''(x)>0 f′′(x)>0 二阶导数大于0——凸 (convex) 函数;反之,凹 (concave) 函数
- f ′ ( x ) = 0 f'(x)=0 f′(x)=0 驻点;
- f ′ ′ ( x ) = 0 f''(x)=0 f′′(x)=0 ,若该曲线图形的函数在拐点(连续曲线的凹弧与凸弧的分界点)有二阶导数,则二阶导数在拐点处异号(由正变负或由负变正)或不存在。
- 一元函数泰勒展开
多项式函数来近似一个可导函数。
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
机器学习中求极值用的,梯度下降法(保留泰勒展开一阶项),牛顿法(保留泰勒展开二阶项)。
3. 线性代数基础
- 向量
-
一维数组,几何意义是空间中的点, 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
-
- 向量的范数
- 范数: ∥ x ∥ p = ( ∑ i = 1 n ∣ x i ∣ p ) 1 p \left \| \boldsymbol{x} \right \|_p=\left ( \sum\limits_{i=1}^{n}\left | x_i \right |^p \right )^\frac{1}{p} ∥x∥p=(i=1∑n∣xi∣p)p1; p p p 为整数,向量变成标量;
- 1 范数是绝对值加和,记为 L 1 L1 L1: ∥ x ∥ 1 = ∑ i = 1 n ∣ x i ∣ \left \| \boldsymbol{x} \right \|_1=\sum\limits_{i=1}^n \left | x_i \right | ∥x∥1=i=1∑n∣xi∣,曼哈顿距离;
- 2 范数是向量长度,向量的模,记为 L 2 L2 L2: ∥ x ∥ 2 = ∑ i = 1 n ( x i ) 2 \left \| \boldsymbol{x} \right \|_2=\sqrt{\sum\limits_{i=1}^n \left ( x_i \right )^2} ∥x∥2=i=1∑n(xi)2,欧式距离;
- 应用: L 1 L1 L1 正则项: ∑ i = 1 n ∣ w i ∣ \sum\limits_{i=1}^n \left | w_i \right | i=1∑n∣wi∣; L 2 L2 L2 正则项: ∑ i = 1 n ∣ w i ∣ 2 \sum\limits_{i=1}^n \left |w_i \right |^2 i=1∑n∣wi∣2;正则项越小,模型容错性越强,防止过拟合;
- 特殊向量
- 0 向量:
np.zeros()
; 全 1 向量:np.ones()
; - 稀疏向量(Sparse vector);稠密向量(Dense vector);one-hot 编码;
- 单位向量,长度为1;
- 矩阵
-
二维数组,方阵,对称矩阵: 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
- 逆矩阵
- 假设一个矩阵 A A A (方阵),有 A B = B A = I AB=BA=I AB=BA=I , B = A − 1 B=A^{-1} B=A−1
- ( A B ) − 1 = B − 1 A − 1 (AB)^{-1}=B^{-1}A^{-1} (AB)−1=B−1A−1, ( A − 1 ) − 1 = A (A^{-1})^{-1}=A (A−1)−1=A, ( A T ) − 1 = ( A − 1 ) T (A^T)^{-1}=(A^{-1})T (AT)−1=(A−1)T
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
- 行列式性质: ∣ A B ∣ = ∣ A ∣ ∣ B ∣ \left | AB \right |=\left | A \right |\left | B \right | ∣AB∣=∣A∣∣B∣, ∣ A − 1 ∣ = ∣ A ∣ − 1 \left | A^{-1} \right |=\left | A \right |^{-1} ∣∣A−1∣∣=∣A∣−1, ∣ α A ∣ = α n ∣ A ∣ \left | \alpha A \right |=\alpha ^n\left | A \right | ∣αA∣=αn∣A∣
np.linalg.det(A)
4. 多元函数的微分学
- 偏导数
其他的自变量固定不动,对其中某一个变量求导数。
∂
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
- 高阶偏导数
- 依次对每一个变量反复求导
- 高阶导数和求导次序无关: ∂ 2 f ∂ x ∂ y = ∂ 2 f ∂ y ∂ x \frac{\partial ^2f}{\partial x\partial y}=\frac{\partial ^2f}{\partial y\partial x} ∂x∂y∂2f=∂y∂x∂2f;
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 求偏导。
- Hessian 矩阵
- 设有一个 n n n 元函数:
[ ∂ 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处,即驻点处。
- 若 Hessian 矩阵是正定,函数在该点有极小值;
- 若 Hessian 矩阵是负定,函数在该点有极大值;
- 若 Hessian 矩阵不定,则还需要看更高阶导数。
-
矩阵正定:对于任意向量 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;
-
矩阵合同于单位阵。
-
5. 线性代数高级
- 二次型
- 纯二次项构成的函数,把含有 n n n 个变量的二次齐次函数称为二次型:
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 T A x = ∑ i = 1 n ∑ j = 1 n a i j x i x j \boldsymbol{x}^T\boldsymbol{A}\boldsymbol{x}=\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}a_{ij}x_ix_j xTAx=i=1∑nj=1∑naijxixj, A \boldsymbol{A} A 即二次型矩阵。
( 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⎠⎟⎟⎞
- 机器学习中常见形式,比如是一次型: f ( x ; w ) = w T x + b f(\boldsymbol{x};\boldsymbol{w})=\boldsymbol{w}^T\boldsymbol{x}+b f(x;w)=wTx+b,或者二次型: f ( x ; w ) = x T w x + b f(\boldsymbol{x};\boldsymbol{w})=\boldsymbol{x}^T\boldsymbol{w}\boldsymbol{x}+b f(x;w)=xTwx+b。
- 回看 Hessian 矩阵:对于二次型函数,
f
(
x
)
=
x
T
A
x
f(\boldsymbol{x})=\boldsymbol{x}^T\boldsymbol{A}\boldsymbol{x}
f(x)=xTAx:
- f ( x ) > 0 , x ≠ 0 , x ∈ R f(\boldsymbol{x})>0,x\ne0,x\in \mathbb{R} f(x)>0,x=0,x∈R,则 f f f 为正定二次型, A A A 为正定矩阵;
- f ( x ) ≥ 0 , x ≠ 0 , x ∈ R f(\boldsymbol{x})\ge0,x\ne0,x\in \mathbb{R} f(x)≥0,x=0,x∈R,则 f f f 为半正定二次型, A A A 为半正定矩阵;
- f ( x ) < 0 , x ≠ 0 , x ∈ R f(\boldsymbol{x})<0,x\ne0,x\in \mathbb{R} f(x)<0,x=0,x∈R,则 f f f 为负定二次型, A A A 为负定矩阵;
- f ( x ) ≤ 0 , x ≠ 0 , x ∈ R f(\boldsymbol{x})\le0,x\ne0,x\in \mathbb{R} f(x)≤0,x=0,x∈R,则 f f f 为半负定二次型, A A A 为半负定矩阵;
- 以上皆不是,不定。
- 特征值和特征向量
-
矩阵与向量的乘法相当于对向量做了一个线性变换,变换后不一定和原来在一条直线上。
-
设 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 。
- 矩阵和向量的求导公式
- ∇ ( w T x ) = w \nabla (\boldsymbol{w}^T\boldsymbol{x})=\boldsymbol{w} ∇(wTx)=w
- ∇ ( x T A x ) = ( A + A T ) x \nabla (\boldsymbol{x}^T\boldsymbol{A}\boldsymbol{x})= (\boldsymbol{A}+\boldsymbol{A}^T)\boldsymbol{x} ∇(xTAx)=(A+AT)x
- ∇ 2 ( x T A x ) = A + A T \nabla ^2 (\boldsymbol{x}^T\boldsymbol{A}\boldsymbol{x})= \boldsymbol{A}+\boldsymbol{A}^T ∇2(xTAx)=A+AT 二阶导即再对 x \boldsymbol{x} x 求导。
- 奇异值分解 (SVD)
- 可以应用于任意形状的矩阵,区别于谱分解;
- A = U Σ V T \boldsymbol{A}=\boldsymbol{U}\boldsymbol{\Sigma}\boldsymbol{V}^T A=UΣVT,其中 A \boldsymbol{A} A 是 m × n m\times n m×n 的矩阵, U \boldsymbol{U} U, V \boldsymbol{V} V 都是正交矩阵, Σ \boldsymbol{\Sigma} Σ 是对角阵 m × n m\times n m×n ;
- U \boldsymbol{U} U 是 A A T \boldsymbol{A}\boldsymbol{A}^T AAT 正交化特征向量构成的 m × m m\times m m×m 矩阵, V \boldsymbol{V} V 是 A T A \boldsymbol{A}^T\boldsymbol{A} ATA 正交化特征向量构成的 n × n n\times n n×n 矩阵;
- Σ \boldsymbol{\Sigma} Σ 是 m × n m\times n m×n 的矩阵,除了主对角线上的元素 (奇异值) 以外全部为0, U \boldsymbol{U} U, V \boldsymbol{V} V 都是酉矩阵,即 U T U = I \boldsymbol{U}^T\boldsymbol{U}=\boldsymbol{I} UTU=I, V T V = I \boldsymbol{V}^T\boldsymbol{V}=\boldsymbol{I} VTV=I
- 求解奇异值分解
-
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;
- SVD 的应用
- 数据压缩
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 降维
-
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)]}
-
左奇异向量压缩行,右奇异向量压缩列,即取奇异值较大的左奇异向量或右奇异向量与原数据相乘。
- 协调过滤
- 用户推荐
- 用 SVD 分解把样本映射到低维空间
- 矩阵求逆
- 奇异值求倒数: A = U Σ V T ⇒ A − 1 = V Σ − 1 U T \boldsymbol{A}=\boldsymbol{U}\boldsymbol{\Sigma}\boldsymbol{V}^T\Rightarrow \boldsymbol{A}^{-1}=\boldsymbol{V}\boldsymbol{\Sigma}^{-1}\boldsymbol{U}^T A=UΣVT⇒A−1=VΣ−1UT
6. 概率论
- 基本概念
-
用概率论建模,假设它服从某种概率分布
-
随机事件 (必然事件,不可能事件) 和随机事件概率
-
随机事件独立: 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 x<a,x>b \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⎦⎥⎥⎥⎤
- 最大似然估计
- 最大似然估计(maximum likelihood estimation, MLE),估计参数;
- 总似然: L ( θ ) = ∏ i = 1 l p ( x i ; θ ) L(\theta )= \prod\limits_{i=1}^{l}p(x_i;\theta ) L(θ)=i=1∏lp(xi;θ)
- 对数总似然: ln L ( θ ) = ln ∏ i = 1 l p ( x i ; θ ) = ∑ i = 1 l ln p ( x i ; θ ) \ln L(\theta )= \ln\prod\limits_{i=1}^{l}p(x_i;\theta )=\sum\limits_{i=1}^{l}\ln p(x_i;\theta ) lnL(θ)=lni=1∏lp(xi;θ)=i=1∑llnp(xi;θ)
- max ∑ i = 1 l ln p ( x i ; θ ) \max \sum\limits_{i=1}^{l}\ln p(x_i;\theta ) maxi=1∑llnp(xi;θ),对 θ \theta θ 求导让它对于0
7. 最优化
- 基本概念
-
求 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)
推导:
- 利用多元函数的泰勒展开公式: f ( x ) − f ( x 0 ) ≈ [ ∇ f ( x 0 ) ] T ( x − x 0 ) f(\boldsymbol{x})-f(\boldsymbol{x}_0)\approx[\nabla f(\boldsymbol{x}_0)]^T(\boldsymbol{x}-\boldsymbol{x}_0) f(x)−f(x0)≈[∇f(x0)]T(x−x0)
- X T Y = ∣ X ∣ ⋅ ∣ Y ∣ ⋅ cos θ X^TY=|X|\cdot|Y|\cdot\cos\theta XTY=∣X∣⋅∣Y∣⋅cosθ, cos θ = − 1 \cos\theta=-1 cosθ=−1 下降幅度最大
- 为了使得下降幅度最大,向量 x − x 0 \boldsymbol{x}-\boldsymbol{x}_0 x−x0 (不一定是单位向量) 的方向和梯度方向相反: v = − ∇ f ( x 0 ) ∥ ∇ f ( x 0 ) ∥ \boldsymbol{v}=-\frac{\nabla f(\boldsymbol{x}_0)}{\left \| \nabla f(\boldsymbol{x}_0) \right \|} v=−∥∇f(x0)∥∇f(x0)
- x = x 0 − η ∇ f ( x 0 ) ∥ ∇ f ( x 0 ) ∥ \boldsymbol{x}=\boldsymbol{x}_0-\eta\frac{\nabla f(\boldsymbol{x}_0)}{\left \| \nabla f(\boldsymbol{x}_0) \right \|} x=x0−η∥∇f(x0)∥∇f(x0),分母是标量可并入 η \eta η,即 x = x 0 − η ∇ f ( x 0 ) \boldsymbol{x}=\boldsymbol{x}_0-\eta\nabla f(\boldsymbol{x}_0) x=x0−η∇f(x0)
η \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 3 x^3 x3,在这一点 Hessian 矩阵不定,
- 凸优化问题
前面数值优化面临两个问题,对这类问题进行限定:
- 优化变量的可行域必须是凸集;
- 优化函数必须是个凸函数。
同时满足这两个条件的叫凸优化问题,才能说局部极小值就是全局极小值。
- 凸集
- 定义:对于一个点的集合 C C C,有属于它的两个点 x , y x,y x,y,它们两点连线中任意一点也属于该集合: θ x + ( 1 − θ ) y ∈ C , 0 ≤ θ ≤ 1 \theta x+(1-\theta)y\in C,0\le\theta\le1 θx+(1−θ)y∈C,0≤θ≤1
- 典型的凸集:
- 欧式空间 R n \mathbb{R}^n Rn: x , y ∈ R n ⇒ θ x + ( 1 − θ ) y ∈ R n \boldsymbol{x},\boldsymbol{y} \in \mathbb{R}^n\Rightarrow \theta \boldsymbol{x} +(1-\theta)\boldsymbol{y}\in \mathbb{R}^n x,y∈Rn⇒θx+(1−θ)y∈Rn;很多可行域就是欧式空间,即凸集;
- 仿射子空间: { x ∈ R n : A x = b } \left \{ \boldsymbol{x}\in\mathbb{R}^n:\boldsymbol{A}\boldsymbol{x}=\boldsymbol{b} \right \} {x∈Rn:Ax=b}, x \boldsymbol{x} x 是 n n n 维欧式空间的向量,满足线性方程的解;所有等式约束构成的集合是凸集,不会构建非线性等式约束;
- 多面体: { x ∈ R n : A x ≤ b } \left \{ \boldsymbol{x}\in\mathbb{R}^n:\boldsymbol{A}\boldsymbol{x}\le\boldsymbol{b} \right \} {x∈Rn:Ax≤b},线性不等式的解;一组线性不等式约束,也是凸集。
- 凸集的交集也是凸集 ⋂ i = 1 k C i \bigcap\limits_{i=1}^{k}C_i i=1⋂kCi,并集不一定是凸集。
- 凸函数
- 定义:函数上任意两点它们的连线 (即割线) 上的值比对应的函数上的值要大, f ( θ x + ( 1 − θ ) y ) < θ f ( x ) + ( 1 − θ ) f ( y ) f(\theta x+(1-\theta )y)<\theta f(x)+(1-\theta )f(y) f(θx+(1−θ)y)<θf(x)+(1−θ)f(y)
- 凸函数的证明:
- 利用定义
- 利用一阶导数:
- 一元函数: f ( y ) ≥ f ( x ) + f ′ ( x ) ( y − x ) f(y)\ge f(x)+f'(x)(y-x) f(y)≥f(x)+f′(x)(y−x)
- 多元函数: f ( y ) ≥ f ( x ) + ∇ f ( x ) T ( y − x ) f(\boldsymbol{y})\ge f(\boldsymbol{x})+\nabla f(\boldsymbol{x})^T(\boldsymbol{y}-\boldsymbol{x}) f(y)≥f(x)+∇f(x)T(y−x)
- 二阶判别法:
- 一元函数: f ′ ′ ( x ) ≥ 0 f''(x)\ge 0 f′′(x)≥0
- 多元函数:Hessian 矩阵半正定, > 0 >0 >0 是严格凸函数
- 如果每个函数 f i ( x ) f_i(x) fi(x) 都是凸函数,那么它们的非负线性组合 f ( x ) = ∑ i = 1 k w i f i ( x ) , w i ≥ 0 f(x)=\sum\limits_{i=1}^{k}w_if_i(x),w_i\ge 0 f(x)=i=1∑kwifi(x),wi≥0 也是凸函数。
- 凸优化的性质
目标函数是凸函数,可行域是凸集,则局部最优解一定是全局最优解。
证明:(反证法)
假设有一点 x x x 是局部最小值,但不是全局最小值,则存在另一个点 y y y 是全局最小值,这时 f ( y ) < f ( x ) f(y)<f(x) f(y)<f(x)。
证明 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,α,β)。
- KKT 条件
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