首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

《Machine Learning for Humans》第二章:监督学习(一)

作者:Vishal Maini

编译:Bot

梯度下降:学习参数

蒙上眼睛,走下坡路。当你触及底部时,除了上行你将无路可走。

梯度下降是一个高频词汇,尤其是在神经网络中。像scikit-learn和TensorFlow这样的机器学习库会经常涉及梯度下降,所以它的细节值得了解。

梯度下降的目标是通过迭代找出模型损失函数的最小值,从而逼近更高的预测精度。

想象一下,如果你要蒙着眼睛找到山谷谷底,你会怎么做?一个合理的方法是触摸身边的地面,并向最陡峭的方向移动,这样一步步前进并循环往复,直到脚下是一片平坦。这时你就知道自己已经在山谷底部了;如果你再朝任意方向继续前行,你将会保持在同一海拔,或是开始走上坡路。

回到数学,下山过程中触摸的地面就是模型的损失函数,谷底的纵轴值就是该函数的最小值。

让我们先回顾一下回归问题中的损失函数:

可以看到,除X、Y和n这些训练中会给出的数值外,这个函数只有两个变量:β和β1。而我们的目标是是函数最小化。

图中的函数是f(β,β1)=z。在使用梯度下降前,首先我们可以猜测参数β、β1在函数最小时的值。

接着,我们再根据猜测的参数β求损失函数的偏导数:[dz/dβ, dz/dβ1]。这个偏导数可用来表示当β和β1微增后,整个损失函数的增减情况。

换句话说,假设目标受高等教育年数(β)为0,如果我们想增加模型预测的年收入数值,模型的损失(如不准确率)应该提升多少?但在这里,我们该朝反方向走,即走“下坡路”并尽可能减少损失。

同样的,如果提高了受高等教育年数对年收入(β1)的影响,那模型的损失又会发生什么变化?如果偏导数dz/β1是负数,那么你应该增加β1,因为它会减少总损失。如果它是一个正数,那你应该减少β1。如果它为0,那β1保持不变,因为这时它已经达到最佳状态。

一直这样做,直到函数到达最低点,即算法收敛且损失已经最小化。虽然此外还有许多技巧和特殊情况,但那已经超出本书的范围,就为参数化模型找到最优参数而言,梯度下降称得上是最为常见的方法之一。

过拟合

过拟合(Overfitting):Sherlock,你对刚才发生的事情解释得太过具体了。

正则化(Regularization):简单点,Sherlock,多一个词我就会多“爱抚”你一下。

超参数(λ):这就是我为每个多余的词“爱抚”你的力量。

机器学习的一个常见问题是过拟合:学习到的函数只能完美解释训练集的数据,而不适用于测试集数据。这个问题出现在当模型从训练数据过渡到现实模式时,它转而开始学习一些不具代表性的特征。随着模型变得越来越复杂,这个问题也愈加突出。欠拟合(Underfitting)是与之相关的另一个问题,如果你的模型不够复杂,它就无法捕捉数据中的潜在趋势。

Bias-Variance Tradeoff

偏差(Bias)是为用简化模型逼近现实世界现象而引入的误差量。

方差(Variance)是指模型的测试错误根据训练数据的变化而变化。它反映了模型对于训练数据集中所包含的特征的敏感性。

随着模型复杂度的提高和灵活性的提升,它的偏差会慢慢降低(它很好地拟合训练数据),但方差会慢慢提高(不能很好的概括特征)。为了得到良好的预测结果,你需要一个低偏差和低方差的模型。

Coursera的ML课程

请牢记这一点,我们只关心模型在测试集上的表现。你想要的是一个能预测哪些未经标记的邮件会被归类为垃圾邮件的模型,而不是一个只在用于构建该模型的电子邮件上有100%分类准确率的模型。虽然事后看起来都是20/20,但问题的关键在于这些学到的经验能否在未来起作用。

上图右侧的模型并没有损失,因为它完全适合每个数据点。但这个模型也没有概括,当需要解释未见过的新数据点时,它会给出糟糕的答案。

解决过拟合问题有两种方法:

1.使用更多的训练数据。你拥有的数据越多,模型从一个数据中学到的特征往往更难匹配用于其他数据。

2.正则化。在损失函数中添加一个惩罚项,避免模型为某个特征赋予过多解释,或将过多特征纳入学习范围。

上式的前半部分是正常的代价函数,后半部分则是一个正则化项,它对最大β系数施加了一个惩罚,因为这些系数易使函数过度解释某一特征。有了这两个要素,代价函数就能在偏差和方差间保持平衡:既能解释训练数据,又能防止把解释变得过于具体。

其中正则化项中的系数λ是一个超参数:模型的一个常规设置,你可以通过增加或减少(手动调试)来提高模型性能。λ值越高,对可能导致模型过拟合的最大β系数的惩罚也就越高。为了确定λ的最佳值,我们通常要用到一种称为交叉验证的方法,它包括在训练期间提供一部分训练数据,然后查看模型会如何解释其中的新内容。我们会在后期深入谈一谈这部分内容。

实战演练和进阶阅读

线性回归

如果想更彻底地了解线性回归这部分内容,请阅读《统计学习入门》(An Introduction to Statistical Learning with Applications in R)的第1—3章。这本书是在线免费阅读的(全英文),也是初学者理解机器学习概念并进行相关联系的绝佳资源。

实战演练:

波士顿房屋数据集(The Boston Housing Dataset)。你可以用Minitab和Excel,也可以挑战Python和R;

试着完成Kaggle项目,如房价预测,看看自己和其他参与者的差距。

梯度下降

如果想用Python实现梯度下降,可以阅读这个教程。

在实践中,我们很少需要从头开始做梯度下降,但掌握它背后的原理会帮助我们更有效地理解它,并知道它会在什么时候失效。

原文地址:www.dropbox.com/s/e38nil1dnl7481q/machine_learning.pdf?dl=0#pageContainer16

下期预告:《Machine Learning for Humans》第三章:监督学习(二)

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180305G1PI7E00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券