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

万万没想到,枯燥的“机器学习”还可以这样学!

5月末的一天中午,蚂蚁AI平台部的几个PD同学吃完老娘舅,在Z空间楼下遛弯。

期间,某同学提到一则“小孩子因为鸡毛蒜皮的小事,想不开而做出傻事”的新闻。

当大家在纷纷感叹的时候,一位产品专家同学形象地说了一句——这个孩子的“模型过拟合、泛化能力太差”。

这个比喻确实一针见血、入木三分啊!众人均表示,以此悟性,该同学“晋升研究员,入主组织部”就指日可待了!

7712cb57098e24dd6f5294fa56be3d9943883444

的确如此,娇生惯养(过拟合:overfitting)形成的脆弱心智(模型),在面临真实世界当中的种种不如意时,往往不能正确地处理(预测不准、泛化能力差),从而非常容易酿成悲剧。

在机器学习当中,在训练模型时,如果样本太单一或者特征选择不当,就会出现过拟合。即把训练样本当中的特殊情况,当成普遍情况。这样,在面对新的样本时,就无法正确处理。

515e95f51526fe040b2d6cf46edc21c4781c1d98

我们常说的应试教育和素质教育,也有泛化能力的巨大差异。

应试教育整天让学生做卷子、刷题库,训练出来模型过拟合、泛化能力差,就会出现“高分低能”的情况。而素质教育则注重能力锻炼、比较多元化,训练出来的模型泛化能力强,学生们将来在生活和工作方面都不会有太大的问题。

4516890b5212d7a36e4e0efc43188534e2051666

其实,如果你把人的成长与机器学习进行仔细比对,你就会发现,两者还有更多异曲同工之妙。

一个婴儿呱呱坠地,他天生就会具备一些能力(自带算法库),比如心跳、呼吸、哭、笑、恐惧等等。

这些能力,都是神奇的进化和伟大的基因带给我们的。否则,让我们重新掌握一遍这些技能那就太费劲了。

4516890b5212d7a36e4e0efc43188534e2051666

当然,为了正常的生活,仅仅有这些自带的初级算法和模型是还不够,你还要不断地掌握一些新的技能(自研算法)

比如,吃饭、走路、说话等等。

要掌握这些技能,需要父母日复一日,年复一年,不辞辛苦地反复教我们,训练我们咿呀学语、蹒跚学步。

这就像在机器学习中,需要足够多的样本(成千上万),耗费很多计算资源,经过数分钟甚至数小时、数天的持续训练,才能获得一个模型。

其实,在人的大脑当中,不光有常年累月不断训练而掌握的技能(模型),还会有一些强规则

这些规则,有些是父母教给我们的,有的是社会道德规范、法律法规形成的 。

比如,父母会对小孩子说:“不要随便吃陌生人给的食物”、“过马路时要左右看”。

在生活当中,要尊老爱幼、礼尚往来,要遵纪守法、践行社会主义核心价值观等等。

对于这些规则,我们记住,以后照做就行了。

301b9ecfd828ab345fd486846cf69ecce3f4566b

由此可见,我们的大脑就像一个决策中心或者决策中枢,其中包含了无数规则和模型

。每次决策,就是组合地使用这些规则和模型。

在实际的机器学习应用场景中,在各个业务线当中,也有各种各样类似的“决策中心”,比如大安全的UCT、微贷的AGDS以及DecisionX这样的“通用决策中心”。

这个决策中心,就包含了成百上千复杂的规则(或者称为“策略”)以及训练得到的模型。对于某一个,用策略and/or模型的组合来进行判断和决策。

而且,往往是先判断策略,如果不满足某个策略,那么就直接给出决策。

随着年龄的增长,除了吃喝拉撒这些基本技能,我们的决策中心还需要掌握更多的技能,比如语文、数学、音乐、舞蹈、体育等等。

在这方面,经常会看到某些孩子“天赋异禀”,即系统自带超牛的算法——他的爸妈给他遗传了更好的算法。

不过,我们普通人也不要气馁,我们可以付出更多努力(大样本),不断刻意、刻苦地训练(模型不断retrain和演进),也能取得好的成绩。

人生是场马拉松,模型训练也是如此。

57ebac8e162cbe2aa520eab5649fecd1c280531a

相比之下,在这场马拉松当中,在人生的不同年龄阶段,我们所使用的学习方法也不尽相同。

在小时候,我们大多数采用的是监督的机器学习。

比如,父母会拿着各种各样的水果教我们:“这是苹果,这是桔子”。

动画片和故事书经常告诉我们:哪些是好人,哪些是坏人。

于是,我们最常用的就是二分类算法:大/小、长/短、是/否、好/坏。

c43f3f0009a254a822d93bbf0534ac9ba967539a

而长大以后,我们遇到更多的是无监督或者半监督的学习,很多事物并不会带着明确的是非对错的标签。

因此,我们会用一些聚类算法。跟遇到的人经过一段时间熟悉后,才会把他们分为“讲义气”、“酒量大”、“会修电脑”、“爱吃老娘舅”等各个类别。

2122dae61a1e04620bb20184f9a1d42a67118fe5

尽管学习的方法各异,但大道至简、万物相同。

我们知道,一个人在某个方面有所成就,就很容易在其他领域表现优异(迁移学习)

比如,爱因斯坦不仅是杰出的科学家,他还精通小提琴。一个C语言高手,很快就能变身Java大拿。

当然,细究起来,人脑与机器学习也有不少差异。

