线性代数
矩阵乘法
(m×n)(n×p)→(m×p)A(BC)=(AB)CA(B+C)=AB+AC
转置
行列互换.
(AT)T=A(A+B)T=AT+BT(AB)T=BTAT
逆矩阵
AA−1=A−1A=I(AB)−1=B−1A−1
n×n 矩阵可逆的条件:
- 行列式不为 0
- 秩为 n
- Ax=0 只有零解
- 特征值不包括 0
单位矩阵
这也能忘的话我找块豆腐撞死算了.
矩阵的秩
矩阵中真正包含多少个相互独立的信息方向.
最大线性无关列向量个数, 最大线性无关行向量个数, 且二者一定相等.
线性相关
如果某个向量能够由其他向量线性组合出来, 就存在信息冗余, 因此线性相关.
给定向量 v1,v2,⋯,vn , 如果
c1v1+c2v2+⋯+cnvn=0
只有零解, 则这些向量线性无关, 否则线性相关.
向量内积
xTy=x⋅y=i=1∑nxiyi
向量范数
一般 Lp 范数:
∥x∥p=(i∑∣xi∣p)1/p
L1 范数即绝对值之和, L2 范数即欧几里得长度.
L1 正则:
L(w)+λi∑∣wi∣
L2 正则:
L(w)+λi∑wi2
L1 正则倾向于得到稀疏参数 (很可能会让一些特征的权重变成 0), L2 正则倾向于让参数整体变小.
矩阵范数
Frobenius 范数:
∥A∥F=i,j∑aij2
把所有元素摊平为一个长向量, 计算 L2 范数.
特征值和特征向量
对非零向量 v , 有:
Av=λv
则 v 是特征向量, λ 是对应特征值.
矩阵代表一个线性变换, 而特征向量是经过这个变换之后方向不发生改变的特殊方向, 特征值表示这个方向被缩放多少倍.
计算特征值的方法:
(A−λI)v=0
由于有非零解, 所以:
det(A−λI)=0
得到特征方程.
正交
xTy=0
则称这两个向量正交, 也就是垂直.
若一组向量两两正交且长度均为 1, 则称为标准正交.
对方阵 Q :
QQT=QTQ=I
则称 Q 为正交矩阵, 并且有 Q−1=QT .
正交矩阵的每一列都是单位向量, 且任意两列互相垂直, 行向量同理.
常见正交矩阵包括
正交变换前后, 长度和角度不变.
线性变换
T(x+y)=T(x)+T(y)T(cx)=cT(x)
任何有限维线性变换都可以写成左乘一个矩阵.
Hadamard 逐元素乘法
对应位置元素直接相乘, Python 中是 * .
广播机制
NumPy, PyTorch 中的张量运算规则, 当两个张量形状不同但形状兼容时,自动把较小的张量扩展后进行逐元素运算。
例如:
a11a21a31a12a22a32a13a23a33a14a24a34+[b1b2b3b4]
把 b 自动作用到每一行, 得到:
a11+b1a21+b1a31+b1a12+b2a22+b2a32+b2a13+b3a23+b3a33+b3a14+b4a24+b4a34+b4
广播规则:
- 维度相等:可以
- 其中一个维度为 1:可以
- 某一方不存在该维度:可以补 1
- 其他情况:不可以
微积分
梯度
∇f=∂x1∂f∂x2∂f⋮∂xn∂f
例如对 f(x,y)=x2+y2 , 有:
∇f=[2x2y]
梯度方向是函数值增长最快的方向, −∇ 是函数值下降最快的方向, 这就是梯度下降的原理.
方向导数
函数沿单位向量 u 方向的方向导数是:
Duf=∇f⋅u
沿梯度方向时, 方向导数最大.
链式法则
∂x∂L=∂z3∂L∂z2∂z3∂z1∂z2∂x∂z1
多元函数求导
向量到标量的函数导数通常用梯度表示, 例如 $ f (x, y, z) = x^2 + yz $ :
∇f=2xzy
如果是向量到向量的函数需要使用 Jacobian 矩阵.
f(x,y)=[f1(x,y)f2(x,y)]
Jacobian 矩阵为:
J=[∂x∂f1∂x∂f2∂y∂f1∂y∂f2]
例如:
f(x,y)=[x2+yxy]
求导有:
J=[2xy1x]
Hessian 矩阵
梯度是一阶偏导数, 那么再对梯度求导就得到二阶偏导数.
Hessian 矩阵定义为:
H=[∂x2∂2f∂y∂x∂2f∂x∂y∂2f∂y2∂2f]
例如
f(x,y)=x2+3xy+2y2
梯度:
∇f=[2x+3y3x+4y]
Hessian:
H=[2334]
Hessian 矩阵可以得到函数沿 v 方向的弯曲程度, 例如对 g(t)=f(x+tv) , 有方向导数:
g′(0)=∇f(x)Tv
二阶导数:
g′′(0)=vTHf(x)v
极值
梯度为 0 为驻点.
- Hessian 正定则局部最小
- Hessian 负定则局部最大
- Hessian 不定则通常是鞍点
泰勒展开
多元函数的一阶泰勒展开:
f(x+Δx)≈f(x)+∇f(x)TΔx
概率统计
贝叶斯公式
P(A∣B)=P(B)P(B∣A)P(A)
主要思想是:
后验概率∝似然×先验概率
方差
Var(X)=E[(X−μ)2]
也写作:
σ2=Var(X)
标准差:
σ=Var(X)
常用计算公式:
Var(X)=E[X2]−E[X]2
协方差
衡量两个变量是否倾向于一起变化.
Cov(X,Y)=E[(X−E[X])(Y−E[Y])]Cov(X,Y)=E[XY]−E[X]E[Y]
协方差大于 0, 则 X 大的时候 Y 通常较大; 协方差小于 0, 则 X 大的时候 Y 通常较小.
协方差接近 0, 则 X 和 Y 没有明显的线性关系.
X, Y 独立则协方差为 0, 但反过来一般不成立, 例如 X∼U(−1,1) , 则 X 与 X2 协方差为 0, 而显然不独立.
高斯分布
正态分布.
p(x)=2πσ21exp(−2σ2(x−μ)2)
Bernoulli 分布
只有两种结果的一次随机实验.
期望为 p , 方差为 p(1−p) .
最大似然估计
Maximum Likelihood Estimation, MLE.
模型参数为 θ , 数据为 x1,x2,…,xn , 模型认为:
xi∼p(x∣θ)
如果样本独立,那么观察到这些数据的概率是:
L(θ)=i=1∏np(xi∣θ)
称为似然函数, 即对某个特定参数, 出现观察到的数据的概率.
最大似然估计:
θ^MLE=argθmaxi=1∏np(xi∣θ)
由于连乘计算很麻烦, 也有对数版本:
θ^MLE=argθmaxi∑logp(xi∣θ)
最大后验估计
Maximum A Posteriori, MAP.
根据贝叶斯公式有:
P(θ∣D)=P(D)P(D∣θ)P(θ)
对于参数优化而言, P(D) 应该是和模型参数无关的, 因此有:
θ^MAP=argθmaxP(D∣θ)P(θ)
其中 P(D∣θ) 是似然, P(θ) 是参数的先验分布.
也就是说, 最大后验估计 = 先验知识 + 最大似然估计.
对数形式:
θ^MAP=argθmax[logP(D∣θ)+logP(θ)]
如果参数的先验分布 P(θ) 是均匀分布, 则最大后验估计=最大似然估计.
正则化可以理解为对参数加入先验.
交叉熵
熵:
H(p)=−x∑p(x)logp(x)
交叉熵: 真实世界按照 p 产生数据, 而我们使用 q 描述它时所需付出的总平均信息代价, 是总代价.
H(p,q)=−x∑p(x)logq(x)
KL 散度
用概率分布 q 近似真实分布 p 会损失多少信息, 因为用了错误分布而额外增加的代价.
DKL(p∥q)=x∑p(x)logq(x)p(x)
展开有:
DKL(p∥q)=x∑p(x)logp(x)−x∑p(x)logq(x)
即:
H(p,q)=H(p)+DKL(p∥q)
因此, 交叉熵=真实分布的熵+KL散度 .
训练时真实分布固定, 因此最小化交叉熵也就是最小化 KL 散度, 等价于最大化训练数据的似然, 等价于让模型分布尽可能接近真实分布.