@第二章 有监督分类与前馈神经网络
训练方法
留一法:在训练过程中,我们必须评估己训练函数在未见实例上的准确率。一种方法是进行留 一交叉验证 (leave one out cross validation ):训练k个函数 f ,每次取出1个不同的输入样例 x,评价得到的函数f() 的预测能力。
留存集:就计算时间而言,一个更有效的方法是划分训练集为两个子集,可以按80 %/ 20 %划分,在较大的子集(训练集)上训练模型,在较小的子集(留存集, held-out set )上测试模型的准确率。
三路划分:把数据分为训练集、验证集(开发集)和测试集的三路划分方法。这会给你两个留存集: 一个是验证集, 一个是测试集。所有的实验、调参、误差分析和模型选择都应该在验证集上进行。然后,最终模型在测试集上的 次简单运行将会给出它在未见实例上的期望质量的一个好的估计。
线性模型
二分类
二分类问题中,只有一个输出,w是一个向量,b是一个标量。
f
(
x
)
=
x
∗
w
+
b
f(x)=x*w+b
f(x)=x∗w+b
通常将f(x)输出通过 sign 函数,把负数映射为 -1( 反类),正数映射为 1(正类)。
对数线性二分类
将输出经过一个扁平函数从而将其映射到[0,1]范围内,必如signoid函数
1
/
(
1
+
e
−
x
)
1/(1+e^{-x})
1/(1+e−x),最终到:
y
=
1
/
(
1
+
e
−
(
x
∗
w
+
b
)
)
y=1/(1+e^{-(x*w+b)})
y=1/(1+e−(x∗w+b))
它是单调递增的,将输入映射到[0,1]范围内,如下图:
多分类
例如,给定一个文档,要求把它分类到6种不同语言中的一个:英语、法语、德语、意大利语、西班牙语和其他语言。
y
∈
R
6
y\in\mathbb R^6
y∈R6是一个每种语言都被模型指派 个得分所构成的向量,通过取
y
y
y中各分量的最大值确定被预测的语言。
训练和最优化
算法的目的是返回一个正确地把输入实例与它们的期望标签对应起来的函数
f
(
)
f()
f(),为此引入损失函数,我们把关于参数ct的全局损失定义为所有训练样例的平均损失,在此之下,训练样例不变,参数的值决定损失大小。这时,训练算法的目的是设置参数ct的值,是损失最小。达到最优。但是试图最小化在所有代价上的损失,可能会导致在训练集上的过拟合,为了避免过拟合,需要加上软约束
R
R
R,通过向目标函数加入
R
R
R ,这个优化问题需在低损失和低杂度之间权衡:
损失函数
- 二分类:二分类损失也称间隔损失(margin loss)或者支持向量机(SVM)损失,被定义为
- 多分类:
- 对数损失:可以看作hinge损失的平缓版:
- 分类交差熵损失:当希望得分为概率时,使用分类交叉熵损失(负对数似然)
- 等级损失:在某些情况下,没有标签的监督而言,只有一对正确项
x
x
x与不正确项
x
′
x'
x′,我们的目的是给正确项打比不正确项高的分。
其中, f ( x ) f(x) f(x)是被分类器指派到输入向量 x x x上的分数,目标是去给正确输入打分(分等级),使得分数比错误输入高至少1分的问隔。
常见的对数版本:
正则化
通过向优化目标中加入正则化
R
R
R来完成以上的目的,这样做可以控制参数值的复杂性,避免过拟合情况的发生:
正则化项根据参数值得出参数值的复杂度。然后,我们寻找既是低损失又是低复杂度的参数值。实际上,正则化器
R
R
R等价于权重的大小,所以要保证小的参数值。
R
R
R的常用选择有
L
2
L_2
L2范数、
L
1
L_1
L1范数、弹性网络。
注意到经过
L
2
L_2
L2正则化的模型会因高的参数权值而受到极其严重的惩罚,但一旦参数值足够接近于 0,
L
2
L_2
L2正则化的作用几乎可以忽略不计。与把有相对低权重的 10 个参数的值都减少 0. 相比,模型更偏向于把一个有高权重的参数的值减少1。
L
1
L_1
L1正则器会因低参数值和高参数值而受到惩罚,会偏向于将所有的非0参数值减少到0,因此它会支持稀疏的答案——许多参数都是0的模型,
L
1
L_1
L1正则器也叫作稀疏先验( sparse prior )。
基于梯度的最优化
为了训练模型,需要解决优化问题,常用解决方法是基于梯度的方法。基于梯度方法:通过反复计算训练集的损失估计,和,参数关于损失估计的梯度值,并将参数值向梯度相反的方向调整。
随机梯度下降法(SGD)
算法工作方式:反复随机抽取一个训练样例,计算误差关于参数ct的梯度,损失是关于ct的函数,参数ct被以与梯度相反的方向进行更新,比例系数为学习率。学习率在训练过程中可以是不变的,也可以按照关于时间步t的函数衰减。
如果函数是凸函数,带有适当递减的学习率的随机梯度下降保证能收敛到全局最优解,这种收敛性针对的是本章讨论的损失函数以及正则化器相结合的线性和对数线性模型。 但是,随机梯度下降法也可以被用来最优化非凸函数,比如多层神经网络。虽然不能保证找到全局最优解,但该算法被证明是健壮的,实际上表现得很好。