最优化算法在机器学习中扮演着重要的角色,很多的机器学习算法最终都会归结为如下的最优化问题
minfJ(x):=λΩ(f)+Remp(f) 以上就是结构风险最小化,其中 Remp(f) 是期望风险。 Remp(f):=1m∑i=1ml(f(xi),yi) 其中 xi 是训练样本, yi 是相关的label, l 是损失函数。 以上优化问题需要通过相应的最优化算法去求,下面会介绍如下的最优化算法,梯度下降算法,随机梯度下降,镜像下降算法,牛顿方法,拟牛顿方法,并分析算法的收敛性。梯度下降算法是机器学习里面最常使用的优化算法,主要是应用在高维平滑凸函数,假如目标函数 J:ℝn→ℝ ,梯度下降的基本思想就是在 t 次迭代给定一个wt,计算梯度 ∇J(wt) ,且
wt+1=wt−ηt∇J(wt) 其中 ηt 是一个更新步长,有得到梯度方向时通常可以使用下面两种线性搜索的方法去得到步长。因为 J(wt−ηt∇J(wt)) 是一个关于 ηt 的一维凸函数,所以我们可以用一维搜索的方式如下:
ηt=argminηJ(wt−η∇J(wt))确定线性搜索的方式比较低效,我们可以通过计算每一个步长下是不是能够使得目标函数减小,一种比较常用的充分减少的条件是wolfe conditions
J(wt+1)≤J(wt)+c1ηt⟨∇J(wt),wt+1−wt⟩ ⟨∇J(wt),wt+1−wt⟩≥c2⟨∇J(wt),wt+1−wt⟩ 且 0<c1<c2<1假设 J 是一个梯度Lipschitz Continuous连续,且Lipschitz Continuous常数为L,假设梯度下降的固定长度为ηt=1L
J(wt+1)≤J(wt)+⟨∇J(wt),wt+1−wt⟩+1L∥∥wt+1−wt∥∥ =J(wt)−ηt∥∥∇J(wt)∥∥2+Lη2t2∥∥∇J(wt)∥∥2 当 ηt=1L 时, ∥∥∇J(wt)∥∥≤ϵ 至多迭代 O(1ϵ2) 证明:当 ηt=1L 时,代入上式可得 12L∥∥∇J(wt)∥∥2≤J(wt)−J(wt+1) 累加上式 12L∑t=0T∥∥∇J(wt)∥∥2≤J(w0)−J(wT)≤J(w0)−J(w∗) 当 t→∞ 时, ∥∥∇J(wt)∥∥→0 ,上式可以变型成下面式子 ∥∥∇J(wT)∥∥≤2L(J(w0)−J(w∗))T+1‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾√ 即 2L(J(w0)−J(w∗))T+1‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾√=ϵ 当 J 是强凸函数,强凸系数是σ令 c=1−σL ,则 J(wt)−J(w∗)≤ϵ 至多 log((J(w0)−J(w∗))/ϵ)log(1/c) 次迭代。 证明:由于 J 是强凸函数,所以J(wt)≤J(w∗) 12σ∥∥∇J(wt)∥∥2即 ∥∥∇J(wt)∥∥2≥2σ(J(wt+1)−J(w∗)) 又因为 12L∥∥∇J(wt)∥∥2≤J(wt)−J(wt+1) 综合上两式得 c(J(wt)−J(w∗))≥J(wt+1−J(w∗)) 递归求解得 cT(J(w0)−J(w∗))≥J(wT)−J(w∗) 解得如下 ϵ=cT(J(w0)−J(w∗)) 这里当目标函数为强凸时,梯度下降算法收敛速度是 O(log(1/ϵ)) ,但是还依赖于 log(1/c) ,而 log(1/c)≈σL ,当 σ≈L 梯度下降的收敛速度最快, σ≪L 梯度下降收敛速度最慢。