凸优化(Quasi convex optimization)与梯度下降(Grad descent)

目录

一、凸优化

1.1评价标准

1.2驻点

1.3凸优化条件

1.4凸优化形式

二、梯度下降

2.1损失函数

2.2梯度


一、凸优化

1.1评价标准

当我们建立模型之后,我们希望有一种标准来评价模型的好坏;

而优化问题的目的就是根据这一评价标准,使得我们向好的方向改正,这里的标准可以是最大化收益,亦可是最小化损失。

统计学习中,我们常用的是损失(Loss)来描述模型‘不好’的程度,损失越小,我们的模型就越好。 

如果这个二次函数的图像是我们的损失图;

假设我们处于点A处,此时损失较大,我们期待它可以向箭头方向前进,以此达到损失减小的目的。当我们达到点B时,此时损失达到了函数最小值了,我们认为达成了我们的优化目的。

1.2驻点

不过现实是,我们优化模型的时候,找到损失最小点并不容易。

上图中损失最小点B点导数值为0,是驻点

我们来看一下驻点的定义:驻点是导数值为0的点,f(x)的极值点一定是驻点或者导数不存在的点,然而反之却不一定。

我们来看一个例子,当我们构造形如f(x)=\frac{1}{20}x^{3}的函数时,x=0处的导数为0,但0显然不是最大或者最小值点,甚至不是极值点。 

这给我们造成了许多困扰,我们只能通过导数值为0找到驻点,无法直接找到最值点;

当一个点时最值点时,他一定是驻点;但是驻点并不一定是最值点,他可能是局部极值点,或者鞍点。 

那么我们是否可以通过一些条件的约束,使得我们的驻点就是我们的最值点呢?

1.3凸优化条件

满足以下条件的问题,我们定义为凸优化问题:

对于目标函数,限定为凸函数;对于优化变量的可行域,限定为凸集。

凸优化问题的解(就是损失的驻点)就是我们要找的最小值点

看一下凸集的定义:

\forall x_{1},x_{2}\ \epsilon X,\forall\theta \ \epsilon [0,1],\theta x_{1} +(1-\theta) x_{2}\ \epsilon X

如此定义的集合X是凸集,可以理解为集合中任意两点的连线都在集合之内,集合的‘角’是向外凸出的,所以叫凸集。

再来看一下凸函数的定义:

\forall x_{1},x_{2}\ \epsilon X,\ \alpha f(x_{1})+(1-\alpha f(x_{2}))\geq f(\alpha x_{1}+(1-\alpha) x_{2}),\alpha \geq 0

如此定义为凸函数,可以理解为两点连线的值大于两点之间函数值

当定义域X是凸集f(x)是凸函数时,我们称为凸优化问题。

当定义域维数大于1时,我们列出其黑塞(Hessian)矩阵,如果黑塞矩阵半正定,则判断为凸函数。

1.4凸优化形式

形如下式的优化问题称为凸优化问题;

min\ L(x) \\ s.t. \begin{cases} f_{i}(x)\leq 0 ,i=1,2,...,N\\ h_{i}(x)=0 ,i=1,2,...,N \end{cases}

其中L(x)为我们需要最小化的损失函数,f_{i}(x)为不等式约束条件,h_{i}(x)为等式约束条件。

二、梯度下降

2.1损失函数

损失函数是上述损失的数值化表达,用数字大小来衡量损失的强弱。

我们常用的损失有

1)均方损失(MSE)

L=\frac{1}{N}\sum_{i=1}^{N}(y_{i}-\widehat{y_{i}})^{2}

其中\widehat{y_{i}}是我们模型在我们输入某个样本特征后得到的预测值,而y_{i}是该样本的真实值,N是样本个数。

2)交叉熵损失(Cross Entropy)

L=\sum_{i=1}^{N}\sum_{j=1}^{M}y_{j}log\widehat{y_{j}}

交叉熵损失常用于衡量分类任务预测概率和真实标签的误差;当输入样本的特征之后,返回的是样本属于各类别的概率\widehat{y_{j}}=(p_{1},p_{2},...p_{M}),且p_{1}+p_{2}+...+p_{M}=1;而样本的标签描述的是样本属于哪一类,如果属于第i类,那么样本的真实标签则为y_{j}=(0,0,....1,0,...0),其中第i列为1其余全为0。

公式中,\widehat{y_{i}}是预测概率,y_{i}是真实标签,M是类别个数,N是样本个数。

2.2梯度

设函数z=f(x,y) 在点P(x,y)的某一邻域U(P)内有定义,自点P引射线l,若{\frac{\partial f }{\partial l}}=\underset{\Delta x\rightarrow 0,\Delta y\rightarrow 0}{lim}\frac{f(x+\Delta x,y+\Delta y)-f(x,y)}{ \sqrt{(\Delta x)^{2}+(\Delta y)^{2}} }存在,则称{\frac{\partial f }{\partial l}}为点(x,y)沿l方向的方向导数。

显然我们可以找到无数条射线l,这也代表着方向导数有无限多,而我们关注的是其中最大的一个,其含义为:沿着该方向函数变化的最快;这就是我们说的梯度。

损失函数的梯度是我们重点关注的对象,损失的最小负梯度方向是减小最快的方向,我们该方向优化可以使我们的损失更快的降低。

我们来看一个实例:

当我们想拟合直线y=ax+b时,我们寻找直线上两个点(x_{1},y_{1})以及(x_{2},y_{2}),我们对这两点的预测值为\widehat{y_{1}},\widehat{y_{2}},对应关系为\widehat{y_{i}}=w x_{i}+b,其中w,b为初始参数;

此时我们拥有我们的预测值\widehat{y_{1}},\widehat{y_{2}}以及真实值y_{1},y_{2},我们便可以计算我们的预测损失;这里使用MSE损失,于是损失:L=\frac{1}{2} (y_{1}-\widehat{y_{1}})^{2}+\frac{1}{2} (y_{2}-\widehat{y_{2}})^{2}=\frac{1}{2} (y_{1}-wx_{1}-b)^{2}+\frac{1}{2} (y_{2}-wx_{2}-b)^{2}

我们用损失分别对w,b求导得到:

\frac{\partial L}{\partial w}= x_{1}(wx_{1}+b-y_{1})+x_{2}(wx_{2}+b-y_{2})

\frac{\partial L}{\partial b}=(wx_{1}+b-y_{1})+(wx_{2}+b-y_{2})

w,b是我们待优化的参数,我们希望通过改变他们从而降低损失;

w\leftarrow w-\eta \frac{\partial L}{\partial w}

b\leftarrow b-\eta \frac{\partial L}{\partial b}

其中\eta是步长,常取0.01,其含义为参数一次更新迈的‘步子’大小。

我们如此进行一次,就代表我们参数完成了一次更新;其含义为:我们朝着损失减小最快的方向更新w,b

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值