当前位置: 首页 > news >正文

什么是机器学习?有哪些应用?终于有人讲明白了

作者:星环科技人工智能平台团队

来源:大数据DT(ID:hzdashuju)

导读:人工智能的快速发展,带动了相关技术的繁荣。近些年,国内外的科技公司对机器学习人才都有大量需求。怎样入行机器学习?本文带你从0开始学起。

01 机器学习的背景

当提及机器学习时,我们的脑海里一般会浮现出这样一幅画面:

一个拥有类似人类智能的机器人正在像人类一样尝试理解一件事情。

这样的画面让人觉得是遥不可及的科幻世界。但实际上,机器学习与人类的生产生活已经密不可分了。早在20世纪90年代,一个非常成功的机器学习案例已经使数亿人受益:今天为人所熟知的垃圾信息过滤。该案例成功后,出现了诸多效仿者,并且在现代社会已经有十分广泛的应用。

  • 商家在推荐系统与广告计算方面使用机器学习,前者会在海量的商品中恰如其分地选中你所喜欢的一款,让你欣然完成交易,而后者因其精确的广告点击率计算,为企业创造了显著的收益;

  • 在金融领域,机器学习参与了反欺诈、反洗钱风控等常人难以胜任的工作,其在时间序列预测方面也有自己的一席之地;

  • 智能问答机器人以及电话接线员已经大幅减少了企业用人成本;

  • 在制造业中,如何精益化生产、如何轻而易举地发现残次品等,皆有其用武之地。我们已深处于一个无时无刻不接触机器学习的时代。

02 机器学习的定义

如果从更精细的角度去描述机器学习,那么首先要给出机器学习历史上两个著名的定义。机器学习(machine learning)一般被定义为一个系统自我改进的过程。从字面意义上说,机器指计算机,学习是这个自我改进的过程。最初机器学习这个名字由Arthur Samuel提出,他给了机器学习一个非正式的定义。

  • Arthur Samuel的机器学习定义

机器学习是一个这样的领域:计算机在程序员并不对其进行显式编程的情况下进行自我学习的能力。

具体来讲,机器学习是一门针对算法与统计模型的学科,主要是利用计算机系统高效地执行特殊任务,该任务没有显式的指令,而是依靠模型和推断等。

机器学习算法会建立一个关于样本数据的数学模型,这些样本数据通常被称为“训练集”(training data)。这样做的目的是在执行任务时不去进行显式的预测或决策,这同时也表明了机器学习不是一个已确定好的规则和流程。

机器学习算法可以被用于邮件过滤、网络入侵检测以及计算机视觉等。机器学习与利用计算机进行预测的计算数学比较接近。

上面的定义稍有一些佶屈聱牙,但大体上是说:“机器是怎么判断的”这一点不是由人显式定义的,而是计算机自己获得的。这里有一个更加工程化的定义,即Tom M.Mitchell为机器学习领域研究的算法特征提出的一个广为引用且更加正式的定义。

  • Tom M.Mitchell的机器学习定义

机器学习这门学科所关注的问题是:计算机程序如何随着经验积累自动提高性能;如果针对某类任务T,一个计算机程序的用P衡量的性能可根据经验E来自我完善,那么我们称这个计算机程序在从经验E中学习,针对某类任务T,它的性能可用P来衡量。

《统计学习基础》一书中写道:许多领域都产生了大量的数据,统计学家的工作就是让所有这些数据变得有意义——提取重要的模式和趋势,理解“数据在说什么”。我们称之为从数据中学习

综上所述,机器学习模仿人类学习的过程,不能对机器置入显式的判断规则,而是由机器在某种任务场景(基于某种经验)和某种评判标准下不断提升自己表现的过程。

举个例子,当你使用电子邮箱时,你的垃圾邮件过滤系统可以预先从带有人为标记的垃圾邮件以及带有人为标记的正常邮件中学习到垃圾邮件到底会有怎样的特征表现。这些用以训练系统的数据集被称为训练集,其中每一个样本被称作训练样本

在这个案例中,任务T是对新来的邮件打上好或者不好的标签;经验E是上述训练集;而性能P需要被定义,例如你可以用预测的正确比例去定义模型表现的好坏,该指标被称作准确率(accuracy)且广泛应用于机器学习的分类任务中。

03 机器学习的任务类型

如上所述,机器学习要应对很多应用场景,并包含面对各种数据的经验,而机器学习系统也包含不同的类型,所以我们有必要在不同层面上对它们进行较为粗略的区分,这些“不同层面”可以是:

  • 是否在人类的监督下进行学习;

  • 是否增量学习或者在数据流上学习;

  • 是否仅仅将新数据点与老数据点进行比较,抑或建立一个预测模型,类似于科学家通常所做的(基于数据或基于模型)。

