首页 首页 大数据 查看内容

一分钟整明白Tensorflow Extended

木马童年 2019-5-17 09:35 12 0

作者:张相於 本文介绍了基于tf搭建一套通用机器学习平台的关键部分和大体流程,但没有给出更详细的介绍。 是KDD 2017 Applied Data Science Paper,作者是谷歌的一大票人,这么多作者,按照经验来看应该是这个平 ...

一分钟整明白Tensorflow Extended

作者:张相於

本文介绍了基于tf搭建一套通用机器学习平台的关键部分和大体流程,但没有给出更详细的介绍。

是KDD 2017 Applied Data Science Paper,作者是谷歌的一大票人,这么多作者,按照经验来看应该是这个平台的主要开发人员。本文介绍的平台取名Tensorflow Extended,也就是说其核心组件都是使用tensorflow来完成的,可以理解为是基于tensorflow的一次二次开发。那么这个tfx和tf有什么区别呢?我的理解,区别主要在于tf提供的是一套功能,可以用来执行模型训练相关的一系列工作,而tfx是构建在tf基础之上的一个包含了机器学习整个生命周期的完整系统,这个系统不只包含了tf所提供的模型训练等机器学习相关功能,还提供了如数据校验和验证、模型热启动、线上服务、模型发布等重要功能。

这篇文章的意义并不在于手把手教你如何搭建一套tfx,而是阐释了搭建一套tfx系统所需要包含的主要组件,以及这些组件在实现时需要考虑哪些关键点,还有作者团队在这其中积累的经验教训。换句话说,更多的是一篇“授人以渔”的文章。对于希望动手实现一套类似tfx这样通用机器学习平台的人来说,具有着重要的指导意义。下面将我认为比较有价值的部分做一摘录和解读。

整体设计原则

tfx的核心设计原则包括以下几点:

构建可服务于多个学习任务的统一平台。这要求系统具有足够的通用性和可扩展性。

支持持续训练和服务。这两个事情看起来简单,但是如果考虑到其中的风险控制和自动化问题发现等细节的话,也并不简单。

人工干预。如何优雅地让人参与整个流程,解决机器不好解决的问题,也是一个挑战。

可靠性和稳定性。这里的可靠性和稳定性不只指的是服务不崩溃这个级别,还包括在数据层面发生问题的时候服务的效果依然可以保持稳定可靠。

数据分析、转换和验证

数据是机器学习系统的核心,如何处理数据决定了整个模型的质量,这部分作者介绍了数据分析、转换和验证方面的实现要点。

数据分析

数据分析指的是系统会对进入到系统的数据进行自动地统计分析,例如数据值的分布,特征在样本上的分布,每个样本上特征的分布等等。同时还支持对数据做分片统计,例如分别对正负样本的统计,对来自不同国家数据的统计,等等。这里的难点之一在于,在大数据和时效性要求下,很多数据统计的精确值是不好计算的,所以很多时候 需要使用流式近似算法来计算足够好的近似值。

数据转换

所谓数据转换,指的是从原始数据到可训练特征之间的种种数据变换,例如离散化、特征映射等等。里面还提到一些对稀疏特征的处理细节。

这部分比较重要的一点是保证训练和服务时数据转换的一致性,这两者不一致往往会导致模型效果变差。tfx的做法是将数据转换也作为模型的一部分输出,从而避免这种不一致的发生。换句话说,是通过在训练阶段和服务阶段复用同样的代码逻辑来保证一致性,而不是两个地方分别实现不同代码,这是很重要的一点。从我的经验来看,做不到这一点的话,不仅可能会出现特征转换不一致的问题,还会使得开发工作量增大,并且增加正确性验证的工作量。

数据验证

所谓数据验证,指的是进入系统的数据是否符合预期,是否存在异常。tfx的做法是引入一个数据schema的结构,用来指定对一份数据的约束,例如数据的类型、是否必填、最大最小值等等。这么做的目的是防止不符合预期的数据进入到模型训练阶段,影响模型的质量。有了这个schema,就可以对进入系统的数据做验证,进一步,还可以给出建议,尤其是在数据本身发生了变化,原有的约束应该发生改变的情况下,系统可以自动发现可能的变化,反馈给开发者,让开发者决定是否接纳系统提出的改进建议。下图是一个使用schema进行数据验证的例子,图中红色内容是验证后给出的建议。

