机器学习算法Part1 基本数学概念

Part1 基本数学概念

1. 极大似然估计(MLE),最大后验概率(MAP),最小二乘法,EM

先验概率:根据以往经验分析和得到的概率,不用做实验就知道的概率

后验概率:后验概率是在考虑了一个事实之后的条件概率

极大似然和最大后验

  1. MLE

    求参数θ,使得P(X|θ)最大

    知道分布的具体情况,但是不知道具体的参数,比如说知道了使正态分布,但是不知道μ和σ

    求解
    a r g m a x μ p ( X , μ ) argmax_{\mu}p(X,\mu) argmaxμp(X,μ)
    其中p(X,μ)就是似然函数,表征在参数μ下出现观测数据的概率,假设每次观测时独立的
    p ( x 1 , x 2 , . . . , x n ; μ ) = ∏ p ( x i ; μ ) p(x_1,x_2,...,x_n;\mu)=\prod p(x_i;\mu) p(x1,x2,...,xn;μ)=p(xi;μ)
    即求解
    a r g m a x μ log ⁡ ( p ( X , μ ) ) = a r g m a x μ ∑ log ⁡ p ( x i ; μ ) argmax_{\mu}\log(p(X,\mu))=argmax_\mu \sum\log p(x_i;\mu) argmaxμlog(p(X,μ))=argmaxμlogp(xi;μ)
    前提假设:

    训练样本的分布能代表样本的真实分布。每个样本集中的样本都是所谓独立同分布的随机变量 (iid条件),且有充分的训练样本

  2. MAP

    求参数θ,使得P(X|θ)*P(θ)最大

    由于:
    P ( θ ∣ X ) = P ( X ∣ θ ) P ( θ ) P ( X ) P(\theta|X)=\frac{P(X|\theta)P(\theta)}{P(X)} P(θX)=P(X)P(Xθ)P(θ)
    由于 P ( X ) P(X) P(X)为常数,则MAP即求 θ θ θ,使得 P ( θ ∣ X ) P(θ|X) P(θX)最大,MLE和MAP的区别:MLE是把先验概率 P ( θ ) P(θ) P(θ)认为等于1,即认为θ是均匀分布

  3. 最小二乘法

    最小二乘法是找到一个(组)估计值,使得实际值与估计值的距离最小

    基本假设

    1. 解释变量是确定变量,不是随机变量
    2. 随机误差项具有零均值,同方差,服从正态分布
    3. 随机误差项与解释变量之间不相关
  4. EM

    EM老是跟MLE放在一起,我们来判别一下MLE和EM的不同

    MLE:已知数据分布模型,采样的数据,但是不知道模型的具体参数,根据采样数据反推使得采样数据概率最大的模型的参数

    EM:相当于是MLE又进阶了一层,已知各个类别的分布模型,以及采样的数据,不知道采样的数据究竟来自于哪个类别,以及每个类别模型的参数

    在这个例子里面,本身数据来自于哪个类别这个应该是我们已知的,但实际情况我们并不知道,所以把数据来自于哪个类别成为隐变量 Z Z Z,则我们就要求解 a r g m a x P ( θ ∣ X , Z ) argmaxP(\theta|X,Z) argmaxP(θX,Z).

    E步:

    给定初始超参数 Θ t \Theta^t Θt,计算 Q = P ( Z ∣ X ; Θ t ) Q=P(Z|X;\Theta^t) Q=P(ZX;Θt)

    M步:
    根据Q,计算使似然函数最大的 Θ t + 1 \Theta^{t+1} Θt+1

    推导:

    1. 在未知子模型的分布 α k \alpha_k αk时,其自变量分布如下 P ( x ; θ ) = ∑ i = 1 k α k ϕ ( x ; θ k ) P(x ; \theta)=\sum_{i=1}^{k} \alpha_{k} \phi\left(x ; \theta_{k}\right) P(x;θ)=i=1kαkϕ(x;θk)

      似然函数:

      l ( θ ) = ∑ i = 1 m log ⁡ p ( x i ; θ ) l(\theta)=\sum_{i=1}^{m} \log p\left(x_{i} ; \theta\right) l(θ)=i=1mlogp(xi;θ)

      我们需要求得这个似然函数的一个最大值

    2. 由于我们不知道观察到的序列来自于哪个子模型,则
      l ( θ ) = ∑ i = 1 m log ⁡ p ( x i ; θ ) = ∑ i = 1 m log ⁡ ∑ Z Q ( z ) p ( x i ∣ z ; θ ) l(\theta)=\sum_{i=1}^{m} \log p\left(x_{i} ; \theta\right)=\sum_{i=1}^{m}\log \sum_{Z}Q(z)p(x_i|z;\theta) l(θ)=i=1mlogp(xi;θ)=i=1mlogZQ(z)p(xiz;θ)
      其中, m m m:样本数量; Q ( z ) Q(z) Q(z):子模型的概率分布

      由于 ∑ Z Q ( z ) = 1 \sum_{Z}Q(z)=1 ZQ(z)=1,则上式有

    3. l ( θ ) = ∑ i = 1 m log ⁡ ∑ Z Q ( z ) p ( x i , z ; θ ) Q ( z ) ≥ ∑ i = 1 m ∑ Z Q ( z ) log ⁡ p ( x i , z ; θ ) Q ( z ) l(\theta)=\sum_{i=1}^{m}\log \sum_{Z}Q(z)\frac{p(x_i,z;\theta)}{Q(z)}\ge\sum_{i=1}^{m} \sum_{Z} Q\left(z\right) \log \frac{p(x_i,z;\theta)}{Q\left(z\right)} l(θ)=i=1mlogZQ(z)Q(z)p(xi,z;θ)i=1mZQ(z)logQ(z)p(xi,z;θ)

      上述第二条用了Jensen不等式,因为log是凹函数

    4. 考虑不等式取得等号的条件 p ( x i , z ; θ ) Q ( z ) = c \frac{p(x_i,z;\theta)}{Q(z)}=c Q(z)p(xi,z;θ)=c,同时考虑 ∑ Z Q ( z ) = 1 \sum_{Z}Q(z)=1 ZQ(z)=1,则有
      Q ( z ) = p ( x i , z ; θ ) ∑ z p ( x i , z ; θ ) = p ( x i , z ; θ ) p ( x i ; θ ) = p ( z ∣ x i ; θ ) Q(z)=\frac{p(x_i,z;\theta)}{\sum_zp(x_i,z;\theta)}=\frac{p(x_i,z;\theta)}{p(x_i;\theta)}=p(z|x_i;\theta) Q(z)=zp(xi,z;θ)p(xi,z;θ)=p(xi;θ)p(xi,z;θ)=p(zxi;θ)

    5. 则有EM算法,初始化 θ \theta θ,E步:根据 θ \theta θ求出 Q ( z ) Q(z) Q(z),即第 x i x_i xi个数据来自 z i z_i zi的概率;M步:根据所求出的Q,最大化第二步得到的 l ( θ ) l(\theta) l(θ),利用MLE求出新的 θ \theta θ

