原文地址:SVM - Understanding the math - Unconstrained minimization by Alexandre KOWALCZYK
感谢参与翻译同学:@田苗苗 && @樊睿 && @jozee
时间:2018年1月。
出处:http://blog.csdn.net/han_xiaoyang/article/details/70214565
声明:版权所有,转载请联系寒小阳 ([email protected])并注明出
1.引言
这是SVM系列教程第4部分。接下来我们学习如何求解无约束极小值问题。如果你之前没有读过之前的文章,建议从《SVM碎碎念1》开始学习。
2.本部分内容
这部分内容涉及面很广,需要很多的预备知识。所以我花了很多时间来规划学习路线,决定哪些知识应该解释,而哪些知识可以略过。由于最终的内容过于庞大不便于阅读,我便把它拆分成3个部分,分别为Part4,Part5,Part6!
在Part4的中,我尽可能的把内容讲得简洁明了。这里假设大家已经具备了导数和偏导数的相关知识。同时,也希望你们具备了矩阵变换,计算矩阵行列式的相关知识。
在过去的几个月里,我收到了很多意见和鼓励。这篇文章的发布之时,已经有好几百人订阅了这个系列的文章。谢谢你们所有人,希望你们读的开心!
3.从哪里着手
在第3部分中,我们知道最大化间隔就是最小化w的模。
这意味着我们需要解决以下最优化问题:
首先需要注意的是该最优化问题带有约束条件。它们是由“约束条件为”开头的行来定义的。这里并不是你所想的,只有一个约束条件,而是有
“那么,如何求解这类问题?自第3部分之后大家就一直在等解决方案!!!”
在处理如此复杂的问题之前,让我们先从一个稍微简单的问题入手。我们先来看看如何求解无约束最优化问题,准确的来说,是求解无约束最小化问题。问题的关键在于找到使得函数返回最小值的输入值。(注意:在SVM问题中,就是求
4.无约束最小化问题
首先定义一个变量
我们如何知道
定理:
令
如果
(定理证明 ,第11页)
尽管上面的定理非常简洁,但是如果没有相关的背景知识,那么理解上面的定理几乎是不可能的。比如,
那我们就给出更多信息的定义详细说明:
定理(更详细):
如果
f 在x∗ 处梯度为0:
∇f(x∗)=0
以及f 在x∗ 处的Hessian(海森矩阵)是正定的:
(zT)((∇2f(x∗))z>0,∀z∈ℝn
此处∇2f(x)=⎛⎝⎜⎜⎜⎜⎜⎜∂2f∂x21⋮∂2f∂xn∂x1⋯⋱⋯∂2f∂x1∂xn⋮∂2f∂x2n⎞⎠⎟⎟⎟⎟⎟⎟
那么,
4.1 这些都是什么意思?
让我们逐步检验这个定理。
步骤一:
令
f :Ω→ℝ 在x∗ 处二次连续可微。
首先,让我们介绍一下函数
步骤二:
x∗ 是f(x) 的局部极小值点,当且仅当:
我们希望找到一个点让
从符号中我们可以看出两点:
-
x∗ 用粗体书写,所以它是一个向量。这意味着f 是一个多元函数 - 集合
Ω 是函数f 的定义域。从而得出,Ω 的集合元素是向量,而且x∗∈Ω (x 星属于Ω )。
步骤三:
f 在x∗ 处梯度为0
如果希望
这个定义给了我们更多的信息。事实上,梯度跟导数的核心思想是一样的,只不过函数
在微积分中,当我们想要研究一个函数时,通常我们会求出函数导数并判断导数的正负情况。这能让我们知道这个函数是递增的还是递减的,从而确定函数的最大(最小)值点。通过让导数为0,我们可以找到函数的”临界点”,在这个点处函数取最大(最小)值。(如果想回顾,请阅读这里更加完美的解释)。当目标函数是多元函数时,我们需要让目标函数的每一个偏导数为0。
综上所述,函数的梯度就是函数所有的偏导数组成的向量。通过判断梯度的正负情况,我们就能得到函数的重要信息。在这种情况下,如果
函数梯度由符号
如下
是数学中”
对于向量
步骤四:
函数
f 在x∗ 处的Hessian(海森矩阵)是正定的
这里很多人会比较迷糊。虽然只是简单的一句话,却需要很多背景知识。需要知道:
- Hessian(海森矩阵)是一个二阶偏导数矩阵
- 如何判定一个矩阵是正定的
4.2. Hessian(海森矩阵)
Hessian是一个矩阵,也叫海森矩阵。我们可以称它为
综上所述,我们需要计算一个矩阵,该矩阵为在
已知函数
最终我们得到Hessian矩阵,它包含了我们计算的所有数值。
让我们看看Hessian(海森矩阵)的定义,看看我们是否有很好的理解:
定义:在数学中,Hessian矩阵或者Hessian 是一个多变量实值函数的二阶偏导数组成的方阵。它描述多元函数的局部曲率。
(注意:标量值函数的输入是一个或多个值,但返回单个值。在我们的例子中,函数
4.2.1 正定性
现在我们得到了Hessian矩阵,我们想知道其在
定义:如果对称矩阵
A 满足xTAx>0 ,对所有的x∈ℝn 都成立。对称矩阵A 被称为正定矩阵。(来源)
请注意,这里我们再次给出了Hessian(海森矩阵)正定的定义。由于数学符号比较抽象,阅读起来有点困难。如果我们使用
这个定义的问题在于它讨论的是一个对称矩阵。对称矩阵是一个方阵,它等于它的转置。
Hessian是一个方阵,但是否是对称矩阵呢?
很幸运,它是对称矩阵!
“如果函数
f 的二阶偏导数在邻域D 中是都是连续的,那么函数f 的Hessian(海森矩阵)在邻域D 中就是一个对称矩阵”(维基百科)
但即使有了这个定义,我们仍然不知道如何检查Hessian是否是正定的。因为公式
我们不能穷尽
这就是为什么我们要使用下面的定理:
定理:
以下的表述是等效的:
对称矩阵
A 是正定的A 的所有特征值都是正的A 的顺序主子式都是正的存在非奇异方阵
B ,使得A=BTB (来源)
所以我们有三种方式检查一个方阵是否是正定的:
- 通过计算它的特征值并检查它们是否是正数。
- 通过计算它的顺序主子式,并检查它们是否是正的。
- 通过找到一个非奇异方阵
B ,使得A=BTB 。
让我们使用第二种方法并且进一步更加详细地理解它。
4.3. 计算顺序主子式
4.3.1 子式
计算矩阵的子式
举例:
让我们考虑以下
为了计算这个矩阵的子式
然后我们计算的剩余矩阵的行列式:
值为:
4.3.2 主子式
当
对于
-
M11=ei−fh , -
M22=ai−cg -
M33=ae−bd
但是,这不是全部!事实上,子式也有我们所说的阶。
定义:
如果通过删除
在前面的例子中,矩阵是
有
综上所述:
所以我们删除了第一行和第二行,第一列和第二列,得到:
这意味着1阶的主子式之一是
我们删除第二行和第三行,第二列和第三列,我们得到
我们删除第一行和第三行,第一列和第三列,我们得到
-
M11=ei−fh , -
M22=ai−cg -
M33=ae−bd
4.3.3 顺序主子式
定义:
矩阵
由此可见,顺序主子式更容易得到。如果我们记
现在我们可以计算一个矩阵的所有顺序主子式。我们来计算在
到目前为止,我们已经解释了所有必备知识,那么你们应该能够理解求解无约束最小化问题。接下来,让我们举例说明。
4.3.4 举例
在这个例子中,我们将试图找到如下函数的最小值:
首先,我们要找到使梯度
我们计算偏导数,可发现:
(提示:如果你想验证你的计算结果,你可以使用数学搜索引擎 Wolfram alpha)
我们的目标是找到使所有偏导数为0的点,所以我们需要解下面的方程组:
我们展开得到:
我们将
我们把
此式可以简化成:
我们将
我们已经找到了使
Hessian(海森矩阵)为:
现在计算
矩阵是对称的,我们可以检查它的顺序主子式:
如果我们删除最后一行,最后一列得到主子式
即Hessian(海森矩阵)的行列式:
Hessian(海森矩阵)的所有顺序主子式都是正数。这意味着Hessian是正定的。
我们所需要的两个条件得到了满足,这时我们可以说点
4.4 局部极小值?
在指定的取值范围内,函数在某个点处的值为最小值时,那这个点可称为局部极小值点。其严格定义如下:
给定函数
然而,全局极小值在函数定义域的范围内都成立。
给定函数
所以以上我们所有的工作只是找到了一个局部最小值点,但在现实生活中,我们经常想要找到全局最小值点…
4.5 如何找到全局最小值点?
有一个简单的方法来找到全局最小值点:
- 找到所有局部极小值点
- 找到所有局部极小值点中最小的一个,这就是全局最小值点。
另一种方法是研究我们试图最小化的函数,如果这个函数是凸的,那么我们确定它的局部极小值就是全局最小值。
5. 结论
我们发现,找到函数的最小值并不是那么简单,甚至有时找到的不是全局最小值。但是,一些称为凸函数的函数却很容易求得全局最小值。什么是凸函数?继续阅读本教程系列的第5部分就可以找到答案了!谢谢阅读。