如何应对“吴恩达:人工智能落地最重要的挑战之一是小数据”的困境?

这是傅一平的第302篇原创

作者:傅一平

个人微信:fuyipingmnb

众所周知,在数据量非常小的时候,深度学习的复杂网络无法取得很好的效果,辩证的讲,数据不是一种无限的资源,而人工智能所需的数据相当昂贵和耗时,一方面深度学习需要准确的标记图像或文本训练数据,而标记需要大量的人力;另一方面,许多数据存在着隐私和安全风险,比如说医疗等等,数据的开放不是短期内能解决的。

现在数据孤岛、数据隐私、小数据和标注等问题日益突出,当前人工智能要能进一步发展,必须解决数据的挑战,找到在当前的数据状态下可持续发展的方法。

这就是人工智能专家吴恩达提出的问题:“数据当然是越多越好,我也并没有说许多数据是无用数据。但是,在农业、制造、医疗等领域的部分应用场景中,如果你手头只有100张照片,比如肿瘤照片过少,怎么办呢?” 笔者也碰到很多这种情况,比如反欺诈样本过少的问题。

但请注意,小数据问题产生的根源是复杂的,既有机制上的问题,也有技术上的问题,而且数据大小不是解决人工智能的唯一手段,我们要回归到第一性原理去找办法,只要能解决问题就行,何必拘泥于小数据或是大数据?

如果你能站住更高的角度看这个问题,也许能找到更多的办法,但无论如何,“小数据、大智能”,是用小数据推动人工智能技术能力提升的重要课题,今天笔者就业界的主要做法做一个分享,希望用最通俗的语言为你诠释清楚,一定要看完。

1、联邦学习

大多时候,我们只有小数据,是因为在大多数行业中,数据是以孤岛的形式存在的,由于行业竞争、隐私安全、行政手续复杂等问题,即使是在同一个公司的不同部门之间,实现数据整合也面临着重重阻力,在现实中将分散在各地、各个机构的数据进行整合几乎是不可能的,或者说所需的成本是巨大的。

当前重视数据隐私和安全已经成为了世界性的趋势。每一次用户数据的泄露都会引起媒体和公众的极大关注,无论是Facebook 的数据泄露事件,还是欧盟的GDPR。

随着人工智能落地场景越来越丰富,多方整合数据从而为用户提供更好的服务迫切性非常高,尤其是在一些风控领域,特别需要联合多家企业的数据来打造更好的信用模型,从而提升用户贷款的效率。

在现有的机制,流程无法改变的情况下,是否存在一种技术上的可行性,可以在不影响用户隐私的情况下,解决数据的孤岛问题呢?

2016 年谷歌最先提出联邦学习这个概念,联邦学习是一种跨多个数据源的模型训练方法,训练的各方的原始数据保留在本地,只有参数进行交互,通过加密模型训练得到最终的优化模型,从而解决数据孤岛的问题。

笔者专门写过一篇文章《联邦学习,带我们走出“数据孤岛”的困境?》介绍过这个技术,也组织团队正在进行尝试,但关键的问题是联邦学习业界还没有达成安全的共识,没有第三方中立机构为你背书,机制和流程仍然是很大的挑战。

最近听到的消息是,作为国内“联邦学习”技术的首倡者和领导者,微众银行 AI 团队在微众银行首席人工智能官杨强教授的带领下,不断推进着联邦学习的标准化建设工作,致力于为联邦学习的落地应用提供技术规范,为社会各界共建联邦生态提供合作依据。

目前,联邦学习技术已成功应用至智能信贷、智能风控、智能权益定价、智慧零售、智能用工、异常检测等业务场景,为智慧城市、智慧金融等多行业赋能。而未来,基于统一的“技术沟通语言”,联邦学习将会在更多行业更多场景发挥无限潜能。

2、强化学习

两年前,谷歌人工智能团队DeepMind 发布了他们的最新论文Mastering the game of Go without human knowledge,向人们介绍了阿尔法狗家族的新成员——阿尔法元。与之前几个版本的阿尔法狗不同,阿尔法元除了解围棋规则外,完全不依靠棋谱和人类数据,从零开始“自学成才”,成为全世界最厉害的(人工智能)围棋手。

