本内容将介绍支持向量机(SVM) 中需要使用的基础知识:拉格朗日乘子法、KKT 条件 和 拉格朗日对偶性。
一、最优化问题
最优化问题通常分为 无约束问题、等式约束问题 和 不等式约束问题。下面我们将介绍对这些问题如何求解。
1.1 无约束问题
对于变量 x ∈ R n \mathbf{x} \in \Bbb{R}^{n} x∈Rn 的函数 f ( x ) f(\mathbf{x}) f(x),无约束优化问题如下:
(1) min f ( x ) \min f(\mathbf{x}) \tag{1} minf(x)(1)
常使用的方法就是 Fermat 定理,即求取 f ( x ) f(\mathbf{x}) f(x) 的导数,然后令其为 0,可以求得候选最优值;再在这些候选值中验证。如果是凸函数,可以保证是最优解。如果没有解析解或者很难通过上述方法求解,可使用 梯度下降法 或 牛顿法等迭代方法逼近极小值点。
凸函数:假设存在一个函数 f ( x ) f(x) f(x),对于任意属于 [0,1] 的 a a a 任意两点 x x x, y y y,有 a f ( x ) + ( 1 − a ) f ( y ) ≥ f ( a x + ( 1 − a ) y ) af(x) + (1-a)f(y) \geq f(ax + (1-a)y) af(x)+(1−a)f(y)≥f(ax+(1−a)y),那么函数 f ( x ) f(x) f(x) 就是一个凸函数。几何上的直观理解就是两点连线上某点的值,大于等于两点之间某点的函数值。凸函数的任一局部极小值也是全局极小值。
1.2 等式约束问题
加上等式约束条件后,问题如下:
(2) min f ( x ) s . t . h i ( x ) = 0 , i = 1 , 2 , ⋯   , m \begin{aligned} &\min f(\mathbf{x}) \\ &s.t. \quad h_i(\mathbf{x}) = 0, \quad i = 1,2,\cdots,m \end{aligned} \tag{2} minf(x)s.t.hi(x)=0,i=1,2,⋯,m(2)
其中 s . t . s.t. s.t. 表示 subject to,“受限于”的意思。
常使用的方法是 拉格朗日乘子法(Lagrange Multiplier)。即把等式约束 h i ( x ) h_i(\mathbf{x}) hi(x) 用一个系数与 f ( x ) f(\mathbf{x}) f(x) 写为一个式子,称为拉格朗日函数,而系数称为拉格朗日乘子。通过拉格朗日函数对各个变量求导,令其为零,可以求得候选值集合,然后验证求得最优值。后面部分将进行详细介绍。
1.3 不等式约束问题
加上不等式约束条件后,问题如下:
(3) min f ( x ) s . t . h i ( x ) = 0 , i = 1 , 2 , ⋯   , m g j ( x ) ≤ 0 , j = 1 , 2 , ⋯   , n \begin{aligned} &\min f(\mathbf{x}) \\ &s.t. \quad h_i(\mathbf{x}) = 0, \quad i = 1,2,\cdots,m \\ & \quad\quad\quad g_j(\mathbf{x}) \leq 0, \quad j = 1,2,\cdots,n \end{aligned} \tag{3} minf(x)s.t.hi(x)=0,i=1,2,⋯,mgj(x)≤0,j=1,2,⋯,n(3)
常使用的方法是 KKT 条件。同样地,我们把所有等式、不等式约束与
f
(
x
)
f(\mathbf{x})
f(x) 写为一个式子,也叫拉格朗日函数,系数也称拉格朗日乘子,通过一些条件,可以求出最优值的必要条件,这个条件称为 KKT 条件。后面部分将进行详细介绍。
二、拉格朗日乘子法
拉格朗日乘子法(Lagrange multiplier)是一种寻找多元函数在其变量受到一个或多个条件的约束时的极值的方法。这种方法可以将一个有 m 个变量与 k 个约束条件的最优化问题转换为一个有 n+k 个变量的无约束问题求解。这种方法中引入一个或一组新的未知数,即 拉格朗日乘数,又称 拉格朗日乘子,或 拉式乘子。
假设求函数 f ( x , y ) f(x, y) f(x,y) 的极小值,并且要求满足 g ( x , y ) = 0 g(x, y) = 0 g(x,y)=0,即
(4) min f ( x , y ) s . t . g ( x , y ) = 0 \begin{aligned} &\min f(x, y) \\ &s.t. \quad g(x, y) = 0 \end{aligned} \tag{4} minf(x,y)s.t.g(x,y)=0(4)
引入新变量拉格朗日乘子 α \alpha α,构建拉格朗日函数
(5) L ( x , y , α ) = f ( x , y ) + α g ( x , y ) L(x,y,\alpha) = f(x,y) + \alpha g(x,y) \tag{5} L(x,y,α)=f(x,y)+αg(x,y)(5)
求解方法:对公式(5)关于 x x x, y y y 和 α \alpha α 求导
(6) { ∇ x f ( x , y ) + α ∇ x g ( x , y ) = 0 ∇ y f ( x , y ) + α ∇ y g ( x , y ) = 0 g ( x , y ) = 0 \left \{ \begin{array}{cc} \begin{aligned} &\nabla_x f(x, y) + \alpha \nabla_x g(x, y) = 0 \\ \\ &\nabla_y f(x, y) + \alpha \nabla_y g(x, y) = 0 \\ \\ &g(x, y) = 0 \end{aligned} \end{array} \right. \tag{6} ⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧∇xf(x,y)+α∇xg(x,y)=0∇yf(x,y)+α∇yg(x,y)=0g(x,y)=0(6)
并令其为 0,可求得 x x x, y y y 和 α \alpha α 的值(即拉格朗日函数的极值点);求得的 x x x 和 y y y 即为 f ( x , y ) f(x,y) f(x,y) 在约束条件 g ( x , y ) g(x, y) g(x,y) 下的可行解。
为什么可以通过求拉格朗日函数的极值而求得原目标函数的最优值?
在平面画出 f ( x , y ) f(x, y) f(x,y),如下图-1 中的蓝色虚线所示;约束条件 g ( x , y ) = 0 g(x, y) = 0 g(x,y)=0 ,如图-1 中绿色实现所示。想象我们沿着 g ( x , y ) = 0 g(x, y) = 0 g(x,y)=0 的可行集走, f ( x , y ) f(x, y) f(x,y) 的等高线和 g ( x , y ) = 0 g(x, y) = 0 g(x,y)=0 存在三种情况:没有交集、相交和相切。没有交集,肯定不是解;如果相交,因为 f ( x , y ) f(x,y) f(x,y) 是连续函数,因此沿着 g ( x , y ) = 0 g(x, y) = 0 g(x,y)=0 能走到 f ( x , y ) f(x,y) f(x,y) 更高或更低的等高线上,意味着 f ( x , y ) f(x,y) f(x,y) 能够取得更大或更小的值,所以相交得到的也不是解;所以相切时才可能得到可行解。
![](https://i-blog.csdnimg.cn/blog_migrate/e84817418dba71f0b3bc6b981fb2bc28.png)
相切的性质在此意味着 f ( x , y ) f(x, y) f(x,y) 和 g ( x , y ) = 0 g(x, y) = 0 g(x,y)=0 的切线在某点上平行,同时也意味着两者的梯度平行,即存在 α ≠ 0 \alpha \neq 0 α̸=0 使得
(7) { ∇ x f ( x , y ) + α ∇ x g ( x , y ) = 0 ∇ y f ( x , y ) + α ∇ y g ( x , y ) = 0 \left \{ \begin{array}{cc} \nabla_x f(x, y) + \alpha \nabla_x g(x, y) = 0 \\ \\ \nabla_y f(x, y) + \alpha \nabla_y g(x, y) = 0 \end{array} \right. \tag{7} ⎩⎨⎧∇xf(x,y)+α∇xg(x,y)=0∇yf(x,y)+α∇yg(x,y)=0(7)
再加上原约束条件 g ( x , y ) = 0 g(x, y) = 0 g(x,y)=0 后,式(7)与式(6)相同。于是原约束问题可转化为对拉格朗日函数 L ( x , y , α ) L(x, y, \alpha) L(x,y,α) 的无约束优化问题。
更一般地,对前面式(2)中含有多个约束条件的情况,构建拉格朗日函数
(8) L ( x , α ) = f ( x ) + ∑ i = 1 m α i h i ( x ) L(\mathbf{x}, \alpha) = f(\mathbf{x}) + \sum_{i=1}^{m} \alpha_i h_i(\mathbf{x}) \tag{8} L(x,α)=f(x)+i=1∑mαihi(x)(8)
三、KKT 条件
在数学中,Karush-Kuhn-Tucker 条件(简称 KKT 条件)是在满足一些有规则的条件下,一个非线性规划问题能有最优解的一个必要和充分条件。这是一个广义拉格朗日乘数法的成果。
假设求函数 f ( x , y ) f(x, y) f(x,y) 的极小值,并且要求满足 g ( x , y ) ≤ 0 g(x, y) \leq 0 g(x,y)≤0,即
(9) min f ( x , y ) s . t . g ( x , y ) ≤ 0 \begin{aligned} &\min f(x, y) \\ &s.t. \quad g(x, y) \leq 0 \end{aligned} \tag{9} minf(x,y)s.t.g(x,y)≤0(9)
可行解 x \mathbf{x} x 只能在 g ( x ) < 0 g(\mathbf{x}) < 0 g(x)<0 或者 g ( x ) = 0 g(\mathbf{x}) = 0 g(x)=0 的区域中,针对这两种情况,具体分析如下:
-
当可行解 x \mathbf{x} x 在 g ( x ) < 0 g(\mathbf{x}) < 0 g(x)<0 的区域内:约束条件 g ( x ) ≤ 0 g(\mathbf{x}) \leq 0 g(x)≤0 不起作用,可直接通过 ∇ f ( x ) = 0 \nabla f(\mathbf{x}) = 0 ∇f(x)=0 来求得最优值;等价于将 β \beta β 置零,然后对 ∇ x L ( x , β ) \nabla_{\mathbf{x}} L(\mathbf{x}, \beta) ∇xL(x,β) 置零求得最优值。
-
当可行解 x \mathbf{x} x 在 g ( x ) = 0 g(\mathbf{x}) = 0 g(x)=0 的区域内:类似于上面的等式约束问题。因为在约束边界上,目标函数的负梯度方向应该远离约束区域朝向无约束时的解,所以约束函数的梯度方向与目标函数的梯度方向相反,即存在常数 β > 0 \beta > 0 β>0 使得
(10) ∇ f ( x ) + β ∇ g ( x ) = 0 \nabla f(\mathbf{x}) + \beta \nabla g(\mathbf{x}) = 0 \tag{10} ∇f(x)+β∇g(x)=0(10)
整合上面的两种情况,需要满足 β g ( x ) = 0 \beta g(\mathbf{x}) = 0 βg(x)=0。因此,在约束条件 g ( x ) ≤ 0 g(\mathbf{x}) \leq 0 g(x)≤0 下最小化 f ( x ) f(\mathbf{x}) f(x) 的问题,可转化为在如下约束条件下最小化拉格朗日函数 L ( x , β ) L(\mathbf{x}, \beta) L(x,β) 的问题
(11) { g ( x ) ≤ 0 β ≥ 0 β g ( x ) = 0 \left \{ \begin{array}{cc} \begin{aligned} & g(\mathbf{x}) \leq 0 \\ \\ & \beta \geq 0 \\ \\ & \beta g(\mathbf{x}) = 0 \end{aligned} \end{array} \right. \tag{11} ⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧g(x)≤0β≥0βg(x)=0(11)
称为 KKT 条件。
更一般地,对前面公式(3)中含有多个约束条件的情况,构建广义拉格朗日函数
(12)
L
(
x
,
α
,
β
)
=
f
(
x
)
+
∑
i
=
1
m
α
i
h
i
(
x
)
+
∑
j
=
1
n
β
i
g
i
(
x
)
L(\mathbf{x}, \alpha, \beta) = f(\mathbf{x}) + \sum_{i=1}^{m} \alpha_i h_i(\mathbf{x}) + \sum_{j=1}^{n} \beta_i g_i(\mathbf{x}) \tag{12}
L(x,α,β)=f(x)+i=1∑mαihi(x)+j=1∑nβigi(x)(12)
其 KKT 条件为
(13) { h i ( x ) = 0 g j ( x ) ≤ 0 β j ≥ 0 β j g j ( x ) = 0 \left \{ \begin{array}{cc} \begin{aligned} & h_i(\mathbf{x}) = 0 \\ \\ & g_j(\mathbf{x}) \leq 0 \\ \\ & \beta_j \geq 0 \\ \\ & \beta_j g_j(\mathbf{x}) = 0 \end{aligned} \end{array} \right. \tag{13} ⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧hi(x)=0gj(x)≤0βj≥0βjgj(x)=0(13)
其中
i
=
1
,
2
,
⋯
 
,
m
i = 1,2,\cdots,m
i=1,2,⋯,m,
j
=
1
,
2
,
⋯
 
,
n
j = 1,2,\cdots,n
j=1,2,⋯,n,
h
i
(
x
)
=
0
h_i(x) = 0
hi(x)=0 为原始约束条件。
四、拉格朗日对偶性
在约束最优化问题中,对于难以求解的原始问题,常利用 拉格朗日对偶性(Lagrange duality)将原始问题转换为对偶问题,通过解对偶问题而得到原始问题的解。
4.1 原始问题
针对式(3)原始的优化问题,以及其广义拉格朗日函数(式(12)),定义函数
(14) θ P ( x ) = max α , β ; α ≥ 0 L ( x , α , β ) \theta _P(\mathbf{x}) = \max_{\alpha, \beta;\alpha \geq 0} L(\mathbf{x}, \alpha, \beta) \tag{14} θP(x)=α,β;α≥0maxL(x,α,β)(14)
通过以下推导
(15) ∵ h i ( x ) = 0 , β ≥ 0 , g j ( x ) ≤ 0 ∴ β g j ( x ) ≤ 0 ∴ max α , β ; β ≥ 0 L ( x , α , β ) = f ( x ) ∴ min x f ( x ) = min x max α , β ; β ≥ 0 L ( x , α , β ) \begin{aligned} &\because h_i(\mathbf{x}) = 0, \beta \geq 0, g_j(\mathbf{x}) \leq 0 \\ \\ &\therefore \beta g_j(\mathbf{x}) \leq 0 \\ \\ &\therefore \max_{\alpha, \beta;\beta \geq 0} L(\mathbf{x}, \alpha, \beta) = f(\mathbf{x}) \\ \\ &\therefore \min_{\mathbf{x}} f(\mathbf{x}) = \min_{\mathbf{x}} \max_{\alpha, \beta;\beta \geq 0} L(\mathbf{x}, \alpha, \beta) \end{aligned} \tag{15} ∵hi(x)=0,β≥0,gj(x)≤0∴βgj(x)≤0∴α,β;β≥0maxL(x,α,β)=f(x)∴xminf(x)=xminα,β;β≥0maxL(x,α,β)(15)
原始约束优化问题转换为广义拉格朗日函数的极小极大问题。为了便于表示,定义原始问题的最优值为
(16) p ∗ = min x θ P ( x ) = min x max α , β ; β ≥ 0 L ( x , α , β ) p^{*} = \min_{\mathbf{x}} \theta _P(\mathbf{x}) = \min_{\mathbf{x}} \max_{\alpha, \beta;\beta \geq 0} L(\mathbf{x}, \alpha, \beta) \tag{16} p∗=xminθP(x)=xminα,β;β≥0maxL(x,α,β)(16)
4.2 对偶问题
定义函数
(17) θ D ( α , β ) = min x L ( x , α , β ) \theta_D(\alpha, \beta) = \min_{\mathbf{x}} L(\mathbf{x}, \alpha, \beta) \tag{17} θD(α,β)=xminL(x,α,β)(17)
再将其进行最大化,得到
(18) max α , β ; β ≥ 0 θ D ( α , β ) = max α , β ; β ≥ 0 min x L ( x , α , β ) \max_{\alpha, \beta;\beta \geq 0} \theta_D(\alpha, \beta) = \max_{\alpha, \beta;\beta \geq 0} \min_{\mathbf{x}} L(\mathbf{x}, \alpha, \beta) \tag{18} α,β;β≥0maxθD(α,β)=α,β;β≥0maxxminL(x,α,β)(18)
称为广义拉格朗日函数的极大极小问题。将其表示为约束问题
(19) max α , β min x L ( x , α , β ) s . t . β j , j = 1 , 2 , ⋯   , n \begin{aligned} & \max_{\alpha, \beta} \min_{\mathbf{x}} L(\mathbf{x}, \alpha, \beta) \\ & s.t. \quad \beta_j, \quad j=1,2,\cdots,n \end{aligned} \tag{19} α,βmaxxminL(x,α,β)s.t.βj,j=1,2,⋯,n(19)
称为原始问题的 对偶问题。为了便于表示,定义对偶问题的最优值为
(20) d ∗ = max α , β ; α ≥ 0 min x L ( x , α , β ) d^{*} = \max_{\alpha, \beta;\alpha \geq 0} \min_{\mathbf{x}} L(\mathbf{x}, \alpha, \beta) \tag{20} d∗=α,β;α≥0maxxminL(x,α,β)(20)
4.3 原始问题和对偶问题的关系
原始问题和对偶问题满足如下关系:
(21) d ∗ ≤ p ∗ d^{*} \leq p^{*} \tag{21} d∗≤p∗(21)
这个性质叫做 弱对偶性(weak duality)。
证明过程:
(22) ∵ θ D ( α , β ) = min x L ( x , α , β ) ≤ L ( x , α , β ) ≤ max α , β ; α ≥ 0 L ( x , α , β ) = θ P ( x ) ∴ max α , β ; α ≥ 0 θ D ( α , β ) ≤ min x θ P ( x ) ∴ d ∗ ≤ p ∗ \begin{aligned} &\because \theta_D(\alpha, \beta) = \min_{\mathbf{x}} L(\mathbf{x}, \alpha, \beta) \leq L(\mathbf{x}, \alpha, \beta) \leq \max_{\alpha, \beta;\alpha \geq 0} L(\mathbf{x}, \alpha, \beta) = \theta _P(\mathbf{x}) \\ \\ &\therefore \max_{\alpha, \beta;\alpha \geq 0} \theta_D(\alpha, \beta) \leq \min_{\mathbf{x}} \theta _P(\mathbf{x}) \\ \\ &\therefore d^{*} \leq p^{*} \end{aligned} \tag{22} ∵θD(α,β)=xminL(x,α,β)≤L(x,α,β)≤α,β;α≥0maxL(x,α,β)=θP(x)∴α,β;α≥0maxθD(α,β)≤xminθP(x)∴d∗≤p∗(22)
与弱对偶性相对应的是 强对偶性(strong duality),满足如下关系:
(23) d ∗ = p ∗ d^{*} = p^{*} \tag{23} d∗=p∗(23)
对于式(3)的原始问题和式(19)的对偶问题,假设函数 f ( x ) f(x) f(x) 和 g j ( x ) g_j(\mathbf{x}) gj(x) 是凸函数, h i ( x ) h_i(\mathbf{x}) hi(x) 是仿射函数,并且不等式约束 g j ( x ) g_j(\mathbf{x}) gj(x) 是严格可行的。如果满足 KKT 条件时,强对偶性成立。即可通过求解对偶问题而得到原始问题的解。
证明过程:
(24) max α , β min x L ( x , α , β ) = max α , β ( min x f ( x ) + min x ∑ i = 1 m α i h i ( x ) + min x ∑ j = 1 n β j h j ( x ) ) = max α , β min x f ( x ) + max α , β min x ∑ i = 1 m α i h i ( x ) + max α , β min x ∑ j = 1 n β j h j ( x ) = min x f ( x ) + max β min x ∑ j = 1 n β j h j ( x ) \begin{aligned} \max_{\alpha, \beta} \min_{\mathbf{x}} L(\mathbf{x}, \alpha, \beta) &= \max_{\alpha, \beta} \left( \min_{\mathbf{x}} f(\mathbf{x}) + \min_{\mathbf{x}} \sum_{i=1}^{m} \alpha_i h_i(\mathbf{x}) + \min_{\mathbf{x}} \sum_{j=1}^{n} \beta_j h_j(\mathbf{x}) \right) \\ & = \max_{\alpha, \beta} \min_{\mathbf{x}} f(\mathbf{x}) + \max_{\alpha, \beta} \min_{\mathbf{x}} \sum_{i=1}^{m} \alpha_i h_i(\mathbf{x}) + \max_{\alpha, \beta} \min_{\mathbf{x}} \sum_{j=1}^{n} \beta_j h_j(\mathbf{x}) \\ & = \min_{\mathbf{x}} f(\mathbf{x}) + \max_{\beta} \min_{\mathbf{x}} \sum_{j=1}^{n} \beta_j h_j(\mathbf{x}) \end{aligned} \tag{24} α,βmaxxminL(x,α,β)=α,βmax(xminf(x)+xmini=1∑mαihi(x)+xminj=1∑nβjhj(x))=α,βmaxxminf(x)+α,βmaxxmini=1∑mαihi(x)+α,βmaxxminj=1∑nβjhj(x)=xminf(x)+βmaxxminj=1∑nβjhj(x)(24)
我们先来看一下 min x ∑ j = 1 n β j g j ( x ) \min_{\mathbf{x}} \sum_{j=1}^{n} \beta_j g_j(\mathbf{x}) minx∑j=1nβjgj(x)
(25) ∵ β ≥ 0 , g j ( x ) ≤ 0 ∴ min x ∑ j = 1 n β j g j ( x ) = { 0 , β j = 0 ∣ ∣ g j ( x ) = 0 − ∞ , β j > 0 & g j ( x ) < 0 ∴ max β min x ∑ j = 1 n β j g j ( x ) = 0 , β j = 0 ∣ ∣ g j ( x ) = 0 \begin{aligned} & \because \beta \geq 0, g_j(\mathbf{x}) \leq 0 \\\\ & \therefore \min_{\mathbf{x}} \sum_{j=1}^{n} \beta_j g_j(\mathbf{x}) = \left \{ \begin{array}{cc} 0,\quad \beta_j = 0 || g_j(\mathbf{x}) = 0 \\ -\infty, \quad \beta_j > 0 \& g_j(\mathbf{x}) < 0 \end{array} \right. \\\\ & \therefore \max_{\beta} \min_{\mathbf{x}} \sum_{j=1}^{n} \beta_j g_j(\mathbf{x}) = 0, \quad \beta_j = 0 || g_j(\mathbf{x}) = 0 \end{aligned} \tag{25} ∵β≥0,gj(x)≤0∴xminj=1∑nβjgj(x)={0,βj=0∣∣gj(x)=0−∞,βj>0&gj(x)<0∴βmaxxminj=1∑nβjgj(x)=0,βj=0∣∣gj(x)=0(25)
由式(15)、式(24)和式(25)中的结果可得
(26) max α , β min x L ( x , α , β ) = min x f ( x ) = min x max α , β L ( x , α , β ) s . t . β j ≥ 0 β j g j ( x ) = 0 \begin{aligned} &\max_{\alpha, \beta} \min_{\mathbf{x}} L(\mathbf{x}, \alpha, \beta) = \min_{\mathbf{x}} f(\mathbf{x}) = \min_{\mathbf{x}} \max_{\alpha, \beta} L(\mathbf{x}, \alpha, \beta) \\ &s.t. \quad \beta_j \geq 0 \\ &\quad \quad \quad \beta_j g_j(\mathbf{x}) = 0 \end{aligned} \tag{26} α,βmaxxminL(x,α,β)=xminf(x)=xminα,βmaxL(x,α,β)s.t.βj≥0βjgj(x)=0(26)
再加上原始约束条件
h
i
(
x
)
=
0
h_i(\mathbf{x}) = 0
hi(x)=0 和
g
j
(
x
)
=
0
g_j(\mathbf{x}) = 0
gj(x)=0 后,与式(13)相同,即 KKT 条件。
参考:
[1] 周志华《机器学习》
[2] 李航《统计学习方法》
[3] https://zh.wikipedia.org/wiki/拉格朗日乘数
[4] https://zh.wikipedia.org/wiki/卡羅需-庫恩-塔克條件
[5] https://blog.csdn.net/u014472643/article/details/79612204
[6] https://www.cnblogs.com/liaohuiqiang/p/7805954.html
[7] https://www.cnblogs.com/liaohuiqiang/p/7818448.html
[8] https://blog.csdn.net/xianlingmao/article/details/7919597
[9] https://www.cnblogs.com/ooon/p/5721119.html