北京sem网站,软件公司需要什么资质,个人网站需要哪些内容,西安做网站找缑阳建1、什么是优化器 优化器用来寻找模型的最优解。 2、常见优化器 2.1. 批量梯度下降法BGD(Batch Gradient Descent) 2.1.1、BGD表示 BGD 采用整个训练集的数据来计算 cost function 对参数的梯度#xff1a; 假设要学习训练的模型参数为W#xff0c;代价函数为J(W)#xff0c;… 1、什么是优化器 优化器用来寻找模型的最优解。 2、常见优化器 2.1. 批量梯度下降法BGD(Batch Gradient Descent) 2.1.1、BGD表示 BGD 采用整个训练集的数据来计算 cost function 对参数的梯度 假设要学习训练的模型参数为W代价函数为J(W)则代价函数关于模型参数的偏导数即相关梯度为ΔJ(W)学习率为ηt则使用梯度下降法更新参数为 Wt1Wt−ηtΔJ(Wt) 其中Wt表示tt时刻的模型参数。从表达式来看模型参数的更新调整与代价函数关于模型参数的梯度有关即沿着梯度的方向不断减小模型参数从而最小化代价函数。基本策略可以理解为”在有限视距内寻找最快路径下山“因此每走一步参考当前位置最陡的方向(即梯度)进而迈出下一步。 2.1.2、BGD优缺点 训练速度慢每走一步都要要计算调整下一步的方向下山的速度变慢。在应用于大型数据集中每输入一个样本都要更新一次参数且每次迭代都要遍历所有的样本。会使得训练过程及其缓慢需要花费很长时间才能得到收敛解。 容易陷入局部最优解由于是在有限视距内寻找下山的反向。当陷入平坦的洼地会误以为到达了山地的最低点从而不会继续往下走。所谓的局部最优解就是鞍点。落入鞍点梯度为0使得模型参数不在继续更新。 2.2、随机梯度下降SGD 2.2.1、SGD表示 和 BGD 的一次用所有数据计算梯度相比SGD 每次更新时对每个样本进行梯度更新对于很大的数据集来说可能会有相似的样本这样 BGD 在计算梯度时会出现冗余而 SGD 一次只进行一次更新就没有冗余而且比较快并且可以新增样本。 随机梯度下降是通过每个样本来迭代更新一次如果样本量很大的情况那么可能只用其中部分的样本就已经将theta迭代到最优解了对比上面的批量梯度下降迭代一次需要用到十几万训练样本一次迭代不可能最优如果迭代10次的话就需要遍历训练样本10次。缺点是SGD的噪音较BGD要多使得SGD并不是每次迭代都向着整体最优化方向。所以虽然训练速度快但是准确度下降并不是全局最优。虽然包含一定的随机性但是从期望上来看它是等于正确的导数的。 2.2.2、SGD优缺点 优点 引入噪声增加模型的鲁棒性。虽然SGD需要走很多步的样子但是对梯度的要求很低计算梯度快。而对于引入噪声大量的理论和实践工作证明只要噪声不是特别大SGD都能很好地收敛。 应用大型数据集时训练速度很快。比如每次从百万数据样本中取几百个数据点算一个SGD梯度更新一下模型参数。相比于标准梯度下降法的遍历全部样本每输入一个样本更新一次参数要快得多。 缺点 SGD在随机选择梯度的同时会引入噪声使得权值更新的方向不一定正确。此外SGD也没能单独克服局部最优解的问题。SGD 因为更新比较频繁会造成 cost function 有严重的震荡。BGD 可以收敛到局部极小值当然 SGD 的震荡可能会跳到更好的局部极小值处。当我们稍微减小 learning rateSGD 和 BGD 的收敛性是一样的。 2.3、批量梯度下降MBGD(Mini-Batch Gradient Descent) 2.3.1、MBGD梯度下降表示 梯度更新规则 MBGD 每一次利用一小批样本即 n(50-256) 个样本进行计算这样它可以降低参数更新时的方差收敛更稳定另一方面可以充分地利用深度学习库中高度优化的矩阵操作来进行更有效的梯度计算。 2.3.2、MBGD优缺点 优点 批量梯度下降法比标准梯度下降法训练时间短且每次下降的方向都很正确。可以降低参数更新时的方差收敛更稳定。可以充分地利用深度学习库中高度优化的矩阵操作来进行更有效的梯度计算。 缺点 不能保证很好的收敛。不过 Mini-batch gradient descent 不能保证很好的收敛性learning rate 如果选择的太小收敛速度会很慢如果太大loss function 就会在极小值处不停地震荡甚至偏离。有一种措施是先设定大一点的学习率当两次迭代之间的变化低于某个阈值后就减小 learning rate不过这个阈值的设定需要提前写好这样的话就不能够适应数据集的特点。可能陷入鞍点或局部最小点。对于非凸函数还要避免陷于局部极小值处或者鞍点处因为鞍点周围的error是一样的所有维度的梯度都接近于0SGD 很容易被困在这里。会在鞍点或者局部最小点震荡跳动因为在此点处如果是训练集全集带入即BGD则优化会停止不动如果是mini-batch或者SGD每次找到的梯度都是不同的就会发生震荡来回跳动。应用同样的 learning rate不能适应所有的参数。如果我们的数据是稀疏的我们更希望对出现频率低的特征进行大一点的更新。LR会随着更新的次数逐渐变小。 2.4、动量(冲量)梯度下降法Momentum(Batch Gradient Descent Momentum) 2.4.1、Momentum描述 SGD的梯度下降过程类似于一个小球从山坡上滚下它的前进方向由当前山坡的最大倾斜方向与之前的下降方向共同决定小球具有初速度(动量)不只被梯度制约。SGD克服了之前SGD易震荡的缺点。使用动量(Momentum)的随机梯度下降法(SGD)主要思想是引入一个积攒历史梯度信息动量来加速SGD。 2.4.2、Momentum优缺点 优点 1、引入积攒的历史梯度信息动量加速参数更新 2、一定程度解决了SGD易震荡的问题 缺点 1、全过程使用了相同的学习率 2、在Momentun中小球会盲目地跟从下坡的梯度容易发生错误。 2.5、牛顿加速梯度NAGNesterov accelerated gradient 2.5.1、NAG描述 NAG是Momentum动量算法的变种。更新模型参数表达式如下 Nesterov动量梯度的计算在模型参数施加当前速度之后因此可以理解为往标准动量中添加了一个校正因子。理解策略在Momentun中小球会盲目地跟从下坡的梯度容易发生错误。所以需要一个更聪明的小球能提前知道它要去哪里还要知道走到坡底的时候速度慢下来而不是又冲上另一个坡。计算Wt−αvt−1可以表示小球下一个位置大概在哪里。从而可以提前知道下一个位置的梯度然后使用到当前位置来更新参数。 2.5.2、NAG优缺点 优点 在momentun SGD基础上添加了一个校正因子避免盲目跟从梯度下降方向 缺点 固定学习率 2.6、AdaGrad 自适应学习率优化算法针对于机器学习模型的学习率传统的优化算法要么将学习率设置为常数要么根据训练次数调节学习率。极大忽视了学习率其他变化的可能性。然而学习率对模型的性能有着显著的影响因此需要采取一些策略来想办法更新学习率从而提高训练速度。目前的自适应学习率优化算法主要有AdaGrad算法RMSProp算法Adam算法以及AdaDelta算法。这类算法可以对低频的参数做较大的更新对高频的做较小的更新也因此对于稀疏的数据它的表现很好很好地提高了 SGD 的鲁棒性。 AdaGrad算法独立地适应所有模型参数的学习率缩放每个参数反比于其所有梯度历史平均值总和的平方根。具有代价函数最大梯度的参数相应地有个快速下降的学习率而具有小梯度的参数在学习率上有相对较小的下降。 梯度更新规则: 从表达式可以看出对出现比较频繁的特征Adagrad给予越来越小的学习率而对于比较少的特征会给予较大的学习率。因此Adagrad适用于数据稀疏或者分布不平衡的数据集。 2.6.2、Adagrad优缺点 优点 Adagrad适用于数据稀疏或者分布不平衡的数据集 Adagrad 的主要优势在于不需要人为的调节学习率它可以自动调节 缺点 随着迭代次数增多学习率会越来越小最终会趋近于0。 2.7、RMSProp 2.7.1、RMSProp描述 RMSProp是对Adagrad的一个改进它解决了Adagrad优化过程中学习率 η 单调减少问题。Adadelta不再对过去的梯度平方进行累加而是改用加权平均 2.7.2、RMSProp优缺点 优点 不再对过去的梯度平方进行累加通过指数衰减平均值解决了Adagrad学习率单调递减问题 缺点 需指定全局学习率 2.8、AdaDelta算法 2.8.1、AdaDelta描述 思想AdaGrad算法和RMSProp算法都需要指定全局学习率AdaDelta算法结合两种算法每次参数的更新步长 2.8.2、AdaDelta优缺点 优点 结合adgrad和rmsprob算法通过前t-1累加梯度指定学习率无需指定全局学习率 缺点 在优化前期和中期效果较好后期在局部最小点震荡。 2.9、Adam 这个算法是另一种计算每个参数的自适应学习率的方法。相当于 RMSprop Momentum除了像 Adadelta 和 RMSprop 一样存储了过去梯度的平方 vt 的指数衰减平均值 也像 momentum 一样保持了过去梯度 mt 的