比如,给小孩玩几个玩具汽车、看几张汽车图片,他就会能认识许多造型各异、图片风格迥异的汽车。

相比之下,要让机器达到这样看似简单的能力,则需要需要数万、数百万的样本来训练。

几年来,有关AutoML的一个研究方向,就是解决如何用少量的样本完成模型的训练。

3a35911208d3f4486f74df5b0605f33622024fe9

此外,我们发现,人类“下意识、一瞬间”能做的事情,对于人工智能来说却很难

比如,认识物体和人像(图像识别能力)、喜怒哀乐的情绪以及行走奔跑的能力。究其原因,还是归功于伟大的进化——我们的这些模型,是经历了亿万年的进化,经过了无数次地模型演进才获得的。

反过来说,人类花很长时间才能做完的事情,对电脑来说却易如反掌例如,在短时间内,对100万个数字求和,或者把圆周率的精确到小数点后100万位。

3d5ffe24f54e9cd3402bc2631413de3afdb2b0b3

然而,要找到人脑和人工智能的能力差异背后的真实原因,人类还有很长一段路要走。

尽管现在科技日新月异,尽管人们已经发明出了“深度神经网络”来实现人工智能(深度学习),让机器认识猫、下围棋,但人类对自己大脑的运作机制仍然知之甚少。

可以说,人们用自己那神奇的、原理尚不清楚(不可解释) 的大脑,造出了种种机理尚不清楚(不可解释)的模型。

也就是说,尽管你用深度学习训练出了一个可以识别猫的模型,但这个模型没有可解释性。即,你无法说出这个你训练出的这个牛逼的模型,究竟是靠哪些特征、哪些原则来识别出猫的。

b0ad11ae599f4c8efd5ca0585ea70a483de7d946

人的心智,就是由无数个如此讳莫如深的模型以及清晰明了的规则组成。

人的一生,就是不断迭代旧算法、retrain旧模型,研发新算法、训练新模型的过程。

所谓“读万卷书、行万里路、与万人谈”,这就是让我们掌握更多的算法,拥有更全面的样本,从而训练出更多样的模型。

不过,可惜的是,不像“长相、哭、笑”这类特征或技能,人类的大部分模型并不能通过基因来遗传给我们的孩子。

比如,一个“精通Java/Python,擅debug、调core”的高级技术专家(P8),与一个“深谙用户体验和人性本质”的资深产品经理(P6)合体之后,繁衍的后代并不能天生就会写码或画线框图。

也就是说,你穷尽一生训练出来的各色优雅的模型,有朝一日都会下线(模型下线)

b909f4576035812a3021159f8bbf819aba7622d0

但是,并不要因此感到悲伤,人生本来就是一个体验美好和精彩的过程。

人常说,活到老学到老,这样的人生才是完整的,才是值得期待的。

总而言之,蚂蚁金服AI平台部汇聚了机器学习、大数据智能等领域的来自五湖四海、国内国外的众多精英,部门的产品支持了蚂蚁金服多个核心产品和业务。


原文发布时间为:2018-06-13

本文作者:栢柠

本文来自云栖社区合作伙伴“阿里技术”,了解相关信息可以关注“阿里技术”。

相关文章:

  • 被忽略的对象
  • Xtrabackup 使用stream输出并压缩备份
  • 一个UPDATE语句引发的血案
  • 机器学习中为什么要做归一化normalization
  • PermissionScope Swift4 兼容问题
  • mysql快速生成测试数据的方法,以及分页limit语句优化
  • extjs年月选择日历及通用js同步ajax调用返回json object
  • OSI--------物理层 eNSP
  • MySQL windows下cmd安装操作
  • 操作系统概述
  • “小红书”——给你一记安利
  • MFC:树形控件
  • Thrift版本管理
  • 【译】Angular自动取消订阅
  • Blog-05-《一周快速上手Kotlin For Android》-之Broadcast用法
  • [iOS]Core Data浅析一 -- 启用Core Data
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • 【技术性】Search知识
  • Angular 2 DI - IoC DI - 1
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 记录:CentOS7.2配置LNMP环境记录
  • 技术胖1-4季视频复习— (看视频笔记)
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 06-01 点餐小程序前台界面搭建
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • ​如何在iOS手机上查看应用日志
  • # .NET Framework中使用命名管道进行进程间通信
  • (1)(1.13) SiK无线电高级配置(六)
  • (31)对象的克隆
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (强烈推荐)移动端音视频从零到上手(上)
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (转载)CentOS查看系统信息|CentOS查看命令
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .net MySql
  • .NET NPOI导出Excel详解
  • .NET 中各种混淆(Obfuscation)的含义、原理、实际效果和不同级别的差异(使用 SmartAssembly)
  • .NET/C# 推荐一个我设计的缓存类型(适合缓存反射等耗性能的操作,附用法)
  • .NET精简框架的“无法找到资源程序集”异常释疑
  • .NET使用HttpClient以multipart/form-data形式post上传文件及其相关参数
  • .one4-V-XXXXXXXX勒索病毒数据怎么处理|数据解密恢复
  • @Autowired和@Resource装配
  • @EventListener注解使用说明
  • @JoinTable会自动删除关联表的数据
  • [.net 面向对象程序设计进阶] (19) 异步(Asynchronous) 使用异步创建快速响应和可伸缩性的应用程序...
  • [20140403]查询是否产生日志
  • [Android]如何调试Native memory crash issue
  • [AR]Vumark(下一代条形码)
  • [CCIE历程]CCIE # 20604
  • [GN] Vue3快速上手1
  • [HTTP]HTTP协议的状态码