首页 国际新闻 正文

地中海,深度学习新手必需的几种蚁群算法 | 调试手册,北京社保


作者 | Nasir Hemed编译 | Rachel出品 | AI科技大本营(id:rgznai100)

【导读】在本文中,作者对常地中海,深度学习新手必需的几种蚁群算法 | 调试手册,北京社保用的三孙政财种机器学习优化算法(牛顿法、梯度下降法、最速下降法)进行了介绍和比较,并结合算法的数学原理和实践事例给出了优化算法挑选的一些主张。

阅览本文的根底预备

  • 线性代数
  • 多变量微积分
  • 对凸函数的根本知识

咱们都知道,机器学习中最重要的内容之一便是优化问题。因而,找到一个能够对函樟树数做合理优化的算法始终是咱们重视的问题。当时,咱们运用最多的优化算法之一是梯度下降算法。在本文中,咱们会对梯度下降算法以及一些其他的优化算法进行介绍,并测验从理论视点来了解它们。本文介绍的中心算法包括:

  • 牛顿法(Newton’s Method)
  • 最速下降法(Steep Descent)
  • 梯度下降法(Gradient Descent)

如小熊猫卷烟果想对这些算法有更多了解,你能够阅览斯坦福大学的《凸函数优化—:第三部分》教材。在本文中,咱们首要重视二次函数和多项式函数。

对待优化函数的根本假定

一般来说,咱们假定咱们处理的函数的导数都是接连的(例如,f ∈ C)。关于牛顿法,咱们还需求假定函数的二阶导数也是接连的(例如, f ∈ C)。最终,咱们还需求假定需求最小化的函数是凸函数。这样一来,假如咱们的算法会集到一个点(一般称为部分最小值),咱们就能够确保这个值是一个大局最优。

牛顿法

  • 单变量函数的状况
