机器学习那些事儿四-初识损失与最优化

微信公众号:人工智能拾贝,关注了解更多的关于人工智能领域下机器学习相关技术文章。

这一期公众号,阿航将带你了解以下知识:

为什么我们总想要最优解?

何为损失?

何为最优?

机器学习中关于损失的形式化描述

机器学习中关于模型最优化的目标描述

1.最优解=损失最小

为什么我们总想要最优解?

……

相似的的问题

为什么我们找理想的男朋友或者女朋友

总是要考虑好久?

豆豆是个刚毕业的女孩,想找一个男朋友作为陪伴,而此时有三个男孩子都在追求她,豆豆有一点选择恐惧,无法确定最终选择谁。兼顾感性和理性的她,忽然想到:诶,做个雷达图!

通过给三个男孩打分,豆豆得到了这个雷达图:那,谁是那个白马王子呢?豆豆决定算一下每个人的平均分:

果不其然的,豆豆发现,平均分最高的那个男生——哦!原来是他!晗哥!

我们之所以寻找最优,就是因为我们想要最好的,这实际上是一种逐利的行为,而我们之所以逐利,深层次是因为我们总是期望:

损失最小!

记住这个词,我们再往后的机器学习小课堂离不开这个词的

虽然豆豆表示这样的雷达图好似有用,但也只是作为参考,如果对方是真爱,她也将不再在乎这个雷达图所有的结果。

让我们为真爱鼓掌

2.如何理解“损失”?

对于监督式机器学习方法来说,它在学习的时候有类别标签作为指导,即数据有“真实值”作为指导。基于此,来看一个很宏观的对于损失的描述:

在监督式机器学习中,目标是学习一个模型,这个模型,要么拟合数据,就是让数据都在函数上;要么区分数据,就是让数据都在函数两侧!而这两类任务的目标,都想要预测值的和真实值之间的差异越小越好:我们把这个差异叫做损失!比如在下图回归问题的预测结果中:“+”表示实际的值,“o”表示预测值,横坐标代表样本编号,这样,每个样本的预测值和真实值之前的差,就可以看作是一个样本的损失!

损失就是代表预测值和真实值之间的差异,当这个描述应用在所有N个样本的时候,整体损失就成了:

以上这个东东,可以叫做损失函数:其中,预测样本的真实值是已知的,而样本的预测值是由预测模型作用在预测样本上决定的,预测模型实际又是由模型参数w决定的函数,因此损失Loss也可以看做是模型参数w作用在样本上的函数

而本小节开头的这个式子,之所以被称为宏观的损失函数,是因为:实际机器学习建模时,我们并不完全以两者之差的绝对值作为衡量差异的唯一手段。这个是后话,后面的学习中,我们将继续探讨这个话题。

3.如何理解“最优”?

数学上的最优化,就是求一个最大值或者最小值,或者……极大值极小值,虽然还没开始后话,这里还是要区分:最值不等同于极值!机器学习中,我们的目标也是求解极值,具体而言,是求解损失函数的极小值。

如果我们的损失以函数形式出现,并且它是严格符合某个较为初等函数的曲线或者曲面,那我们一般可以按照下面的初阶理解来求出最值或者极值。

最优化的初阶理解

这里阿航假设你已经有了高中的数学基础,那我们开始吧,给出如下一个函数,我们且当它是损失函数,我们怎么求最小值呢?

有良好高中教育的你简直不假思索回答了我:

求导!导数等于0的地方,函数值取最小值!

说罢你还写了这个式子!

你的高中数学老师真的很开心!你还没忘!

但是阿航觉得给你出的题目过分简单了,我们来进阶试试!

如果给你这个额…曲面呢?怎么求z的最小值?

你上过大学,对于学了高数的你来说,虽然难度略有提升,你还是想了一下,回答我说:

对x和y求偏导,令偏导等于0,就得到了!

棒!

很棒,都难不倒你

而且看来你熟练掌握着求导的数学基础!

4.机器学习中损失与最优的形式化表述

回顾一下:

机器学习模型可以预测数据,而损失代表预测的结果和真实的结果之间的差异,损失同时可以用基于模型参数的函数(往往是一个加和的函数)来表示,我们期望得到最小的损失,也就是最优的模型,其本质,是得到令损失函数最小的模型参数!

所以,首先我们回归1中的目标:“损失最小”。我们定义数据真实的标记为y,我们预测的值是y*,那么|y*-y|就是损失了,对n个样本的损失进行加和,会得到:

这时候,聪明的你忽然想到:

我们不是要最小化损失嘛,那么求导就可以了啊!

你说的是没错!可是,我们的y*是要用我们的预测模型得到的,我们连预测模型(的参数)都没有,我们怎么得到y*,进而我们又怎么可能求导数呢?

让我们梳理一下我们已知的内容:

第一步:写出我们想得到的机器学习模型

第一讲中,阿航说过监督式学习方法是要学习到一个函数模型或概率模型确定,为了简单点,对于一个待预测样本x,我们统一标识预测函数

其中,是预测模型的参数,是预测值

第二步:写出损失的函数表达式

此时,对于所有被预测的样本,损失函数可以演变为:

第三步:写出我们的目标

我们的目标,就是想获得loss最小时候的参数值

于是,我们就想用一种方法,它既能得到模型的参数,也能得到最小的损失。而关于这个问题,其实早已经是数学家们感觉不是问题的问题:由于最小化问题通常是在求解凸函数的最小值,这个范畴的问题更为官方的说法叫做“凸优化”。而关于“凸优化”这个领域,因为阿航非数学系毕业,不予深究,但是会介绍一个在凸优化理论中最为经典的算法:梯度下降算法!

梯度下降算法之横空出世

5.初识最优化的利器:梯度下降算法

梯度下降算法,作为凸优化问题的经典算法,主要做了什么事情呢?通俗地讲:有了梯度下降算法,鱼和熊掌就可以兼得了!既让损失loss尽可能小,也可以得到损失尽可能小的时候的模型参数!

在继续学习梯度下降方法之前,给小伙伴们欣赏一幅名画——“埃舍尔的楼梯”,而关于它的详细内容,阿航将会在本公众号的下一篇进行展开。

埃舍尔的楼梯

埃舍尔画笔下的楼梯是一个过于魔幻和超空间般的结构。

如果每个平面空间中生活的人,并不能直接横穿,必须经过楼梯才能过去,会发生怎样有趣的事情呢?

埃舍尔画笔下的楼梯

你忽然听见你的伙伴叫你,你打算去找他。虽然你看不见他在哪个平面空间,你觉得只要声音越来越清晰,你走的方向就是对的,这就是一种贪婪策略:你每次驻足听一下你朋友的呼唤,就会选择当前你认为最快可以找到伙伴的路走下一步台阶。这和梯度下降思路是一样的,最终你会找到一个点,那个点你很可能会碰见你的伙伴。

关于梯度下降算法的形式化描述、推导和代码编写,阿航将会在下一篇公众号里进行讲解,谢谢你的持续关注~

欢迎分享留言~

点开长按上方二维码

关注有趣的机器学习小课堂

“机器学习拾贝”

带你在机器学习的海洋里找到宝贝

本文代码

(左右滑动可查看完整代码)

【机器学习那些事儿】系列历史推送:

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

扫码关注腾讯云开发者

领取腾讯云代金券