一. 线性代数部分
1.1 基础概念
标量(scalar)
一个标量就是一个单独的数,一般用小写的的变量名称表示。
向量(vector)
一个向量就是一列数,这些数是有序排列的:
$$ \begin{bmatrix} x_1\\ x_2\\ ...\\ x_5 \end{bmatrix} $$
矩阵(matrices)
矩阵是二维数组:
$$ \begin{bmatrix} a_{11}& a_{12}& ...& a_{1n}& \\ a_{21}& a_{22}& ...& a_{2n}& \\ ...& ...& & ...& \\ a_{m1}& a_{m2}& ...& a_{mn}& \end{bmatrix} $$
张量(tensor)
多维数组中元素分布在若干位坐标的规则网络中, 称之为张量. 几何代数中定义的张量是基于向量和矩阵的推广,通俗一点理解的话,我们可以将标量视为零阶张量,矢量视为一阶张量,那么矩阵就是二阶张量。
张量在深度学习中是一个很重要的概念,因为它是一个深度学习框架中的一个核心组件,后续的所有运算和优化算法几乎都是基于张量进行的。
1.2 矩阵相关
转置(transpose)
主对角线: 矩阵从左上角到右下角的对角线称为主对角线.矩阵的转置是指以主对角线为轴的镜像.
令矩阵$\mathbf{A}$的转置表示为$\mathbf{A}^T$, 则定义如下:
$$(\mathbf(A)^T)_{i,j}=A_{i,j}$$
Tips:
向量是单列矩阵, 向量的转置是单行矩阵. 标量可看做单元素矩阵, 因此标量的转置是它本身: $a=a^T$.
矩阵加法和广播:
矩阵加法定义: $\mathbf{C}=\mathbf{A}+\mathbf{B}$
在深度学习中, 允许矩阵和向量相加, 产生一个新的矩阵, 简写为:$\mathbf{C}=\mathbf{A}+\mathbf{b}$, 表示向量$\mathbf{b}$和矩阵$\mathbf{A}$的每一行都相加. 这种隐式地幅值向量$\mathbf{b}$到很多位置的方式成为广播.
矩阵乘法
分配律: $\mathbf{A(B+C)}$
结合律: $\mathbf{A(BC)=(AB)C}$
矩阵乘积不满足交换律: $\mathbf{AB\neq{BA}}$
向量点积满足交换律: $\mathbf{x^Ty=y^Tx}$
乘积的转置: $\mathbf{(AB)^T=B^TA^T}$
单位矩阵
主对角线元素都是1, 其余位置所有元素都是0的矩阵:
$$ \begin{pmatrix} 1& 0& 0 \\ 0& 1& 0 \\ 0& 0& 1 \end{pmatrix} $$
我们将n维向量不变的单位矩阵即为$\mathbf{I_n}$:
$$\forall \mathbf{x} \in R^n, \mathbf{I_nx = x}, 其中\mathbf{I_n \in R^{nxn}}$$
逆矩阵
矩阵逆是强大的工具, 对于大多数矩阵, 都可以通过矩阵逆解析求$\mathbf{Ax=b}$的解.
矩阵$\mathbf{A}$的矩阵逆记作: $\mathbf{A^{-1}}$, 矩阵逆满足如下条件:
$$\mathbf{A^{-1}A=I_n}$$
1.3 线性相关
线性方程: $$X\cdot \vec{b} = \vec{y}$$
线性组合: X 中各个列向量乘以对应的系数之和: $$\sum_{i}b_i x^{(i)}$$
生成空间: X中的原始向量线性组合后能抵达的点的集合. 确定上述方程是否有解相当于确定向量$\vec{y}$ 是否在X 的列向量的生成子空间中.
矩阵X可逆时解为$\vec b = X^{-1}\cdot y$ , 然而矩阵可逆是一个十分苛刻的条件,X 的列空间构成整个m维欧式空间$R^m$, 若$X\cdot \vec{b} = \vec{y}$对于每一个y值最多有一个解, 则X矩阵至多有m个列向量.
因此, 矩阵X只有是方阵且所有列向量都是线性无关的时候才满足要求, 若列向量线性相关, 则成该方阵X是奇异的.
这里引出了线性模型的基本模型: $$X\cdot \vec{b} = \vec{y}$$
X可逆时 ,我们可以直接对两边求逆, 得到线性模型的唯一解:
$$\vec b = X^{-1}\cdot y$$
然而,样本特征组成的矩阵X往往是不可逆的, 即X往往不是方阵, 或者是奇异的方阵.
正因为在现实世界里, 直接对矩阵求逆来得到唯一解 $\vec{b}$ 几乎是不可能的, 所以我们才会退而求其次, 用最小化误差来逼近唯一解, 这叫做松弛求解.
求最小化误差的一般方法是求残差的平方和最小化, 这也就是所谓的线性最小二乘法.
1.4 范数(norm)
在机器学习中, 通常用范数来衡量一个矩阵的大小, $L^p$范数公式: $$||x||_p = \left( \sum_i|x_i|^p \right)^\frac 1 p$$
注意抓重点: 范数在机器学习中是用来衡量一个向量的大小.
范数: 是将向量映射到非负值的函数. 简单来讲, 向量$\vec x$的范数是原点到$\vec x$的距离. 这里之所以介绍范数, 是因为它涉及到机器学习中非常重要的正则化技术.
$p = 2$时, $L^2$称为欧几里得范数(Euclidean norm), 表示原点到向量$\vec x$的欧氏距离, $L^2$范数通常简写为$||x||$ , 它非常频繁地出现在机器学习中. 此外, 平方$L^2$范数$\left(||x||\right)^2$也经常用来衡量向量的大小, 可以简单地用点积$\left( \vec x \right)^\top \cdot \vec x$计算.
$L^2$范数: $$||x||_2 = (\sum_i|x_i|^2)^\frac 1 2 $$
平方$L^2$范数: $$ ||x|| = \sum_i|x_i|^2$$
$L^1$范数: $$ ||x||_1 = \sum_i|x_i| $$
Frobenius范数: $$||A||_F=\sqrt{\sum_{i,j}{A_{i,j}}^{2}}$$
关于范数, 注意以下几点:
平方$L^2$ 范数对$\vec x$各元素导数只和对应元素相关, 而$L^2$范数对个元素的导数和整个向量相关, 因此平方$L^2$范数计算更方便.
有时候平方$L^2$范数在原点附近增长缓慢, 在某些机器学习业务场景下, 区分元素值是否非零很重要, 此时更倾向于使用$L^1$范数.
$L^1$范数在各个位置斜率相同, 且数学形式较简单, 每当$\vec x$中某元素从0增加了$\epsilon$ 时, 对应$L^1$范数也增加$\epsilon $, $L^1$范数通常被用在零和非零差异非常重要的机器学习问题中.
"$L^0$范数"通常用向量中非零元素个数来衡量向量大小, 但是这种说法不严谨, 因为从数学意义上讲,对向量缩放$\alpha$倍, 向量大小会变, 但是机器学习中, 非零元素数目不变, 这和向量运算的数学意义相悖.
$L^\infty$范数称为最大范数(max norm), 表示最大幅值元素的绝对值: $||x||\infty=\max_i{|x_i|}$
Frobenius范数在机器学习中用来衡量矩阵大小.
两个点积可以用范数来表示: $\vec{x}^T \cdot \vec{y} = ||\vec{x}||_2||\vec{y}||_2cos\theta $
在机器学习中, $L^2$和$L^1$范数分别对应$L^2$和$L^1$正则化, 详情参考线性模型中的岭回归(Ridge Regression)和套索回归(Lasso).
1.5 伪逆(Moore-Penrose)
非方阵方程,其逆矩阵没有意义. 假设要求解线性方程
$$\vec{A} \cdot x = \vec{y}$$
等式两边左乘左逆$\vec{B}$后: $$x = \vec{B}y$$
是否存在唯一映射, 将$\vec{A}$映射到$\vec{B}$取决于问题形式:
若矩阵A行数大于列数, 则可能无解;
若矩阵A行数小于列数, 则可能有多个解.
伪逆可以解决上述问题. 矩阵A的伪逆定义为:
$$\lim_{a \searrow 0}(\vec{A^T}\vec{A} + \alpha \vec{I})^{-1}\cdot\vec{A^T}$$
违逆计算的简化公式为:
$$\vec{A^+} = \vec{V}\vec{D^+}\vec{U^T}$$
其中, 矩阵U, D, V是矩阵A的奇异值分解后的特殊矩阵, 其中$\vec{U}$和$\vec{V}$都是正交矩阵, $\vec{D}$为对角矩阵(不一定是方阵). 对角矩阵D的伪逆$\vec{D^+}$是非零元素取倒数后再转置得到的.奇异值分解称为SVD(Singular Value Decomposition).
矩阵A的列数多于行数时, 可能有多个解. 伪逆求解线性方程是众多解法中的一种, 即: $\vec{x} = \vec{A^+}\vec{y}$是所有可行解中欧几里得距离最小的一个
矩阵A列数小于行数时, 可能没有解. 伪逆求解得到的x是$\vec{A}x$和$\vec{y}$的欧几里得距离$||\vec{A}x-\vec{y}||_2^2$最小的解, 这里又回到了求解线性问题的一般思路上: 线性最小二乘法.
1.6 常用的距离
1、曼哈顿距离
也称为城市街区距离,数学定义如下:
$$ d=\sum_{k=1}^n|x_{1k}-x_{2k}| $$
2. 欧氏距离
前面提到过, 欧氏距离就是$L_2$范数, 定义如下:
$$ d = \sqrt{\sum_{k=1}^n(x_{1k}-x_{2k})^2} $$
3. 闵可夫斯基距离
上述两种距离的更一般形式, 完整的定义如下:
$$ d = \sqrt[p]{\sum_{k=1}^n(x_{1k}-x_{2k})^p} $$
4. 切比雪夫距离
即前面提到过的无穷范数$L^\infty$范数, 数学表达式:
$$ d=max(|x_{1k}-x_{2k}|) $$
二. 概率与信息论部分
2.1 基础概念
随机变量(连续,离散): 对可能状态的描述
概率分布: 用来指定每个状态的可能性
加条件概率: 求B条件下, A发生的概率: $$ P(A|B)=\frac{P(AB)}{P(B)}$$
条件独立性
离散型变量和概率质量函数PMF(Probability Mass Function), 连续性变量和概率密度函数, 随机变量的独立性和条件独立性, 边缘概率, 条件概率.
条件概率的链式法则:
$$P(a,b,c)=P(a|b|c)P(b,c)$$
$$P(b,c)=P(b|c)P(c)$$
$$P(a,b,c)=P(a|b,c)P(b|c)P(c)$$
2.2 期望,方差,协方差
期望反应函数$f(x)$的平均值. 设$E_x~p[f(x)]$是函数$f(x)$关于某分布$P(x)$的期望:
对于离散型随机变量: $$E_x~p[f(x)]=\sum_x{P(x)f(x)}$$
对于连续性随机变量:
$$E_x~p[f(x)]=\int p(x)f(x)dx$$
通常在概率上下文中可以不写脚标: $E[f(x)]$, 更一般地, 当没有歧义时可以省略方括号, 将期望简写为$E$.
期望是线性的: $$E_x[\alpha{f(x)}+\beta{g(x)}]=\alpha{E_x}[f(x)]+\beta{E_x}[g(x)]$$
方差衡量x依它的概率分布采样时, 随机变量x的函数$f(x)$差异程度. 方差的定义:
$$ Var(f(x))=E[|f(x)-E[f(x)]|^2]$$
协方差给出两个变量的线性相关度及这些变量的尺度. 协方差定义:
$$ Cov(f(x),g(y))=E[(f(x)-E[f(x)])(g(y)-E(g(y)])]$$
关于协方差的特性:
若协方差绝对值很大, 则变量值得变化很大, 且相距各自均值很远
若协方差为正, 则两变量x,y都倾向于取较大值, 若协方差为负, 则一个倾向于取较大值,另一个倾向取较小值
相关系数: 将每个变量归一化, 之衡量变量间的相关性, 不关注变量尺度大小.
2.3 常用的概率分布模型
Bernoulli分布和Multinoulli分布
Bernoulli分布是单个二值随机变量分布, 单参数$\phi{\in}[0,1]$控制,$\phi$给出随机变量等于1的概率. 一些性质:
$$P(x=1)=\phi$$
$$P(x=0) = 1-\phi$$
$$P(x=x)=\phi^x(1-\phi)^{1-x}$$
$$E_x[x]=\phi$$
$$Var_x(x)=\phi{(1-\phi)}$$
Multinoulli分布也叫范畴分布, 是单个$k$值随机分布,经常用来表示对象分类的分布.
, 其中$k$是有限值.Multinoulli分布由向量$\vec{p}\in[0,1]^{k-1}$参数化,每个分量$p_i$表示第i个状态的概率, 且$p_k=1-1^Tp$.
适用范围: 伯努利分布适合对离散型随机变量建模, 注意下述狄拉克$\delta$函数适用对连续性随机变量的经验分布建模.
高斯分布
高斯也叫正态分布(Normal Distribution), 概率度函数如下:
$$N(x;\mu,\sigma^2) = \sqrt{\frac{1}{2\pi\sigma^2}}exp\left ( -\frac{1}{2\sigma^2}(x-\mu)^2 \right )$$
其中, $\mu$和$\sigma$分别是均值和方差, 中心峰值x坐标由$\mu$给出, 峰的宽度受$\sigma$控制, 最大点在$x=\mu$处取得, 拐点为$x=\mu{\pm}\sigma$.
正态分布中,±1σ、±2σ、±3σ下的概率分别是68.3%、95.5%、99.73%,这3个数最好记住。
此外, 令$\mu=0,\sigma=1$高斯分布即简化为标准正态分布:
$$N(x;\mu,\sigma^2) = \sqrt{\frac{1}{2\pi}}exp\left ( -\frac{1}{2}x^2 \right )$$
对概率密度函数高效求值:
$$N(x;\mu,\beta^{-1})=\sqrt{\frac{\beta}{2\pi}}exp\left(-\frac{1}{2}\beta(x-\mu)^2\right)$$
其中, $\beta=\frac{1}{\sigma^2}$, 通过参数$\beta\in(0,\infty)$来控制分布的精度.
问: 何时采用正态分布?
答: 缺乏实数上分布的先验知识, 不知选择何种形式时, 默认选择正态分布总是不会错的, 理由如下:
中心极限定理告诉我们, 很多独立随机变量均近似服从正态分布, 现实中很多复杂系统都可以被建模成正态分布的噪声, 即使该系统可以被结构化分解.
正态分布是具有相同方差的所有概率分布中, 不确定性最大的分布, 换句话说, 正态分布是对模型加入先验知识最少的分布.
正态分布的推广:
正态分布可以推广到$R^n$空间, 此时称为多位正态分布, 其参数是一个正定对称矩阵$\sum$:
$$N(x;\vec\mu,\sum)=\sqrt{\frac{1}{2\pi^ndet(\sum)}}exp\left(-\frac{1}{2}(\vec{x}-\vec{\mu})^T\sum^-1(\vec{x}-\vec{\mu})\right)$$
对多为正态分布概率密度高效求值:
$$N(x;\vec{\mu},\vec\beta^{-1}) = \sqrt{det(\vec\beta)}{(2\pi)^n}exp\left(-\frac{1}{2}(\vec{x}-\vec\mu)^T\beta(\vec{x}-\vec\mu)\right)$$
, 此处, $\vec\beta$是一个精度矩阵.
指数分布和Laplace分布
指数分布
深度学习中, 指数分布用来描述在$x=0$点出取得边界点的分布, 指数分布定义如下:
$$p(x;\lambda)=\lambda1_{x\geq 0}exp(-\lambda{x})$$
, 指数分布用指示函数$I_{x>=0}$来使x取负值时的概率为零.
Laplace分布
Laplace分布允许我们在任意一点$\mu$处设置概率质量的峰值:
$$ Laplace(x;\mu;\gamma)=\frac{1}{2\gamma}exp\left(-\frac{|x-\mu|}{\gamma}\right)$$
Dirac分布和经验分布
Dirac分布
Dirac分布可保证概率分布中所有质量都集中在一个点上. Diract分布的狄拉克δ函数(也称为单位脉冲函数)定义如下:
$$p(x)=\delta(x-\mu), x\neq \mu$$
$$\int_{a}^{b}\delta(x-\mu)dx = 1, a < \mu < b$$
狄拉克δ函数图像:
说明:
严格来说狄拉克δ函数不能算是一个函数,而是一种数学对象, 因为满足以上条件的函数是不存在的, 但是我们可以用分布的概念来解释, 因此称为狄拉克分布或者$\delta$分布
它是一种极简单的广义函数. 广义函数是一种数学对象, 依据积分性质而定义. 我们可以把狄拉克$\delta$函数想成一系列函数的极限点, 这一系列函数把除0以外的所有点的概率密度越变越小.
经验分布
狄拉克分布常作为经验分布的一个组成部分:
$$\hat{p}(\vec{x})=\frac{1}{m}\sum_{i=1}^{m}\delta(\vec{x}-{\vec{x}}^{(i)})$$
, 其中, m个点$x^{(1)}$, ..., $x^{(m)}$是给定的数据集, 经验分布将概率密度$\frac{1}{m}$赋给了这些点.
当我们在训练集上训练模型时, 可以认为从这个训练集上得到的经验分布指明了采样来源.
适用范围: 狄拉克δ函数适合对连续型随机变量的经验分布
分布的混合
2.4 深度学习常用激活函数的特性
2.5 贝叶斯理论
2.6 信息论,熵,交叉熵, KL散度
三. 数值计算部分
3.1 上溢,下溢和softmax
3.2 基于梯度的损失函数优化
一阶优化(梯度下降)
二阶最优化算法(牛顿优化算法)
Jacobian和Hessian矩阵
约束优化
线性最小二乘法
四. 机器学习基础部分
4.1 模型学习
分类
回归
去燥和异常检测
密度估计
无监督和有监督算法介绍
线性回归
4.2 过拟合和欠拟合
奥卡姆剃须刀约简原则
贝叶斯误差
没有免费午餐定理
正则化
4.3 验证和估计
点估计
偏差,均方差,方差和标准差
最大似然估计
贝叶斯统计
4.4 监督学习算法
逻辑回归(Logistic Regression)
支持向量机(SVM)
4.5 无监督学习算法
主成分分析
K-均值聚类
4.6 随机梯度下降算法(SGD)
4.7 其它
维数灾难
局部不变性和平滑正则化
流形学习
五. 深度网络部分
5.1 深度前馈网络(感知机)
线性单元
隐藏单元
输出单元
损失函数
激活函数
5.2 BP反向传播算法
5.3 深度学习中的正则化
...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。