Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
hands-on-ml-zh
提交
8b5ebb15
H
hands-on-ml-zh
项目概览
OpenDocCN
/
hands-on-ml-zh
通知
13
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
H
hands-on-ml-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
8b5ebb15
编写于
6月 20, 2018
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
style
上级
cf58d644
变更
3
展开全部
隐藏空白更改
内联
并排
Showing
3 changed file
with
17 addition
and
14 deletion
+17
-14
docs/C.SVM_对偶问题.md
docs/C.SVM_对偶问题.md
+17
-14
docs/D.自动微分.md
docs/D.自动微分.md
+0
-0
images/tex-f74dbceea979dd6f7f807de601aaa240.gif
images/tex-f74dbceea979dd6f7f807de601aaa240.gif
+0
-0
未找到文件。
docs/C.SVM_对偶问题.md
浏览文件 @
8b5ebb15
# 附录 C、SVM 对偶问题
为了理解对偶性,你首先得理解拉格朗日乘子法。它基本思想是将一个有约束优化问题转化为一个无约束优化问题,其方法是将约束条件移动到目标函数中去。让我们看一个简单的例子,例如要找到合适的 !
[
x
](
../images/tex-9dd4e461268c8034f5c8564e155c67a6.gif
)
和 !
[
y
](
../images/tex-415290769594460e2e485922904f345d.gif
)
使得函数 !
[
f(x, y) = x^2 + 2y
](
../images/tex-ec2b11c28f337d90d1a55c83bd738475.gif
)
最小化,且其约束条件是一个等式约束:!
[
3x + 2y + 1 = 0
](
../images/tex-08bc7e7224cfe0e39e04b69d4ed96298.gif
)
。 使用拉格朗日乘子法,我们首先定义一个函数,称为
**拉格朗日函数**
:!
[
g(x, y, \alpha) = f(x, y) - \alpha(3x + 2y + 1)
](
../images/tex-e78acaa101dc94594e813eab3f01f428.gif
)
.
每个约束条件(在这个例子中只有一个)与新的变量(称为拉格朗日乘数)相乘,作为原目标函数的减数。
为了理解对偶性,你首先得理解拉格朗日乘子法。它基本思想是将一个有约束优化问题转化为一个无约束优化问题,其方法是将约束条件移动到目标函数中去。让我们看一个简单的例子,例如要找到合适的 !
[
x
](
../images/tex-9dd4e461268c8034f5c8564e155c67a6.gif
)
和 !
[
y
](
../images/tex-415290769594460e2e485922904f345d.gif
)
使得函数 !
[
f(x, y) = x^2 + 2y
](
../images/tex-ec2b11c28f337d90d1a55c83bd738475.gif
)
最小化,且其约束条件是一个等式约束:!
[
3x + 2y + 1 = 0
](
../images/tex-08bc7e7224cfe0e39e04b69d4ed96298.gif
)
。使用拉格朗日乘子法,我们首先定义一个函数,称为
**拉格朗日函数**
:!
[
g(x, y, \alpha) = f(x, y) - \alpha(3x + 2y + 1)
](
../images/tex-e78acaa101dc94594e813eab3f01f428.gif
)
。
每个约束条件(在这个例子中只有一个)与新的变量(称为拉格朗日乘数)相乘,作为原目标函数的减数。
Joseph-Louis Lagrange 大牛证明了如果 !
[
(\bar{x}, \bar{y})
](
../images/tex-fe85b05b6cd2641c29612bc75a270208.gif
)
是原约束优化问题的解,那么一定存在一个 !
[
\bar{\alpha}
](
../images/tex-d9c29791dd3b792c7702ed2b7cf5ac40.gif
)
,使得 !
[
(\bar{x}, \bar{y}, \bar{\alpha})
](
../images/tex-ac2d6cc9cbad11acc20ba9f6dd0ef830.gif
)
是拉格朗日函数的不动点(不动点指的是,在该点处,该函数所有的偏导数均为0)。换句话说,我们可以计算拉格朗日函数 !
[
g(x, y, \alpha)
](
../images/tex-c663f5d534674fc3f1b13074c6ae467b.gif
)
关于 !
[
x, y
](
../images/tex-2317793a8de61ab32c0f17adff9ea8d4.gif
)
以及 !
[
\alpha
](
../images/tex-7b7f9dbfea05c83784f8b85149852f08.gif
)
的偏导数;然后我们可以找到那些偏导数均为0的不动点;最后原约束优化问题的解(如果存在)一定在这些不动
点里面。
Joseph-Louis Lagrange 大牛证明了如果 !
[
(\bar{x}, \bar{y})
](
../images/tex-fe85b05b6cd2641c29612bc75a270208.gif
)
是原约束优化问题的解,那么一定存在一个 !
[
\bar{\alpha}
](
../images/tex-d9c29791dd3b792c7702ed2b7cf5ac40.gif
)
,使得 !
[
(\bar{x}, \bar{y}, \bar{\alpha})
](
../images/tex-ac2d6cc9cbad11acc20ba9f6dd0ef830.gif
)
是拉格朗日函数的驻点(驻点指的是,在该点处,该函数所有的偏导数均为 0)。换句话说,我们可以计算拉格朗日函数 !
[
g(x, y, \alpha)
](
../images/tex-c663f5d534674fc3f1b13074c6ae467b.gif
)
关于 !
[
x, y
](
../images/tex-2317793a8de61ab32c0f17adff9ea8d4.gif
)
以及 !
[
\alpha
](
../images/tex-7b7f9dbfea05c83784f8b85149852f08.gif
)
的偏导数;然后我们可以找到那些偏导数均为 0 的驻点;最后原约束优化问题的解(如果存在)一定在这些驻
点里面。
在上述例子里,偏导数为
在上述例子里,偏导数为
![
\begin{align}\frac{\partial}{\partial x}g(x, y, \alpha) = 2x - 3\alpha \\ \frac{\partial}{\partial y}g(x, y, \alpha) = 2 - 2\alpha \\ \frac{\partial}{\partial \alpha}g(x, y, \alpha) = -3x - 2y - 1 \end{align}
](
../images/tex-96d88ee52e2a53c2350376ac3b1f3c30.gif
)
当这些偏导数均为0时,即 2x − 3α = 2 − 2α = − 3x − 2y − 1 = 0,即可得 !
[
x = \frac{3}{2}, y=-\frac{11}{4}, \alpha=1
](
../images/tex-9439cb7cb2e1c01f22745401287a0638.gif
)
. 这是唯一一个不动点,那它一定是原约束优化问题的解。然而,上述方法仅应用于等式约束,幸运的是,在某些正则性条件下,这种方法也可被一般化应用于不等式约束条件(例如不等式约束,!
[
3x + 2y + 1 \geq 0
](
../images/tex-3b6ed467ca1ae09aeafe40f4b40251c7.gif
)
)。如下公式 C-1 ,给了SVM硬间隔问题时的一般化拉格朗日函数。在该公式中,!
[
\alpha^{(i)}
](
../images/tex-99f0c7b568236eb0a52bf15cbbfa342e.gif
)
是 KKT 乘子,它必须大于或等于0. (译者注:!
[
\alpha^{(i)}
](
../images/tex-99f0c7b568236eb0a52bf15cbbfa342e.gif
)
是 !
[
\geq0
](
../images/tex-e56717342e6431bdaa1f37c90f7ba7b3.gif
)
抑或 !
[
\leq0
](
../images/tex-825a000824ab58528de14389acafd231.gif
)
取决于拉格朗日函数的写法,以及原目标函数函数最大化抑或最小化)
当这些偏导数均为 0 时,即 !
[
2x − 3\alpha = 2 − 2\alpha = − 3x − 2y − 1 = 0
](
../images/tex-f74dbceea979dd6f7f807de601aaa240.gif
)
,即可得 !
[
x = \frac{3}{2}, y=-\frac{11}{4}, \alpha=1
](
../images/tex-9439cb7cb2e1c01f22745401287a0638.gif
)
。这是唯一一个驻点,那它一定是原约束优化问题的解。然而,上述方法仅应用于等式约束,幸运的是,在某些正则性条件下,这种方法也可被一般化应用于不等式约束条件(例如不等式约束,!
[
3x + 2y + 1 \geq 0
](
../images/tex-3b6ed467ca1ae09aeafe40f4b40251c7.gif
)
)。如下公式 C-1 ,给了 SVM 硬间隔问题时的一般化拉格朗日函数。在该公式中,!
[
\alpha^{(i)}
](
../images/tex-99f0c7b568236eb0a52bf15cbbfa342e.gif
)
是 KKT 乘子,它必须大于或等于 0。
> 译者注
>
> ![\alpha^{(i)}](../images/tex-99f0c7b568236eb0a52bf15cbbfa342e.gif) 是 ![\geq0](../images/tex-e56717342e6431bdaa1f37c90f7ba7b3.gif) 抑或 ![\leq0](../images/tex-825a000824ab58528de14389acafd231.gif),取决于拉格朗日函数的写法,以及原目标函数函数最大化抑或最小化。
![
公式C-1
](
../images/Appendix/E_C-1.png
)
就像拉格朗日乘子法,我们可以计算上述式子的偏导数、定位
不动点。如果该原问题存在一个解,那它一定在不动点!
[
(\bar{w}, \bar{b}, \bar{\alpha})
](
../images/tex-e0569dbaecb2e5955e7ff0bad0749154.gif
)
之中,且遵循 KKT 条件:
就像拉格朗日乘子法,我们可以计算上述式子的偏导数、定位
驻点。如果该原问题存在一个解,那它一定在驻点 !
[
(\bar{w}, \bar{b}, \bar{\alpha})
](
../images/tex-e0569dbaecb2e5955e7ff0bad0749154.gif
)
之中,且遵循 KKT 条件:
-
遵循原问题的约束:
!
[
t^{(i)}((\bar{w})^T x^{(i)} +\bar{b}) \geq 1
](
../images/tex-5c71c1287e7a6b8fef19874c553b0cd4.gif
)
, 对于 !
[
i = 1, 2, ..., m
](
../images/tex-31f8dedd0a66fb646ef261c638243923.gif
)
-
遵循原问题的约束:!
[
t^{(i)}((\bar{w})^T x^{(i)} +\bar{b}) \geq 1
](
../images/tex-5c71c1287e7a6b8fef19874c553b0cd4.gif
)
, 对于 !
[
i = 1, 2, ..., m
](
../images/tex-31f8dedd0a66fb646ef261c638243923.gif
)
-
遵循现问题里的约束,即 !
[
\bar{\alpha}^{(i)} \geq 0
](
../images/tex-61b00d67f0968d7be5bf4b7a3260b1f4.gif
)
-
!
[
\bar{\alpha}^{(i)} = 0
](
../images/tex-9eaf40b81df456c80b338612aa1e6fb7.gif
)
或者第
`i`
个约束条件是积极约束,意味着该等式成立:!
[
t^{(i)}((\bar{w})^T x^{(i)} +\bar{b}) = 1
](
../images/tex-758714f96d598b4cbb8a7642bc3fb017.gif
)
. 这个条件叫做 互补松弛 条件。它暗示了 !
[
\bar{\alpha}^{(i)} = 0
](
../images/tex-9eaf40b81df456c80b338612aa1e6fb7.gif
)
和第
`i`
个样本位于SVM间隔的边界上(该样本是支撑
向量)。
-
!
[
\bar{\alpha}^{(i)} = 0
](
../images/tex-9eaf40b81df456c80b338612aa1e6fb7.gif
)
或者第
`i`
个约束条件是积极约束,意味着该等式成立:!
[
t^{(i)}((\bar{w})^T x^{(i)} +\bar{b}) = 1
](
../images/tex-758714f96d598b4cbb8a7642bc3fb017.gif
)
。这个条件叫做 互补松弛条件。它暗示了 !
[
\bar{\alpha}^{(i)} = 0
](
../images/tex-9eaf40b81df456c80b338612aa1e6fb7.gif
)
和第
`i`
个样本位于 SVM 间隔的边界上(该样本是支持
向量)。
注意 KKT 条件是确定
不动点是否为原问题解的必要条件。在某些条件下,KKT 条件也是充分条件。幸运的是,SVM 优化问题碰巧满足这些条件,所以任何满足 KKT 条件的不动
点保证是原问题的解。
注意 KKT 条件是确定
驻点是否为原问题解的必要条件。在某些条件下,KKT 条件也是充分条件。幸运的是,SVM 优化问题碰巧满足这些条件,所以任何满足 KKT 条件的驻
点保证是原问题的解。
我们可以计算上述一般化拉格朗日函数关于
`w`
和
`b`
的偏导数,如
公式C-2.
我们可以计算上述一般化拉格朗日函数关于
`w`
和
`b`
的偏导数,如
公式 C-2。
![
公式C-2
](
../images/Appendix/E_C-2.png
)
令上述偏导数为
0, 可得到公式C-3.
令上述偏导数为
0,可得到公式 C-3。
![
公式C-3
](
../images/Appendix/E_C-3.png
)
如果我们把上述式子代入到一般化拉格朗日函数(公式
C-1)中,某些项会消失,从而得到公式
C-4,并称之为原问题的对偶形式。
如果我们把上述式子代入到一般化拉格朗日函数(公式
C-1)中,某些项会消失,从而得到公式
C-4,并称之为原问题的对偶形式。
![
公式C-4
](
../images/Appendix/E_C-4.png
)
现在该对偶形式的目标是找到合适的向量 !
[
\bar{\alpha}
](
../images/tex-d9c29791dd3b792c7702ed2b7cf5ac40.gif
)
, 使得该函数 !
[
L(w, b, \alpha)
](
../images/tex-8d9370145286bec564a001265dd85ff9.gif
)
最小化,且 !
[
\bar{\alpha}^{(i)} \geq 0
](
../images/tex-61b00d67f0968d7be5bf4b7a3260b1f4.gif
)
.
现在这个有约束优化问题正是我们苦苦追寻的对偶问题。
现在该对偶形式的目标是找到合适的向量 !
[
\bar{\alpha}
](
../images/tex-d9c29791dd3b792c7702ed2b7cf5ac40.gif
)
,使得该函数 !
[
L(w, b, \alpha)
](
../images/tex-8d9370145286bec564a001265dd85ff9.gif
)
最小化,且 !
[
\bar{\alpha}^{(i)} \geq 0
](
../images/tex-61b00d67f0968d7be5bf4b7a3260b1f4.gif
)
。
现在这个有约束优化问题正是我们苦苦追寻的对偶问题。
一旦你找到了最优的 !
[
\bar{\alpha}
](
../images/tex-d9c29791dd3b792c7702ed2b7cf5ac40.gif
)
, 你可以利用公式C-3第一行计算 !
[
\bar{w}
](
../images/tex-28175dc40d9c53d6d2c186a7817cf866.gif
)
。为了计算 !
[
\bar{b}
](
../images/tex-222e2caf9c7b49d3432466e360eceba6.gif
)
, 你可以使用支撑向量的已知条件 !
[
t^{(i)}((\bar{w})^T x^{(i)} +\bar{b}) = 1
](
../images/tex-758714f96d598b4cbb8a7642bc3fb017.gif
)
, 当第 k 个样本是支撑向量时(即它对应的 !
[
\alpha_k > 0
](
../images/tex-fe658058e9257029aa88bc89b34348de.gif
)
,此时使用它计算 !
[
\bar{b} =1-t^{(k)}((\bar{w})^T . x^{(k)})
](
../images/tex-75080a1229e54394d1c6d95b9e542eaa.gif
)
. 对了,我们更喜欢利用所有支撑向量计算一个平均值,以获得更稳定和更准确的结果,如公式C-5.
一旦你找到了最优的 !
[
\bar{\alpha}
](
../images/tex-d9c29791dd3b792c7702ed2b7cf5ac40.gif
)
,你可以利用公式 C-3 第一行计算 !
[
\bar{w}
](
../images/tex-28175dc40d9c53d6d2c186a7817cf866.gif
)
。为了计算 !
[
\bar{b}
](
../images/tex-222e2caf9c7b49d3432466e360eceba6.gif
)
,你可以使用支持向量的已知条件 !
[
t^{(i)}((\bar{w})^T x^{(i)} +\bar{b}) = 1
](
../images/tex-758714f96d598b4cbb8a7642bc3fb017.gif
)
,当第 k 个样本是支持向量时(即它对应的 !
[
\alpha_k > 0
](
../images/tex-fe658058e9257029aa88bc89b34348de.gif
)
),此时使用它计算 !
[
\bar{b} =1-t^{(k)}((\bar{w})^T . x^{(k)})
](
../images/tex-75080a1229e54394d1c6d95b9e542eaa.gif
)
。对了,我们更喜欢利用所有支持向量计算一个平均值,以获得更稳定和更准确的结果,如公式 C-5。
![
公式C-5
](
../images/Appendix/E_C-5.png
)
docs/D.自动微分.md
浏览文件 @
8b5ebb15
此差异已折叠。
点击以展开。
images/tex-f74dbceea979dd6f7f807de601aaa240.gif
0 → 100644
浏览文件 @
8b5ebb15
711 字节
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录