数值优化算法【4】-- Adam 方法
数值优化算法【4】– Adam 方法 RMSProp 和 AdaDelta 均采用加权移动平均的方法,对二阶动量做了窗口限制,使得学习效率得到明显提升; AdaDelta 方法进一步对学习率的分子项做了自动累积计算,无需人工指定全局学习率超参数(实际情况表明, AdaDelta 容易陷入局部最优解的陷阱)。 Adam 算法则采用了另外一种思路,其没有将思路放在自动计算学习率上,而是考虑将一阶动量引入学习率的更新,使学习过程更优。 1、 算法介绍 Adam 算法使用了一阶动量变量 $\boldsymbol{v}_t$ 和 RMSProp 算法中的二阶动量变量 $\boldsymbol{G}_t$ ,并在时间步0将其初值置为0。 给定超参数 $0 \leq \beta_1 < 1$ (算法作者建议设为 $0.9$ ),时间步 $t$ 的一阶动量变量 $\boldsymbol{v}_t$ 为梯度 $\boldsymbol{g}t$ 与 $v{t-1}$ 加权移动平均:$$\boldsymbol{v}t \leftarrow \beta_1...
数值优化算法【3】-- 动量法及其变种
数值优化算法【3】– 动量法及其变种一、问题的提出上节提到的批量梯度下降(BGD)、随机梯度下降(SGD)和小批量梯度下降法(MBGD),基础完全一致,区别仅在于批大小(batch size)的不同。虽然由于批大小不同带来了很多不同的特性,但它们均避免不了一个问题,即模型参数的更新方向依赖于当前batch计算出的梯度,这可能会带来一些问题。 让我们考虑一个输入为二维向量 $\boldsymbol{x} = [x_1, x_2]^\top$ 、输出为标量的目标函数$f(\boldsymbol{x})=0.1x_1^2+2x_2^2$。 下图为基于该目标函数的梯度下降,学习率为 $0.4$...
数值优化算法【2】-- 梯度下降算法
数值优化算法【2】– 梯度下降算法本节介绍梯度下降(gradient descent)的工作原理。虽然梯度下降在深度学习中很少被直接使用,但理解梯度的意义,以及沿着梯度反方向更新模型参数以降低目标函数值的原理,是后面各种优化方法的基础。 梯度下降法又被称为最速下降法,是获得数值解的一种常用算法,主要分为批量梯度下降(Batch Gradient Descent)、随机梯度下降(Stochastic Gradient Descent)以及小批量梯度下降(Mini-Batch Gradient Descent)三种不同的形式。 一、理解梯度下降(1)一维梯度下降先以简单的一维梯度下降为例,解释梯度下降算法可能降低目标函数值的原因。 假设连续可导的函数 $ J: \mathbb{R} \rightarrow \mathbb{R} $ 的输入和输出都是标量。给定绝对值足够小的数 $ \epsilon $ ,根据泰勒展开公式,得到以下的近似:$$J(x + \epsilon) \approx J(x) + \epsilon J’(x)...
数值优化算法【1】-- 常用优化算法
数值优化算法【1】– 常用优化算法一、解析解与数值解的概念很多机器学习和深度学习方法,都是在样本的支持下,利用导数或偏微分寻求方程的解,而传统数学方法中,会用到解析和数值两种解法。 (1)解析解法: 就是从小到大教科书里讲的,利用严格公式推导获得解的解析表达式,输入自变量的值就可以求出因变量。 如果一个方程或者方程组存在的某些解,是由有限次常见运算(如:分式、三角函数、指数、对数甚至无限级数等)的组合给出的形式,则称该方程存在解析解。 例如:对于线性回归模型,采用最小二乘法可以直接得出解析解,$x=(A^TA)^{-1}A^Tb,\quad...