自学三天,自博490万局棋后,阿尔法元以100:0的压倒性优势打败曾战胜韩国棋手李世石的AlphaGoLee,四十多天后,经过2900多万次自玩游戏,阿尔法元超过此前AlphaGo的所有版本,杀到黑白世界尸横遍野,成为世界上最厉害的围棋程序。

阿尔法元与几位哥哥的最大区别是,它不再需要人类数据作训练。因此,我们把AlphaGo Zero称作“阿尔法元”,其完全摆脱人类先验经验,除规则外,完全不借助人类数据,从第一场游戏开始,自我学习。

AlphaGo团队负责人大卫·席尔瓦介绍,阿尔法元使用新的强化学习方法,让自己变成了老师。系统一开始甚至并不知道什么是围棋,只是从单一神经网络开始,通过神经网络强大的搜索算法,进行了自我对弈。

而大家都知道传统的深度学习训练过程需要消耗大量人类标注样本,而这对于小样本应用领域(比如医疗图像处理)是不可能办到的。阿尔法元是在双方博弈训练过程中尝试解决对人类标注样本的依赖,而其依赖的正是强化学习独特的算法机制。

那么,强化学习和一般的有监督学习有什么区别呢?

强化学习通过对未知环境一边探索一边建立环境模型以及学得一个最优策略。有监督学习则是事先给你了一批样本,并告诉你哪些样本是优的哪些是劣的(样本的标记信息),通过学习这些样本而建立起对象的模型及其策略。

强化学习方法示意

在强化学习中没有人事先告诉你在什么状态下应该做什么,只有在摸索中反思之前的动作是否正确来学习。从这个角度看,可以认为强化学习是有时间延迟标记信息的有监督学习,下面再打个比方:

我们小时后看到马戏团的狗尽然可以算加减法,鸽子也会走钢丝了,就差猪也会飞了(扯远了),这是如何做到的?其实啊,拿鸽子来说,每当鸽子走到钢丝尽头或者中间某时刻(可以设计)的时候,训练人员就会给它一些奖励,这些奖励的作用是让它“知道”,鸽子啊,你当才的动作是对的(或者是不错的,你要继续保持啊)。如此一来,鸽子无形之中就受到了暗示,我只要那样做,就有奖励(食物)吃。何乐而不为呢。

AlphaGo团队负责人大卫·席尔瓦甚至这么说:“阿尔法元的出现表明,算法比所谓计算或数据可用性更重要。”

而李开复对此表示了不同意见,其提到阿尔法元的技术革新并非适用于所有人工智能领域:“围棋是一种对弈游戏,是适用于规则并可以穷举的。在相对有结构的领域,比如新材料开发,过去靠的可能是灵感,未来就可以靠自主学习。阿尔法元的新技术确实可能带来革新。但是,像语音识别,图像识别,自然语音理解等等领域,缺乏用简单规则就能判别的样本,它们依然需要大量的人类数据。”

这个评价是很中肯的,虽然强化学习不能从根本上解决小数据问题,但针对特定的场景,它提供了一种解决方案。

3、生成对抗网络

数据的生成有无规律可循,人类一直有大量的研究,我们现在做生成模型时,一般会预先设定一个分布(比如高斯分布),假设图像符合这个分布,只是参数的分布未知,我们可以通过数据去拟合这个分布,有了分布函数,啥数据都可以生成。

但这种靠人工经验假定数据分布的方式显然是非常主观的,更好的方式是我们能否对数据不进行假设,而是让一个模型生成数据,然后再判断这个数据究竟是对的还是错的,是像真实数据一样,还是和真实数据相差太远,我们根据这个判断反复修正这个模型。

以往的生成模型研究主要从人类理解数据的角度出发,希望使用一个显式的分布假设去设计模型,而GAN(生成对抗网络)可以说是第一个广为人知的,从机器或者数据的角度出发拟合数据的模型:我们不再给它任何的数据模型分布,而是直接去学习。

古德费洛提出了GAN的思想,见下图示意。

