文章目录
2.11 损失函数
2.11.1 什么是损失函数
损失函数(Loss Function)又叫做误差函数,用来衡量算法的运行情况,估量模型的预测值与真实值的不一致程度,是一个非负实值函数,通常使用 L ( Y , f ( x ) ) L(Y, f(x)) L(Y,f(x))来表示。损失函数越小,模型的鲁棒性就越好。损失函数是经验风险函数的核心部分,也是结构风险函数重要组成部分。
2.11.2 常见的损失函数
机器学习通过对算法中的目标函数进行不断求解优化,得到最终想要的结果。分类和回归问题中,通常使用损失函数或代价函数作为目标函数。
损失函数用来评价预测值和真实值不一样的程度。通常损失函数越好,模型的性能也越好。
损失函数可分为经验风险损失函数和结构风险损失函数。经验风险损失函数指预测结果和实际结果的差别,结构风险损失函数是在经验风险损失函数上加上正则项。
下面介绍常用的损失函数:
(1)0-1损失函数
如果预测值和目标值相等,值为0,如果不相等,值为1。
L
(
Y
,
f
(
x
)
)
=
{
1
,
Y
≠
f
(
x
)
0
,
Y
=
f
(
x
)
L(Y, f(x)) = \begin{cases} 1,& Y\ne f(x)\\ 0,& Y = f(x) \end{cases}
L(Y,f(x))={1,0,Y=f(x)Y=f(x)
一般的在实际使用中,相等的条件过于严格,可适当放宽条件:
L ( Y , f ( x ) ) = { 1 , ∣ Y − f ( x ) ∣ ⩾ T 0 , ∣ Y − f ( x ) ∣ < T L(Y, f(x)) = \begin{cases} 1,& |Y-f(x)|\geqslant T\\ 0,& |Y-f(x)|< T \end{cases} L(Y,f(x))={1,0,∣Y−f(x)∣⩾T∣Y−f(x)∣<T
(2)绝对值损失函数
和0-1损失函数相似,绝对值损失函数表示为:
L
(
Y
,
f
(
x
)
)
=
∣
Y
−
f
(
x
)
∣
L(Y, f(x)) = |Y-f(x)|
L(Y,f(x))=∣Y−f(x)∣
(3)平方损失函数
L
(
Y
,
f
(
x
)
)
=
∑
N
(
Y
−
f
(
x
)
)
2
L(Y, f(x)) = \sum_N{(Y-f(x))}^2
L(Y,f(x))=N∑(Y−f(x))2
这点可从最小二乘法和欧几里得距离角度理解。最小二乘法的原理是,最优拟合曲线应该使所有点到回归直线的距离和最小。
(4)对数损失函数
L
(
Y
,
P
(
Y
∣
X
)
)
=
−
log
P
(
Y
∣
X
)
=
−
1
N
∑
i
=
1
N
∑
j
=
1
M
y
i
j
l
o
g
(
p
i
j
)
L(Y, P(Y|X)) = -\log{P(Y|X)}=-\frac{1}{N}\sum_{i=1}^N\sum_{j=1}^M y_{ij}log(p_{ij})
L(Y,P(Y∣X))=−logP(Y∣X)=−N1i=1∑Nj=1∑Myijlog(pij)
其中, Y 为输出变量, X为输入变量, L 为损失函数. N为输入样本量, M为可能的类别数, y i j y_{ij} yij 是一个二值指标, 表示类别 j 是否是输入实例 xi 的真实类别. p i j p_{ij} pij 为模型或分类器预测输入实例 xi 属于类别 j 的概率.
常见的逻辑回归使用的就是对数损失函数,有很多人认为逻辑回归的损失函数是平方损失,其实不然。逻辑回归它假设样本服从伯努利分布(0-1分布),进而求得满足该分布的似然函数,接着取对数求极值等。逻辑回归推导出的经验风险函数是最小化负的似然函数,从损失函数的角度看,就是对数损失函数。形式上等价于二分类的交叉熵损失函数。
(6)指数损失函数
指数损失函数的标准形式为:
L
(
Y
,
f
(
x
)
)
=
exp
(
−
Y
f
(
x
)
)
L(Y, f(x)) = \exp(-Yf(x))
L(Y,f(x))=exp(−Yf(x))
例如AdaBoost就是以指数损失函数为损失函数。
(7)Hinge损失函数
Hinge损失函数的标准形式如下:
L
(
y
)
=
max
(
0
,
1
−
t
y
)
L(y) = \max{(0, 1-ty)}
L(y)=max(0,1−ty)
统一的形式:
L
(
Y
,
f
(
x
)
)
=
max
(
0
,
Y
f
(
x
)
)
L(Y, f(x)) = \max{(0, Yf(x))}
L(Y,f(x))=max(0,Yf(x))
其中y是预测值,范围为(-1,1),t为目标值,其为-1或1。
在线性支持向量机中,最优化问题可等价于
w , b min ∑ i = 1 N ( 1 − y i ( w x i + b ) ) + λ ∥ w ∥ 2 \underset{\min}{w,b}\sum_{i=1}^N (1-y_i(wx_i+b))+\lambda\Vert w\Vert ^2 minw,bi=1∑N(1−yi(wxi+b))+λ∥w∥2
上式相似于下式
1 m ∑ i = 1 N l ( w x i + b y i ) + ∥ w ∥ 2 \frac{1}{m}\sum_{i=1}^{N}l(wx_i+by_i) + \Vert w\Vert ^2 m1i=1∑Nl(wxi+byi)+∥w∥2
其中 l ( w x i + b y i ) l(wx_i+by_i) l(wxi+byi)是Hinge损失函数, ∥ w ∥ 2 \Vert w\Vert ^2 ∥w∥2可看做为正则化项。
2.11.3 逻辑回归为什么使用对数损失函数
假设逻辑回归模型
P
(
y
=
1
∣
x
;
θ
)
=
1
1
+
e
−
θ
T
x
P(y=1|x;\theta)=\frac{1}{1+e^{-\theta^{T}x}}
P(y=1∣x;θ)=1+e−θTx1
假设逻辑回归模型的概率分布是伯努利分布,其概率质量函数为:
P
(
X
=
n
)
=
{
1
−
p
,
n
=
0
p
,
n
=
1
P(X=n)= \begin{cases} 1-p, n=0\\ p,n=1 \end{cases}
P(X=n)={1−p,n=0p,n=1
其似然函数为:
L
(
θ
)
=
∏
i
=
1
m
P
(
y
=
1
∣
x
i
)
y
i
P
(
y
=
0
∣
x
i
)
1
−
y
i
L(\theta)=\prod_{i=1}^{m} P(y=1|x_i)^{y_i}P(y=0|x_i)^{1-y_i}
L(θ)=i=1∏mP(y=1∣xi)yiP(y=0∣xi)1−yi
对数似然函数为:
ln
L
(
θ
)
=
∑
i
=
1
m
[
y
i
ln
P
(
y
=
1
∣
x
i
)
+
(
1
−
y
i
)
ln
P
(
y
=
0
∣
x
i
)
]
=
∑
i
=
1
m
[
y
i
ln
P
(
y
=
1
∣
x
i
)
+
(
1
−
y
i
)
ln
(
1
−
P
(
y
=
1
∣
x
i
)
)
]
\ln L(\theta)=\sum_{i=1}^{m}[y_i\ln{P(y=1|x_i)}+(1-y_i)\ln{P(y=0|x_i)}]\\ =\sum_{i=1}^m[y_i\ln{P(y=1|x_i)}+(1-y_i)\ln(1-P(y=1|x_i))]
lnL(θ)=i=1∑m[yilnP(y=1∣xi)+(1−yi)lnP(y=0∣xi)]=i=1∑m[yilnP(y=1∣xi)+(1−yi)ln(1−P(y=1∣xi))]
对数函数在单个数据点上的定义为:
c
o
s
t
(
y
,
p
(
y
∣
x
)
)
=
−
y
ln
p
(
y
∣
x
)
−
(
1
−
y
)
ln
(
1
−
p
(
y
∣
x
)
)
cost(y,p(y|x))=-y\ln{p(y|x)-(1-y)\ln(1-p(y|x))}
cost(y,p(y∣x))=−ylnp(y∣x)−(1−y)ln(1−p(y∣x))
则全局样本损失函数为:
c
o
s
t
(
y
,
p
(
y
∣
x
)
)
=
−
∑
i
=
1
m
[
y
i
ln
p
(
y
i
∣
x
i
)
+
(
1
−
y
i
)
ln
(
1
−
p
(
y
i
∣
x
i
)
)
]
cost(y,p(y|x)) = -\sum_{i=1}^m[y_i\ln p(y_i|x_i)+(1-y_i)\ln(1-p(y_i|x_i))]
cost(y,p(y∣x))=−i=1∑m[yilnp(yi∣xi)+(1−yi)ln(1−p(yi∣xi))]
由此可看出,对数损失函数与极大似然估计的对数似然函数本质上是相同的。所以逻辑回归直接采用对数损失函数。
2.11.4 对数损失函数是如何度量损失的
例如,在高斯分布中,我们需要确定均值和标准差。
如何确定这两个参数?最大似然估计是比较常用的方法。最大似然的目标是找到一些参数值,这些参数值对应的分布可以最大化观测到数据的概率。
因为需要计算观测到所有数据的全概率,即所有观测到的数据点的联合概率。现考虑如下简化情况:
(1)假设观测到每个数据点的概率和其他数据点的概率是独立的。
(2)取自然对数。
假设观测到单个数据点
x
i
(
i
=
1
,
2
,
.
.
.
n
)
x_i(i=1,2,...n)
xi(i=1,2,...n)的概率为:
P
(
x
i
;
μ
,
σ
)
=
1
σ
2
π
exp
(
−
(
x
i
−
μ
)
2
2
σ
2
)
P(x_i;\mu,\sigma)=\frac{1}{\sigma \sqrt{2\pi}}\exp \left( - \frac{(x_i-\mu)^2}{2\sigma^2} \right)
P(xi;μ,σ)=σ2π1exp(−2σ2(xi−μ)2)
(3)其联合概率为:
P
(
x
1
,
x
2
,
.
.
.
,
x
n
;
μ
,
σ
)
=
1
σ
2
π
exp
(
−
(
x
1
−
μ
)
2
2
σ
2
)
×
1
σ
2
π
exp
(
−
(
x
2
−
μ
)
2
2
σ
2
)
×
.
.
.
×
1
σ
2
π
exp
(
−
(
x
n
−
μ
)
2
2
σ
2
)
P(x_1,x_2,...,x_n;\mu,\sigma)=\frac{1}{\sigma \sqrt{2\pi}}\exp \left( - \frac{(x_1-\mu)^2}{2\sigma^2} \right) \\ \times \frac{1}{\sigma \sqrt{2\pi}}\exp \left( - \frac{(x_2-\mu)^2}{2\sigma^2} \right) \times ... \times \frac{1}{\sigma \sqrt{2\pi}}\exp \left( - \frac{(x_n-\mu)^2}{2\sigma^2} \right)
P(x1,x2,...,xn;μ,σ)=σ2π1exp(−2σ2(x1−μ)2)×σ2π1exp(−2σ2(x2−μ)2)×...×σ2π1exp(−2σ2(xn−μ)2)
对上式取自然对数,可得:
ln
(
P
(
x
1
,
x
2
,
.
.
.
x
n
;
μ
,
σ
)
)
=
ln
(
1
σ
2
π
)
−
(
x
1
−
μ
)
2
2
σ
2
+
ln
(
1
σ
2
π
)
−
(
x
2
−
μ
)
2
2
σ
2
+
.
.
.
+
ln
(
1
σ
2
π
)
−
(
x
n
−
μ
)
2
2
σ
2
\ln(P(x_1,x_2,...x_n;\mu,\sigma))= \ln \left(\frac{1}{\sigma \sqrt{2\pi}} \right) - \frac{(x_1-\mu)^2}{2\sigma^2} \\ + \ln \left( \frac{1}{\sigma \sqrt{2\pi}} \right) - \frac{(x_2-\mu)^2}{2\sigma^2} +...+ \ln \left( \frac{1}{\sigma \sqrt{2\pi}} \right) - \frac{(x_n-\mu)^2}{2\sigma^2}
ln(P(x1,x2,...xn;μ,σ))=ln(σ2π1)−2σ2(x1−μ)2+ln(σ2π1)−2σ2(x2−μ)2+...+ln(σ2π1)−2σ2(xn−μ)2
根据对数定律,上式可以化简为:
ln
(
P
(
x
1
,
x
2
,
.
.
.
x
n
;
μ
,
σ
)
)
=
−
n
ln
(
σ
)
−
n
2
ln
(
2
π
)
−
1
2
σ
2
[
(
x
1
−
μ
)
2
+
(
x
2
−
μ
)
2
+
.
.
.
+
(
x
n
−
μ
)
2
]
\ln(P(x_1,x_2,...x_n;\mu,\sigma))=-n\ln(\sigma)-\frac{n}{2} \ln(2\pi)\\ -\frac{1}{2\sigma^2}[(x_1-\mu)^2+(x_2-\mu)^2+...+(x_n-\mu)^2]
ln(P(x1,x2,...xn;μ,σ))=−nln(σ)−2nln(2π)−2σ21[(x1−μ)2+(x2−μ)2+...+(xn−μ)2]
然后求导为:
∂
ln
(
P
(
x
1
,
x
2
,
.
.
.
,
x
n
;
μ
,
σ
)
)
∂
μ
=
n
σ
2
[
μ
−
(
x
1
+
x
2
+
.
.
.
+
x
n
)
]
\frac{\partial\ln(P(x_1,x_2,...,x_n;\mu,\sigma))}{\partial\mu}= \frac{n}{\sigma^2}[\mu - (x_1+x_2+...+x_n)]
∂μ∂ln(P(x1,x2,...,xn;μ,σ))=σ2n[μ−(x1+x2+...+xn)]
上式左半部分为对数损失函数。损失函数越小越好,因此我们令等式左半的对数损失函数为0,可得:
μ
=
x
1
+
x
2
+
.
.
.
+
x
n
n
\mu=\frac{x_1+x_2+...+x_n}{n}
μ=nx1+x2+...+xn
同理,可计算
σ
\sigma
σ。
2.12 梯度下降
2.12.1 机器学习中为什么需要梯度下降
梯度下降是机器学习中常见优化算法之一,梯度下降法有以下几个作用:
(1)梯度下降是迭代法的一种,可以用于求解最小二乘问题。
(2)在求解机器学习算法的模型参数,即无约束优化问题时,主要有梯度下降法(Gradient Descent)和最小二乘法。
(3)在求解损失函数的最小值时,可以通过梯度下降法来一步步的迭代求解,得到最小化的损失函数和模型参数值。
(4)如果我们需要求解损失函数的最大值,可通过梯度上升法来迭代。梯度下降法和梯度上升法可相互转换。
(5)在机器学习中,梯度下降法主要有随机梯度下降法和批量梯度下降法。
2.12.2 梯度下降法缺点
梯度下降法缺点有以下几点:
(1)靠近极小值时收敛速度减慢。
(2)直线搜索时可能会产生一些问题。
(3)可能会“之字形”地下降。
梯度概念也有需注意的地方:
(1)梯度是一个向量,即有方向有大小。
(2)梯度的方向是最大方向导数的方向。
(3)梯度的值是最大方向导数的值。
2.12.3 梯度下降法直观理解
梯度下降法经典图示如下图2.7所示:
图2.7 梯度下降法经典图示
形象化举例,由上图2.7所示,假如最开始,我们在一座大山上的某处位置,因为到处都是陌生的,不知道下山的路,所以只能摸索着根据直觉,走一步算一步,在此过程中,每走到一个位置的时候,都会求解当前位置的梯度,沿着梯度的负方向,也就是当前最陡峭的位置向下走一步,然后继续求解当前位置梯度,向这一步所在位置沿着最陡峭最易下山的位置走一步。不断循环求梯度,就这样一步步地走下去,一直走到我们觉得已经到了山脚。当然这样走下去,有可能我们不能走到山脚,而是到了某一个局部的山势低处。
由此,从上面的解释可以看出,梯度下降不一定能够找到全局的最优解,有可能是一个局部的最优解。当然,如果损失函数是凸函数,梯度下降法得到的解就一定是全局最优解。
核心思想归纳:
(1)初始化参数,随机选取取值范围内的任意数;
(2)迭代操作:
a)计算当前梯度;
b)修改新的变量;
c)计算朝最陡的下坡方向走一步;
d)判断是否需要终止,如否,返回a);
(3)得到全局最优解或者接近全局最优解。
2.12.4 梯度下降法算法描述
梯度下降法算法步骤如下:
(1)确定优化模型的假设函数及损失函数。
举例,对于线性回归,假设函数为:
h
θ
(
x
1
,
x
2
,
.
.
.
,
x
n
)
=
θ
0
+
θ
1
x
1
+
.
.
.
+
θ
n
x
n
h_\theta(x_1,x_2,...,x_n)=\theta_0+\theta_1x_1+...+\theta_nx_n
hθ(x1,x2,...,xn)=θ0+θ1x1+...+θnxn
其中,
θ
i
,
x
i
(
i
=
0
,
1
,
2
,
.
.
.
,
n
)
\theta_i,x_i(i=0,1,2,...,n)
θi,xi(i=0,1,2,...,n)分别为模型参数、每个样本的特征值。
对于假设函数,损失函数为:
J
(
θ
0
,
θ
1
,
.
.
.
,
θ
n
)
=
1
2
m
∑
j
=
0
m
(
h
θ
(
x
0
(
j
)
,
x
1
(
j
)
,
.
.
.
,
x
n
(
j
)
)
−
y
j
)
2
J(\theta_0,\theta_1,...,\theta_n)=\frac{1}{2m}\sum^{m}_{j=0}(h_\theta (x^{(j)}_0 ,x^{(j)}_1,...,x^{(j)}_n)-y_j)^2
J(θ0,θ1,...,θn)=2m1j=0∑m(hθ(x0(j),x1(j),...,xn(j))−yj)2
(2)相关参数初始化。
主要初始化
θ
i
{\theta}_i
θi、算法迭代步长
α
{\alpha}
α、终止距离
ζ
{\zeta}
ζ。初始化时可以根据经验初始化,即
θ
{\theta}
θ初始化为0,步长
α
{\alpha}
α初始化为1。当前步长记为
φ
i
{\varphi}_i
φi。当然,也可随机初始化。
(3)迭代计算。
1)计算当前位置时损失函数的梯度,对
θ
i
{\theta}_i
θi,其梯度表示为:
∂
∂
θ
i
J
(
θ
0
,
θ
1
,
.
.
.
,
θ
n
)
=
1
2
m
∑
j
=
0
m
(
h
θ
(
x
0
(
j
)
,
x
1
(
j
)
,
.
.
.
,
x
n
(
j
)
)
−
y
j
)
2
\frac{\partial}{\partial \theta_i}J({\theta}_0,{\theta}_1,...,{\theta}_n)=\frac{1}{2m}\sum^{m}_{j=0}(h_\theta (x^{(j)}_0 ,x^{(j)}_1,...,x^{(j)}_n)-y_j)^2
∂θi∂J(θ0,θ1,...,θn)=2m1j=0∑m(hθ(x0(j),x1(j),...,xn(j))−yj)2
2)计算当前位置下降的距离。
φ
i
=
α
∂
∂
θ
i
J
(
θ
0
,
θ
1
,
.
.
.
,
θ
n
)
{\varphi}_i={\alpha} \frac{\partial}{\partial \theta_i}J({\theta}_0,{\theta}_1,...,{\theta}_n)
φi=α∂θi∂J(θ0,θ1,...,θn)
3)判断是否终止。
确定是否所有
θ
i
{\theta}_i
θi梯度下降的距离
φ
i
{\varphi}_i
φi都小于终止距离
ζ
{\zeta}
ζ,如果都小于
ζ
{\zeta}
ζ,则算法终止,当然的值即为最终结果,否则进入下一步。
4)更新所有的
θ
i
{\theta}_i
θi,更新后的表达式为:
θ
i
=
θ
i
−
α
∂
∂
θ
i
J
(
θ
0
,
θ
1
,
.
.
.
,
θ
n
)
{\theta}_i={\theta}_i-\alpha \frac{\partial}{\partial \theta_i}J({\theta}_0,{\theta}_1,...,{\theta}_n)
θi=θi−α∂θi∂J(θ0,θ1,...,θn)
θ
i
=
θ
i
−
α
1
m
∑
j
=
0
m
(
h
θ
(
x
0
(
j
)
,
x
1
(
j
)
,
.
.
.
,
x
n
(
j
)
)
−
y
j
)
x
i
(
j
)
\theta_i=\theta_i - \alpha \frac{1}{m} \sum^{m}_{j=0}(h_\theta (x^{(j)}_0 ,x^{(j)}_1,...,x^{(j)}_n)-y_j)x^{(j)}_i
θi=θi−αm1j=0∑m(hθ(x0(j),x1(j),...,xn(j))−yj)xi(j)
5)令上式
x
0
(
j
)
=
1
x^{(j)}_0=1
x0(j)=1,更新完毕后转入1)。
由此,可看出,当前位置的梯度方向由所有样本决定,上式中
1
m
\frac{1}{m}
m1、
α
1
m
\alpha \frac{1}{m}
αm1 的目的是为了便于理解。
2.12.5 如何对梯度下降法进行调优
实际使用梯度下降法时,各项参数指标不能一步就达到理想状态,对梯度下降法调优主要体现在以下几个方面:
(1)算法迭代步长
α
\alpha
α选择。
在算法参数初始化时,有时根据经验将步长初始化为1。实际取值取决于数据样本。可以从大到小,多取一些值,分别运行算法看迭代效果,如果损失函数在变小,则取值有效。如果取值无效,说明要增大步长。但步长太大,有时会导致迭代速度过快,错过最优解。步长太小,迭代速度慢,算法运行时间长。
(2)参数的初始值选择。
初始值不同,获得的最小值也有可能不同,梯度下降有可能得到的是局部最小值。如果损失函数是凸函数,则一定是最优解。由于有局部最优解的风险,需要多次用不同初始值运行算法,关键损失函数的最小值,选择损失函数最小化的初值。
(3)标准化处理。
由于样本不同,特征取值范围也不同,导致迭代速度慢。为了减少特征取值的影响,可对特征数据标准化,使新期望为0,新方差为1,可节省算法运行时间。
2.12.6 随机梯度和批量梯度区别
随机梯度下降(SGD)和批量梯度下降(BGD)是两种主要梯度下降法,其目的是增加某些限制来加速运算求解。
下面通过介绍两种梯度下降法的求解思路,对其进行比较。
假设函数为:
h
θ
(
x
0
,
x
1
,
.
.
.
,
x
3
)
=
θ
0
x
0
+
θ
1
x
1
+
.
.
.
+
θ
n
x
n
h_\theta (x_0,x_1,...,x_3) = \theta_0 x_0 + \theta_1 x_1 + ... + \theta_n x_n
hθ(x0,x1,...,x3)=θ0x0+θ1x1+...+θnxn
损失函数为:
J
(
θ
0
,
θ
1
,
.
.
.
,
θ
n
)
=
1
2
m
∑
j
=
0
m
(
h
θ
(
x
0
j
,
x
1
j
,
.
.
.
,
x
n
j
)
−
y
j
)
2
J(\theta_0, \theta_1, ... , \theta_n) = \frac{1}{2m} \sum^{m}_{j=0}(h_\theta (x^{j}_0 ,x^{j}_1,...,x^{j}_n)-y^j)^2
J(θ0,θ1,...,θn)=2m1j=0∑m(hθ(x0j,x1j,...,xnj)−yj)2
其中,
m
m
m为样本个数,
j
j
j为参数个数。
1、 批量梯度下降的求解思路如下:
a) 得到每个$ \theta $对应的梯度:
∂
∂
θ
i
J
(
θ
0
,
θ
1
,
.
.
.
,
θ
n
)
=
1
m
∑
j
=
0
m
(
h
θ
(
x
0
j
,
x
1
j
,
.
.
.
,
x
n
j
)
−
y
j
)
x
i
j
\frac{\partial}{\partial \theta_i}J({\theta}_0,{\theta}_1,...,{\theta}_n)=\frac{1}{m}\sum^{m}_{j=0}(h_\theta (x^{j}_0 ,x^{j}_1,...,x^{j}_n)-y^j)x^{j}_i
∂θi∂J(θ0,θ1,...,θn)=m1j=0∑m(hθ(x0j,x1j,...,xnj)−yj)xij
b) 由于是求最小化风险函数,所以按每个参数 $ \theta $ 的梯度负方向更新 $ \theta_i $ :
θ
i
=
θ
i
−
1
m
∑
j
=
0
m
(
h
θ
(
x
0
j
,
x
1
j
,
.
.
.
,
x
n
j
)
−
y
j
)
x
i
j
\theta_i=\theta_i - \frac{1}{m} \sum^{m}_{j=0}(h_\theta (x^{j}_0 ,x^{j}_1,...,x^{j}_n)-y^j)x^{j}_i
θi=θi−m1j=0∑m(hθ(x0j,x1j,...,xnj)−yj)xij
c) 从上式可以注意到,它得到的虽然是一个全局最优解,但每迭代一步,都要用到训练集所有的数据,如果样本数据很大,这种方法迭代速度就很慢。
相比而言,随机梯度下降可避免这种问题。
2、随机梯度下降的求解思路如下:
a) 相比批量梯度下降对应所有的训练样本,随机梯度下降法中损失函数对应的是训练集中每个样本的粒度。
损失函数可以写成如下这种形式,
J
(
θ
0
,
θ
1
,
.
.
.
,
θ
n
)
=
1
m
∑
j
=
0
m
(
y
j
−
h
θ
(
x
0
j
,
x
1
j
,
.
.
.
,
x
n
j
)
)
2
=
1
m
∑
j
=
0
m
c
o
s
t
(
θ
,
(
x
j
,
y
j
)
)
J(\theta_0, \theta_1, ... , \theta_n) = \frac{1}{m} \sum^{m}_{j=0}(y^j - h_\theta (x^{j}_0 ,x^{j}_1,...,x^{j}_n))^2 = \frac{1}{m} \sum^{m}_{j=0} cost(\theta,(x^j,y^j))
J(θ0,θ1,...,θn)=m1j=0∑m(yj−hθ(x0j,x1j,...,xnj))2=m1j=0∑mcost(θ,(xj,yj))
b)对每个参数
θ
\theta
θ 按梯度方向更新
θ
\theta
θ:
θ
i
=
θ
i
+
(
y
j
−
h
θ
(
x
0
j
,
x
1
j
,
.
.
.
,
x
n
j
)
)
\theta_i = \theta_i + (y^j - h_\theta (x^{j}_0, x^{j}_1, ... ,x^{j}_n))
θi=θi+(yj−hθ(x0j,x1j,...,xnj))
c) 随机梯度下降是通过每个样本来迭代更新一次。
随机梯度下降伴随的一个问题是噪音较批量梯度下降要多,使得随机梯度下降并不是每次迭代都向着整体最优化方向。
小结:
随机梯度下降法、批量梯度下降法相对来说都比较极端,简单对比如下:
方法 | 特点 |
---|---|
批量梯度下降 | a)采用所有数据来梯度下降。 b)批量梯度下降法在样本量很大的时候,训练速度慢。 |
随机梯度下降 | a)随机梯度下降用一个样本来梯度下降。 b)训练速度很快。 c)随机梯度下降法仅仅用一个样本决定梯度方向,导致解有可能不是全局最优。 d)收敛速度来说,随机梯度下降法一次迭代一个样本,导致迭代方向变化很大,不能很快的收敛到局部最优解。 |
下面介绍能结合两种方法优点的小批量梯度下降法。
3、 小批量(Mini-Batch)梯度下降的求解思路如下
对于总数为
m
m
m个样本的数据,根据样本的数据,选取其中的
n
(
1
<
n
<
m
)
n(1< n< m)
n(1<n<m)个子样本来迭代。其参数
θ
\theta
θ按梯度方向更新
θ
i
\theta_i
θi公式如下:
θ
i
=
θ
i
−
α
∑
j
=
t
t
+
n
−
1
(
h
θ
(
x
0
j
,
x
1
j
,
.
.
.
,
x
n
j
)
−
y
j
)
x
i
j
\theta_i = \theta_i - \alpha \sum^{t+n-1}_{j=t} ( h_\theta (x^{j}_{0}, x^{j}_{1}, ... , x^{j}_{n} ) - y^j ) x^{j}_{i}
θi=θi−αj=t∑t+n−1(hθ(x0j,x1j,...,xnj)−yj)xij
2.12.7 各种梯度下降法性能比较
下表简单对比随机梯度下降(SGD)、批量梯度下降(BGD)、小批量梯度下降(Mini-batch GD)、和Online GD的区别:
BGD | SGD | Mini-batch GD | Online GD | |
---|---|---|---|---|
训练集 | 固定 | 固定 | 固定 | 实时更新 |
单次迭代样本数 | 整个训练集 | 单个样本 | 训练集的子集 | 根据具体算法定 |
算法复杂度 | 高 | 低 | 一般 | 低 |
时效性 | 低 | 一般 | 一般 | 高 |
收敛性 | 稳定 | 不稳定 | 较稳定 | 不稳定 |
BGD、SGD、Mini-batch GD,前面均已讨论过,这里介绍一下Online GD。
Online GD于Mini-batch GD/SGD的区别在于,所有训练数据只用一次,然后丢弃。这样做的优点在于可预测最终模型的变化趋势。
Online GD在互联网领域用的较多,比如搜索广告的点击率(CTR)预估模型,网民的点击行为会随着时间改变。用普通的BGD算法(每天更新一次)一方面耗时较长(需要对所有历史数据重新训练);另一方面,无法及时反馈用户的点击行为迁移。而Online GD算法可以实时的依据网民的点击行为进行迁移。
2.13 自然梯度法
2.13.1 为什么我们需要自然梯度
传统的梯度下降方法是在欧氏空间进行、并与时序过程结合的优化方法,但这样的更新过程无法度量由于参数变化引起的概率属性的变化(这一点也可以认为是传统梯度下降方法的缺点)。在如强化学习等很多应用领域关注模型输出的概率分布,优化过程常常需要在一定概率属性的约束下完成,这就需要自然梯度。
2.13.2 如何定义自然梯度
若度量模型参数变化引起的概率分布变化,常用的“距离”度量是KL散度(Kullback-Leibler divergence)。设模型概率分布为
p
(
x
;
θ
)
p(x;\theta)
p(x;θ),其与参数变动后的概率分布间的KL散度为:
D
K
L
(
p
(
x
;
θ
)
∣
∣
p
(
x
;
θ
+
δ
θ
)
)
=
∫
p
(
x
;
θ
)
l
o
g
p
(
x
;
θ
)
p
(
x
;
θ
+
δ
θ
)
d
x
D_{KL}(p(x;\theta)||p(x;\theta+\delta\theta))=\int p(x;\theta)log\frac {p(x;\theta)}{p(x;\theta+\delta\theta)}dx
DKL(p(x;θ)∣∣p(x;θ+δθ))=∫p(x;θ)logp(x;θ+δθ)p(x;θ)dx
我们令
f
(
θ
+
δ
θ
)
=
l
o
g
p
(
x
;
θ
+
δ
θ
)
f(\theta+\delta\theta)=log p(x;\theta+\delta\theta)
f(θ+δθ)=logp(x;θ+δθ),做泰勒展开取二阶近似(忽略高阶余项)得到:
f
(
θ
+
δ
θ
)
≈
f
(
θ
)
+
δ
θ
T
∂
f
(
θ
)
∂
θ
+
1
2
δ
θ
T
∂
f
(
θ
)
∂
θ
∂
f
(
θ
)
T
∂
θ
δ
θ
f(\theta+\delta\theta)\approx f(\theta)+\delta\theta^T\frac{\partial f(\theta)}{\partial\theta}+\frac{1}{2}\delta\theta^T\frac{\partial f(\theta)}{\partial\theta}\frac{\partial f(\theta)^T}{\partial\theta}\delta\theta
f(θ+δθ)≈f(θ)+δθT∂θ∂f(θ)+21δθT∂θ∂f(θ)∂θ∂f(θ)Tδθ
带入到
D
K
L
(
p
(
x
;
θ
)
∣
∣
p
(
x
;
θ
+
δ
θ
)
)
D_{KL}(p(x;\theta)||p(x;\theta+\delta\theta))
DKL(p(x;θ)∣∣p(x;θ+δθ))中可得到:
我们记在KL散度意义下的参数增量为
δ
θ
G
\delta\theta_G
δθG,接下来我们寻求在
∣
∣
δ
θ
G
∣
∣
2
=
ϵ
||\delta\theta_G||^2=\epsilon
∣∣δθG∣∣2=ϵ约束下
δ
θ
G
\delta\theta_G
δθG的方向,使得目标函数
J
(
θ
)
J(\theta)
J(θ)下降最快,即
J
(
θ
+
δ
θ
)
−
J
(
θ
)
J(\theta+\delta\theta)-J(\theta)
J(θ+δθ)−J(θ)最大。应用拉格朗日乘子法:
max
δ
θ
J
(
θ
+
δ
θ
)
−
J
(
θ
)
−
λ
(
∣
∣
δ
θ
G
∣
∣
2
−
ϵ
)
\max_{\delta\theta}J(\theta+\delta\theta)-J(\theta)-\lambda(||\delta\theta_G||^2-\epsilon)
δθmaxJ(θ+δθ)−J(θ)−λ(∣∣δθG∣∣2−ϵ)
应用一阶泰勒展开等价于:
max
δ
θ
∇
δ
θ
T
J
(
θ
)
−
1
2
λ
δ
θ
T
G
δ
θ
\max_{\delta\theta}\nabla \delta\theta^T J(\theta)-\frac{1}{2}\lambda\delta\theta^TG\delta\theta
δθmax∇δθTJ(θ)−21λδθTGδθ
对
δ
θ
\delta\theta
δθ求导得
∇
J
(
θ
)
−
λ
G
δ
θ
=
0
\nabla J(\theta)-\lambda G\delta\theta=0
∇J(θ)−λGδθ=0,即
δ
θ
=
1
λ
G
−
1
∇
J
(
θ
)
\delta\theta=\frac{1}{\lambda}G^{-1}\nabla J(\theta)
δθ=λ1G−1∇J(θ),其中
G
−
1
∇
J
(
θ
)
G^{-1}\nabla J(\theta)
G−1∇J(θ)称为自然梯度,相应的自然梯度下降公式为
θ
k
+
1
=
θ
k
−
α
k
G
−
1
(
θ
k
)
∇
J
(
θ
K
)
\theta_{k+1}=\theta_k-\alpha_kG^{-1}(\theta_k)\nabla J(\theta_K)
θk+1=θk−αkG−1(θk)∇J(θK)。
2.12.3 Fisher信息矩阵的意义
首先我们对一个模型进行建模,成为以 θ \theta θ为参数的概率分布 p ( x ; θ ) p(x;\theta) p(x;θ)。为求出一个合理的 θ \theta θ我们需要一个评分函数(score function): s ( θ ) = ∇ θ l o g p ( x ; θ ) s(\theta)=\nabla_{\theta}logp(x;\theta) s(θ)=∇θlogp(x;θ),意为对数似然的梯度,当分数为0时(对数似然梯度为0),对数似然达到极值。对评分函数求关于 p ( x ; θ ) p(x;\theta) p(x;θ)数学期望 p E p_E pE不难发现期望为0。接下来求估计误差的界,我们用评分函数的方差来确定,即 E p ( x ; θ ) [ ( s ( θ ) − p E ) ( s ( θ − p E ) T ) ] E_{p(x;\theta)}[(s(\theta)-p_E)(s(\theta-p_E)^T)] Ep(x;θ)[(s(θ)−pE)(s(θ−pE)T)]。带入评分函数的数学表达形式则等价于Fisher信息矩阵 G ( θ ) = ∫ p ( x ; θ ) ∂ f ( θ ) ∂ θ ∂ f ( θ ) T ∂ θ d x G(\theta)=\int p(x;\theta)\frac{\partial f(\theta)}{\partial\theta}\frac{\partial f(\theta)^T}{\partial\theta}dx G(θ)=∫p(x;θ)∂θ∂f(θ)∂θ∂f(θ)Tdx。特别地,Fisher信息矩阵与评分函数 ∇ θ l o g p ( x ; θ ) \nabla_{\theta}logp(x;\theta) ∇θlogp(x;θ)的Hessian似然的负数等价。
证明:首先求出评分函数的Hessian矩阵,由梯度的Jacobian决定
等式两边同时求关于
p
(
x
;
θ
)
p(x;\theta)
p(x;θ)的数学期望:
而Hessian矩阵刻画着对数似然函数的曲率,所以本质上自然梯度下降法是在一个消除了不同概率分布的曲率后,在同一个“平坦”曲面上进行迭代更新,步长等于原概率分布空间的步长按照曲率折合到新的“平坦曲面”的大小。
值得注意的一点是,一般来说似然函数获取很难,在实际问题中,我们可以用采样的方法从数据集中采样数据,将Fisher信息矩阵原始表达式的积分变为求和来近似估计,这样的方式得到的Fisher信息矩阵称为经验Fisher。