这三个层面并不会互相排斥,相反,一个机器学习任务往往是这三种区分的组合。例如,一个先进的深度学习系统在一个实时数据流上学习如何区分垃圾邮件,这显然是一个基于模型的在线监督学习系统。

根据是否在人类的监督下进行学习这个问题,机器学习任务区分如下:

  • 监督学习:监督学习算法依赖具有标签的训练数据来建立数学模型。例如,如果任务是鉴定图片是否包含某种实体,那么训练集的图片中就应该同时存在包含与不包含该实体的图片,同时,每张图片需标注是否包含该实体的标签。根据标签的数值特征(连续、离散),监督学习又可以分为分类问题回归问题

  • 半监督学习:在某些情况下,并不是所有的输入数据集都被有效标注了,即训练集中包含已标注的样本和未标注的样本。实际上未标注样本与已标注样本拥有同样的分布,在训练时若能利用这一点,则会很有帮助。

  • 无监督学习:无监督学习算法完全利用不带标签的训练数据去训练一个模型。无监督学习用于探索数据的分布,例如将点聚类等。无监督学习可用于发现数据的潜在模式,并将数据按组归类,还可用于特征学习和数据降维等。

  • 强化学习:在动态环境中以正或负强化的形式给出反馈,并用于自动驾驶车辆,或者学习与人类对手玩游戏等。

  • 主动学习:在预算访问有限等情况下,算法通过交互式的形式来询问用户和其他信息源,以更新和预测新的数据点所期望的输出。

  • 元学习:元学习是要“学会如何学习”,即利用以往的知识经验来指导新任务的学习。

相应地,根据是否在实时数据流上学习这个问题,机器学习任务区分如下:

  • 离线学习:在离线学习中,系统不能在增量的数据上进行学习,只能在更新的全部数据集上重新学习,这必然会增加更多的时间成本和计算资源。一旦模型完成学习便应立即部署到系统中运行,且不再继续学习。如果用户想对新来的数据进行学习,那么必须将新数据和旧数据组合,重新训练模型,停止旧系统并将其替换成新系统。

  • 在线学习:在线学习中,用户可以增量地训练模型,将数据一次一次地喂入模型,每一次独立的数据组被称作mini-batch,每一次新的学习都快速而轻便。

是否对比旧数据点上,机器学习任务区分如下:

  • 基于样本的学习

  • 基于模型的学习

04 构建机器学习应用的步骤

机器学习有很多任务场景,为了简要说明机器学习的大体应用方法与步骤,这里以较为常见的手写识别任务为例。

根据Tom M.Mitchell对机器学习的定义,手写识别任务的T、P、E分别为:

  • 任务T:训练出高准确率的手写识别模型;

  • 性能P:分类的准确率、召回率等;

  • 训练经验E:带标签的手写图片。

首先介绍一系列关键概念。

  • 特征:特征是事物某些突出性质的表现,即区分事物的关键,当需要对事物进行分类或者识别时,我们会根据事物的特征去区分,并依次建立一个模型。对于单个事物而言,可能有多个特征存在。而对于一组事物,某个特征项会有不同取值分布。

  • 标签:对于特征而言,标签表示这个事物是什么,例如通过某个人的言行举止、穿着打扮可以大体判定其具有某种性格或者某种社会地位。这种性格或者社会地位就是标签。机器学习的任务就是针对新输入的数据,根据其特征来确定其标签。

  • 数据切分:机器学习有训练的过程,在这个过程中应用了训练经验E,而训练经验E则来源于原始数据。一般来说,原始数据分为三个部分,即训练集、验证集和测试集,其分配比例分别为70%、20%和10%。

    训练集用以训练模型,验证集用以调优模型参数,而在经过训练集和验证集的训练之后,开发者获得了一系列模型,此时测试集用以选择模型。在数据切分时,一定要注意抽样方法的选择,务必保证三个数据集的数据分布大体一致。

  • 交叉验证与网格调参:大多数时候,应考虑数据切分产生的数据分布不均的影响。在训练模型时往往用交叉验证的方式,同时会使用网格调参去寻找最优参数。

    交叉验证指将数据分为K份,进行K次训练,每次训练抽取其中的K-1份数据作为训练集,其余一份作为验证集,训练时通常使用网格调参,于是便可以得到K个模型。在K个模型中,选择在验证集上表现最佳的一个模型即可。

    网格调参是指对于需要调整的参数,每个参数设置一组预设值。每组预设值根据不同的取值组合成繁多的取值组合。如同设置一个高维的网络,每个组合都是其中的一个交叉点,在每个组合数据上验证模型的性能,并获得最佳的组合。

  • 模型评价:简而言之就是评价模型的性能,如前所述,需要通过模型评价选择出最优秀的模型。对于分类和回归问题来说,存在不同的模型评价指标。