上面提到的约束条件可以进行扩展,但是作者给出的建议是,过于复杂的约束常常难以给出适合的约束条件,而且如果数据发生变化会难以维护。出于是的数据验证更好地服务于系统,并且方便用户使用,下面是一些核心的设计原则:

用户应该一眼就能看明白什么出了问题,以及问题的影响面。

异常应该简单明了,并且用户明白如何处理。例如,你可以说某个特征值超出了某个范围,但不要说某两个特征的KL散度超过了阈值。

根据数据的自然变化提示给出新的schema建议。很多数据会随着时间发生变化,所以需要考虑这一点。

希望用户能够像对待bug一样对待数据异常。所以,tfx允许数据异常像bug一样被记录、追踪和解决。

用户还可以通过追踪异常的变化情况来发现特征工程方面的改进空间。

模型训练

模型训练这部分没有太多值得一提的,主要就是在用tensorflow做训练。值得一提的是模型的热启动(warm start)问题。热启动解决的是模型需要长时间训练才能收敛的问题,这个时候可以用一个已经训练好的模型,从中选取一些共同的特征权重,作为模型的初始状态,这样可以使得模型更快收敛,从而加快训练速度。为了使得这部分逻辑通用化,tfx将其进行了抽象开发,并进行了开源(可能是开源在了tf里,这部分没有验证)。

模型评估和验证

机器学习系统是个多组件复杂系统,这使得 bug有很多地方可能发生,而这些bug很多时候都不会导致系统崩溃,而且人又难以发现,所以需要对模型进行评估和验证。

定义“好”模型

作者将好的模型定义为可以安全提供服务(safe to serve)并且具有预期的预测质量(desired prediction quality)。其中安全提供服务指的是模型在服务时不会因为各种原因崩溃掉,例如占用太多资源或数据格式错误。而预测质量指的就是模型预测的准确率,这与业务的效果息息相关。

验证的敏感度

模型验证面临的一个挑战在于确定验证的敏感度。如果过于敏感,数据稍有波动就报警,会导致频繁报警,最终人们会忽略报警;而如果过于不敏感,则会漏掉问题。作者的经验是,模型一旦出问题一般会导致各种指标的重大变化,所以敏感度可以设的粗一些。当然这个比较业务相关,还是要根据自己 的业务来决定。

分片验证

除了对模型做整体验证,有时可能还需要对数据的某个分片做验证。例如针对男性用户的验证等等。这对于模型的针对性细致评估和优化很有意义。

在不久的将来,多智时代一定会彻底走入我们的生活,有兴趣入行未来前沿产业的朋友,可以收藏多智时代,及时获取人工智能、大数据、云计算和物联网的前沿资讯和基础知识,让我们一起携手,引领人工智能的未来!

机器学习 可扩展性 数据分析 统计分析 大数据 数据统计
0
为您推荐
大数据技术改变城市的运作方式,智慧城市呼之欲出

大数据技术改变城市的运作方式,智慧城市呼

纽奥良虽像大多数城市一样有火灾侦测器安装计划,但直到最近还是要由市民主动申装。纽…...

大数据分析面临生死边缘,未来之路怎么走?

大数据分析面临生死边缘,未来之路怎么走?

大数据分析开始朝着营销落地,尤其像数果智能这类服务于企业的大数据分析供应商,不仅…...

什么是工业大数据,要通过3B和3C来理解?

什么是工业大数据,要通过3B和3C来理解?

核心提示:工业视角的转变如果说前三次工业革命分别从机械化、规模化、标准化、和自动…...

大数据普及为什么说肥了芯片厂商?

大数据普及为什么说肥了芯片厂商?

科技界默默无闻的存在,芯片行业年规模增长到了3520亿美元。半导体给无人驾驶汽车带来…...

大数据技术有哪些,为什么说云计算能力是大数据的根本!

大数据技术有哪些,为什么说云计算能力是大

历史规律告诉我们,任何一次大型技术革命,早期人们总是高估它的影响,会有一轮一轮的…...

个人征信牌照推迟落地,大数据 重新定义个人信用!!

个人征信牌照推迟落地,大数据 重新定义个

为金融学的基础正日益坚实。通过互联网大数据精准记录海量个人行为,进而形成分析结论…...