第 5 讲在 PDF 第 17–19 页回顾了本页内容。接下来的多分类逻辑回归与 softmax会把分类器扩展到两个以上的类别。
训练集上表现好,还不够 Lec 4 · Sep 3
假设训练集里的“wow”碰巧只出现在正面评论中。模型可能因此给这个词非常大的权重,过分依赖这个偶然线索。可是在新评论里,人们可能以不同方式使用它,也可能完全不用它,这时模型就容易判断失误。
这就是过拟合(overfitting)的风险:模型把有用的规律和偶然细节、噪声一起学了进去。完全拟合训练集不一定就是过拟合,但也不能据此认定模型很好。我们真正关心的是泛化(generalization),也就是模型面对新样本时的表现。
训练时能优化的,与最终在意的
给定训练集 \(D=\{(x^{(i)},y^{(i)})\}\),我们通过最小化损失来找到一个函数 \(f(x)\)。难点在于:直接优化的是训练集 \(D\) 上的损失,真正关心的却是模型在未见过的样本上能否预测正确。
太简单、刚合适,还是太复杂?
| 欠拟合 | 比较合适 | 过拟合 |
|---|---|---|
| 模型太简单,表达不了数据中的规律。例如特征 \([1,x]\) 只能描述一条直线,可能连训练数据也拟合不好。 | 模型抓住了数据背后的规律,对新样本也能作出较好的预测。 | 模型过分追随训练数据的细节。课件示意图中的模型训练损失为 0,却在观测点之间或之外作出很不稳定的预测。 |
正则化:让过大的权重付出代价 Lec 4 · Sep 3
减少过拟合的一种办法,是让模型不要过分依赖某些特征。正则化(regularization)会在训练损失之外再加一项惩罚。这样,模型既要尽量预测正确,也要控制参数的大小:
- 第一项是平均预测损失,第二项 \(\lambda R(\theta)\) 是新增的惩罚。
- \(\lambda\) 决定惩罚有多强,可以取任意 \(\ge0\) 的值。\(\lambda=0\) 时没有正则化,值越大,惩罚越受重视。它是需要我们选择的超参数(hyperparameter),不是像普通权重那样直接从训练中学出的参数。
- \(R(\theta)\) 衡量参数的大小。常用的两种方式是 L2 范数的平方和 L1 范数,下面分别说明。
L2:权重越大,惩罚增长得越快
L2 正则化把各个权重的平方相加,因此较大的权重会带来明显更大的惩罚。对这项惩罚求导,就会在原来的损失梯度上增加 \(2\lambda w\):
更新式多减去了 \(w\) 自身的一个倍数。这部分调整指向零,在步长足够小时,会让权重缩小,所以称为权重衰减(weight decay)。它抑制过大的权重,帮助模型减少对单个特征的过度依赖。
这里“L2 惩罚等价于权重衰减”的更新关系,针对的是普通梯度下降;其他优化算法实现权重衰减的方式可能不同。
L1:让一部分权重变成零
L1 正则化相加的是权重的绝对值,而不是平方。只要权重不为零,惩罚项的导数就只看它的正负,不看它有多大:
在 \(w_j=0\) 处,绝对值函数有一个尖角,没有普通意义上的导数。这时使用次梯度(subgradient):对于该惩罚项,\([-\lambda,\lambda]\) 内任意值都可以,0 也是其中一种选择。因此,上面的符号函数写法在非零处是导数,在零处取 0 则是一个合法的次梯度选择。
L1 和 L2 的差别在哪里
| 比较内容 | L1 | L2 |
|---|---|---|
| 惩罚项怎样调整非零权重? | 无论权重的绝对值多大,都给出大小为 \(\eta\lambda\)、朝向零的调整。 | 调整大小与权重成比例:权重越大,调整越大。 |
| 倾向得到什么结果? | 倾向得到稀疏的解,也就是许多权重恰好为零。不过,简单的次梯度更新可能越过零,而不是正好落在零上;最终是否得到精确的零,还与解和优化方法有关。 | 让模型中的权重整体较小,通常不会强制它们恰好为零。 |
| 这有什么用? | 若 \(w_j=0\),特征 \(j\) 就不再影响预测。这相当于做特征选择,去掉拟合后的模型不需要的特征。 | 以比较平滑的方式削弱大权重的影响。权重衰减是深度学习中常见的正则化方法。 |
正则化与 n-gram 模型中的平滑有相似的作用:都愿意牺牲一点训练集上的拟合程度,换取在新数据上更好的表现。两者也都引入了需要选择的设置,例如这里的 \(\lambda\),以及平滑中的 \(k\) 或插值权重。应当用单独留出的验证数据调节这些值,不能用测试集调参。
- 目标是预测好新样本,而不只是把训练损失降到零。
- 正则化在损失上增加 \(\lambda R(\theta)\)。L2 抑制大权重;L1 倾向产生稀疏权重,可以起到选择特征的作用。
- 用单独留出的验证数据,选择合适的正则化强度 \(\lambda\)。