那么对于一个手写识别任务来说,机器学习的应用步骤如下所述:

  • 数据预处理:手写数据的图片就是其数据特征,0,…,9的数字为其标签。首先需要将图片转换为数值特征,此步骤称为数据预处理。手写识别图片为灰度图且只有一个通道,那么每张图片就可以抽选特征成为一个数组,例如将图片转换为180×180维的由[0,1]组成的一组数据,然后再让模型去学习。

  • 数据切分:将数据按照7/2/1的比例切分成训练集、验证集和测试集。此处需要注意的是,为了不让数据的分布产生差别,三个数据集中的每一个都包含所有的标签类别,需要采用分层抽样技术。

  • 选择模型(一组泛函):对于分类来说,有很多模型类型可以使用。每种模型代表一组泛函,学习的目的就是搜索泛函中性能优异的函数。针对分类问题,可用的函数族有很多,例如逻辑回归、决策树、支持向量机以及神经网络等。

  • 选择目标函数:根据所选模型的不同,应选择相应的目标函数以及优化方法。合适的目标函数与优化方法搜索出的模型参数可以使模型达到最优的性能。例如,对于逻辑回归,可用的目标函数为交叉熵;对于决策树,在分裂时目标函数为熵或者基尼系数;而对于AdaBoost模型,则选取对数损失函数。

  • 根据目标函数选择相应的优化方法:最常用的优化方法是梯度下降法、牛顿法等。需要目标函数有较好的性质才能找到其最优解。

  • 根据评价函数计算性能,并优化模型参数:通过选取合适的模型-目标函数-优化方法,模型在这个流程中学习到了参数。此时,模型已经可以执行预测工作。

  • 了解模型性能:对于分类问题有很多模型评价指标,例如查准率、查全率、F1值、AUC值、PR曲线等。若计算得出的模型性能并非十分优秀,那么就要重新进行参数搜索。

  • 最终获得模型

这里提供了一张Checklist(检查表)。

  • 宏观审视问题,问题的转化(有监督、无监督或者分类回归);

  • 获取数据;

  • 探索数据;

  • 发现数据的潜在规律模式,为开始训练模型做好准备;

  • 训练尽可能多的模型并列举出性能最好的几个;

  • 调优模型并将模型融合;

  • 预测并展示结果;

  • 部署、监测并维护系统。

关于作者:星环科技人工智能平台团队由五十多位优秀的研发工程师和算法工程师组成,逾八成具有国内外名校硕士及以上学历。其中研发子团队的工作重心为一站式人工智能建模平台Sophon;算法子团队则负责基础算法的研发及改进,并在数据挖掘、传统机器学习、计算机视觉、自然语言处理、知识图谱等领域进行前瞻性研究以及项目实施落地。

本文摘编自《机器学习实战:基于Sophon平台的机器学习理论与实践》,经出版方授权发布。

延伸阅读

《机器学习实战》

点击上图了解及购买

推荐语:星环科技人工智能平台团队实战总结,机器学习的实战书籍,既能了解人工智能相关的算法原理,也能结合可落地的具体应用场景进行实战。

相关文章:

  • TIOBE 1 月编程语言排行榜:C 语言再度「C 位」出道!
  • 新书推荐 | 数据流机器学习:MOA实例
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • 2020大风口!什么是图神经网络?有什么用?终于有人讲明白了
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • 机器学习入门必读:6种简单实用算法及学习曲线、思维导图
  • 什么是折线图?怎样用Python绘制?怎么用?终于有人讲明白了
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • 小程序三周年:超8000亿交易额,商业生态正当时
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • 新手学Python, 如何从入门到入土变为从入门到快速上车?
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • 沿用70多年的经典数据可视化方法,如何用Python实现?
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • 自己简单写的 事件订阅机制
  • 【面试系列】之二:关于js原型
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • C++类的相互关联
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • fetch 从初识到应用
  • iOS小技巧之UIImagePickerController实现头像选择
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • markdown编辑器简评
  • php ci框架整合银盛支付
  • Redux 中间件分析
  • SpringBoot几种定时任务的实现方式
  • 关于List、List?、ListObject的区别
  • 观察者模式实现非直接耦合
  • 简析gRPC client 连接管理
  • 理清楚Vue的结构
  • 批量截取pdf文件
  • 事件委托的小应用
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • 鱼骨图 - 如何绘制?
  • 原生 js 实现移动端 Touch 滑动反弹
  • #Spring-boot高级
  • (14)Hive调优——合并小文件
  • (function(){})()的分步解析
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (九)c52学习之旅-定时器
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • (十五)使用Nexus创建Maven私服
  • (一)Thymeleaf用法——Thymeleaf简介
  • (转) 深度模型优化性能 调参
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .apk文件,IIS不支持下载解决
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .NET框架设计—常被忽视的C#设计技巧
  • .net实现头像缩放截取功能 -----转载自accp教程网
  • .Net中ListT 泛型转成DataTable、DataSet