即设计这样一个游戏,包括两个玩家,其中一个就是生成器(Generator, G),生成器是一个神经网络,它的输入是噪声向量,这些噪声向量是从一个特定分布里面随机抽样出来,比如标准正态分布,均匀分布啊啥的,都OK,生成器的输出就是一张图片。

另外一个玩家是判别器(Discriminator, D),判别器D的输入是真实图片和生成器生成的假图片,对应的标签分别是1(真实图片)和0(假图片)。

训练过程过程是交替进行的,先训练判别器D,训练方法就是传统的分类模型;判别器训练好后,其权重固定,在此基础上训练生成器,生成器的训练方法跟判别器类似,只是其loss跟判别器刚好相反。判别器是让真实图片的预测概率尽量为1,假图片的预测概率尽量为0;生成器的loss是让假图片在当前判别器预测的时候概率尽量为1。

这个过程不断进行,直至相互收敛,比如对于真假图片的识别概率都是0.5,达到的效果是生成器生成的图片跟真实图片非常类似,判别器鉴别不出来了。

GAN最明显的应用是从原始数据生成新样本以增强我们的数据集,那么如何检查这种增强是否真的有帮助呢?

有两个主要策略:我们可以在“假”数据上训练我们的模型,并检查它在真实样本上的表现。对应的我们在实际数据上训练我们的模型来做一些分类任务,并且检查它对生成的数据的执行情况。如果它在两种情况下都能正常工作,你可以随意将生成模型中的样本添加到你的实际数据中并再次重新训练,你应该期望获得性能。

NVIDIA展示了这种方法的惊人实例:他们使用GAN来增加具有不同疾病的医学脑CT图像的数据集,并且表明仅使用经典数据的分类性能是78.6%的灵敏度和88.4%的特异性。通过添加合成数据增强,可以增加到85.7%的灵敏度和92.4%的特异性。

但GAN更多的用途还是生成以假乱真的图片,比如下图用三个不同人的图像生成三个人的综合体图像,非常有趣,GAN是深度学习的延伸。

4、迁移学习

迁移学习又是一种解决小数据的方法,“触类旁通”可能是最适合描述迁移学习的成语。

比方说新开一个音乐网站,没有任何的数据,就无法建立模型对用户进行推荐。但如果知道用户在视频网站已经有了很多很多的数据,利用这些数据建一个模型,结合用户看视频的习惯和听音乐习惯的关联,就可以把音乐的推荐模型给成功地迁移到看视频的领域,这样,在数据不多的情况下可以成功推荐一些用户可能喜欢的音乐。

这个例子就说明,有两个领域,一个领域已经有很多的数据,能成功地建一个模型,有一个领域数据不多,但是和前面那个领域是关联的,就可以把那个模型给迁移过来,这就是迁移学习。

迁移什么,怎么迁移,什么时候能迁移,这是迁移学习要解决的主要问题。

迁移学习有四种实现方法:样本迁移、特征迁移 、模型迁移及关系迁移,这里简单介绍下模型迁移,就是将整个模型应用到目标领域去,比如目前常用的对预训练好的深度网络做微调,也可以叫做参数迁移。

模型迁移利用上千万的图象训练一个图象识别的系统,当我们遇到一个新的图象领域,就不用再去找几千万个图象来训练了,可以将原来的图像识别系统迁移到新的领域,所以在新的领域只用几万张图片同样能够获取相同的效果,下图是狗识别模型的迁移示意。

5、合成训练数据

没有训练数据,没有大规模的标签数据集,那么就尽可能逼真的仿造数据,这就是合成训练数据,但并非是毫无根据的模仿,合成的训练数据一定是可以精确地模拟现实场景和现实事物。

仿真系统可以部分的解决这个问题,比如运营商的信号仿真系统,就需要基于算法来模拟得到各个位置的信号强度,从而确定弱覆盖区域(MR数据可以用来校验准确性),并可以基于仿真地图获得位置指纹库,下图显示了射线追踪、三维地图、高程图、植被图的仿真。

又比如英伟达在2018年月推出DRIVE Constellation仿真系统,用以生成在虚拟世界中车辆行驶的传感器结果。