x_n = starting point
x_n1 = x_n - (f'(x_n)/f''(x_n))
while (f(x_n) != f(x_n1)):
x_n = x_n1
x_n1 = x_n - (f'(x_n)/f''(x_n))

牛顿法的根本思想是,需求优化的函数f在部分能够近似表明为一个二次函数。咱们只需求找到这个二次函数的最小值,并将该点的x值记录下来。之后重复这一过程,直到最小值不再变阴间化停止。

  • 多变量函数的状况

关于单变量的状况,牛顿法比较牢靠。可是在实践问题中,咱们处理的单变量景象其实很少。大多数时分,咱们需求优化的函数都包括许多变量(例如,界说在实数集ℝn的函数)。因而,这儿咱们需求对多变量的景象进行评论。

假定x∈ ℝn,则有:

x_n = starting_point
x_n1 = x_n - inverse(hessian_m铝碳酸镁咀嚼片atrix) (gradient(x_n))
while (f(x_n) != f(x_n1)):
x_n = x_n1
x_n1 = x_n - inverse(he来自星星的你第二部ssian_matrix) (gradient(x_n))

其间,gradient(x_n)是函数坐落x_n点时的梯度向量,hessian_matrix是一个尺度为 nxn 的黑塞矩阵(hessian matrix),其值是函数坐落x_n的二阶导数。咱们都知道,矩阵转化的算法复杂度是十分高的(O(n)),因而牛顿法在这种景象下并不常用地中海,深度学习新手必需的几种蚁群算法 | 调试手册,北京社保。

梯度下降

梯度下降是目前停止在机器学习和其他优化问题中运用的最多的优化算法。梯度算法的根本思想是,在每次迭代中向梯度方向走一小步。梯度算法还触及一个稳定的alpha变量,该变量规则每次跨步的步长。下面是算法示例:

alpha = small_constant
x_n = starting_point
x_n1 = x_n - alpha * gradient(x_n)
while (f(x_n) != f(x_n1)): # May take a long time to converge
x_n = x_n1
x_n1 = x_n - alpha * gradient(x_n)

这儿,alpha是在每次迭代中更新x_n时都需求运用的变量(一般称为超参数)。下面咱们对alpha值的挑选进行简略剖析。

假如咱们挑选一个很大的alpha,咱们很或许会跳过最长处,并离最长处越来越远。事实上,假如alpha的值过大,咱们甚至会彻底违背最长处。

当alpha的值过大时,10次迭代后的梯度下降状况

别的,假如咱们挑选的alpha值过小,则或许需求通过十分屡次迭代才干找到最优值。而且,当咱们挨近最优值时,梯度会挨近灵宝气候于0。因而 ,假如alpha的值过小,咱们有或许永久都无法抵达最长处。

当alpha的值过小时,10次迭代后的梯度下降状况

因而,咱们或许需求多测验一些alpha的值,才干找到最优的挑选。假如挑选了一个适宜的alpha值,咱们在迭代时往往能节约许多时刻。

当alpha的值合理时,10次迭代后的梯度下降状况

最速下降法

最速下降法和梯度下降法十分类似,可是最速下降法对每次迭代时要求步长的值为最优。下面是最速下降法的算法示例:鞭辟入里的主人公是谁

x_n = starting_point
alpha_k = get_optimizer(f(x_n - alpha * gradient(x_n)))
x_n1 = x_n - alpha_n * gradient(x_n)
while (f(x_n) != f(x_n1)):
x_n = x_n1
alpha_k = get_optimizer(f(x_n - alpha * gradient(x_n)))
x_n1 = x_n - alpha_n * gradient(x_n)

其间,x_n和x_n1是ℝn上的向量,是算法的输入,gradient是函数 f 在点x_n的梯度,alpha_k的数学表明如下:

因而,在对原始函数进行优化时,咱们需求在每一次迭代中对一个内部函数进行优化。这样做的长处是,这个内部优化函数是一个单变量函数,它的优化不会十分复杂(例如,咱们能够运用牛顿法来作为这儿的函数)。可是在更多景象下,在每一步中优化这个函数都会带来比较贵重的花销。

  • 二次式函数的特别景象

关于均方差错函数:

其间,I 是单位矩阵,y=Qw + b 。为了简化评论,这儿咱们只考虑寻觅权重w最优值的景象(假定b是接连的)。将等式 y=Qw + b 带入上式并进行必定收拾后,咱们能够得到如下等式:

现在咱们从头检查一下 g(), 咱们会发现,假如咱们运用点 k 处的梯度,因为其为最优值,该梯度应当为0。因而咱们有如下等式:



对上式进行简化,并将 f 的梯度带入后,咱们能够得到关于 k 的表明如下:


这便是在二次函数景象下 k 的值。

  • 对二次函数的收敛性剖析

关于界说在 上的二次函数,最速下降法一般用来在十分挨近最优值时运用,运用步数不超越十步。


二维中的最速下降在4次迭代后的景象

在上图中,每一次迭代中的改变方向都是笔直的。在3到4次迭代后,咱们能够发现导数的改变根本能够忽略不计了。

  • 为什么最速下降法运用很少?

最速下降法算法远远满意了超参数调优的需求,而且确保能找到部分最小值。可是为什么该算法运用不多呢?最速下降法的问题在于,每一步都需求对 aplha_k 进行优化,这样做的本钱相对昂扬。

例如,关于二次函数,每次迭代都需求核算屡次矩阵乘法以及向量点乘。但关于梯度下降,每一步只需求核算导数并更新值就能够了,这样做的本钱远远低于最地中海,深度学习新手必需的几种蚁群算法 | 调试手册,北京社保速下降算法。

最速下降算法的另一个问题是关于非凸函数的优化存在困难。关于非小本创业凸函数,aplha_k 或许没有固定的值。

关于梯度下降法和最速下降法的比照

在这一部分,咱们对梯度下降法和最速下降法进行比照,并比较它们在时刻价值上的差异。首要,咱们比照了两种算法的时刻花销。咱们会创立一个二地中海,深度学习新手必需的几种蚁群算法 | 调试手册,北京社保次函数:f:ℝ⁰⁰⁰→ℝ (该函数为一个2000x2000的矩阵)。咱们将对该函数进行优化,并约束迭代次数为1000次。之后,咱们会对两种算法的时刻花销进行比照,并检查 x_n 值与最长处的间隔。

咱们先来看一下最速下降法:

0 Diff: 117727672.56583363 alpha value: 8.032725864804974e-06 
100 Diff: 9264.791000127792 alpha value: 1.017642856黑白灰平行国际4615889e-05
200 Diff: 1641.154644548893 alpha value: 1.0236993350903281e-05
300 Diff: 590.5089467763901 alpha value: 1.0254560482036439e-05
400 Diff: 279.2355946302414 alpha value: 1.0263893422517941e-05
500 Diff: 155.43169915676117 alpha value: 1.0270028681773919e-05 椎间盘杰出
600 Diff: 96.61812579631805 alpha value: 1.0274280663010468e-0吸尘器5
700 Diff: 64.87719237804413 alpha value: 1.027728512597358e-05
800 Diff: 46.03102707862854 alpha value: 麻黄碱1.0279461929697766e-05
900 Diff: 34.00975978374481 alpha value: 1.0281092917213468e-05
Optimizer found with x = [-1.68825261 5.31853629 -3.45322318 ... 1.59365232 -2.85114689 5.04026352] and f(x)=-511573479.5792374 in 1000 iterations
Total time taken: 1min 28s


下面是梯度下降法的状况,其间 alpha = 0.000001:

0 Diff: 26206321.312622845 alpha value: 1e-06 
100 Diff: 112613.38076114655 alpha value: 1e-06
200 Diff: 21639.659786581993 alpha value: 1e-06
300 Diff: 7891.810685873032 alpha value: 1e-06
400 Diff: 3793.90934664011 alpha value: 1e-06
500 Diff: 2143.767760157585 alpha value: 1e-06
600鞋子品牌 Diff: 1348.4947地中海,深度学习新手必需的几种蚁群算法 | 调试手册,北京社保955012321 alpha value: 1e-06
700 Diff: 914.9099299907684 alpha value: 1e-06
800 Diff: 655.9336211681366 alpha value: 1e-06
900 Diff: 490.05882585048676 alpha value: 1e-06
Optimizer found with x = [-1.80862488 4.66644055 -3.08228401 ... 2.46891076 -2.57581774 5.34672724] and f(x)=-511336392.26658595 in 1000 iterations
Total time taken: 1min 16s


咱们能够发现,梯度下降法的速度比最速下降法略快(几秒或几分钟)。但更重要的是,最速下降法采纳的步长比梯地中海,深度学习新手必需的几种蚁群算法 | 调试手册,北京社保度下降法愈加合理,虽然梯度下降法的的值并非最优。在上述示例中, 关于梯度下降算法,f(xprex) f(curr) 在第900次迭代时的差为450。而最速下降法在许屡次迭代前就现已到达这个值了(大约在第300次到第400次迭代之间)。

因而,咱们测验约束最速下降法的迭代次数为300,输出如下:

0 Diff: 118618752.30065191 alpha value: 8.569151292666038e-06 
100 尹志平吮小龙女乳Diff: 8281.239207088947 alpha value: 1.1021416896567156e-05
200 Diff: 1463.1741587519646 alpha value: 1.1087402059869253e-05
300 Diff: 526.3014997839928 alpha value: 1.1106776689082503e-05 Optimizer found w经典小说ith x = [-1.33362899 5.89337889 -3.31827817 ... 1.77032789 -2.86779156 4.56444743] and f(x)=-511526291.3367646 in 400 iterations
Time taken: 35.8s

能够发现,最速下降法的速度实践更快。在此景象中,咱们在每次迭代运用更少的步数就能迫临最优值。事实上,假如你的方针是估量最优值,最速下降法会比梯度下降法更适宜。关于低维度的函数,10步的最速下降法就会比通过1000次迭代的梯度下降法更挨近最优值。

下面这个比如中,咱们运用了一个界说在 ℝ⁰→ℝ 上的二次函数。10步后,最速下降法的得到函数值为 f(x) = -62434.18。而梯度下降法在1000步后得到的函数值为 f(x) = -61596.84。能够发现,最速下降法在10步后的成果就优于梯度下降法在1000步后的成果。

需求记住的是,这种景象仅在处理二次函数的时分适用。整体而言,在每次迭代中都找到 k的最优值是较为困难的。对函数 g() 求最优值并不总能得到 k 的最优值。一般,咱们会运用迭代的算法来对优化函数求最小值。在这种景象下,最速下降法与梯度下降法比较就比较慢了。因而,最速下降法在实践运用中并不常见。

总结

在本文中,咱们学习了三种下降算法:

  • 牛顿法(Newton's method)

牛顿法供给了对函数的二阶近似,并在每一步都对函数进行优化。其最大的问题在于,在优化过程中需求进行矩阵转化,关于多变量景象花销过高capacity(尤其是向量的特征较多的时分)。

  • 梯度下降(Gradient Descent)

梯度下降是最常用的优化算法。因为该算法在每步只对导数进行核算,其花销较低,速度更快。可是在运用该算法时,需求对步长的超参数进行屡次的猜想和测验。

  • 最速下降法(Steepest Descent)

最速下降法在每林冲步都对woebot函数的梯度向量寻觅最优步长。它的问题在于,在每次迭代中需求对相关的函数进行优化,这会带来许多花销。关于二次函数的景象,虽然每步都触及许多矩阵运算,最速下降法的作用依然更优。

相关笔记可参看:

https://colab.research.google.com/gist/nasirhemed/0026e5e6994d546b4debed8f1ed543c0/a-deeper-look-into-descent-algorithms.ipynb

原文链接:

https://towardsdatascience.com/a-deeper-look-at-descent-algorithms-1地中海,深度学习新手必需的几种蚁群算法 | 调试手册,北京社保3340b82db49

(本文为AI科技大本营编译文章,转载请微信联络1092722531)