查看原文
其他

暑期追剧学AI | 十分钟搞定机器学习中的数学思维(二)

2017-07-30 大数据文摘字幕组 大数据文摘

大数据文摘作品,转载要求见文末

翻译 | 张静,大力

校对 | 元元   时间轴 | 弋心

后期 | 郭丽(终结者字幕)


后台回复“字幕组”加入我们!


人工智能中的数学概念一网打尽!欢迎来到YouTube网红小哥Siraj的系列栏目“The Math of Intelligence”,本视频是该系列的第二集,讲解优化问题和常用便捷优化方法。后续系列视频大数据文摘字幕组会持续跟进,陆续汉化推出喔!

  • 全部课表详见:

https://github.com/llSourcell/The_Math_of_Intelligence


  • 本集代码挑战:

https://github.com/llSourcell/Second_Order_Optimization_Newtons_Method


本期视频时长11分钟,来不及看视频的小伙伴,可以先拉到视频下方看文字部分。

https://v.qq.com/txp/iframe/player.html?vid=s0531bjoc7r&width=500&height=375&auto=0


嗨!大家好!我是 Siraj。今天我们来聊一聊优化问题!世界上有成千上万种语言,每种语言在传情达意方面都有其各自的特点,但是有一门语言是全人类共通的,不论你来自哪里。


这就是数学,不论你的文化你的年龄如何,你都能理解这门数字的语言。是它将我们从空间和时间上联系起来。跟其他语言一样,数学也是熟能生巧,但有一点不同的是,数学语言运用得越熟练,在做其他想做的事时你就越游刃有余。



生活中处处有数学,只是一定程度上大多数人都没意识到。我们可以将事物都看成一组变量、看作矩阵,并且这些变量间存在联系。在数学里面,我们把这种联系称之为函数,我们就是用这种方法表达一组模式 一种映射关系,以及多个变量之间的关系。


优化过程五步骤

不论我们用什么机器学习模型,也不论我们用什么数据库,机器学习的目的都在于优化目标,这样做我们就是在准确地估算函数。优化过程通过不断迭代,帮我们发现数据背后的函数。


上周我们介绍了一种较为流行的优化方法,梯度下降法,可以把它分为5个步骤——


1.首先,我们定义某个机器学习模型。该模型具有一组初始权值。箭头所示数值作为模型所表示函数的系数,表格为输入数据与输出预测之间的映射,这些值都是不成熟的预测值。我们不知道实际值应该是多少,但我们正设法找出最优解。

2.我们将定义一个误差函数,绘制一张关系图,表示函数中所有可能的误差值和所有可能的权重值之间的关系。从图上我们可以看到一个最低谷,即最小值。

3.我们利用误差函数帮助计算个权值的偏导,从而得出梯度。梯度表示误差变化,这种变化是由权值,从原始值变化很小的值后引起的。

4.我们用梯度变化曲线来定向更新权值,以使误差最小化。通过迭代,逐步接近函数的最小值。

5.在梯度曲线负方向上,重复这一步骤,接近最小值后我们也就得到了所选模型的最佳权值。此时梯度为0,这时该模型就能对输入数据做出预测。

这些数据可以是模型从没用过的,大多数优化问题都能通过梯度下降法及其衍生方法来解决。它们都属于一阶优化方法,之所以称之为一阶,是因为我们只需要计算一阶导数。


二阶优化法简介

还有一类方法,不过它们没有被广泛使用,我们称之为二阶优化法。这类方法要求我们计算二阶导数。一阶导数告诉我们,函数在某一点上是趋于增加还是减少。二阶导数则告诉我们,一阶导数的增减情况。


通过一阶优化法,我们可以得到一条经过误差曲面上某一点的切线。而通过二阶法则可以得到一个二次曲面,该曲面与误差曲面的曲率相吻合。


二阶法的优点就在于,它们不忽略误差曲面的曲率。而且就逐步迭代的表现来看,二阶法是更好的选择,让我们来看一种流行的二阶优化方法,叫作牛顿法。就是以发明了微积分的那个家伙命名的,他叫作什么呢?嘿嘿,你懂的!


二阶优化法进阶法——牛顿法

实际上,牛顿法有两个版本。第一个版本是找出某个多项式的根,也就是图上所有与x轴相交的这些点。所以,如果你抛出一个球并记录它的轨迹,求出方程的根,就会知道球落地的确切时间。


第二个版本是优化法,也是我们在机器学习中用到的方法。


