优化方法总结

梯度下降,SGD~,ADAm,牛顿法,拟牛顿法

 

首先要理解,优化方法对谁优化?没有说错,我们是做机器学习或者深度学习,在程序中是通过不断迭代完成的,那么,学习什么呢?是x?不对,因为x其实是我们的数据,我们是想通过x求得y也就是根据我们的已有的数据求出对应映射下的结果,可能是个分类,也可能是个回归,其实我们要的就是建立这个映射的关系,怎么建立呢?就是通过参数矩阵W,无论是任何机器学习算法中,还是在深度学习算法中,我们都是为了求这个W矩阵。

 

那么现在看梯度下降这个概念,什么意思,我们的优化目标,是损失函数最小化,或者似然函数最大化(当然加个负号就变成了最小化,其实也是一种损失函数)。那么常用的损失函数都有哪些呢?简单的线性回归中的MSE,当然加了l1,l2的lasso回归和岭回归都是一样的,还有在线性回归的基础上加了sigmoid函数的逻辑回归,损失函数为交叉熵,还有Adaboost使用的损失函数为指数函数,SVM中使用的是合页损失等。

 

因此要优化损失函数,使损失函数最小化,优化的参数是什么?对喽,要优化的参数是参数矩阵W,因此在梯度下降,Adam,牛顿法,拟牛顿法中,优化的参数都是W,换一种好理解的说法就是梯度下降那个图,牛顿法那个切线的图,横坐标x其实是参数矩阵W。

 

#下面的损失函数均用f(x)表示,Δf(x)为损失函数对参数矩阵求导。

 

梯度下降迭代过程:

  1. 初始化参数矩阵W,设定学习率alpha
  2. 根据公式W = W - alpha * Δf(x)
  3. 直至满足停止条件

 

 

SGD迭代过程:

  1. SGD随机梯度下降,每次迭代只选一条x样本
  2. 初始化参数矩阵W,设定学习率lapha
  3. 更具公式W = W- alpha * Δf(x)进行跟新W
  4. 只至满是停止条件

 

Adam迭代过程:

Adam有几个参数,m,belta1,n,belta2,ee(一个很小的数)

  1. 初始化参数矩阵W,初始化m,belta1,n,belta2
  2. 更新m  = belta1 * m + (1 - belta1 ) * Δf(x)

更新n = belta2 * n + (1 0 belta2) * Δf(x)

  1. 计算m_ = m / (1 - belta1 ** t)

计算n_ = n /(1 - belta2 ** t)

  1. 更新参数矩阵

