01 机器学习模型的类型
机器学习包括:
- 监督学习
- 无监督学习
对于监督学习,训练集包含输入的数据X及其对应的标签Y
我们所求的是一个包含了X和Y的概率分布
机器学习的任务:对于概率分布 P θ ( X ) P_\theta(X) Pθ(X),寻找最优参数 θ t \theta_t θt,使得概率分布 P θ ( X ) P_\theta(X) Pθ(X)最大
概率分布分为:
- 联合概率分布
P
θ
(
X
,
Y
)
P_\theta(X,Y)
Pθ(X,Y)
表示数据和标签共同出现的概率 - 条件概率分布
P
θ
(
Y
∣
X
)
P_\theta(Y|X)
Pθ(Y∣X)
表示在给定数据的条件下,对应标签的概率
监督学习的机器学习模型分成两类:
-
生成式模型:
如:朴素贝叶斯(NB)、隐马尔科夫模型(HMM)
基于联合概率分布;
除了能够根据输入数据X来预测对应标签Y,还能根据训练得到的模型产生服从训练数据集的分布的数据(X,Y),相当于生成一组新数据。 -
判别式模型:
如:逻辑斯蒂回归(LR)、条件随机场(CRF)
基于条件概率分布;
仅能根据具体的数据X来预测对应的标签Y
判别式模型牺牲了生成数据的能力,获取比生成式模型高的预测准确率(这个可以通过全概率公式和信息熵公式说明)
P ( X , Y ) = ∫ P ( Y ∣ X ) P ( X ) d X P(X,Y) = \int P(Y|X)P(X) dX P(X,Y)=∫P(Y∣X)P(X)dX
由上述公式可以看到,相对于条件概率,我们在计算联合概率的时候引入了输入数据的概率分布
P
(
X
)
P(X)
P(X),而这不是我们关心的,于是就相对削弱了模型的预测能力。
具体定量的说明,可通过信息熵原理解释(如果概率分布分布相对集中,以为着包含的信息少,信息熵就比较少)
02 损失函数以及模型的拟合
-
对于回归模型,
多关注高斯分布,
若误差符合正态分布,称为L2模损失函数或方均误差函数;
若误差符合其他分布,称为L1模损失函数 -
对于分类问题,
多关注多项分布,
对结果进行独热编码(one-hot-encoding)(标签是目标标签则为1,否则为0)。
损失函数为交叉熵(Cross Entropy)
一般将数据集分为训练集(Training Set)、验证集(Validation Set)和测试集(Test Set)
超参数(hyper-parameter):在模型初始化时选的,不随着训练过程变化的参数,比如神经网络的层数
常根据验证集的表现来决定具体使用的模型和模型对应的超参数。
一般,随着模型训练的进行,模型的损失函数在训练集上将会越来越低,而在验证集上将会出现先减小后增加的情况。
==> 过拟合
在验证集损失函数到达最低点的左边 ==> 欠拟合区域
在验证集损失函数到达最低点的右边 ==> 过拟合区域
一般,随着数据量增大,模型越不容易过拟合;
随着参数数目增大(即增大模型复杂性),模型越容易过拟合。
另外,测试集的存在是为了避免超参数的调节影响到最终的结果。
实际应用中,超参数的调节总是以尽量降低验证集的损失函数为目的,这样验证集就不能作为很好的评判标准,所以需要一个独立的未针对其调节过参数的数据集来验证模型是否有很高的准确率。因此,我们从数据集中独立出了测试集,以此来验证模型是否正常工作。
机器学习实践中,可以考虑类似70%、20%、10%的训练集、验证集、测试集划分。
深度学习中,由于训练集越大越好,可以考虑类似90%、5%、5%的训练集、验证集、测试集划分。
在深度学习中,避免过拟合的几种方式:
-
加入正则项
引入参数的先验分布(因为之前之前我们的推导中没有假设参数的范围,因此给参数很大的变动范围,容易过拟合)。
为了减少拟合的趋势,可以人为假设参数符合一定的分布,比如高斯分布,这样就能减少参数的的选择范围。这种人为选择的分布就是参数的先验分布。
假设参数 θ \theta θ服从 N ( 0 , σ 1 2 ) N(0,\sigma_1^2) N(0,σ12)的正态分布,则:
θ t = a r g m i n θ ∑ i l o g P θ ( X i ∣ θ ) P ( θ ) = a r g m i n θ ∑ i ( f θ ( X i ) − Y i ) 2 + α 2 ∣ ∣ θ ∣ ∣ 2 \theta_t = \mathop{argmin}\limits_{\theta} \sum \limits_i log P_\theta(X_i|\theta)P(\theta) = \mathop{argmin}\limits_{\theta} \sum \limits_i (f_\theta(X_i)-Y_i)^2+\frac{\alpha}{2}||\theta||^2 θt=θargmini∑logPθ(Xi∣θ)P(θ)=θargmini∑(fθ(Xi)−Yi)2+2α∣∣θ∣∣2
其中 α = σ 2 / σ 1 2 \alpha=\sigma^2/\sigma^2_1 α=σ2/σ12
可以看到后面加了一项,即所有的参数平方和乘以一个常数 α \alpha α。
相应的系数 α \alpha α为正则化系数,正则化系数越大,正则化效果越强,参数分布的标准差就越小,对应的模型在训练过程中就会偏向欠驱动区域,否则,则会偏向过拟合区域。
这样,我们通过调节正则化系数,就可以控制模型的拟合情况,使得最后模型在验证集上尽量得到高的准确率。
先验分布若是正态分布,则称为L2正则化;若先验分布是拉普拉斯分布,则这里使用的正则化称为L1正则化。 -
提前停止
可以通过观察验证集的损失函数是否停止下降并开始上升来判断模型是否到达过拟合的区域 -
丢弃(Dropout),即把神经元按照一定的概率置为0
-
优化器中使用权重衰减(weight decay)
上述方法的本质原理都是减小参数的变化空间,从而缩小模型的表示范围,最后达到让模型在表示训练集数据的同事,也能很好的泛化到验证集数据的目的。