6、原始数据增强

如果手头的数据有限,如何能基于这些数据生成更多的数据呢?业界有很多做法,本质上就是引入各种变换或算法来生成更多的数据,也就是为数据本身服务的算法。

在图像领域,数据增强的方法包括翻转、旋转、缩放、裁剪、平移、增加高斯噪声等等,下图是缩放的示例。

由于在变换过程中会出现真空地带,需要采用差值法等手段来填补,如下图所示是一张旋转的图,后面依次采用边缘,反射,对称和包裹模式来填充。

在NLP领域,数据增强的方法包括同义词替换、随机插入、随机交换、随机删除等等,据统计,对于四种技术,数据集很小时,每一种技术都能够有2-3%的提升,当数据集很大时,每一种技术也能够有1%的提升。

除了图像和NLP,大量的数据增强则需要基于实际场景通过特定的算法实现,比如在交通的路网拟合中,我们发现原始位置轨迹数据的连续性不好,打点的数据在时间,空间上并不是很均匀,如果直接基于这个残缺数据去做应用模型,会出现大量的问题。比如统计某个时段某块区域的车流会出现误判,这就需要用专门的算法来进行数据补偿。

下图是某同事上班轨迹的拟合过程,第一张图信令位置数据飘的很厉害,第三种图绿色线部分是对于数据用算法平滑后(诸如马尔科夫啥的)的结果,跟实际导航就很吻合了。

很多互联网公司特别重视算法,一个原因就是利用算法可以产生有价值的新数据,从而弥补自身数据的不足,应用的体验也更好,这个特别值得学习。

7、人工调研数据

虽然我们进入了大数据时代,但其实大量的问题可以基于调研的小数据分析获得答案,特别是涉及主观判断或者情况特别复杂的场景,比如用户的满意度调研,因为现有的数据不足以支撑,很多基于大数据的满意度预测模型效果也并不理想。

有人会质疑调研的数据不准确的问题,比如接受调研的人信口开河,但其实很多场景只要相对准确就行了,人大多数时候还是活在自己的约束中,造假对他也是有成本的。

比如去银行柜台办银行卡,营业员会问收入多少,你可以把年收入100万报成30万,你以为很离谱,但对于银行有用,因为对于另一个年入5万的人来说没有30万的想象空间,银行的确得不到最准确的数据,但它能判断谁更有投资价值,这就够了,模糊不代表没用。

因此,很多时候,如果你真的没有数据了,人工调研也是好方法,我们的目标始终是解决问题,而不是就大数据论大数据。

说了七个方面,笔者的意思可不是说大数据不重要,而是吴恩达的这个问题引起了自己的思考,因此调研了一番。其实业界已经有一些好的做法了,你需要知道这些方法,然后看看能否为你所用,上华山并不是只有一条路,这是最重要的。

希望我的分享于你有益。

如果你觉得这篇文章有用,欢迎推荐和转发朋友圈,如果你有独到的见解和意见,欢迎到我的知识星球进行探讨。

作者:傅一平 (微信号:fuyipingmnb)

机器学习初学者

黄海广博士创建的公众号,黄海广博士个人知乎粉丝21000+,github排名全球前120名(30000+)。本公众号致力于人工智能方向的科普性文章,为初学者提供学习路线和基础资料。原创作品有:吴恩达机器学习个人笔记、吴恩达深度学习笔记等。

往期精彩回顾

  • 那些年做的学术公益-你不是一个人在战斗

  • 良心推荐:机器学习入门资料汇总及学习建议

  • 吴恩达机器学习课程笔记及资源(github标星12000+,提供百度云镜像)

  • 吴恩达深度学习笔记及视频等资源(github标星8500+,提供百度云镜像)

  • 《统计学习方法》的python代码实现(github标星7200+)

  • 精心整理和翻译的机器学习的相关数学资料

  • 首发:深度学习入门宝典-《python深度学习》原文代码中文注释版及电子书

  • 图解word2vec(原文翻译)

备注:加入本站微信群或者qq群,请回复“加群

加入知识星球(4100+用户,ID:92416895),请回复“知识星球


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部