【AI浅谈】AI算法,用尽可能简单的话讲懂AI的原理【1】

事前说明

学无止尽,个人能力不足,如有错误之处烦请见谅,感谢您的阅读与指出!

PS:小伞是一直在学习的唐伞妖怪欧,由于只是一只菜菜的妖怪,所以学习的地方可能会有些不对(||๐_๐),感谢各位大佬的指正!

进入正题——什么是AI算法?

相信大多数刚入门人工智能的小伙伴们一定非常好奇一件事,就是我如何搭建出一个酷炫的AI模型,然后来用它解决一些看上去很高大上的问题。那么今天我们就来谈谈如何通过AI解决一个问题吧!

AI是怎么解决问题的?

AI在做的事情,本质上是在猜数字,你给AI 3个数字,他就可以根据这些数字猜出来一个你可能想要的数字,然后你如果认为这个数字不是你想要的,你就可以跟他反馈说这不是我想要的,然后AI就会根据这个反馈自动修正猜数字的方法,从而在下次努力的猜出你心里想要的那个数。

对于现实的问题也是这样的,例如你给AI一大堆图像,让他判定这些图像哪些是有汽车的,那么首先,他就会把图像通过数值的形式进行读入,读进来的图片呢,每一个像素都对应着一个数值,这样一整张图片就是一个由数字构成的矩阵, AI通过对这些数字进行各种各样奇妙的运算,最终他会把猜出来的结果用数字的形式告诉你(例如图片里面有汽车,他就猜一;没有汽车,就猜零)。

但是AI不可能总是猜对你想要的那个数字,他总会猜错几个数字,就拿上面找汽车的问题来说:

如果AI错误的判断了一个图像里面是有汽车的,有的AI很懒,他直接躺了,这种模型我们叫做无监督的模型,这种AI模型的特点是他完全不复习,即使猜错了,下次也依然会猜错,但是他的优点是:大多数这种模型学习的很快。

学而时习之,不亦乐乎?

有的AI是会复习的,当他猜错了一个数字的时候,他会向我们索要一个叫做标签的东西,这个标签我们认为是绝对正确的,就拿上面的地址来讲,假设这货把一张没有汽车的图片当成了有汽车的并猜一,这个时候我们就会跟他讲:不对,你猜错了,这张图片里没有汽车,你这个错的真是(太离谱了/无可厚非/很正常,我也会错)。

注意到后面的修饰词没?这个修饰词反映了模型猜测的值与真实值之间的差别,也就是AI错的有多离谱。对于只会认数字的AI模型来说,我们将这个称作损失函数,一般来说损失函数越大表示AI错的越离谱,因此当AI读取到越大的损失函数时,它就会对这个数据拼命学习,按照现代学生的说法,还会整理出一系列思维导图,复习纲要......也就是针对这个猜错的数据对自己猜数字的方法进行大改进,在下次碰到相似的数据时就不会猜错了,对于不是错的很离谱的图(虽然还是错了)但AI这个时候可能就是浅浅的整理到错题本里,对自己猜数字的方法做一点小改动,就不会出现大改的情况。这种模型我们称之为有监督的模型。它的特点是对于每一道写过的题都要跟我们对一下答案。优点是一般精度会很高,至少比无监督的模型会高一点(一般来说),缺点是这货学习的时间随着猜数字的方法复杂性增加而增加,如果他猜数字的方法,使用了一个非常复杂的数学函数的话(举个例子,有114514个参数的函数)这个时候他学习可能就要三五天甚至一周。

当然除了这些模型,科学家为了应付丰富多样的复杂环境,还整了一堆应付不同情景的学习方式,例如有一些题目的标准答案被老师撕走了,科学家就把这些没有标准答案的题目跟有标准答案的题目混在一起喂给模型,由此诞生了半监督学习方法,同时对于生活中的一些问题,你执行了某个步骤之后,他可能不会有明确的回报(例如超级玛丽,你上下左右按一个键,可能不会有明确的反馈),这种情况科学家就设计了一系列方法使得模型在这种没有明确反馈的情况下,也能够学习,并且比无监督的学习要好,由此诞生强化学习。对于商业场景中,两个数据公司的合作问题,二者的数据一般不会泄露给对方,但又想充分利用两个公司的数据训练一个AI模型,这种情况就诞生了联邦学习......这些都是为了应付不同场景的猜数字所作出的AI延伸。