2. 优化方法汇总(GD家族,一阶导数)

优化方法总结

简单说明几个特点:

  1. SGD
    Θ t + 1 , i = Θ t , i − α g t , i \Theta_{t+1,i}=\Theta_{t,i}-\alpha g_{t,i} Θt+1,i=Θt,iαgt,i

    Θ t , i : t 轮 学 习 中 参 数 θ i 的 取 值 \Theta_{t,i}:t轮学习中参数\theta_i的取值 Θt,i:tθi

    BGD:下降速度慢,若cost function为凸函数,保证到全局最优

    SGD:下降快,但是容易收敛到局部最优且困在鞍点

    MBGD:取一个batch来计算

    总的缺点:

    1. 选取适当的学习率α较为困难,需要再训练过程中给调整学习率的大小(预先设定迭代次数m,执行m次后减小学习率)
    2. 每个参数的学习率是相同的(不合理!)对于稀疏矩阵不合理,解决方案是对于稀疏矩阵中频率较低的特征设置大学习率,高频特征设置小学习率
  2. Momentum
    v t = γ v t − 1 + α g t , i v_t=\gamma v_{t-1}+\alpha g_{t,i} vt=γvt1+αgt,i

    Θ = Θ − v t \Theta=\Theta-v_t Θ=Θvt

    会观察历史梯度,若当前梯度方向与历史梯度一直,增强该梯度,否则,衰减该梯度

    Momentum和nestrov相当于在sgd的基础上加了一阶动量

    Nesterov和Momentum的区别
    在这里插入图片描述

    momentum同时计算该点的历史速度和梯度,然后叠加,nestreov是计算该点的速度,计算前进后的梯度,将两者叠加

    Nestreov
    v t = γ v t − 1 + α ∇ f ( x t + γ v t ) v_t=\gamma v_{t-1}+\alpha \nabla f(x_t+\gamma v_t) vt=γvt1+αf(xt+γvt)

    x t + 1 = x t − v t x_{t+1}=x_t-v_t xt+1=xtvt

  3. Adagrad

    Momentum中对于每个参数的训练使用了相同的学习率,Adagrad可以实现对学习率的调整
    Θ t + 1 , i = Θ t , i − α G t , i i + ϵ g t , i \Theta_{t+1,i}=\Theta_{t,i}-\frac{\alpha}{\sqrt{G_{t,ii}+\epsilon}}g_{t,i} Θt+1,i=Θt,iGt,ii+ϵ αgt,i

    G t , i i = ∑ j = 1 t − 1 g j , i , 代 表 θ i 从 第 1 轮 到 第 t 轮 的 梯 度 平 方 和 , ϵ 为 平 滑 项 , 避 免 分 母 为 0 G_{t,ii}=\sum_{j=1}^{t-1}g_{j,i},代表\theta_i从第1轮到第t轮的梯度平方和,\epsilon为平滑项,避免分母为0 Gt,ii=j=1t1gj,i,θi1tϵ0

    缺点:中后期分母项越来越大,导致梯度趋近于0

    容易困在局部极值点

  4. RMSprop
    Θ t + 1 , i = Θ t , i − α E t + ϵ g t , i \Theta_{t+1,i}=\Theta_{t,i}-\frac{\alpha}{\sqrt{E_{t}+\epsilon}}g_{t,i} Θt+1,i=Θt,iEt+ϵ αgt,i
    其中:
    E t = 0.9 E t − 1 + 0.1 g t 2 E_{t}=0.9E_{t-1}+0.1g_t^2 Et=0.9Et1+0.1gt2,将Adagrad中的累加变为平均值,缓解梯度下降过快问题

    rmsprop和adagrad相当于在sgd的基础上加了二阶动量

  5. Adam

    不仅把学习率改了,连梯度也改了
    m t = β 1 m t − 1 + ( 1 − β 1 ) g t m_{t}=\beta_{1} m_{t-1}+\left(1-\beta_{1}\right) g_{t} mt=β1mt1+(1β1)gt

    v t = β 2 v t − 1 + ( 1 − β 2 ) g t 2 v_{t}=\beta_{2} v_{t-1}+\left(1-\beta_{2}\right) g_{t}^{2} vt=β2vt1+(1β2)gt2

    m ^ t = m t 1 − β 1 t \hat{m}_{t}=\frac{m_{t}}{1-\beta_{1}^{t}} m^t=1β1tmt

    v ^ t = v t 1 − β 2 t \hat{v}_{t}=\frac{v_{t}}{1-\beta_{2}^{t}} v^t=1β2tvt

    Θ t + 1 = Θ t − α v ^ t + ϵ m ^ t \Theta_{t+1}=\Theta_{t}-\frac{\alpha}{\sqrt{\hat{v}_{t}}+\epsilon} \hat{m}_{t} Θt+1=Θtv^t +ϵαm^t

    在稀疏矩阵时,常用Adagrad,RMSprop,Adam,因为可以动态调整学习率

    β 1 \beta_1 β1控制一阶动量, β 2 \beta_2 β2控制二阶动量

    Adam是二阶动量是固定时间窗口内的累积,随着时间窗口的变化,遇到的数据可能发生巨变,这样的话就会造成 v t v_t vt并不是时刻减小的,在训练后期引起学习率产生震荡,导致模型无法收敛

  6. Adam+SGD到Adabound

    为什么又不用Adam了,Adam的两宗罪:

    Adam罪状一:可能不收敛

    其中,SGD没有用到二阶动量,因此学习率是恒定的(实际使用过程中会采用学习率衰减策略,因此学习率递减)。AdaGrad的二阶动量不断累积,单调递增,因此学习率是单调递减的。因此,这两类算法会使得学习率不断递减,最终收敛到0,模型也得以收敛。

    Adam罪状二:可能错过全局最优解

    深度神经网络往往包含大量的参数,在这样一个维度极高的空间内,非凸的目标函数往往起起伏伏,拥有无数个高地和洼地。有的是高峰,通过引入动量可能很容易越过;但有些是高原,可能探索很多次都出不来,于是停止了训练。

    不同优化算法最核心的区别,就是第三步所执行的下降方向:

    η t = ( α / V t ) ⋅ m t \eta_{t}=(\alpha / \sqrt{V_{t}}) \cdot m_{t} ηt=(α/Vt )mt
    这个式子中,前半部分是实际的学习率(也即下降步长),后半部分是实际的下降方向。SGD算法的下降方向就是该位置的梯度方向的反方向,带一阶动量的SGD的下降方向则是该位置的一阶动量方向。自适应学习率类优化算法为每个参数设定了不同的学习率,在不同维度上设定不同步长,因此其下降方向是缩放过(scaled)的一阶动量方向。

    那么我们就会想到,可不可以把这两者结合起来,先用Adam快速下降,再用SGD调优,一举两得?思路简单,但里面有两个技术问题:

    1. 什么时候切换优化算法?——如果切换太晚,Adam可能已经跑到自己的盆地里去了,SGD再怎么好也跑不出来了。
    2. 切换算法以后用什么样的学习率?——Adam用的是自适应学习率,依赖的是二阶动量的累积,SGD接着训练的话,用什么样的学习率?

    首先来看第二个问题切换之后用什么样的学习率。Adam的下降方向是

    η t A d a m = ( α / V t ) ⋅ m t \eta_{t}^{A d a m}=(\alpha / \sqrt{V_{t}}) \cdot m_{t} ηtAdam=(α/Vt )mt
    而SGD的下降方向是
    η t S G D = α S G D ⋅ g t \eta_{t}^{S G D}=\alpha^{S G D} \cdot g_{t} ηtSGD=αSGDgt

