为了方便用户为机器学习进行数据预处理,Google今天发布了tf.Transform。
每当要把机器学习用于真实的数据集时,我们都需要花很多精力来对数据进行预处理,把它们变成适用于神经网络等机器学习模型的格式。这个预处理过程有多种形式,包括格式之间的转换,或者标记化、词干文本和形成词汇,以及执行归一化等各种数值操作。
Google今天发布的tf.Transform是一个Tensorflow库,让用户可以使用大规模数据处理框架来定义预处理流程并运行,同时也可以将流程导出,并作为TensorFlow计算图的一部分运行。
用户通过组合模块化Python函数来定义流程,然后tf.Transform用Apache Beam(一个用于大规模,高效,分布式数据处理的框架)来执行它。 Apache Beam流程可以在Google Cloud Dataflow上运行,并计划支持使用其他框架运行。在使用训练过的模型做预测是,通过tf.Transform导出的TensorFlow计算图可以复制预处理步骤。
在生产中运行机器学习模型时,常见问题是“训练服务偏斜”,也就是在服务中看到的数据在某种程度上不同于用于训练模型的数据,导致预测质量降低。当训练时和服务时在不同的环境(例如Apache Beam和TensorFlow)中对数据进行预处理时,就很容易发生这个问题。tf.Transform通过保证服务中的变换与在训练中执行的完全相同,确保在预处理期间不会出现偏斜。
除了便于预处理,tf.Transform还允许用户为其数据集做汇总统计。理解数据在每个机器学习项目中非常重要,因为对底层数据做出错误假设可能会产生微妙的错误。通过使简要统计的计算变得容易和高效,tf.Transform允许用户检查他们关于原始数据和预处理数据的假设。
△ tf.Transform允许用户定义一个预处理流程,将预处理的数据用于TensorFlow训练,还可以导出将变换编码为TensorFlow图的tf.Transform图,并将该变换图合并到用于推断的模型图中。
我们很高兴能发布这一最新的TensorFlow生态系统,我们希望用户会发现它对预处理和了解他们的数据很有用。
我们要感谢tf.Transform团队的以下成员对这个项目的贡献:Clemens Mewald,Robert Bradshaw,Rajiv Bharadwaja,Elmer Garduno,Afshin Rostamizadeh,Neoklis Polyzotis,Abhi Rao,Joe Toth,Neda Mirian,Dinesh Kulkarni, Robbie Haertel,Cyril Bortolato和Slaven Bilac。我们还要感谢TensorFlow,TensorFlow服务和云数据流团队的支持。