[机器学习实战]训练模型
Preference
以线性回归模型为例,以下介绍两种训练模型的方法:
闭式方程
:直接计算出最适合训练集的模型参数,即使训练集上成本函数最小化的模型参数- 迭代优化(
梯度下降GD
):逐渐调整模型参数直至训练集上的成本函数调至最低,最终趋同于第一种方法计算出来的模型参数。梯度下降有几种变体(批量梯度下降、小批量梯度下降、随机梯度下降)梯度下降
以学习曲线分辨训练数据是否过拟合;正则化技巧(岭回归、lasso回归)降低过拟合风险;两种分类任务模型:Logistic回归(二元分类器)和Softmax回归(多元逻辑回归,是多分类而不是多输出)。
Question & Conclusion
1.若训练集有超过百万个特征,应该选择什么线性回归训练算法?
若训练集有数百万个特征,应该选择随机梯度下降或小批量梯度下降。
当使用批量梯度下降时,由于它每一步梯度下降基于整个训练集,对内存要求很高;当使用标准方程时,由于计算复杂度随着特征数量的增加而快速提升(比二次方还高),因此不能使用标准方程方法。
2.若训练集的特征数值大小迥异,什么算法可能会受到影响?受影响程度如何?怎样解决?
若训练集的特征数之有非常迥异的尺寸比例,成本函数将呈现为细长的碗装,这会导致梯度算法将耗费很长时间收敛。
为解决该问题,应在使用梯度下降训练模型之前先对数据进行缩放。
注意若使用标准方程法不经过特征缩放也可正常工作。
3.训练逻辑回归模型时,梯度下降是否会困于局部最小值?
逻辑回归成本函数(log损失函数):
J
(
θ
)
=
−
1
m
∑
i
=
1
m
[
y
(
i
)
l
o
g
(
p
^
(
i
)
)
+
(
1
−
y
(
i
)
)
l
o
g
(
1
−
p
^
(
i
)
)
]
J(\theta)=-\frac{1}{m}\sum_{i=1}^{m}\left [ y^{(i)}log(\hat{p}^{(i)})+(1-y^{(i)})log(1-\hat{p}^{(i)}) \right ]
J(θ)=−m1i=1∑m[y(i)log(p^(i))+(1−y(i))log(1−p^(i))]
其中
p
^
=
h
θ
(
X
)
=
σ
(
θ
T
⋅
X
)
\hat{p}=h_{\theta}(X)=\sigma(\theta^T\cdot X)
p^=hθ(X)=σ(θT⋅X),
σ
(
⋅
)
\sigma(\cdot)
σ(⋅)是一个sigmoid函数,输出为一个0-1之间的数字。
由于逻辑回归成本函数时凸函数,所以它不会陷入局部最小值。
4.假设运行时间足够长,所有的梯度下降是不是最终会产生相同的模型?
若优化问题是凸的(如线性回归和逻辑回归),并且学习率不是太高,那么所有的梯度下降算法都可以解决全局最优,最终生成的模型都很相似。
但除非逐步降低学习率,否则随机梯度下降和小批量梯度下降都不会真正收敛,它们会不断地在全局最优附近波动。
故即使运行时间很长,算法产生的模型仍然会有轻微不同。
5.假设你使用批量梯度下降,每一轮训练都绘制其验证误差,若发现验证误差持续上升,可能发生了什么?怎样解决?
若验证误差开始每轮上升,可能性之一是学习率太高导致算法开始发散;若训练误差也开始上升,则需要降低学习率;但若训练误差没有上升,那么模型很可能过度拟合训练集,应立刻停止训练。
6.当验证误差开始上升时,立刻停止小批量梯度下降算法训练是否正确?
无论是随机梯度下降还是小批量梯度下降,由于随机性使得它们都不能保证在每一次训练迭代都取得进展。
所以,若在验证误差刚开始上升就停止训练,很可能会在达到最优之前过早停止训练。
解决办法是定时保存模型,当模型一段时间没有改善时,意味着可能不会再超过最好记录了,可以恢复到保存的最优模型。
7.在讨论的三种梯度下降算法中,哪种能最快到达最优解附近?哪种会收敛?如何使其他算法同样收敛?
随机梯度下降的训练迭代最快,因为它每一次只考虑一个训练实例,所以它会最快到达全局最优附近(或批量非常小的小批量梯度下降)。
但只有批量梯度下降才会经过足够长时间训练后真正收敛。
对于随机梯度下降和小批量梯度下降,除非逐渐降低学习率,否则将一直围绕最小值上上下下。
8.假设你使用的是多项式回归,绘制出学习曲线,发现训练误差和验证误差之间存在很大差距。可能是什么情况?怎样解决?
若验证误差远高于训练误差,可能是过度拟合。
解决方法:
- 多项式降阶:自由度越低,过度拟合可能性越低;
- 正则化:在成本函数中增加 l 1 l_1 l1(Lasso回归)和 l 2 l_2 l2(岭回归)惩罚,达到降低模型自由度的目的;
- 扩大训练集
9.假设使用岭回归,发现训练误差和验证误差几乎相等并且都很高。你认为模型是高方差还是高偏差?应该提高还是降低正则化超参数 α \alpha α?
偏差/方差权衡:
- 偏差:该部分泛化误差原因在于错误假设,如假设模型为线性但实际上是二次。高偏差模型最有可能是
拟合不足
。 - 方差:模型对训练数据微笑变化过度敏感。具有高自由度的模型很可能有高方差,所以很可能
过度拟合
。
增加模型复杂度会显著提升方差减少偏差;降低模型复杂度会提升模型偏差降低方差。
若训练误差和验证误差相近,并且都很高,则模型很可能对训练集拟合不足。这意味着偏差较高,应降低正则化超参数。
10.为何使用:岭回归而不是线性回归?Lasso回归而不是岭回归?弹性网络而不是Lasso回归?
- 岭回归成本函数: J ( θ ) = M S E ( θ ) + α 1 2 ∑ i = 1 n θ i 2 J(\theta)=MSE(\theta)+\alpha \frac{1}{2}\sum_{i=1}^{n}\theta^2_i J(θ)=MSE(θ)+α21∑i=1nθi2v
- Lasso回归成本函数: J ( θ ) = M S E ( θ ) + α 1 2 ∑ i = 1 n ∣ θ i ∣ J(\theta)=MSE(\theta)+\alpha \frac{1}{2}\sum_{i=1}^{n}\left | \theta_i \right | J(θ)=MSE(θ)+α21∑i=1n∣θi∣
- 弹性网络成本函数: J ( θ ) = M S E ( θ ) + r α ∑ i = 1 n ∣ θ i ∣ + 1 − r 2 α ∑ i = 1 n θ i 2 J(\theta)=MSE(\theta)+r\alpha\sum_{i=1}^{n}\left | \theta_i \right |+ \frac{1-r}{2}\alpha\sum_{i=1}^{n}\theta^2_i J(θ)=MSE(θ)+rα∑i=1n∣θi∣+21−rα∑i=1nθi2
有正则化的模型通常比没有正则化模型表现好,所以应优先选择岭回归而不是普通线性回归。
Lasso回归使用 l 1 l_1 l1惩罚稀疏,倾向于将不重要的特征权重降为0,总得到一个除了最重要的特征权重之外,其他所有权重都为0的稀疏模型。若我们认为只有少数几个特征真正重要便可使用Lasso回归,否则便使用岭回归模型。
某些情况下Lasso可能产生异常表现(如多个特征强相关,或特征数量比训练实例多),而弹性网络添加了一个额外的超参数对模型进行调整。将弹性网络的 l1_ratio 设置为接近1便可得到Lasso。
11.若要将图片分类为户外/室内以及白天/黑夜,则应该实现两个逻辑回归分类器还是一个Softmax回归分类器?
训练两个逻辑回归分类器,因为Softmax是单输出,是多分类而不是多输出。