η t S G D \eta_{t}^{S G D} ηtSGD必定可以分解为 η t A d a m \eta_{t}^{A d a m} ηtAdam 所在方向及其正交方向上的两个方向之和,那么其在 η t A d a m \eta_{t}^{A d a m} ηtAdam 方向上的投影就意味着SGD在Adam算法决定的下降方向上前进的距离,而在 η t A d a m \eta_{t}^{A d a m} ηtAdam 的正交方向上的投影是 SGD 在自己选择的修正方向上前进的距离。

img图片来自原文,这里p为Adam下降方向,g为梯度方向,r为SGD的学习率。

如果SGD要走完Adam未走完的路,那就首先要接过Adam的大旗——沿着 η t A d a m \eta_{t}^{A d a m} ηtAdam 方向走一步,而后在沿着其正交方向走相应的一步。

这样我们就知道该如何确定SGD的步长(学习率)了——SGD在Adam下降方向上的正交投影,应该正好等于Adam的下降方向(含步长)。也即:
proj ⁡ η t S G D = η t Adam ⁡ \operatorname{proj}_{\eta_{t}^{S G D}}=\eta_{t}^{\operatorname{Adam}} projηtSGD=ηtAdam
解这个方程,我们就可以得到接续进行SGD的学习率:
α t S G D = ( ( η t Adam ⁡ ) T η t Adam ⁡ ) / ( ( η t Adam ⁡ ) T g t ) \alpha_{t}^{S G D}=\left(\left(\eta_{t}^{\operatorname{Adam}}\right)^{T} \eta_{t}^{\operatorname{Adam}}\right) /\left(\left(\eta_{t}^{\operatorname{Adam}}\right)^{T} g_{t}\right) αtSGD=((ηtAdam)TηtAdam)/((ηtAdam)Tgt)
为了减少噪声影响,作者使用移动平均值来修正对学习率的估计:
λ t S G D = β 2 ⋅ λ t − 1 S G D + ( 1 − β 2 ) ⋅ α t S G D λ ~ t S G D = λ t S G D / ( 1 − β 2 t ) \begin{aligned} \lambda_{t}^{S G D}=& \beta_{2} \cdot \lambda_{t-1}^{S G D}+\left(1-\beta_{2}\right) \cdot \alpha_{t}^{S G D} \\ & \tilde{\lambda}_{t}^{S G D}=\lambda_{t}^{S G D} /\left(1-\beta_{2}^{t}\right) \end{aligned} λtSGD=β2λt1SGD+(1β2)αtSGDλ~tSGD=λtSGD/(1β2t)