W  = W - alpha * m_ /(np.sqrt(n_) + ee

  1. 返回第二步直至满足截至条件为止

 

 

牛顿法:

首先理解牛顿法是泰勒一节展开的应用,牛顿法和拟牛顿法优化目标是使损失函数为0,也就是在找损失函数为0的路上越走越远~~~,而梯度下降的优化目标是使损失函数最小话,也就是在找算函数最小值点的路上越走越远~~~。这里可以看到,其实梯度下降的优化目标更接近真实情况,因为不是所有的损失函数都有零点,但是look the other side of the road,找损失函数为零的点也没什么大问题,我是在找这个的路上,而不是非要找这个点。

先写下损失函数的1阶泰勒展开:

F(x) = F(x0) + F’(x0)*(x - x0)

如果看了上面那段话,大家应该知道,我们的目标是什么?F(x) == 0.因此损失函数的一阶泰勒展开可以写成

0 = F(x0)  + F’(x0)(x - x0)

变形求x(这里的x就是参数矩阵,而且是x0,下一个迭代的值)得x = x0 - F(x0) / F’(x0)

这个就是我们牛顿法更新权重矩阵的公式。下面总结牛顿法迭代过程

  1. 初始化参数矩阵W
  2. 更新W = W - f(x)/Δf(x)
  3. 直至满足截至条件

 

 

拟牛顿法

拟牛顿法是考虑损失函数的二阶泰勒展开

F(x) = F(x0) + F’(x0)* ( x - x0)  + F’2(x0) * (x - x0)2/2

这里我们再说下泰勒展开,什么是泰勒展开?除了上面这个公式大家还有什么其他的理解?简单点的,就是一个函数的泰勒展开等于这个函数(废话)。再回过头想我们的优化目标是什么?没错是损失函数为0,所以令F(x) == 0,公式变形为

0 =  F(x0) + F’(x0)* ( x - x0)  + F’2(x0) * (x - x0)2/2

求目标为0的函数的参数的最小值,也就是对这个公式右面的公式对x求导(再次明确,则例的x0是本时刻的求出的w值,x是根据本时刻要求的下一时刻的w值)

变形中~~~~~~~~~~

X = x0 - f’(x0) / f’’(x0)

理论上来说,到这一步,我们就可以更新迭代求W矩阵了。But~~~~·0 ·

这里的f’’(x0)是一个二阶求导后的矩阵,而且是在分母,也就是还要求逆(Hassion矩阵~费劲)如果直接求,计算量太大,其实就是基本算不出来。所有我们需要找一个矩阵U---->f’’(x0)来逼近这个hassion矩阵,这里便有了DFP以及BFGS算法,都是为了找这么一个逼近f’’(x0)的矩阵U。我们不管,这么低级的应用的时候直接来就行了。下面写下拟牛顿法的更新迭代过程。

  1. 初始化参数矩阵W
  2. 更新W
  3. 直至满足截至条件为止。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智能优化算法总结 优化算法有很多,经典算法包括:有线性规划,动态规划等;改进型局部搜索算法包括爬⼭法,最速下降法等,模拟退⽕、遗传算法以及禁 忌搜索称作指导性搜索法。⽽神经⽹络,混沌搜索则属于系统动态演化⽅法。 梯度为基础的传统优化算法具有较⾼的计算效率、较强的可靠性、⽐较成熟等优点,是⼀类最重要的、应⽤最⼴泛的优化算法。但是,传统 的最优化⽅法在应⽤于复杂、困难的优化问题时有较⼤的局限性。⼀个优化问题称为是复杂的,通常是指具有下列特征之⼀:(1)⽬标函 数没有明确解析表达;(2)⽬标函数虽有明确表达,但不可能恰好估值;(3)⽬标函数为多峰函数;(4)⽬标函数有多个,即多⽬标优 化。⼀个优化问题称为是困难的,通常是指:⽬标函数或约束条件不连续、不可微、⾼度⾮线性,或者问题本⾝是困难的组合问题。传统优 化⽅法往往要求⽬标函数是凸的、连续可微的,可⾏域是凸集等条件,⽽且处理⾮确定性信息的能⼒较差。这些弱点使传统优化⽅法在解决 许多实际问题时受到了限制。 智能优化算法⼀般都是建⽴在⽣物智能或物理现象基础上的随机搜索算法,⽬前在理论上还远不如传统优化算法完善,往往也不能确保解的 最优性,因⽽常常被视为只是⼀些"元启发式⽅法"(meta-heuristic)。但从实际应⽤的观点看,这类新算法⼀般不要求⽬标函数和约束 的连续性与凸性,甚⾄有时连有没有解析表达式都不要求,对计算中数据的不确定性也有很强的适应能⼒。 下⾯给出⼀个局部搜索,模拟退⽕,遗传算法,禁忌搜索的形象⽐喻:      为了找出地球上最⾼的⼭,⼀群有志⽓的兔⼦们开始想办法。       1.兔⼦朝着⽐现在⾼的地⽅跳去。他们找到了不远处的最⾼⼭峰。但是这座⼭不⼀定是珠穆朗玛峰。这就是局部搜索,它不能保证局 部最优值就是全局最优值。       2.兔⼦喝醉了。他随机地跳了很长时间。这期间,它可能⾛向⾼处,也可能踏⼊平地。但是,他渐渐清醒了并朝最⾼⽅向跳去。这就 是模拟退⽕。   3.兔⼦们吃了失忆药⽚,并被发射到太空,然后随机落到了地球上的某些地⽅。他们不知道⾃⼰的使命是什么。但是,如果你过⼏年 就杀死⼀部分海拔低的兔⼦,多产的兔⼦们⾃⼰就会找到珠穆朗玛峰。这就是遗传算法。       4.兔⼦们知道⼀个兔的⼒量是渺⼩的。他们互相转告着,哪⾥的⼭已经找过,并且找过的每⼀座⼭他们都留下⼀只兔⼦做记号。他们制 定了下⼀步去哪⾥寻找的策略。这就是禁忌搜索。 ⼀般⽽⾔,局部搜索就是基于贪婪思想利⽤邻域函数进⾏搜索,若找到⼀个⽐现有值更优的解就弃前者⽽取后者。但是,它⼀般只可以得 到"局部极⼩解",就是说,可能这只兔⼦登"登泰⼭⽽⼩天下",但是却没有找到珠穆朗玛峰。⽽模拟退⽕,遗传算法,禁忌搜索,神经 ⽹络等从不同的⾓度和策略实现了改进,取得较好的"全局最⼩解"。      模拟退⽕算法(Simulated Annealing,SA)      模拟退⽕算法的依据是固体物质退⽕过程和组合优化问题之间的相似性。物质在加热的时候,粒⼦间的布朗运动增强,到达⼀定强度 后,固体物质转化为液态,这个时候再进⾏退⽕,粒⼦热运动减弱,并逐渐趋于有序,最后达到稳定。      模拟退⽕的解不再像局部搜索那样最后的结果依赖初始点。它引⼊了⼀个接受概率p。如果新的点(设为pn)的⽬标函数f(pn)更 好,则p=1,表⽰选取新点;否则,接受概率p是当前点(设为pc)的⽬标函数f(pc),新点的⽬标函数f(pn)以及另⼀个控制参数"温 度"T的函数。也就是说,模拟退⽕没有像局部搜索那样每次都贪婪地寻找⽐现在好的点,⽬标函数差⼀点的点也有可能接受进来。随着算 法的执⾏,系统温度T逐渐降低,最后终⽌于某个低温,在该温度下,系统不再接受变化。      模拟退⽕的典型特征是除了接受⽬标函数的改进外,还接受⼀个衰减极限,当T较⼤时,接受较⼤的衰减,当T逐渐变⼩时,接受较⼩的 衰减,当T为0时,就不再接受衰减。这⼀特征意味着模拟退⽕与局部搜索相反,它能避开局部极⼩,并且还保持了局部搜索的通⽤性和简 单性。   在物理上,先加热,让分⼦间互相碰撞,变成⽆序状态,内能加⼤,然后降温,最后的分⼦次序反⽽会更有序,内能⽐没有加热前更 ⼩。就像那只兔⼦,它喝醉后,对⽐较近的⼭峰视⽽不见,迷迷糊糊地跳⼀⼤圈⼦,反⽽更有可能找到珠峰。 值得注意的是,当T为0时,模拟退⽕就成为局部搜索的⼀个特例。       模拟退⽕的伪码表达:   procedure simulated annealing   begin   t:=0;   initialize temperature T   select a current string vc at random;   evaluate vc;   repeat    repeat    se

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值