文章目录
优化的概念
通常的,一个有关AI的问题可以分解为:模型+优化
模型就是如何选择模型:逻辑回归、深度学习等,然后进行模型的实例化,例如选择深度学习,是采用alexnet还是什么构架?具体有几个卷积层,有多少全连接层,等等。实例化完毕之后,我们总是可以找到一个与实例化之后的模型相对应的objective function,再往后就进入了优化的阶段。优化的算法有很多:
我们如何选择,或者说知道那个优化算法适合我的objective function呢?这里要根据objective function的类型来看。
任何一个优化问题,都可以写成如下形式:
M
i
n
i
m
i
z
e
f
0
(
x
)
s
.
t
.
f
i
(
x
)
≤
0
i
=
{
1
,
2
,
3
,
.
.
.
,
K
}
g
j
(
x
)
=
0
j
=
{
1
,
2
,
3
,
.
.
.
,
L
}
Minimize \space f_0(x)\\ s.t. \space f_i(x)\leq0\quad i=\{1,2,3,...,K\}\\ g_j(x)=0\quad j=\{1,2,3,...,L\}
Minimize f0(x)s.t. fi(x)≤0i={1,2,3,...,K}gj(x)=0j={1,2,3,...,L}
根据形式可以确定objective function的类型
Optimization is the Core of Machine Learning
线性回归(Linear Regression):这里写默认的objective function,都略了。
逻辑回归(Logistic Regresssion):
SVM(Support Vector Machine):
协同过滤(Collaborative Filtering):
K均值(K-means):
关于objective function的分类
从下面几个维度来看:
1、是否smooth
2、是否convex
3、是否连续
4、是否有约束
凸集Convex Set
定义:假设对于任意
x
,
y
∈
C
x,y\in C
x,y∈C,并且任意参数
α
∈
[
0
,
1
]
\alpha \in [0,1]
α∈[0,1],我们有
α
x
+
(
1
−
α
)
y
∈
C
\alpha x+(1-\alpha)y\in C
αx+(1−α)y∈C,则集合为凸集。
说人话:集合有两个点,这个两个点的连线上的任意一点也在集合内
凸集的判断,求解就不展开了,对于非凸集简单看一个例子,有什么解法
这里给的例子就是:
Set Cover Problem
假设我们有个全集U(Universal Set),以及m个子集合S1,S2,…,Sm,目标是要寻找最少的集合,使得集合的union等于U.
例子:U={1,2,3,4,5},S:{S1={1,2,3],S2={2,4},S3={1,3},S4={4},S5={3,4},S6={4,5}},最少的集合为:{1,2,3},{4,5},集合个数为2.
Approach 1:Exhaustive Search
枚举法,最笨的方法。但是得到的一定是全局最优解。
这里找到一个就可以停止循环
Approach 2:Greedy Search
每个时刻都找一个冗余集合并去掉,直到没有冗余集合为止。可以看到不能保证全局最优解
当然,我们可以做限定,每次去掉个数最少的冗余集合。
Mathematical Formulation
用优化的方法来做。可以看到每一个集合都有两个状态,选择或不选择。用数学来表示就是:
目标函数:
M
i
n
i
m
i
z
e
∑
i
=
1
m
x
i
Minimize\sum_{i=1}^mx_i
Minimizei=1∑mxi
约束条件:
x
i
∈
{
0
,
1
}
x_i\in \{0,1\}
xi∈{0,1}
另外一个条件:
意思是U里面任意一个元素,可以属于多个S,这些S至少要有一个被选中。
下面判断这个问题是不是凸函数。
判断这个东西从两个方面来看:
1.定义域是convex set
也就是必须要在集合内,这个公式的集合是直线。
由于x只能是0或者1,所以这个不满足。
所以不是凸函数。
2.值域是convex set
因此不是凸函数,那是什么函数?
这个问题难解决,只能想办法吧条件放宽一点,如果把第三个条件变成线性条件,整个问题就变成线性问题了。
这里解出来的x不会是0和1两个整数,但是我们可以规定:
然后想办法证明即可。也就是想办法找出放宽后的解和真实的解有多大差距。我们希望这个差距越小越好。