这里直接复用了Adam的 β 2 \beta_2 β2 参数。

然后来看第一个问题,何时进行算法的切换

作者的回答也很简单,那就是当 SGD的相应学习率的移动平均值基本不变的时候,即:
∣ λ ~ t S G D − α t S G D ∣ &lt; ϵ \left|\tilde{\lambda}_{t}^{S G D}-\alpha_{t}^{S G D}\right|&lt;\epsilon λ~tSGDαtSGD<ϵ
.每次迭代玩都计算一下SGD接班人的相应学习率,如果发现基本稳定了,那就SGD以 λ ~ t S G D \tilde{\lambda}_{t}^{S G D} λ~tSGD 为学习率接班前进。

3.优化方法汇总(Newton家族,二阶导数)

为什么深度学习不采用newton家族的算法作为优化算法:

答:牛顿法需要用到梯度和Hessian矩阵(二阶梯度矩阵),很难写出深度神经网络你和函数的表达式,更不用说求解梯度和Hessian矩阵了,即使能够求解,在输入特征维度较高的时候,Hessian矩阵大小是n*n,耗费内存较高,求逆更是做梦;另外,当为凸函数的时候,牛顿法一定会下降,但是非凸的时候不一定

  1. 牛顿法

    基本思想:在现有极小点估计值的附近对f(x)做二阶泰勒展开,进而找到极小点的下一个估计值

    img

