人话人工智能(3):小姐姐与损失函数
相信大家对“小姐姐”这个词都不陌生。
好的。
那么我们来说说损失函数。
要说损失函数,首先得说监督学习。
要说监督学习,必须得说机器学习。
要说机器学习,它分为四大类,其中有一类就监督学习。
简单地说,监督学习就是,给你一笸箩食物,左半边有苹果、橘子、馒头、包子、鱼香肉丝还有老醋花生。右半边是死涩酸柿子,咖啡煎松花蛋,苦瓜炖榴莲。你全部吃了之后,人生得到了升华,知道了世间百味,有了分辨能力。它给你提供标记好了的样本,让你涨涨记性,并学会举一反三。
咦?他是怎么学会举一反三的呢?
这就用到了损失函数!
起初,很多人学习人工智能的时候,看到损失函数就放弃了。
主要原因是,很多人奔着发财的目的来学习,书上却不断地教你损失,体验很不好!
非也,非也。
损失函数其实就是描述你到底错到什么程度!
举个例子,给你一个张房祖名的照片,你说这是张默,那么经过损失函数一算,给你打分15分,错的不算很严重,因为两个人很像。你要是说照片是迪丽热巴,那么给你打分100分,错的很严重了。
有什么用?我就问问你,这有什么用?
主要是为了改正自己。
《左传·宣公二年》中说:知错能改,善莫大焉!
在预测方面,损失函数可以帮助你做出调整,从而接近正确。
想着你给媳妇挠痒痒,媳妇说后背痒痒,你把手放在腰上挠,媳妇说太低了,你抬手到脖子,媳妇说太高了,你把手移到肩膀,媳妇说还是太高,你把手移到屁股,媳妇说你耍流氓。
这样说来,损失函数就像是媳妇说的话。
有没有用?我就问问你,这有没有用?!
监督学习有两大种类,一类是分类问题,一类是回归问题。
分类问题很好理解,就像门口的垃圾桶,分为可回收,不可回收,垃圾分类,从我做起,人人有责。
分类问题是有答案的,是能列举出来的,比如某天肯定是周一到周天其中的一天,没有别的。
当训练分类问题的数据的时候,一般使用交叉熵当做损失函数。
交叉熵指两个概率分布之间的差异,公式如下:
监督学习中,如果预测值和实际值交叉熵小,说明差异不大,我们的算法没问题。反之,就需要调整了,就像给媳妇挠痒痒那样,调完了再重新算一下。
举个例子,来说明损失函数在分类问题中的应用。
非诚勿扰中男嘉宾选择心动女生。
男嘉宾通过层层了解,从女嘉宾的身材到脸蛋,从外貌到内涵,从生活习惯到喜不喜欢吃鸡蛋,对关键的输入通过损失函数进行一番计算,最后得出场上24位女嘉宾的交叉熵为:
[0.7,1,2,3,4,5,6,7,8,9,12,23,34,56,43,23,23,34,2,3,4,23,23232,23]
很明显,第一个和自己的梦中情人最接近。
那么,本次预测得出答案,1号女嘉宾就是自己的心动女生。
损失函数就是这么发挥作用的。
除了分类问题,还有回归问题。
回归问题只有一个答案,但是这个答案不确定。
不同于分类问题的今天是周几,回归问题是今天股票涨多少?可能是1,肯能是2,可能是3.1415926……
分类问题的损失函数交叉熵是和哪个更接近。
这个东西更煎饺还是更像锅贴,很好分类。
但是,如果到回归问题,今天的涨幅更像1还是2,是2.1,还是1.2,或者1653?没准!
很明显,交叉熵不适用回归问题了。
回归问题有自己常用的损失函数,那就是均方误差。
均方误差的公式如下:
均方误差是所有预测值减去真实值的平方的平均数。
看公式,发现有一个显著的特点,就是当误差小的时候可以忽略,0.2^2=0.04;但是误差大的时候,会被放大20^2=400。平方就是有这个效果。
交叉熵和均方误差这两种经典的损失函数,看似很强大,但是解决实际需求还是欠缺。
倒不是他的算法欠缺,而是需求有点不正常。
比如预测商品的销量,预测的非常准真的好吗?
预测能卖100件,于是生产了100件,结果实际销售时,真的卖出去了100件,这样真的好吗?
程序员觉得好,算法准,不浪费。
但是老板不觉得好。
老板想的是利益最大化。
如果生产1个商品的成本是1元,利润是10元。
假如预测有误差。
少预测了一个,那么就损失一个的利润,也就是损失10元。
多预测了一个,那么只损失一个的成本,也就是损失1元。
这么看来,并不是越准越好,一定程度的多预测可以赚得更多。
这时,可以自己写一个损失函数,公式如下(a是损失的利润,b是损失的成本):
以上就是损失函数的介绍,损失函数就像是一面镜子,让算法知道自己和标记样本之间的误差。
曾子曰:吾日三省吾身,为人谋而不忠乎?与朋友交而不信乎?传不习乎?
李世民说:夫以铜为镜,可以正衣冠,以史为镜,可以知兴替,以人为镜,可以明得失。
鲁迅说:多有不自满的人的种族,永远前进,永远有希望。多有只知责人不知反省的人的种族。祸哉,祸哉!
小韩说,以上古人都是在讲损失函数的重要性!