让我们先写写求根版的代码,形成一些基本的直观感觉。譬如说我们有一个函数f(x)和某个猜测的初始解。根据牛顿法,我们要先得出切线在那一猜测点上的斜率,然后求出切线与X轴的交点。


我们用这个交点找到原始函数的映射点,然后我们重复之前的步骤。这一次,我们用得到的映射点作为初始值。


我们不断迭代上面的步骤,直到得出一个不超过某个阈值的x值,这便是牛顿法中的寻根法。


我们利用此方法求出函数在何处为零。但是在最优化法中,我们要找出使函数的导数为零的值,也就是其最小值。


总的来说,只要给定一个随机的初始位置,我们就能构建一个目标函数的二次近似值,该近似值与那一点上的一阶和二阶导数相匹配。然后我们求出这个二次函数的最小值,而非原始函数的最小值;再然后我们用这个二次函数的最小值,作为下一步的初始位置。


然后重复之前的步骤。


牛顿法使用经典范例

那让我们来看两个牛顿法最优化的例子。一个是一维的,一个是二维的。


在第一个例子中,我们有一个一元函数,我们可以用泰勒级数展开公式,得到初始位置的二次近似函数;三阶或更高阶的项我们不予考虑。泰勒级数是一种函数的表示方法,这种函数表示项的无穷和。这些相加的项,通过该函数在某一点的导数值求得。

泰勒级数是一位英国数学家发明的,他的名字是布鲁克·泰勒·斯威夫特。然后我们计算初始x点的二阶泰勒级数,并计算出它的最小值。这是通过求出一阶导数和二阶导数,并使它们为零实现的,为了找到最小的x值,我们对这个过程进行迭代。


在第二例子中,我们有一个多元函数,我们可以用之前同样的方法计算最小值。但是有两点不同,我们将一阶导数替换成梯度,将二阶导数替换成海森矩阵,海森矩阵是一个标量的二阶偏导数的矩阵,用来描述多元函数的局部曲率。

导数可以帮助我们计算梯度,而梯度我们可以用雅可比矩阵表示,以此来进行一阶最优化。我们用海森矩阵进行二阶最优化,这些就是5个微积分导数算子中的4个,它们便是我们用数值来组织和表示变化的方法,那么,应该在何时使用二阶法呢?


二阶法适用范围

通常一阶方法的计算量和耗时比较少,当计算大型数据集时一阶收敛非常快,当二阶导数已知并且很容易计算的时候,二阶方法会更快。


但是二阶导数通常很难算,需要极大的计算量。


在某些问题上,梯度下降法会卡住,尤其是在鞍点附近的低收敛性路径上,但是用二阶方法就没有这个麻烦了。


针对你遇到的具体问题,试用不同的优化技巧,才是解决问题的最佳办法,有几个关键点需要记住:

  • 一阶优化法使用的是函数的一阶导数求其最小值;

  • 而二阶优化法则使用二阶导数;

  • 雅可比矩阵是一阶偏导数的矩阵;

  • 而海森矩阵是二阶偏导数的矩阵;

  • 牛顿法是一个很常用的二阶优化法,有时比梯度下降法更好用。


关于比赛

上周代码挑战的获胜者是 Alberto Garces!Alberto 利用梯度下降法找到了最优曲线,他的 Jupyter notebook 无敌详细!光读他写的笔记你都能学会梯度下降法!干的真漂亮!这就是一周代码奇才 Alberto!


第二名是 Ivan Gusev!他从零开始编写代码,将梯度下降法应用于任意阶多项。


本周的挑战是——从头编写代码实现牛顿最优化法!具体详见README。


(https://github.com/llSourcell/Second_Order_Optimization_Newtons_Method)


将你的 GitHub 链接贴在评论中,下周将会公布新一轮的获胜者!如果你想看到更多关于编程的视频,请订阅我。


现在我要去发明第六种导数算子啦!


感谢观赏!


20177《顶级数据团队建设全景报告》下载


关于转载


如需转载,请在开篇显著位置注明作者和出处(转自:大数据文摘 | bigdatadigest),并在文章结尾放置大数据文摘醒目二维码。无原创标识文章请按照转载要求编辑,可直接转载,转载后请将转载链接发送给我们;有原创标识文章,请发送【文章名称-待授权公众号名称及ID】给我们申请白名单授权。未经许可的转载以及改编者,我们将依法追究其法律责任。联系邮箱:zz@bigdatadigest.cn。

志愿者介绍

回复“志愿者”加入我们

往期精彩文章

点击图片阅读

暑期追剧学AI | 油管网红带你搞定机器学习中数学思维(一)

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存