最具影响力的数字化技术在线社区

168大数据

 找回密码
 立即注册

QQ登录

只需一步,快速开始

1 2 3 4 5
打印 上一主题 下一主题
开启左侧

一分钟整明白Tensorflow Extended

[复制链接]
跳转到指定楼层
楼主
发表于 2017-11-16 11:11:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
A TensorFlow-Based Production-Scale Machine Learning Platform 本文介绍了基于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)。其中安全提供服务指的是模型在服务时不会因为各种原因崩溃掉,例如占用太多资源或数据格式错误。而预测质量指的就是模型预测的准确率,这与业务的效果息息相关。
验证的敏感度
模型验证面临的一个挑战在于确定验证的敏感度。如果过于敏感,数据稍有波动就报警,会导致频繁报警,最终人们会忽略报警;而如果过于不敏感,则会漏掉问题。作者的经验是,模型一旦出问题一般会导致各种指标的重大变化,所以敏感度可以设的粗一些。当然这个比较业务相关,还是要根据自己 的业务来决定。
分片验证
除了对模型做整体验证,有时可能还需要对数据的某个分片做验证。例如针对男性用户的验证等等。这对于模型的针对性细致评估和优化很有意义。
其他
文章后面部分讲了一些服务层面性能优化和在Google Play上应用的一个案例,这个就不说了。对于文章细节有兴趣的可以搜原文去看。
本文作者:
张相於 负责转转的推荐系统。他正在招推荐算法和推荐架构工程师,负责转转推荐系统和机器学习系统的构建和持续优化。转转目前业务发展飞快,技术挑战巨大,有志青年请邮件发送简历联系。

楼主热帖
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 赞 踩

168大数据 - 论坛版权1.本主题所有言论和图片纯属网友个人见解,与本站立场无关
2.本站所有主题由网友自行投稿发布。若为首发或独家,该帖子作者与168大数据享有帖子相关版权。
3.其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和168大数据的同意,并添加本文出处。
4.本站所收集的部分公开资料来源于网络,转载目的在于传递价值及用于交流学习,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
5.任何通过此网页连接而得到的资讯、产品及服务,本站概不负责,亦不负任何法律责任。
6.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源,若标注有误或遗漏而侵犯到任何版权问题,请尽快告知,本站将及时删除。
7.168大数据管理员和版主有权不事先通知发贴者而删除本文。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

关于我们|小黑屋|Archiver|168大数据 ( 京ICP备14035423号|申请友情链接

GMT+8, 2024-6-27 00:24

Powered by BI168大数据社区

© 2012-2014 168大数据

快速回复 返回顶部 返回列表