微信公众号:人工智能拾贝,关注了解更多的关于人工智能领域下机器学习相关技术文章。
这一期公众号,阿航将带你了解以下知识:
为什么我们总想要最优解?
何为损失?
何为最优?
机器学习中关于损失的形式化描述
机器学习中关于模型最优化的目标描述
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尽可能小,也可以得到损失尽可能小的时候的模型参数!
在继续学习梯度下降方法之前,给小伙伴们欣赏一幅名画——“埃舍尔的楼梯”,而关于它的详细内容,阿航将会在本公众号的下一篇进行展开。
埃舍尔的楼梯
埃舍尔画笔下的楼梯是一个过于魔幻和超空间般的结构。
如果每个平面空间中生活的人,并不能直接横穿,必须经过楼梯才能过去,会发生怎样有趣的事情呢?
埃舍尔画笔下的楼梯
你忽然听见你的伙伴叫你,你打算去找他。虽然你看不见他在哪个平面空间,你觉得只要声音越来越清晰,你走的方向就是对的,这就是一种贪婪策略:你每次驻足听一下你朋友的呼唤,就会选择当前你认为最快可以找到伙伴的路走下一步台阶。这和梯度下降思路是一样的,最终你会找到一个点,那个点你很可能会碰见你的伙伴。
关于梯度下降算法的形式化描述、推导和代码编写,阿航将会在下一篇公众号里进行讲解,谢谢你的持续关注~
欢迎分享留言~
点开长按上方二维码
关注有趣的机器学习小课堂
“机器学习拾贝”
带你在机器学习的海洋里找到宝贝
本文代码
(左右滑动可查看完整代码)
【机器学习那些事儿】系列历史推送:
领取专属 10元无门槛券
私享最新 技术干货