《Deep Learning》学习2——梯度优化

*一. 梯度*

被优化的函数称为目标函数、准则、代价函数以及损失函数。
在《微积分》中,大家都用过导数,函数在某个点的导数代表的是f(x)在该点处的斜率。而梯度是函数相对于一个向量求导,细分到向量的各成员上,就是对各成员求偏导。梯度表示为这里写图片描述

优化通常是将目标函数最小化或者最大化。在机器学习中,优化更通常是使损失函数(对有监督来说,输出和label的误差)最小化。
梯度优化的原则:
这里写图片描述
ϵ表示著名的学习率。
为什么梯度优化对目标函数最小化有效呢?
首先说明,深度学习的优化是多个局部优化,而不是一个全局优化。而当函数的导数为0时,有如下三种可能:
极小点、极大点、鞍点
第一种情况是美好的优化目标,虽然,实际上可能是这样的:
这里写图片描述
然而,还是那句话,找的是满足我们需求的局部极小点。
因此,让损失函数最小化的一种方法是让损失函数快速下降。函数下降最快时,其导数最小,因此,论证梯度优化有效从导数最小开始:
这里写图片描述

**

二. Jacobian矩阵和Hessian矩阵

**
当输入和输出均为向量时,输出各成员对输入各成员的偏导数组成的矩阵为Jacobian矩阵。当输入向量是m维, 输出是n维,J矩阵维度为m*n, 这里写图片描述

Hessian矩阵是损失函数对输入的二阶偏导,同样,是Jacobian对各输入成员求偏导:
这里写图片描述
它是实对称的矩阵,即 这里写图片描述。(如果再算上输出的维度,那Hessian就是三阶了?不过很多机器学习问题,输出都是标量)

维度多了,一阶导都够麻烦的了,为什么需要更复杂的二阶导呢?
本人认为二阶导和学习率是很相关的。按照梯度下降的公式,如果学习率固定不变,那么优化的程度和梯度成正比,然而梯度本身也相当于是一个函数,这个函数下一刻是怎么变化是未知的,如果不加以控制,会让系统的稳定性变弱。而二阶导数是一届导数的偏导数,能够表征输入对一届导数的影响,可观测梯度的变化趋势。(完全个人理解)

根据f(x)的二阶泰勒级数
这里写图片描述
在梯度优化后当前点的下一个点这里写图片描述的损失函数 的公式:
这里写图片描述
当学习率较大,或者H在某些时候,f是有可能不降反升的。
因此,通过H算得保证f不升的学习率是必要的。以上公式最小化,可得最佳学习率:
这里写图片描述
取最佳学习率时
**这里写图片描述**
保证损失函数稳定下降。

同时,Hessian矩阵可以判断临界点是否是minmum点:
(1). 在某临界点,如果Hessian正定(所有特征值为正),则该临界点为局部(中文原版写的是“全局”怀疑是写错了)极小点。
(2). 在某临界点,如果Hessian负定(所有特征值为正),则该临界点为局部极小点。

牛顿法就是通过Hessian计算f(x)的二级泰勒展示来得到x临界点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值