定义
机器学习可以理解为自动构建一个从输入到输出的映射函数。要构建这个映射函数,需要从大量数据中学习规律。
将通过特特征工程提取到的表示记为
x
x
x,输出记为
y
y
y(也称作标签 Label),机器学习就是要寻找一个映射函数
f
(
x
)
f(x)
f(x)使得
y
=
f
(
x
)
y=f(x)
y=f(x)
具体说来,假设一
x
,
y
x,y
x,y服从分布
P
r
(
x
,
y
)
P_r(x,y)
Pr(x,y),并从中采样得到
x
(
1
)
,
x
(
2
)
,
.
.
.
,
x
(
N
)
x^{(1)},x^{(2)},...,x^{(N)}
x(1),x(2),...,x(N)的一组表示,对应的通过人工标注或自动的方式得到对应的
y
(
1
)
,
y
(
2
)
,
.
.
.
,
y
(
N
)
y^{(1)},y^{(2)},...,y^{(N)}
y(1),y(2),...,y(N)一组标签,这样就组成了
(
x
(
1
)
,
y
(
1
)
)
,
(
x
(
2
)
,
y
(
2
)
)
,
.
.
.
,
(
x
(
N
)
,
y
(
N
)
)
(x^{(1)},y^{(1)}),(x^{(2)},y^{(2)}),...,(x^{(N)},y^{(N)})
(x(1),y(1)),(x(2),y(2)),...,(x(N),y(N))一共N个样本对,就组成了训练样本(train data),接下来构造一个假设空间(Hypothesis space)
F
\mathcal{F}
F,假设空间中有
f
1
(
x
)
,
f
2
(
x
)
,
.
.
.
,
f
k
(
x
)
f^1(x),f^2(x),...,f^k(x)
f1(x),f2(x),...,fk(x)个映射函数,机器学习通过学习训练样本,来寻找到一个
f
∗
(
x
)
f^*(x)
f∗(x),使
f
∗
(
x
)
f^*(x)
f∗(x)尽可能的接近
f
(
x
)
f(x)
f(x)。
但机器学习不等同于简单的函数拟合问题,函数拟合问题是要利用训练数据使一个函数尽可能满足所有训练样本,而机器学习是寻找一个函数尽可能满足整个
x
,
y
x,y
x,y的分布
P
r
(
x
,
y
)
P_r(x,y)
Pr(x,y)而不是只有训练集
Wiki上机器学习的定义
机器学习是指从有限的观测数据中学习出具有一般性的规律,并利用这些规律对位置数据进行预测的方法
最后总结机器学习,可以认为它是通过算法使得机器能从大量数据中学习规律从而对新的样本做决策。
分类
机器学习分为监督学习、无监督学习和强化学习三种
常见的机器学习问题有
- 对于监督学习:
- 回归问题:主要特征是输出的预测结果是一个连续值,例如票房预测、股价预测、房价预测
- 分类问题:对输入的数据进行分类,例如手写数字识别、人脸检测、垃圾邮件检测
- 对于无监督学习:
- 聚类问题:与一般分类问题和回归问题这些监督学习不同,聚类问题算法的训练样本中没有标注类别标签,希望算法能够自动的将相同的种类分到一起,即只给一个 x x x,算法自动找到对应的预测的 y y y,它是一种无监督学习。
- 降维问题:将输入投放到二维空间中,语义类似的在空间中距离较近。
- 密度估计问题:给定一些点,然后通过这些点估算空间中任意一个点的密度函数。
回归问题与分类问题最大的区别在于回归问题输出是一个连续值,而分类问题是离散值。这就导致二者在诸多方面上有差异。
要素
机器学习的四个要素是:
- 数据:根据数据的不同将机器学习分为不同类型(数据形式为 ( x , y ) (x,y) (x,y)为监督学习,若数据连续则为回归问题,离散为分类问题;属性形式为 ( x , ) (x,) (x,)为无监督学习)
- 模型:在给定假设空间中选择最优的模型来预测 x , y x,y x,y之间的关系
- 学习准则:判断学习模型的好坏
- 优化算法:给定准则后,通过数学优化算法来学习得到所期望的模型
模型
以回归问题为例,下面给出对模型的解释
上图是一个简单的回归问题示例,需要人工定义一个模型 f ( x ; θ ) = ω T x + b f(x;\theta)=\omega^Tx+b f(x;θ)=ωTx+b ,其中 x x x表示数据, θ \theta θ为要学习的参数,在该模型中就是 [ ω T , b ] [\omega^T,b] [ωT,b] ,这是一种线性模型。
上图是一个略微复杂的回归问题示例,需要定义模型
f
(
x
;
θ
)
=
ω
T
ϕ
(
x
)
+
b
f(x;\theta)=\omega^T\phi(x)+b
f(x;θ)=ωTϕ(x)+b。其中,
ϕ
(
x
)
\phi(x)
ϕ(x)称为基函数,这个函数一般是非线性的。如果基函数是可学习的,那么
f
(
x
,
θ
)
f(x,\theta)
f(x,θ)就等价于神经网络
学习准则
一个好的模型应该在所有取值上都与真实映射函数一致。也就是说,需要函数的预测值与真实值之间的差尽可能小,即:
∣
f
(
x
,
θ
∗
)
−
y
∣
<
ϵ
,
∀
(
x
,
y
)
∈
X
×
Y
|f(x,\theta^*)-y|<\epsilon,\ \ \forall(x,y)\in \mathcal{X}\times \mathcal{Y}
∣f(x,θ∗)−y∣<ϵ, ∀(x,y)∈X×Y
但上述定义是比较模糊的,无法确切的定义这个一致,于是需要引入损失函数(Loss Function) 来量化模型预测和真实标签之间的差异,仍然以回归问题为例,回归问题一般需要使用到平方损失函数(Quadratic Loss Function) ,具体为:
L
(
y
,
f
(
x
;
θ
)
)
=
1
2
(
y
−
f
(
x
;
θ
)
)
2
\mathcal{L}(y,f(x;\theta))=\frac{1}{2}(y-f(x;\theta))^2
L(y,f(x;θ))=21(y−f(x;θ))2
即回归问题的损失为真实值与预测值差值的平方乘以二分之一。当真实值与预测值越接近,损失越小,反之越大,借此来寻找最合适的
θ
\theta
θ值
有了损失函数后,可以将学习准则定义为:
R
(
θ
)
=
E
(
x
,
y
)
∼
p
r
(
x
,
y
)
[
L
(
y
,
f
(
x
;
θ
)
)
]
\mathcal{R}(\theta)=\mathbb{E}_{(x,y)\sim p_r(x,y)}[\mathcal{L}(y,f(x;\theta))]
R(θ)=E(x,y)∼pr(x,y)[L(y,f(x;θ))]
即令损失函数在真实的数据分布下的期望最小化,这个期望就是期望风险(Expected Risk),但事实上,由于不知道真实的数据分布
p
r
(
x
,
y
)
p_r(x,y)
pr(x,y),因此无法直接计算期望风险。但是由大数定律(Law of Large Numbers)可知,可以通过随机采样的方式来取得样本近似计算期望。于是可以从数据中采集
x
(
1
)
,
.
.
.
,
x
(
N
)
x^{(1)},...,x^{(N)}
x(1),...,x(N)N个样本,计算其平均值
1
N
(
f
(
x
(
1
)
)
+
.
.
.
+
f
(
x
(
N
)
)
)
\frac{1}{N}(f(x^{(1)})+...+f(x^{(N)}))
N1(f(x(1))+...+f(x(N)))来近似计算出期望风险,这个近似出来的期望风险值,被叫做经验风险(Empirical Risk),数学表述为:
R
D
e
m
p
(
θ
)
=
1
N
∑
n
=
1
N
L
(
y
(
n
)
,
f
(
x
(
n
)
;
θ
)
)
\mathcal{R}_\mathcal{D}^{emp}(\theta)=\frac{1}{N}\sum_{n=1}^{N}\mathcal{L}(y^{(n)},f(x^{(n)};\theta))
RDemp(θ)=N1n=1∑NL(y(n),f(x(n);θ))
其中,
x
(
n
)
,
y
(
n
)
x^{(n)},y^{(n)}
x(n),y(n)为训练集数据,训练集从真实的数据分布
P
r
P_r
Pr中采集,为
{
(
x
(
n
)
,
y
(
n
)
)
}
n
=
1
N
{\{(x^{(n)},y^{(n)})\}}^N_{n=1}
{(x(n),y(n))}n=1N
经过上述推理过程,因此模型的学习准则就变成了使经验风险最小化(Empirical Risk Minimization,ERM),即寻找一个参数
θ
∗
\theta^*
θ∗ ,使得经验风险函数最小化,数学表述为:
θ
∗
=
a
r
g
m
i
n
θ
R
D
e
m
p
(
θ
)
\theta^*=\mathop{arg\ min}\limits_{\theta}\ \mathcal{R}_\mathcal{D}^{emp}(\theta)
θ∗=θarg min RDemp(θ)
arg min表示当函数取最小值时1
机器学习问题到了这一步已经变成了一个最优化问题。
优化算法
优化算法是为了解决最优化问题,最优化问题分为两类:
- 凸优化问题(凸函数、二阶导大于0、连续可导)
- 非凸优化问题
这里说凸优化问题中的凸函数不是指函数的凹凸性,如上左图所示的凸函数实际是具有最小值的凹函数(这里的凹函数时指凹凸性为凹)。这里所讲的凸函数的需要满足2
- 函数的定义域是一个凸集
- f ( θ x + ( 1 − θ ) y ) ≤ θ f ( x ) + ( 1 − θ ) f ( y ) , θ ∈ ( 0 , 1 ) f(\theta x + (1-\theta)y) \leq \theta f(x)+(1-\theta)f(y), \ \theta \in (0, 1) f(θx+(1−θ)y)≤θf(x)+(1−θ)f(y), θ∈(0,1)
上面不等式表示图上任意两点之间的弦都在函数图像之上(函数上两点凸组合的函数值恒小于等于两点函数值的凸组合)。
具体来说, θ x + ( 1 − θ ) y \theta x+(1-\theta)y θx+(1−θ)y是两点的凸组合,由于它只有一个参数 θ \theta θ、两个同一维度的自变量 x , y x,y x,y,所以这个式子表示的是一个一维的连续区间,取值范围为 ( m i n ( θ x + ( 1 − θ ) y ) , m a x ( θ x + ( 1 − θ ) y ) ) (min(\theta x+(1-\theta)y), max(\theta x+(1-\theta)y)) (min(θx+(1−θ)y),max(θx+(1−θ)y)) ,比如说 x = 2 , y = 4 x=2,y=4 x=2,y=4,那么 θ = 1 \theta=1 θ=1时函数取最小值2, θ = 0 \theta=0 θ=0时取最大值4,表示连续区间 [ 2 , 4 ] [2,4] [2,4]。
然后将这段区间带入函数(即 f ( θ x + ( 1 − θ ) y ) f(\theta x + (1-\theta)y) f(θx+(1−θ)y))得到的就是当 x x x属于上述区间时对应 f ( x ) f(x) f(x)的取值,也就是区间上的凸函数图像。
把整个不等式看成是一个等式,就是函数为 f ( x ) f(x) f(x),自变量为 θ x + ( 1 − θ ) y \theta x + (1-\theta)y θx+(1−θ)y,因变量为 θ f ( x ) + ( 1 − θ ) f ( y ) \theta f(x)+(1-\theta)f(y) θf(x)+(1−θ)f(y)的式子,记自变量为 x x x,因变量为 y y y,也就是 f ( x ) = y f(x)=y f(x)=y,这就表示一条过 f ( x ) , f ( y ) f(x),f(y) f(x),f(y)两点的直线。还是刚刚的例子,取 x = 2 , y = 4 x=2,y=4 x=2,y=4,那么 θ = 1 \theta=1 θ=1时过点 ( 2 , f ( 2 ) ) (2,f(2)) (2,f(2)), θ = 0 \theta=0 θ=0过点 ( 4 , f ( 4 ) ) (4,f(4)) (4,f(4))。
因此整个不等式就是说凸函数上的任意两点间的所有函数值都要小于两点间连线对应的函数值。
对于凸优化问题来说,由于函数只有一个极小值点,所以对函数求一阶导数灵气等于0可求得极小值点;对于非凸优化问题,由于有多个极小值,比较复杂。
梯度下降法(Gradient Descent)
除了上面提到的对凸函数求导的方式来求极小值点外,还可以用梯度下降法 解决最优化问题。
梯度是一个向量,梯度方向总是指向函数值增大的方向3,因此如果自变量沿着梯度方向,函数值将会变大,如果自变量变化方向与梯度方向相反,函数值就会减小。所以梯度下降就是让自变量沿着梯度的反方向变化
梯度下降法是一个迭代的方法,数学描述如下:
θ
t
+
1
=
θ
t
−
α
∂
R
D
(
θ
)
∂
θ
=
θ
t
−
α
1
N
∑
n
=
1
N
∂
L
(
y
(
n
)
,
f
(
x
(
n
)
;
θ
)
)
∂
θ
\begin{aligned} \theta_{t+1}&=\theta_t-\alpha\frac{\partial\mathcal R_D(\theta)}{\partial\theta}\\ &=\theta_t-\alpha\frac{1}{N}\sum_{n=1}^{N}\frac{\partial\mathcal{L}(y^{(n)},f(x^{(n)};\theta))}{\partial \theta} \end{aligned}
θt+1=θt−α∂θ∂RD(θ)=θt−αN1n=1∑N∂θ∂L(y(n),f(x(n);θ))
其中,
R
D
(
θ
)
\mathcal{R}_D(\theta)
RD(θ)为经验期望,
α
\alpha
α为步长,在梯度下降中一般叫做学习率,用来控制梯度下降的速度,是一个重要的超参数(超参数是指需要认为取选择的参数,无法像
θ
\theta
θ一样通过机器自动学习)。
学习率的取值将影响到梯度下降的效果。具体来讲,学习率过小将导致梯度下降速度慢,损失函数下降也会很慢;过大将导致函数无法取到最小值或越来越大,函数值在区间上来回震荡,损失函数稳定时的值偏高或不断增大。
随机梯度下降法(Stochastic Gradient Denscent, SGD)
随机梯度下降法是指在每次迭代中只采集一个样本进行计算,即
θ
t
+
1
=
θ
t
−
α
∂
L
(
y
(
n
)
,
f
(
x
(
n
)
;
θ
)
)
∂
θ
n
=
1
⋯
N
\theta_{t+1}=\theta_t-\alpha\frac{\partial\mathcal{L}(y^{(n)},f(x^{(n)};\theta))}{\partial\theta}\ \ \ \ n=1\cdots N
θt+1=θt−α∂θ∂L(y(n),f(x(n);θ)) n=1⋯N
在经过足够次数的迭代后,随机梯度下降也可以收敛到局部最优解。之所以有这样一个方法,是因为随机梯度下降计算开销比较小,每次迭代的计算过程中不需要将整个数据集都拿来计算,而是只需要一个样本进行计算,此外这种方法也使得其支持在线学习(在线学习指的是在某些例如Web应用场景下,每次可能只能上传一个样本)。
小批量(Mini-Batch)随机梯度下降法
随机梯度下降法的缺点是无法充分利用计算机的并行计算能力,为了解决这个问题,取随机梯下降法和一般梯度下降法的折中,在选择训练样本时,只随机选取一小部分,这样就兼顾了随机梯度下降的有点,也提高了训练效率。
但是在实际的实现中,随机选取样本总有可能导致有一部分样本无法被选取,为解决这个问题,一般是将训练集进行随机排序然后规定批次大小,分批选取样本进行训练。
对于机器学习中的最优化问题来说,一般认为当模型在验证集上的错误率不在下降时即达到最优点。