当数据少的可怜的时候......

但猜数字的技巧真的就告一段落了吗?并没有科学家开发了一套方法来衡量模型的学习能力,不同的模型是有不同的学习能力的。所以如果你用一个学习能力超强的AI模型去学习一个并没有什么信息的数据集会怎么样呢?

AI也是很懒的,比起通过推理得出结果,干脆还不如把答案都记下来,对于学习能力特别强的模型也是如此,而且因为学习能力过强,使得这一类AI模型对于背东西是特别在行的,所以这些模型就像卡兹一样放弃了思考,直接把数据背了下来,但这样就会出现一个叫过拟合的问题,指的就是AI只会自己学过的数据,对于自己见过的有限数量的数据组合,猜出来的结果完全正确,但是如果我们掏出一个他之前学过的很相像的题目出来,他反而不会做了。这就好像你高考的时候,把前50年高考+模拟考题目全给背了一遍,是其中的原理,你一个都不会,你只知道这道题对应什么答案而已,然后当给你一个跟你背过的问题很相似的问题,你立刻就不会解了,这就是过拟合。

那我们怎么解决过拟合问题呢?一个很简单的方法就是暗示AI模型说:背东西多累呀,如果我现在给你一个很简单的公式,你按照这个公式来算就能解决绝大多数问题,那么AI一听就觉得这不错啊,就干脆放弃了背书,而是依赖我们提供的先验公式来进行学习,这就是正则化。体现在数学上,就是我们限制了AI猜数字的数学方法的参数范围,让AI只能在有限的参数范围内调整自己用来猜数字的数学公式的参数,根据不同的正则化方式,分为L1,L2......等等。这样就可以有效的防止AI出现过拟合的情况。

那么我们要怎么判断过拟合的情况呢?这也是相当简单的,我们现在手上有一堆数据,然后要训练AI,这种情况我们可以把这些数据分为两个部分,一个部分用来训练,另外一个部分用来测试AI的学习情况(测试集),就相当于高中的期中考试和期末考试,但是考的都是你没怎么见过,但是知识体系还是那样的题目,如果AI学习的很不错,那么他在期中考试和期末考试的得分就应该挺高的,这就是通过训练集和测试集的方法来判断AI的学习情况。还有一种方法是通过把训练集切成若干份(举个例子,切成5份)将其中的一份作为测试集,其他的4份作为训练集,这样我们有5种不同的取法,这样可以训练5次AI,并测试他们的平均成绩(当然每次重新训练前要把AI的内的数学参数清空,相当于变相进行a级记忆消除),这样就可以从整个数据集的角度判断AI对于数据的泛化程度(相当于整个数据集的数据都有过被用作测试集)

AI也要期末考!

我们刚刚忘记提一个问题了,就是我们如何衡量AI考试的成绩呢?其实这个方法也是一样的,之前我们提到在有监督学习内,我们可以通过损失函数来衡量AI的错误程度,也就是说我们可以把所有数据的损失函数加在一起,通过总体的损失函数来判断AI训练的效果好坏,如果这个数值越大就说明AI犯错的数量越多,而且错的越离谱,这是其中一种方法,还有一种方法就是通过准确率的方式,将AI判断正确的数量和数据的总数做除法,这样得到一个百分比,就是AI答卷的准确率了,这样可以直观的衡量AI在数据集上的学习程度怎么样。

那或许有同学就要问了,为什么我们之前一定要用一个损失函数来衡量AI的错误程度,而不直接用准确率呢?

理由其实很简单,我们把准确率的公式和损失函数(这里用mse均方误差,来做损失函数的例子)的公式画出来,会发现均方误差的计算是针对每个数据而言的,准确率的计算是针对总体数据的错误量来说的,换句话来讲,均方误差对于错误的敏感程度要比准确率高(好好想想),所以我们才要采用损失函数让AI进行复习,而不是采用准确率。

To Be Continue...

猜你喜欢

转载自blog.csdn.net/unrealnum_border/article/details/128319289
AI