[机器学习实战]训练模型

[机器学习实战]训练模型

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=1m[y(i)log(p^(i))+(1y(i))log(1p^(i))]
其中 p ^ = h θ ( X ) = σ ( θ T ⋅ X ) \hat{p}=h_{\theta}(X)=\sigma(\theta^T\cdot X) p^=hθ(X)=σ(θTX) σ ( ⋅ ) \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(θ)+α21i=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(θ)+α21i=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+21rαi=1nθi2

有正则化的模型通常比没有正则化模型表现好,所以应优先选择岭回归而不是普通线性回归。

Lasso回归使用 l 1 l_1 l1惩罚稀疏,倾向于将不重要的特征权重降为0,总得到一个除了最重要的特征权重之外,其他所有权重都为0的稀疏模型。若我们认为只有少数几个特征真正重要便可使用Lasso回归,否则便使用岭回归模型。

某些情况下Lasso可能产生异常表现(如多个特征强相关,或特征数量比训练实例多),而弹性网络添加了一个额外的超参数对模型进行调整。将弹性网络的 l1_ratio 设置为接近1便可得到Lasso。

11.若要将图片分类为户外/室内以及白天/黑夜,则应该实现两个逻辑回归分类器还是一个Softmax回归分类器?

训练两个逻辑回归分类器,因为Softmax是单输出,是多分类而不是多输出。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值