Task05:网络设计的技巧_by_matrix

  1. 局部最小值(Local Minima)和鞍点(Saddle Point)
    1)如何区分Local Minima和Saddle Point
    局部最小值(Local Minima)和鞍点(Saddle Point)都称为Crital Point, 也就是梯度为0的点,如何区分他们呢?这里我们重点要用到如下图的H矩阵
    如下图,当L(θ’)导数为0时,通过泰勒展开式,可以在θ’点附近逼近这个L(θ)函数

    如下图,当一次微分为0,也就是梯度为0的时候,L(θ)跟L(θ’)的大小,取决于后面这一项,所以我们可以通过后面这一项是否大于小于0知道L(θ)跟L(θ’)的大小,来区分Local Minima和Saddle Point

    当H为正定矩阵时(所有特征值λ都为正),根据正定矩阵的特性,后面的一项恒为正,所以θ’点为Local Minima,如果H特征值有正有负,那么θ’点为Saddle Point
    2)如何处理Saddle Point呢?
    我们就是要让下面这一项为负数,才能保证往L(θ) < L(θ’), 往损失函数值小的地方移动,也就是找到H矩阵特征值λ为负数对应的特征向量作为θ - θ’的值,那么θ = θ’ + u(特征值λ为负对应的特征向量)
    22222222222222222
    3)Local Minima极少出现
    因为刚刚说了,要保证Local Minima出现,那么H矩阵必须是正定矩阵,但是一般我们的θ参数向量维数特别大,不仅仅是二维,三维,那么它对应的H矩阵维数也会非常大,要保证H矩阵是正定矩阵(所有λ正数),这个是比较少出现的,一般大部分情况H矩阵λ特征值有正有负,所以大部分情况
  2. 批次(batch)和动量(Momentum)
    1)Batch优势:不使用Batch,在Crital Point点,就没有办法移动了,但是使用Batch, 在同一个点,一整个样本分成了很多batch, 即使有一个batch是Crital Point, 但是其他的batch不是,就可以避免Crital Point问题;
    2)Large Batch优势:在有parallel计算的情况下,Small Batch 执行一次epoch时间会比Large Batch久,同时Loss surface 会比较稳定
    3)Small Batch优势:泛化率比较高,在test data上表现比较好
    4)Momentum方法:m1 = λm0 - ηg0, θ = θ’ + m1, m0代表上一次的Δ θ,g0是这一次的梯度, 其实m就是所有ηgx的累积;
  3. 自动调整学习速率(Learning Rate)
    1)Loss损失函数减不下来,很可能就是Δ θ步子太大,损失在山峰腰部来回跳跃,滑不到Loss谷底,或者Δ θ步子太小一直都停滞,我们的目标是Δ θ步子合适,能够顺利完成梯度下降训练; 问题原因是什么呢?很可能是Learning Rate 问题,具体表现就是Learning Rate太大,梯度g0很大,一综合,Δ θ太大,,或者Learning Rate太小,梯度g0很小,导致Δ θ太小,所以我们需要根据梯度g0, 来合适的调整Learning Rate, 使Δ θ一直都合适大小,完成梯度下降训练;
    2)RMSProp
    为了让Δ θ保持适度大小,需要让梯度g绝对值大小和学习率Learning Rate成反比,所以如下图,将梯度g绝对值大小作为学习率Learning Rate分母, 但是为了让学习率Learning Rate比较稳定,不随梯度g0波动而受太大影响,让方差比较小,分母其实加上了前面所有梯度g绝对值大小,不过为了灵活,这里增加了一个权重α,α决定之前累积的梯度值还是现在的梯度值对学习率Learning Rate影响更大

    3)Learning Rate Scheduling
    越靠近Loss函数谷底,梯度值变小,Δ θ需要慢慢变小,可以把学习率分子设置为η, 随着时间,它慢慢变小
    Learning Rate分母设置为
  4. Batch Normalization
    1)Training data
    数据样本vetcor不同的维度,scale是不一样的,所以导致Loss函数LandScae地形是不规则的,如下图,w1参数和w2参数,它们对应的维度数据Scale不一样,导致他们Loss等高线疏密度不一样,不太好训练梯度下降
    77777777777777
    比较好的方法就是对所有样本每一维进行标准化,(X - E)/ σ,这样所有的维度数据就都标准化为E为0,σ为1相同Scale的数据了
    不过由于每一个样本Vetcot计算都需要涉及到其他所有Vetctor计算,毕竟要求他们共同的E和σ,所有样本很大,计算机内存吃不消,所以考虑同一个Batch内进行Normalization计算,这就是Batch Normalization, 不过既然是计算E和σ, Batch 就不能太小

    2)test data
    Train data过程中利用Batch Normalization 实现了训练效率的提升,但是inference过程中,业务数据是一笔一笔来得,所以有可能等不及整个Batch数据过来做运算,那怎么办呢?我们可以利用Train data时候的u和σ来做计算,当然了我们会计算Train 过程中整个的u 和σ的加权平均
1赞
浙ICP备19012682号