机器学习(三)Loss函数优化:梯度下降法
2016-08-09 15:21
267 查看
线性回归,逻辑回归,Softmax分类器,LinearSVM等算法都能够简单的分解成scoreFunction的设计与LossFunction的求解两部分,具体分解如下表所示:
本文主要讲述传统机器学习算法损失函数L=f(W,X)关于权值W的优化问题
类似的优化算法还有共轭梯度法,牛顿法,拟牛顿法等一系列迭代优化算法,这些新的算法虽然原理上很快,但是都有一些适用范围,没有梯度下降法普适性。比如牛顿法在处理具有奇点的目标函数时可能无法收敛等。
梯度下降法的核心思想:W=W−α∗∂f(W,X)∂W|Xi对每一个样本都执行一次梯度计算,然后朝下降最快的地方更新权值
奇点问题
由于采用的Loss函数可能会有一些奇点,导致在某些点上f(W,X)的倒数不存在,梯度无法计算的情况,这时可以用次梯度(subgradient)来代替梯度,仍然可以进行迭代优化。
次梯度的概念如下:
c称为f(x)在x0处的次梯度,如果∃δ,对于∀x∈(x0−δ,x0+δ),都有f(x)−f(x0)>=c(x−x0)
由定义可知当该点可导时,次梯度即为该点的导数,否则则为一个闭区间[f′(x0−),f′(x0+)]或[f′(x0+),f′(x0−)]
根据梯度的计算方式不同,梯度下降法有多种变体:
损失函数:J(θ)=12m∑i=1m(hθ(x(i))−y(i))2
训练算法为:
repeate{θ:=θ−α1m∑i=1m(hθ(x(i))−y(i))x(i)j}
即先计算损失函数在每个样本处的梯度,然后将所有样本的平均梯度作为整个训练集的梯度,进而来更新权值
好处:全数据集的梯度平均值能够更好的代表样本总体
坏处:数据集很大时一次处理完所有样本不切实际
将样本总体Ω分为k个随机采样的mini−batch,即Ω={b1,b2,...bk},其中每个batch的样本数为m
则一个epoch的训练算法如下:for each bi in Ωθ:=θ−α1m∑i=1m(hθ(x(i))−y(i))x(i),∀x(i)∈bi
好处:
(1)每次处理多个样本,将这种梯度计算和更新的操作采用向量式操作,计算更快。
(2)内存利用率高
(3)每次只利用小样本集合代替全体样本,收敛更快
(4)对于一个epoch而言,采用多个batch而非整个总体进行迭代,能够一定程度避免局部极小值
坏处:
(1)样本子集并不能很正确的代表样本总体
(2)由于代表性不足,会造成整体梯度更新的效率降低,如8个batch更新的梯度方向为0.1,2个batch_更新的梯度为-0.4,则一个epoch下来,梯度相当于没有更新
对于目前的大数据集训练,一般batch_size的选取原则就是在内存的限制下越大越好,越大子集越能代表样本整体。一般选取32,64,128,256这几种参数。选取为2的幂次原因是:向量化代码对于输入大小为2的幂次的数据加速更快
但batch_size过大也可能会导致迭代完一个epoch,需要更少的迭代次数,进而导致要达到相同的精度需要的epoch个数更多~~
好处:时效性非常好,能够在线学习
坏处:单个样本不能代表样本总体的分布,利用不同样本进行的梯度更新可能会相互抵消,进而会造成损失函数在整个样本集上不能收敛
ClassifierName | ScoreFunction | LossFunction |
---|---|---|
LinearSVM | s=WTX | L=max(0,1−s) |
LinearRegression | s=WTX | L=(s−label)2 |
LogisticRegression | s=WTX | p=11+e−s;L=label∙log(p)+(1−label)∙log(1−p) |
SoftmaxClassifier | s=WTX | pk=esk∑Ki=1esi;L=log(plabel) |
梯度下降法思想
梯度下降法及其各种变体为目前机器学习(包括神经网络)中使用最多的优化算法。其不仅能够有效处理凸函数优化问题,还能够对非常复杂的非凸函数:神经网络,进行优化。类似的优化算法还有共轭梯度法,牛顿法,拟牛顿法等一系列迭代优化算法,这些新的算法虽然原理上很快,但是都有一些适用范围,没有梯度下降法普适性。比如牛顿法在处理具有奇点的目标函数时可能无法收敛等。
梯度下降法的核心思想:W=W−α∗∂f(W,X)∂W|Xi对每一个样本都执行一次梯度计算,然后朝下降最快的地方更新权值
奇点问题
由于采用的Loss函数可能会有一些奇点,导致在某些点上f(W,X)的倒数不存在,梯度无法计算的情况,这时可以用次梯度(subgradient)来代替梯度,仍然可以进行迭代优化。
次梯度的概念如下:
c称为f(x)在x0处的次梯度,如果∃δ,对于∀x∈(x0−δ,x0+δ),都有f(x)−f(x0)>=c(x−x0)
由定义可知当该点可导时,次梯度即为该点的导数,否则则为一个闭区间[f′(x0−),f′(x0+)]或[f′(x0+),f′(x0−)]
根据梯度的计算方式不同,梯度下降法有多种变体:
批梯度下降(Batch Gradient Descent)
每次迭代的梯度方向由所有样本共同决定。损失函数:J(θ)=12m∑i=1m(hθ(x(i))−y(i))2
训练算法为:
repeate{θ:=θ−α1m∑i=1m(hθ(x(i))−y(i))x(i)j}
即先计算损失函数在每个样本处的梯度,然后将所有样本的平均梯度作为整个训练集的梯度,进而来更新权值
好处:全数据集的梯度平均值能够更好的代表样本总体
坏处:数据集很大时一次处理完所有样本不切实际
迷你批梯度下降(Mini-batch Gradient Descent)
为了弥补Batch Gradient Descent法在处理大数据时的不足,mini-batch Gradient Descent被提了出来。其主要思想是:用训练集的较小子集来代表样本总体进行梯度更新。如果样本集分布充分的话,对其进行随机采样,子集的分布律与样本总体的差别不大,这样既能更快的更新。将样本总体Ω分为k个随机采样的mini−batch,即Ω={b1,b2,...bk},其中每个batch的样本数为m
则一个epoch的训练算法如下:for each bi in Ωθ:=θ−α1m∑i=1m(hθ(x(i))−y(i))x(i),∀x(i)∈bi
好处:
(1)每次处理多个样本,将这种梯度计算和更新的操作采用向量式操作,计算更快。
(2)内存利用率高
(3)每次只利用小样本集合代替全体样本,收敛更快
(4)对于一个epoch而言,采用多个batch而非整个总体进行迭代,能够一定程度避免局部极小值
坏处:
(1)样本子集并不能很正确的代表样本总体
(2)由于代表性不足,会造成整体梯度更新的效率降低,如8个batch更新的梯度方向为0.1,2个batch_更新的梯度为-0.4,则一个epoch下来,梯度相当于没有更新
对于目前的大数据集训练,一般batch_size的选取原则就是在内存的限制下越大越好,越大子集越能代表样本整体。一般选取32,64,128,256这几种参数。选取为2的幂次原因是:向量化代码对于输入大小为2的幂次的数据加速更快
但batch_size过大也可能会导致迭代完一个epoch,需要更少的迭代次数,进而导致要达到相同的精度需要的epoch个数更多~~
随机梯度下降(Stochastic Gradient Descent)
batch_size为1的mini-batch Gradient Descent即叫做SGD,也叫做Online Learning好处:时效性非常好,能够在线学习
坏处:单个样本不能代表样本总体的分布,利用不同样本进行的梯度更新可能会相互抵消,进而会造成损失函数在整个样本集上不能收敛
相关文章推荐
- 机器学习第二课:无约束优化问题(局部极小值的几种解法)(梯度下降法与拟牛顿法)
- 【机器学习入门】Andrew NG《Machine Learning》课程笔记之二 :基本概念、代价函数、梯度下降和线性回归
- loss函数和梯度下降法
- 理解梯度下降在机器学习模型优化中的应用
- 机器学习的训练算法(优化方法)汇总——梯度下降法及其改进算法
- 机器学习基础(五十九)—— 高级优化算法(梯度下降、L-BFGS、共轭梯度)
- 深度学习优化函数详解(1)-- Gradient Descent 梯度下降法
- 机器学习常用优化算法--梯度下降,牛顿法,共轭梯度法,拉格朗日乘数法
- 深度学习优化函数详解(1)-- Gradient Descent 梯度下降法
- 机器学习07-逻辑回归-代价函数与梯度下降的优化
- 【机器学习详解】解无约束优化问题:梯度下降、牛顿法、拟牛顿法
- 机器学习(六)梯度下降的优化算法和matlab/octave中的应用
- 机器学习-梯度下降III(为何梯度下降能最小化代价函数)
- 机器学习入门:线性回归及梯度下降
- 机器学习-斯坦福:学习笔记2-监督学习应用与梯度下降
- Stanford机器学习课程笔记——单变量线性回归和梯度下降法
- 机器学习之梯度下降法---梯度下降法分析
- 机器学习入门:线性回归及梯度下降
- 机器学习基础知识-回归与梯度下降法
- 机器学习(回归、梯度下降、最小二乘法)