训练误差和泛化误差
- 训练误差(training error)是指, 模型在训练数据集上计算得到的误差。
- 泛化误差(generalization error):模型在新数据上的误差
- 例:根据模考成绩来预测未来考试分数
- 在过去考试中表现很好(训练误差) 不代表未来考试一定会好(泛化误差)
- 学生A通过背书在模考中拿到好成绩
- 学生B知道答案后面的原因
验证数据集和测试数据集
-
训练数据集: =》 训练模型参数
-
验证数据集:一个用来评估模型好坏的数据集 =》选择模型超参数
-
例如拿出50%的训练数据
-
不要跟训练数据混在一起
-
-
测试数据集:只用一次的数据集
- 未来的考试
- 房子的实际成交价
K-折交叉验证
- 在没有足够多数据时使用(非大数据集)
- 算法:
- 将训练数据分割成k块
- For i = 1, …, k
- 使用第 i 块作为验证数据集,其余作为训练数据集
- 报告K个验证集误差的平均
- 常用:K=5或10 ,相当于将数据训练K次,然后求得K的平均误差
- 可以用于确定超参数,取其中均值效果较好的,也可用随机森林将进行预测选择
过拟合和欠拟合
模型容量:模型的复杂度,拟合各种函数的能力
- 低容量的模型难以拟合训练数据
- 高容量的模型可以记住所有的训练数据
估计模型容量
- 难以在不同的种类算法之间比较
- 例如树模型和神经网络
- 给定一个模型种类,将有两个主要因素
- 参数的个数
- (d+1:d个输入的权重,加1个偏差)
- ( (d+1)m+(m+1)k:m层个d+1,加上(m+1)*输出k )
- 参数值的选择范围
- 参数的个数
VC维
-
对于一个分类模型,VC等于一个最大的数据集的大小,不管如何给定标号,都存在一个模型来对它进行完美分类
-
例:线性分类器的VC维
-
2维输入的感知机 VC维 = 3
-
能够分类任何三个点,但不是4个(xor)
这种情况是不行的:
-
-
支持N为输入的感知机的VC维是N+1
-
一些多层感知机的VC维O(N l o g 2 N log_2N log2N)
-
-
VC维的用处
- 提供为什么一个模型好的理论依据
- 他可以衡量训练误差和泛化误差之间的间隔
- 在深度学习中很少使用
- 衡量不是很准确
- 计算深度学习模型的VC维很困难
- 提供为什么一个模型好的理论依据
数据复杂度
- 样本个数
- 每个样本的元素个数
- 时间、空间结果
- 多样性
权重衰退:处理过拟合
-
使用均方范数作为硬性限制
- 通过限制参数值的选择范围来控制模型容量
- min l(w,b) ,受限于 ∣ ∣ w ∣ ∣ 2 ≤ θ || w ||^2 ≤ θ ∣∣w∣∣2≤θ
- 通常不限制偏移b (限不限制都差不多)
- 小的θ意味着更强的正则项(限制条件)
- 通过限制参数值的选择范围来控制模型容量
-
使用均方范数作为柔性限制
-
对于每个θ,都可以找到 λ 使得之前的目标函数等价于: m i n l ( w , b ) + λ 2 ∣ ∣ w ∣ ∣ 2 min\ l(w,b)+\frac{λ}{2}||w||^2 min l(w,b)+2λ∣∣w∣∣2
- 可以通过拉格朗日乘子来证明
-
超参数λ控制了正则项的重要程度
- λ = 0:无作用
- λ → ∞,最优解 w*→0
-
对损失的影响
-
L2正则项会对大数值的权值进行乘法,估计权值分散,将所有特征运用起来
-
惩罚项就是为了限制参数的取值范围,加入惩罚项会对最优解产生影响
-
正则项就是防止损失函数最优导致过拟合
-
分析如下
- 绿色圆是l,橙色圆是惩罚项
- l2损失在原点处的拉力会小于在曲线上方的拉力 =》也就是梯度大小
- 因此惩罚对于 W ~ ∗ \widetilde W* W ∗的拉力会大于W *,而W再往橙色靠,惩罚项弥补不了损失项,因此 W * 在惩罚和损失的情况最优
-
-
-
参数更新法则
- 计算梯度
- ∂ ∂ w ( l ( w , b ) + λ 2 ∣ ∣ w ∣ ∣ 2 ) = ∂ l ( w , b ) ∂ w + λ w \large \frac{∂}{∂w}(\mathcal l(w,b)+\frac{λ}{2}||w||^2) = \frac{∂l(w,b)}{∂w} + λw ∂w∂(l(w,b)+2λ∣∣w∣∣2)=∂w∂l(w,b)+λw
- 时间 t 更新参数 w t + 1 = w t − η ∂ ∂ w t \large w_{t+1}= w_t-\eta\frac{∂}{∂w_t} wt+1=wt−η
- 计算梯度