lhy机器学习笔记-5

lhy机器学习笔记-5

局部最小值local minimal和鞍点 saddle point

训练过程中发现loss 无法下降时,并不一定是到达了local minimal,只能说是卡在了某个critical point


critical point可能有许多情况,local minimal、local maximal、saddle point
存在方法去 判断 critical point是local minimal 还是 saddle point:
根据泰勒展开式:
L ( θ ) ≈ L ( θ ′ ) + ( θ − θ ′ ) T g + 1 2 ( θ − θ ′ ) T H ( θ − θ ′ ) L(\theta) \approx L(\theta') + (\theta - \theta')^Tg + \frac{1}{2}(\theta - \theta')^TH(\theta - \theta') L(θ)L(θ)+(θθ)Tg+21(θθ)TH(θθ)
其中$ H $是黑塞矩阵,
H i j = ∂ 2 ∂ θ i ∂ θ j L ( θ ′ ) H_{ij} = \frac{\partial^2} {\partial\theta_i\partial\theta_j} L(\theta') Hij=θiθj2L(θ)
计算黑塞矩阵的特征值eigenvalue:

  • 如果特征值全为正,则 矩阵正定,该点(critical point,下同)为 local minimal
  • 如果特征值全为负,则 矩阵负定,该点为 local maximal
  • 如果特征值有正有负,则 该点为 鞍点

critical point为鞍点时,模型的Loss还可以继续通过训练来降低,黑塞矩阵可指示梯度更新的方向:

u u u H H H 的特征向量, λ \lambda λ H H H 的特征值

则,
u T H u = u T ( λ u ) = λ ∣ ∣ u ∣ ∣ 2 u^THu = u^T(\lambda u) = \lambda ||u||^2 uTHu=uT(λu)=λu2

L ( θ ) ≈ L ( θ ′ ) + 1 2 ( θ − θ ′ ) T H ( θ − θ ′ ) L(\theta) \approx L(\theta') + \frac{1}{2}(\theta - \theta')^TH(\theta - \theta') L(θ)L(θ)+21(θθ)TH(θθ)

由上式,当特征值小于0时, L ( θ ) < L ( θ ′ ) L(\theta) < L(\theta') L(θ)<L(θ)

因此, 令 θ = θ ′ + u \theta = \theta' + u θ=θ+u ,即可降低 损失函数的值

沿着 u u u的方向更新参数,即可逃离鞍点继续降低损失函数的值

幸运的是,训练过程中,Loss下降时往往是卡在了 saddle point,即还有方法可以救

在这里插入图片描述

batch批次 and momentum动量

对于大量训练数据,可以对数据进行分批,来进行训练,选取大的batch和小的batch的影响如下表:
在这里插入图片描述

由于大的batch和小的batch对模型训练有影响,因此batch size也是一个需要决定的超参数

momentum: 对抗 minimal 和 saddle point 的方法

实际训练中往往采用梯度下降和动量结合的方法(gradient descent + momentum):

即更新参数(移动)时:前一步的参数的变化量(前一步的移动) 减去 现在的梯度
在这里插入图片描述

adaptive learning rate(optimizer)

注:critical point 并不是 训练时真正面对的问题
Training can be difficult even without critical points.

实际训练过程中,当loss不再变动时,gradient可能并没有很小
在这里插入图片描述
可能是处在上图的情况,参数在两个谷壁之间来回变动

解决方法:采用adaptive learning rate 方法,对不同参数采用不同的learning rate
在这里插入图片描述

方法1:Adagrad

采用这种方法,参数变化的表达式为:
θ i t + 1 ← θ i t − η σ i t g i t \theta^{t+1}_i \leftarrow \theta_i^t - \frac{\eta}{\sigma_i^t}g_i^t θit+1θitσitηgit
其中, θ i t = 1 t + 1 ∑ i = 0 t ( g i t ) 2 \theta^t_i = \sqrt{\frac{1}{t+1}\sum_{i=0}^t(g_i^t)^2} θit=t+11i=0t(git)2 是参数独立的,对每个参数,甚至每一层都是不同的;η是学习率(learning rate)
采用这样的方法,可以使得在梯度较大的地方,参数变动的步伐稍小;在梯度较小的时候,参数变动的步伐稍大;随着gradient的变化,来自动调整learning rate

方法2:RMSProp

σ i t = α ( σ i t − 1 ) 2 + ( 1 − α ) ( g i t ) 2 \sigma_i^t = \sqrt{\alpha(\sigma_i^{t-1})^2 + (1-\alpha)(g_i^t)^2} σit=α(σit1)2+(1α)(git)2

Adam: RMSProp + Momentum

learning rate scheduling

  1. Learing Rate Decay:
    随着时间的推移,随着慢慢靠近终点,逐渐减小learning rate
    在这里插入图片描述

θ i t + 1 ← θ i t − η t σ i t g i t \theta^{t+1}_i \leftarrow \theta_i^t - \frac{\eta^t}{\sigma_i^t}g_i^t θit+1θitσitηtgit
2. warm up
learning rate 先变大 后变小
在这里插入图片描述

classification

classification:输出是一个向量
把类别编码:one-hot vector
Softmax:利用其可以得到分类结果向量
在这里插入图片描述
分类的Loss Function:
常用cross-entropy:(更常用于分类问题上)
e = − ∑ i y ^ i l n y i ′ e = -\sum_i\hat y_i lny_i' e=iy^ilnyi
最小化 交叉熵 等价于 最大化 likelyhood
cross-entropy 更容易训练

batch normalization

normalization 的目的是 使向量中的每一维的取值范围是一样的,使得模型训练更加容易
在这里插入图片描述

实际在进行操作的时候,会将输入数据分成若干batch,每个 batch 做 normalization 输入到神经网络中做训练。
该方法适用于 batch size 比较大的时候

batch normalization的 Testing:

测试阶段并不是总是有batch
因此,对于batch normalization的Testing阶段,在训练时会计算 batch 的 移动平均
μ ‾ ← p μ ‾ + ( 1 − p ) μ t \overline \mu \leftarrow p \overline \mu + (1-p)\mu^t μpμ+(1p)μt
在训练时用这个移动平均值替代测试阶段要用到的,如下图

为什么 batch normalization 会work?

How does Batch Normalization Help Optimization?(paper)
实验结果和理论分析 支持batch normalization 可以改变 error surface 的 landscape

其他的normalization方法:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值