优化算法 - 凸性

凸性

凸性(convexity)在优化算法的设计中起到至关重要的作用,这主要是由于在这种情况下对算法进行分析和测试要容易得多。换言之,若该算法甚至在凸性条件设定下的效果很差,通常我们难在其他条件下看到好的结果。此外,即使深度学习中的优化问题通常是非凸的,它们也经常在局部极小值附近表现出一些凸性

%matplotlib inline
import numpy as np
import torch
from mpl_toolkits import mplot3d
from d2l import torch as d2l

1 - 定义

在进行凸分析之前,我们需要定义凸集(convex sets)和凸函数(convex functions)

凸集


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yxc4dyaI-1663162058671)(images.b2.png)]

f = lambda x : 0.5 * x**2 # 凸函数
g = lambda x: torch.cos(np.pi * x) # ⾮凸函数
h = lambda x: torch.exp(0.5 * x) # 凸函数

x,segment = torch.arange(-2,2,0.01),torch.tensor([-1.5,1])
d2l.use_svg_display()

_,axes = d2l.plt.subplots(1,3,figsize=(9,3))
for ax,func in zip(axes,[f,g,h]):
    d2l.plot([x,segment],[func(x),func(segment)],axes=ax)


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qsaX5HuK-1663162058671)(https://yingziimage.oss-cn-beijing.aliyuncs.com/img/202209142121963.svg)]

詹森不等式

2 - 性质

局部极小值是全局极小值

f = lambda x: (x - 1) ** 2
d2l.set_figsize()
d2l.plot([x,segment],[f(x),f(segment)],'x','f(x)')


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wPE1U7xw-1663162058672)(https://yingziimage.oss-cn-beijing.aliyuncs.com/img/202209142121964.svg)]

凸函数的下平集是凸的

凸性和二阶导数


3 - 约束

拉格朗日函数


惩罚

投影


凸投影的一个用途是计算稀疏权重向量。在本例中,我们将权重向量投影道一个 L 1 L_1 L1的球上,这是图11.2.4中菱形例子的一个广义版本

4 - 小结

在深度学习的背景下,凸函数的主要目的是帮助我们详细了解优化算法。我们由此得出梯度下降法和随机梯度下降法是如何相应推导出来的

  • 凸集的交点是凸的,并集不是
  • 根据詹森不等式,“⼀个多变量凸函数的总期望值”⼤于或等于“⽤每个变量的期望值计算这个函数的总值”
  • 一个二次可微函数是凸函数,当且仅当其Hessian(二阶导数矩阵)是半正定的
  • 凸约束可以通过拉格朗日函数来添加的。在实践中,只需在目标函数中加上一个惩罚就可以了
  • 投影映射到凸集中最接近原始点的点
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值