机器狗都用什么算法学习?电脑是怎么区分猫和狗的呢
近些年,人工智能,机器学习这些词汇一直处于互联网行业的风口浪尖。而它和传统互联网行业的主要区别就在于“智能”,“学习”这两个关键词,何谓“机器学习”,最直白的解释:让机器具有学习能力。而再深层次一些:让机器不再按照简单的逻辑代码去简单粗暴的执行既定的程序,让机器通过学习,能主动的从“经验”中学习到知识,具备一定的分辨能力或者预测能力。打个比方,就像是新生婴儿从一无所知慢慢的对这个世界增加认知,明白哪一只是叫做“狗”,哪一只叫做“猫”。
本文以区分猫和狗为例,尽量以简单明了的语言来阐述机器学习的工作模式以及基本原理,内容较为基础,适合未入行者食用希望能够对各位读者有所帮助。
基于数据
现阶段的机器学习是基于统计学的机器学习,统计学想必无需多做解释,那基于统计学的机器学习,顾名思义,是以统计学原理为基础,而统计是基于数据的,所以当前机器学习,同样需要数据支持,大家可以回想一下,小时候,妈妈是如何教我们认识这个世界的,在我们还咿呀学语的时候,家里大多都会有一些识字板,妈妈会指着上边告诉我们,那个是猫,这个是狗,而不能直接告诉我们一个具体、标准的概念,只能通过大量的图片,给出我们指示,让我们通过“经验”来一点点做到能准确区分,机器学习同样如此,同样是从大量的数据中获取经验,进而能够通过这些经验独立的识别出哪张图是猫,哪张图是狗。
机器学习任务的种类
说到这个例子,咱们不得不提一下机器学习任务的种类,这种让程序或者机器区分事物种类的任务被称作分类,除此之外,机器学习任务还有回归,聚类,降维等,这些具体的区分和概念会在咱们的课程和资料里细致讲解。
任务流程
在这里咱们从整体步骤的角度给大家分享一下机器学习项目的一个常规流程。
1. 收集数据
之前也讲了基于统计的机器学习是基于数据的,数据是机器获取“经验”的来源所以,开始一个机器学习项目的第一步,毫无疑问,就是收集数据,拿咱们的区分猫狗项目来举例,就像咱们小时候一样,同样要为计算机准备大量的猫和狗的图片,再做上标记,标识出每一张图上的分别是什么,是猫还是狗,这些图片就叫做数据集,很容易理解的,数据集越大,数据种类越多样化,机器获得的“经验”就越准确,对猫和狗的认知就越精准。如下图所示,是一些各种角度各种种类的猫与狗的图片。
▲如上图,数据集的图片都是以数字编号命名,还会有一个文件,存放这些图片的标签,表明第几个是猫第几个是狗,类似索引数组的形式,以此来训练咱们的机器学习模型。
2. 特征工程
第一种:
这里咱们先选用简单基础的机器学习算法来实现猫狗分类,不考虑深度学习,所以这里咱们需要进行特征工程,选取合适的特征,并从图片中提取出来,考虑一下你自己是如何区分猫和狗的图片的。什么特征是他们最明显的区别?跟种类无关,跟你可能会用毛色、体型、耳朵或鼻子的形状,脸部五官的比例,或者这些特征的组合来区分它们。换句话说,你不会只是简单地将图片当成许多小像素块的集合,而是会从这些图中找出细节或者特征来确定你看到的是什么。对于计算机而言也是如此。为了成功地训练计算机完成此项任务(或者任何更一般的机器学习任务),我们需要给它提供设计合理的特征,或者更理想情况下,让它自己找到这样的特征。
所以这就是特征工程的意义,让机器能够有目标的去学习,相当于划了重点,能够专注在这些特征工程选出来的“可能”更有意义的特征上面。
第二种:
其实图片的识别分类,目前做的最好的还是深度学习,它相对来说更复杂,但是与人的学习过程更加相符,它的过程就更符合咱们之前说的,像小孩识字一样,可以直接将图片喂给模型,通过一层层隐藏层,它就能够提取出一些“不可描述”的特征,以完成对猫狗的分类工作,为什么是“不可描述”呢?可以联想一下自己,问一下自己,你是如何区分猫狗的?能说出一个标准定义嘛,很明显不能,这也叫可解释性,那“不可描述”,就是可解释性差,而可解释性差,其实就意味着逻辑更加复杂,复杂到很难理解,很难表达,所以,同样的,他的准确率也会更高。所以,如果使用神经网络,那其实是不需要特征工程这一步的,但同样的,它在构造算法,搭建模型上的复杂度也是更高的。
3. 训练模型
因为考虑深度学习更加复杂,需要有一定的机器学习作为基础才能理解,所以之后的分享咱们就以传统机器学习算法来说。那现在我们有了训练数据集合适的特征表示,那么教计算机区分猫和狗的最后一步就可归为一个简单的几何问题:说起来很像大家高中或大学数学学过的解方程。先选择算法,选择使用什么算法来解决这个问题,逻辑回归?还是决策树?其实这就是选择方程的一个过程,比如线性回归,那函数就是一个多元一次函数,训练模型的过程就是把训练集带入,去求解截距b和斜率k的的一个过程,就是一个多元一次方程组,而不同的算法,最终分类的效果也有很大区别,不同的算法适用于不同的场景,所以,要根据任务的具体情况去选择不同的算法。此处咱们以线性回归为例举例说明。
直线(在二维空间中)有斜率和截距两个参数,这意味着要为这两个参数找到正确的值。直线的参数必须根据训练数据(的特征表示)来确定。确定参数的过程依赖于一组名为数值优化的工具,此过程被称作模型的训练。
下图是一个使用了12张图片作为训练集得出的线性模型,可以看到它很好的将6只猫和6只狗划分到了不同的区域。然后在使用这个模型去做分类时,它就会读入所给图片的特征数据,将这些数据代入,最终结果落在红色区域,那就会被判断为狗,落在蓝色区域,会被判断为猫。
▲但是很明显,训练集很稀疏,所以这个模型的效果注定不会很好,可以想象的是,一旦训练集更多,那猫与狗的边界也会越来越复杂,越难以寻找,直线将无法很好的区分猫与狗,所以,在具体的业务场景需要具体分析,选取不同的算法模型。
4. 测试与评估
在得出了模型之后,咱们需要对模型的性能进行测试和评价,看模型的准确率或者其他指标是否达到要求,为了测试我们的模型性能,我们给计算机提供一些以前没有见过的猫和狗的图片(一般称为数据的测试集),然后将这些数据依次带入咱们的模型,将模型的结果与其真实的结果(是猫还是狗)做对比,得出准确率,召回率等几个指标,这就是模型的测试与评估了。
5. 模型调优
这也是咱们构建模型的最后一步了,那就是根据得到的评估指标来进行调整,根据业务需要,对模型进行调整,通过调整各个特征权重,或者增加减少参数等等手段来使得模型更加符合咱们的业务要求。
经典机器学习问题的流程
文章的最后我们简要回顾一下前面描述的过程,通过该过程,我们建立了一个训练模型,用于完成区分猫和狗的任务。同样的过程基本上可用于完成所有的机器学习任务,因此很值得我们花一些时间来回顾解决典型机器学习问题所采取的步骤。
▲这张图直观的描述了猫和狗分类问题的学习流程,相同的一般化流程基本上可用于所有的机器学习问题。
确定任务:计算机通过模型需要完成什么任务?
收集数据:为训练集和测试集收集数据。数据越大、越多样越好。
特征工程:什么样的特征最能描述数据?
训练模型:用数值优化技术在训练集上调整恰当模型的参数。
测试模型:评估训练模型在测试数据上的性能。如果评估结果不佳,则重新考虑所使用的特征,并尽可能收集更多的数据。
推荐
- 1龙猫为什么不建议养?龙猫爱干净但是又怕水205
- 2猫咪看到主人生前留下的视频流泪 猫咪看见去世主人的视频284
- 3属蛇的人命好还是属猴的命好 属猴精明...十二生肖智商排行榜113
- 4泰迪冲出去遇到阿拉斯加原视频 泰迪在大街上求爱阿拉斯加281
- 5养龟是透明好还是白色好:水体越透明养出来的龟就越好388
- 6小时候的博美和银狐犬怎么区分?掌握以下要点分辨博美犬和银狐犬425
- 7鱼缸水浑浊怎么办有什么好方法?鱼缸水浑浊的原因和解决方案320
- 8狗为什么总往主人的拖鞋里面尿尿?狗狗帮忙搬板凳又拿牛奶扔垃圾的123
- 9猫传腹早期治得好吗?喜讯猫传腹治愈率上升啦404
- 10狗狗应该是人类最好的朋友:就说狗狗是孩子最好的玩伴309