概念:人工智能与机器学习[1]
人工智能涵盖了其他所有概念,而机器学习是人工智能的一个子方向,深度学习又是机器学习中的一类方法。至于机器视觉和自然语言处理,它们是人工智能领域的两个应用,而且往往会用到深度学习。
Tom Mitchell
将机器学习任务定义为任务Task
、训练过程Training Experience
和模型性能Performance
三个部分。
以分单引擎为例,我们可以将提高分单效率这个机器学习任务抽象地描述为:
Task
:提高分单效率
Performance
:应答率/成交率
Experience
: 不断给分单模型喂数据,让模型学习最佳的匹配参数
研究内容
广义的机器学习不仅包括有监督学习和无监督学习等基于海量数据的建模方法,还包括一系列在建模过程中提升模型准确率、降低降低模型复杂度和提高模型稳健性等的一系列方法,比如集成学习、强化学习、迁移学习和分布式学习等。
1.有监督学习
根据自变量和因变量数据的对应关系,生成一个函数构建从自变量到因变量的映射关系。
根据因变量是否离散,我们将有监督学习任务划分为“分类”学习任务和“回归”学习任务。
- “分类”学习算法包括朴素贝叶斯、决策树、支持向量机、逻辑回归等
- “回归”学习算法包括多项式回归、逐步回归、套索回归和岭回归等
- 基于回归树的集成算法可以同时处理“分类”任务和“回归”任务,包括随机森林、
xgboost
和lightgbm
等
2.无监督学习
直接对输入的数据进行建模,主要包括“降维”学习任务和“聚类”学习任务
- “降维”算法包括因子分析、主成分分析、随机森林等
- “聚类”算法包括
k-means
聚类、层次聚类和密度聚类等
建模:从实际问题落地到公式和代码
1.模型
记
x
i
∈
R
d
x_i \in R^d
xi∈Rd`为
d
d
d维训练数据集中的第
i
i
i个样本,
y
i
y_i
yi为该样本对应的标签(离散值或者连续值,分别对应分类和回归学习任务),我们希望在给定
x
i
x_i
xi的情况下得到标签预测值
y
i
y_i
yi:
y
^
i
=
∑
j
=
1
d
w
j
x
i
j
\hat{y}_i=\sum_{j=1}^{d}w_jx_{ij}
y^i=j=1∑dwjxij
基本上模型都是从该线性模型发展而来的,比如逻辑回归模型就是将预测值变换为 1 / ( 1 + e x p ( − y ^ i ) ) 1/(1+exp(-\hat{y}_i)) 1/(1+exp(−y^i))后根据阈值得到分类结果。
给出模型后,我们的训练目标就从模型本身转化为参数求解:
Θ
=
{
w
j
∣
j
=
1
,
2
,
.
.
.
,
d
}
\Theta=\{w_j|j=1,2,...,d\}
Θ={wj∣j=1,2,...,d}
2.目标函数
目标函数是关于参数 Θ \Theta Θ的函数,衡量了模型本身的性能表现
Performance
,最优化目标函数的过程就是参数求解的过程
机器学习的目标函数可以是“损失函数”,也可以是“损失函数+正则化”
O b j ( Θ ) = L ( Θ ) + Ω ( Θ ) = ∑ i = 1 n l ( y i , y ^ i ) + λ ∑ j = 1 d ∣ w j ∣ q \begin{aligned} Obj(\Theta) &=L(\Theta)+\Omega(\Theta) \\ &=\sum_{i=1}^{n}l(y_i,\hat{y}_i) + \lambda \sum_{j=1}^{d}|w_j|^q \end{aligned} Obj(Θ)=L(Θ)+Ω(Θ)=i=1∑nl(yi,y^i)+λj=1∑d∣wj∣q
其中损失函数度量损失值和真实值的误差,用于评判模型预测效果的优劣:
S
q
u
a
r
e
L
o
s
s
:
l
(
y
i
,
y
^
i
)
=
(
y
i
−
y
^
i
)
2
L
o
g
i
s
t
i
c
L
o
s
s
:
l
(
y
i
,
y
^
i
)
=
y
i
l
n
(
1
+
e
−
y
^
i
)
+
(
1
−
y
i
)
l
n
(
1
+
e
y
^
i
)
\begin{aligned} Square Loss &:l(y_i,\hat{y}_i)=(y_i-\hat{y}_i)^2 \\ LogisticLoss &: l(y_i,\hat{y}_i)=y_iln(1+e^{-\hat{y}_i})+(1-y_i)ln(1+e^{\hat{y}_i}) \end{aligned}
SquareLossLogisticLoss:l(yi,y^i)=(yi−y^i)2:l(yi,y^i)=yiln(1+e−y^i)+(1−yi)ln(1+ey^i)
正则化根据参数 q q q阶长度给出了模型的复杂度,通过对参数向量增加某些规则从而缩小解空间,减少求出过拟合解的可能性:
L 1 : Ω ( Θ ) = λ ∑ j = 1 d ∣ w j ∣ L 2 : Ω ( Θ ) = λ ∑ j = 1 d ∣ w j ∣ 2 \begin{aligned} L_1 &: \Omega(\Theta)= \lambda \sum_{j=1}^{d}|w_j| \\ L_2 &: \Omega(\Theta)= \lambda \sum_{j=1}^{d}|w_j|^2 \end{aligned} L1L2:Ω(Θ)=λj=1∑d∣wj∣:Ω(Θ)=λj=1∑d∣wj∣2
给出目标函数后,我们的训练目标就明确为目标函数 O b j ( Θ ) Obj(\Theta) Obj(Θ)最小化。其中损失函数 L ( Θ ) L(\Theta) L(Θ)控制模型 b i a s bias bias,对应模型预测准确性;正则项 Ω ( Θ ) \Omega(\Theta) Ω(Θ)控制模型 v a r i a n c e variance variance,对应模型复杂度和稳健性。
最优化:最小化目标函数求解参数
1.凸优化理论
指定义在凸集中的凸函数最优化的问题
- 凸优化问题的局部最优解就是全局最优解
- 很多非凸问题都可以被等价转化为凸优化问题或者被近似为凸优化问题(例如拉格朗日对偶问题)
- 凸优化问题的研究较为成熟,当一个具体被归为一个凸优化问题,基本可以确定该问题是可被求解的
2.无约束问题引入
无约束问题指的是目标函数对自变量取值没有任何限制,对应的最优化问题可以抽象为:
min
x
∈
R
d
f
(
x
)
\min_{x\in R^d} f(x)
x∈Rdminf(x)
多元函数极值条件:多元函数各个分量的偏导数为 0 0 0是极值点存在的必要条件,多元函数的海森矩阵(二阶偏导数方阵,描述了多元函数的局部曲率)为正定或负定是极值点存在的充分条件。
根据多元函数极值点存在的必要条件,我们可以令多元函数的各个分量偏导数为 0 0 0求解所有可能的极值点,代入函数求解找到最小的极值点。
当函数复杂到我们无法轻易求出潜在的极值点时,我们可以构造初始值 x ( 0 ) x^{(0)} x(0)和递推公式不断逼近函数的极值点,比较典型的算法包括梯度下降法、坐标下降法和牛顿法等。
假设目标函数为线性回归的目标函数:
h
θ
(
x
(
i
)
)
=
∑
j
=
1
d
θ
j
x
j
(
i
)
h_\theta(x^{(i)})=\sum_{j=1}^{d} \theta_jx_j^{(i)}
hθ(x(i))=j=1∑dθjxj(i)
J
(
θ
)
=
1
2
n
∑
i
=
1
n
(
y
(
i
)
−
h
θ
(
x
(
i
)
)
)
2
J(\theta) = \frac{1}{2n}\sum_{i=1}^{n} (y^{(i)}-h_\theta(x^{(i)}))^2
J(θ)=2n1i=1∑n(y(i)−hθ(x(i)))2
其中自变量维度为
d
d
d,样本数为
n
n
n,
x
j
(
i
)
x_j^{(i)}
xj(i)表示第
i
i
i个样本的第
j
j
j个自变量的取值。
3.梯度下降法
以批量梯度下降法为例,每一步我们都沿着目标函数的负梯度方向更新参数值:
∂
J
(
θ
)
∂
θ
j
=
−
1
n
∑
i
=
1
n
(
y
(
i
)
)
−
h
θ
(
x
(
i
)
)
)
x
j
(
i
)
\frac{\partial J(\theta)}{\partial \theta_j}=-\frac{1}{n}\sum_{i=1}^{n}(y^{(i)})-h_\theta(x^{(i)}))x_j^{(i)}
∂θj∂J(θ)=−n1i=1∑n(y(i))−hθ(x(i)))xj(i)
θ
j
′
=
θ
j
+
1
n
∑
i
=
1
n
(
y
(
i
)
−
h
θ
(
x
(
i
)
)
)
\theta_j' = \theta_j+\frac{1}{n}\sum_{i=1}^{n}(y^{(i)}-h_\theta (x^{(i)}))
θj′=θj+n1i=1∑n(y(i)−hθ(x(i)))
4.牛顿法
将多元函数展开为二阶泰勒展开式:
f
(
X
)
=
f
(
X
(
k
)
)
+
▽
f
(
X
(
k
)
)
T
△
X
+
1
2
△
X
T
H
(
X
(
k
)
)
△
X
+
.
.
.
f(X) = f(X^{(k)}) + \triangledown f(X^{(k)})^T \triangle X + \frac{1}{2} \triangle X^T H(X^{(k)}) \triangle X + ...
f(X)=f(X(k))+▽f(X(k))T△X+21△XTH(X(k))△X+...
函数
f
(
X
)
f(X)
f(X)极值必要条件要求它必须是
f
(
X
)
f(X)
f(X)的驻点,即梯度向量为
0
0
0:
▽
f
(
X
)
=
0
\triangledown f(X) = 0
▽f(X)=0
由于
▽
f
(
X
(
k
)
)
\triangledown f(X^{(k)})
▽f(X(k))和
H
(
X
(
k
)
)
=
▽
2
f
(
X
(
k
)
)
H(X^{(k)}) = \triangledown ^2f(X^{(k)})
H(X(k))=▽2f(X(k)) 分别表示函数
f
(
X
)
f(X)
f(X)的梯度和海森矩阵取值为
X
(
k
)
X^{(k)}
X(k)的实值向量和实值矩阵,我们分别将其记为
g
k
g_k
gk和
H
k
H_k
Hk,根据驻点解出
X
(
k
+
1
)
X^{(k+1)}
X(k+1):
g
k
+
H
k
(
X
−
X
(
k
)
)
=
0
g_k + H_k(X-X^{(k)}) = 0
gk+Hk(X−X(k))=0
X
(
k
+
1
)
=
X
(
k
)
−
H
k
−
1
g
k
X^{(k+1)} = X^{(k)} - H_k^{-1}g_k
X(k+1)=X(k)−Hk−1gk
同样我们可以构造一个迭代数列不停地去逼近函数的最小值点。
有约束的最优化问题
1. 直观理解
上图中的多个黑色圆圈是二元函数
f
(
x
,
y
)
f(x,y)
f(x,y)投影在平面上的等高线(即同一条线代表函数值相同),蓝色的箭头代表函数的梯度方向(即函数值下降速度最快的方向)。如果在没有约束的情况下,我们应该直接沿着梯度方向找到使函数值不再下降的最小值,现在我们给函数加上了约束条件(即红色线,代表着
(
x
,
y
)
(x,y)
(x,y)的取值要落在红线上)。
现在问题转化为我们需要在红线上找到使得函数值最小化的 ( x , y ) (x,y) (x,y)的取值。
由于函数的等高线是密集的,因此我们只需要在满足函数等高线和约束曲线相切的点集合中寻找可能的极值点。(相切是极值点的必要非充分条件)
2.转化为数学语言
由于在极值点处函数等高线和约束函数的梯度都与切平面垂直,从而他们的梯度方向在同一条直线上,即:
- 对于约束曲面上的任意点 ( x , y ) (x,y) (x,y),该点的梯度 ▽ h ( x , y ) \triangledown h(x,y) ▽h(x,y)正交于约束曲面
- 在最优点处,目标函数在该点的梯度
▽
f
(
x
,
y
)
\triangledown f(x,y)
▽f(x,y)正交于约束曲面
▽ f ( x , y ) = λ ▽ h ( x , y ) \triangledown f(x,y) = \lambda \triangledown h(x,y) ▽f(x,y)=λ▽h(x,y)
我们定义拉格朗日函数如下,其中 λ \lambda λ称为拉格朗日乘子:
L ( x , y , λ ) = f ( x , y ) + λ h ( x , y ) L(x,y,\lambda) = f(x,y) + \lambda h(x,y) L(x,y,λ)=f(x,y)+λh(x,y)
我们将拉格朗日函数求偏导之后就得到上述的梯度公式,因此我们可以将原约束优化问题转化为对拉格朗日函数 L ( x , y , λ ) L(x,y,\lambda) L(x,y,λ)的无约束优化问题。
3.从等式约束到非等式约束
下图展示了拉格朗日乘子法的几何含义:在左边的等式约束( g ( x ) = 0 g(x)=0 g(x)=0)下和右边的不等式约束 g ( x ) ≤ 0 g(x)\leq 0 g(x)≤0下最小化目标函数 f ( x , y ) f(x,y) f(x,y)。其中红色曲线表示 g ( x ) = 0 g(x)=0 g(x)=0围成的曲面。
不等于约束 g ( x ) ≤ 0 g(x)\leq 0 g(x)≤0的情形中,最优点 x ∗ x^* x∗要么出现在边界 g ( x ) = 0 g(x) = 0 g(x)=0上,要么出现在区域 g ( x ) < 0 g(x)<0 g(x)<0中:
- 对于 g ( x ) < 0 g(x)<0 g(x)<0的情形,因为 ▽ f ( x ) \triangledown f(x) ▽f(x)方向向里,因此约束条件 g ( x ) ≤ 0 g(x)\leq 0 g(x)≤0不起作用,我们只需要通过条件 ▽ f ( x ) = 0 \triangledown f(x) = 0 ▽f(x)=0求得可能的极值即可。
- g ( x ) = 0 g(x)=0 g(x)=0的约束类似于前面提到的等式约束,但是 ▽ f ( x ∗ ) \triangledown f(x^*) ▽f(x∗)的方向和 g ( x ∗ ) g(x^*) g(x∗)必须相反,即存在常数 λ > 0 \lambda > 0 λ>0使得 ▽ f ( x ∗ ) + λ ▽ g ( x ∗ ) = 0 \triangledown f(x^*) + \lambda \triangledown g(x^*)=0 ▽f(x∗)+λ▽g(x∗)=0
当最优值落在 g ( x ) < 0 g(x)<0 g(x)<0区域时,约束条件件 g ( x ) ≤ 0 g(x)\leq 0 g(x)≤0不起作用,因此我们令约束条件的乘子 λ = 0 \lambda =0 λ=0;当最优值落在 g ( x ) = 0 g(x)=0 g(x)=0边界上时, λ g ( x ) \lambda g(x) λg(x)自然等于0。考虑到这两种情形,我们可以推出 λ g ( x ) = 0 \lambda g(x)=0 λg(x)=0。
因此,拉格朗日乘子法可以写成如下的等价形式,括号的条件也叫做KKT
条件。
L
(
x
,
λ
)
=
f
(
x
)
+
λ
g
(
x
)
L(x,\lambda) = f(x) + \lambda g(x)
L(x,λ)=f(x)+λg(x)
{
g
(
x
)
≤
0
λ
≥
0
λ
g
(
x
)
=
0
\left\{\begin{matrix} g(x)\leq 0\\ \lambda \geq 0\\ \lambda g(x) = 0 \end{matrix}\right.
⎩⎨⎧g(x)≤0λ≥0λg(x)=0
4.拉格朗日法的一般写法
考虑具有
m
m
m个等式约束和
n
n
n个不等式约束的一般优化情形:
min
x
f
(
x
)
\min_{x} f(x)
xminf(x)
{
h
i
(
x
)
=
0
(
i
=
1
,
2
,
.
.
.
,
m
)
g
j
(
x
)
≤
0
(
j
=
1
,
2
,
.
.
.
,
n
)
\left\{\begin{matrix} h_i(x) = 0 \quad (i=1,2,...,m)\\ g_j(x) \leq 0 \quad (j=1,2,...,n) \end{matrix}\right.
{hi(x)=0(i=1,2,...,m)gj(x)≤0(j=1,2,...,n)
引入拉格朗日乘子
λ
=
(
λ
1
,
λ
2
,
.
.
.
,
λ
m
)
T
\lambda = (\lambda_1, \lambda_2,...,\lambda_m)^T
λ=(λ1,λ2,...,λm)T和
μ
=
(
μ
1
,
μ
2
,
.
.
.
,
μ
n
)
T
\mu=(\mu_1,\mu_2,...,\mu_n)^T
μ=(μ1,μ2,...,μn)T,对应的拉格朗日函数为:
L
(
x
,
λ
,
μ
)
=
f
(
x
)
+
∑
i
=
1
m
λ
i
h
i
(
x
)
+
∑
j
=
1
n
μ
j
g
j
(
x
)
L(x,\lambda,\mu)=f(x)+\sum_{i=1}^{m} \lambda_i h_i(x)+\sum_{j=1}^{n}\mu_jg_j(x)
L(x,λ,μ)=f(x)+i=1∑mλihi(x)+j=1∑nμjgj(x)
不等式问题对应的KKT
条件为:
{
g
j
(
x
)
≤
0
μ
j
≥
0
μ
j
g
j
(
x
)
=
0
\left\{\begin{matrix} g_j(x) \leq 0 \\ \mu_j \geq 0\\ \mu_j g_j(x) = 0 \end{matrix}\right.
⎩⎨⎧gj(x)≤0μj≥0μjgj(x)=0
5.拉格朗日对偶性
通过拉格朗日对偶性,我们可以将主问题转化为凸函数性质的对偶问题,而凸优化问题相对而言是易于求解的。
Reference
[1] https://www.zhihu.com/question/294147625/answer/490538339
[2] https://homes.cs.washington.edu/~tqchen/pdf/BoostedTree.pdf
[3] https://www.jianshu.com/p/c922a3263e3a