img

2.拟牛顿法

为了解决牛顿法中Hessian矩阵的问题,构造Hessian矩阵的近似矩阵来还原Hessian矩阵,常有DFP,BFGS算法

img

img

4.距离的度量

对于距离的度量需要满足一些基本的性质:

非负性,同一性,对称性,三角不等式:

常用的度量距离的方案:

连续变量的距离度量
  1. 欧氏距离(适用于连续变量间的距离度量)

    所有与原点的距离为1的构成了一个半径1的圆形

  2. 切比雪夫距离

    d i s t = m a x ( ∣ x 1 − x 2 ∣ , ∣ y 1 − y 2 ∣ ) dist=max(|x_1-x_2|,|y_1-y_2|) dist=max(x1x2,y1y2)

    所有与原点的距离为1的构成了一个边长2的正方形
    在这里插入图片描述

  3. 曼哈顿距离

    d i s t = ∣ x 1 − x 2 ∣ + ∣ y 1 − y 2 ∣ dist=|x_1-x_2|+|y_1-y_2| dist=x1x2+y1y2

  4. 马氏距离

    用来度量一个样本点P与数据分布为D的集合的距离。

    假设一个样点P为: x = ( x 1 , x 2 , x 3 , . . . , x N ) T x = (x_1,x_2,x_3,...,x_N)^T x=(x1,x2,x3,...,xN)T

    数据集D均值为: μ = ( μ 1 , μ 2 , μ 3 , . . . , μ N ) T \mu = (\mu_1,\mu_2,\mu_3,...,\mu_N)^T μ=(μ1,μ2,μ3,...,μN)T,协方差矩阵是S

    则这个样本点P与数据集合D的马氏距离为: D M ( x ) = ( x − μ ) T S − 1 ( x − μ ) D_M(x) = \sqrt{(x-\mu)^TS^{-1}(x-\mu)} DM(x)=(xμ)TS1(xμ)

    马氏距离也可以衡量两个来自同一分布的样本x和y的相似性,其中x和y是向量: d ( x , y ) = ( x − y ) T S − 1 ( x − y ) d(x,y) = \sqrt{(x-y)^TS^{-1}(x-y)} d(x,y)=(xy)TS1(xy)

向量距离的度量
  1. 余弦距离

    c o s θ = a T b ∣ a ∣ ∣ b ∣ cos\theta = \frac{a^Tb}{|a||b|} cosθ=abaTb

    对于无序的类别特征度量,可以用one-hot加余弦距离来度量

变量之间的距离度量
  1. 皮尔逊相关系数考察两个变量的关系,值越大,两个变量越近强相关,即距离越近,所以距离

    d i s t = 1 − ρ X , Y dist=1-\rho_{X,Y} dist=1ρX,Y

    ρ X , Y = C o v ( X , Y ) / σ X σ Y = E ( ( X − μ X ) ( Y − μ Y ) ) / σ X σ Y \rho_{X,Y} = Cov(X, Y)/\sigma_X\sigma_Y = E((X-\mu_X)(Y-\mu_Y))/\sigma_X\sigma_Y ρX,Y=Cov(X,Y)/σXσY=E((XμX)(YμY))/σXσY

  2. spearman相关系数

    spearman相关系数采用的是取值等级而不是取值本身,例如,给定三个值:33,21,44,它们的等级就分别是2,1,3

    img

    相对于皮尔森相关系数,斯皮尔曼相关系数对于数据错误和极端值的反应不敏感。

5.大数定律与中心极限定理

6 引用

1 https://zhuanlan.zhihu.com/p/32230623
2 https://www.cnblogs.com/peghoty/
引用太多,无法一一列举,如有需要请私信我

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值