尽管优化技术内容非常丰富,本节只给出一个极为简略的概述,主要为后续介绍相关算法做一铺垫。与统计基础不一样,机器学习的很多算法,从目标函数起就离不开统计知识,所以要给统计知识一个稍详细和有一定深度的介绍。优化算法在机器学习中往往是一个独立的环节,若一个机器学习算法需要使用通用的优化算法,则它是一个独立模块,往往不影响对机器学习核心内容的理解。也有一些与某类机器学习密切相关的专用优化算法,这些算法会在后续章节结合对应机器学习模型再做专门介绍。
最基本的优化问题可描述为,对于函数 g ( w )求 w 的一个值并记为 w * ,使得函数取得最小值 g ( w * ),这里设函数的输出是标量值,自变量是向量 w 。最小化的数学形式描述为
对于复杂函数 g ( w ),难以得到解析解,可采用迭代优化算法求解。定义 g ( w )对向量 w 的梯度为
这里用 w k 表示参数向量 w 的各分量。在最优解的点上梯度为0,即
最优解满足式(2.8.3),但不是满足梯度为0的都是最优解,如图2.8.1的一维变量情况,还有一个拐点也满足梯度为0。
为了迭代求最小值,假设给出一个初始猜测值 w (0) ,这里用上标的数字表示迭代次数,上标0表示初始值。在初始值附近将 g ( w )展开成一阶泰勒级数
图2.8.1 梯度下降示意图
由图2.8.1的一维情况可见, f ( w )是所示的线段,在 w (0) 位置与 g ( w )重合且梯度相等。若寻找最优点需要沿负梯度的方向在 f ( w )移动,相应 w 的值更新为
α 1 是迭代步长参数,在机器学习的训练中称为学习率。接下来以 w (1) 为起始重复以上过程,这个过程不断重复,形成迭代解序列 w (0) , w (1) ,…, w ( k ) ,…,迭代的通式写为
式(2.8.6)的迭代算法称为梯度下降算法,这是解式(2.8.1)问题的最基本优化算法。尽管简单,梯度下降算法及其改进形式仍是目前机器学习中使用最广泛的优化算法。
梯度下降是求最小值问题的解,若求 w * 使函数达到最大值,只需修改为按梯度上升即可,故最大化问题的梯度解为梯度上升算法,仅在式(2.8.6)梯度前改变符号,即
梯度下降和梯度上升总称为梯度法。
当函数 g ( w )存在多个极小值、极大值和鞍点时,以上优化算法无法保证得到全局最优解,收敛结果与初始值相关,可随机多次选择初始值进行迭代。但若函数 g ( w )是凸函数,则以上算法收敛到全局最小点。凸函数的定义如下。
定义2.8.1(凸函数) 一个函数 g ( s ):Ω→ R ,Ω表示定义域,任取 s 1 , s 2 ∈Ω,对于任意 α ∈[0,1],若满足
则称该函数为凸函数。
对于一个凸函数 g ( s ),若 s 是 M 维向量,则集合{( s , y )| y ≥ J ( s )}是 M +1维空间的凸集。如下给出一个函数是凸函数的基本判断条件。
定理2.8.1 一个函数 g ( s ):Ω→ R ,对于任取 s 1 , s 2 ∈Ω,当且仅当
或当且仅当Hessian矩阵∇ 2 g ( s )是半正定的,则函数 g ( s )是凸的(这里∇ 2 表示二阶梯度)。
在优化问题中,若目标函数 g ( s )是严格凸函数,优化问题可以保证得到全局最小值。对于非凸的目标函数,优化问题的解要困难得多。