penalty term和loss function看起来很相似,但其实二者完全不同。
惩罚因子
penalty term的作用就是把约束优化问题转化为非受限优化问题。
比如我们要优化:
m
i
n
f
(
x
)
=
x
2
−
10
x
min\quad f(x) = x^2 - 10x
minf(x)=x2−10x
s
.
t
.
g
(
x
)
=
x
−
3
⩽
0
s.t.\quad g(x) = x -3 \leqslant 0
s.t.g(x)=x−3⩽0
我们可以利用惩罚因子,将上述问题转化为非约束优化问题,也就是拿掉
g
(
x
)
g(x)
g(x)的限制。
则函数变为:
m
i
n
P
(
x
,
s
,
r
)
=
x
2
−
10
x
+
s
r
ϕ
(
x
−
3
)
min\quad P(x, s, r) = x^2 - 10x + sr\phi(x -3)
minP(x,s,r)=x2−10x+srϕ(x−3)
其中,
s
=
s =
s= 1或-1;
r
r
r是控制变量,单调增或减;
ϕ
\phi
ϕ是惩罚函数。
如果我们令
s
=
1
,
r
=
1
s = 1, r = 1
s=1,r=1,
ϕ
=
x
2
\phi = x^2
ϕ=x2, 则:
m
i
n
P
(
x
,
s
,
r
)
=
x
2
−
10
x
+
(
x
−
3
)
2
min\quad P(x, s, r) = x^2 - 10x + (x-3)^2
minP(x,s,r)=x2−10x+(x−3)2
最终得到的结果是错的,原因是r太小,如果我们将r=100,最终就能得到对的结果。也就是说,在迭代优化过程中,r是单调变量,如果优化结果不满足约束条件,那么可调节r的值,继续迭代,直至满足为止。