0
本文作者: 恒亮 | 2017-02-23 16:21 |
在實際的機器學習開發(fā)中,開發(fā)者通常需要對數(shù)據(jù)集進行大量的耗時費力的預(yù)處理過程,以適應(yīng)各種不同標準的機器學習模型(例如神經(jīng)網(wǎng)絡(luò))。這些預(yù)處理過程根據(jù)待解問題的不同和原始數(shù)據(jù)的組織形式而各不相同,包括不同格式之間的轉(zhuǎn)換,分詞、詞干提取和形成詞匯,以及包括歸一化在內(nèi)的各種數(shù)值操作等等。實際上,數(shù)據(jù)的預(yù)處理已經(jīng)成為了機器學習開發(fā)中無法回避的一個難題。
針對這一難題,谷歌于 22 日通過開發(fā)者博客正式發(fā)布了一個基于 TensorFlow 的全新功能組件 —— tf.Transform。它允許用戶在大規(guī)模數(shù)據(jù)處理框架中定義預(yù)處理流水線(preprocessing pipelines),同時用戶還可以將這些流水線導出,并將其作為 TensorFlow 計算圖(TensorFlow graph)的一部分。用戶可以通過組合 Python 函數(shù)來定義該流水線,然后在 Apache Beam 框架下通過 tf.Transform 執(zhí)行。(注:Apache Beam 是一個用于大規(guī)模的、高效的、分布式的數(shù)據(jù)處理的開源框架)目前,基于 Apache Beam 框架的流水線可以在 Google Cloud Dataflow 平臺上運行,并計劃在未來支持更多的平臺(可能包括 Apache Apex,Apache Flink 和 Apache Spark 等)。值得一提的是,通過 tf.Transform 導出的 TensorFlow 計算圖還可以在模型預(yù)測階段將這種數(shù)據(jù)預(yù)處理步驟復(fù)用(例如,通過 Tensorflow Serving 提供模型時)。
另一方面,開發(fā)者最終在產(chǎn)品形態(tài)運行機器學習模型時通常還會遇到“訓練服務(wù)偏差”(training-serving skew),即由于服務(wù)中處理的數(shù)據(jù)與模型訓練中使用的數(shù)據(jù)存在一定的差異,從而造成的預(yù)測質(zhì)量下降。
面對這一問題,此次新發(fā)布的 tf.Transform 組件還能保證預(yù)處理過程的零偏差,即保證服務(wù)中的數(shù)據(jù)預(yù)處理和訓練中的數(shù)據(jù)預(yù)處理執(zhí)行完全相同的操作,特別是當模型訓練和服務(wù)運行在不同的框架時,例如訓練在 TensorFlow,服務(wù)在 Apache Beam 的情況。
除了便于數(shù)據(jù)的預(yù)處理之外,tf.Transform 還允許用戶計算其數(shù)據(jù)集的統(tǒng)計概要(summary statistics)。對于每個機器學習項目的開發(fā)者而言,深刻理解其數(shù)據(jù)都非常重要,因為任何對底層數(shù)據(jù)做出的錯誤假設(shè)都可能會產(chǎn)生一些微妙的錯誤。通過更簡單和高效地計算數(shù)據(jù)的統(tǒng)計概要,tf.Transform 可以幫助開發(fā)者更好地檢查他們關(guān)于原始數(shù)據(jù)和預(yù)處理數(shù)據(jù)的假設(shè)。
最后,谷歌在博客中表示,對于 tf.Transform 的發(fā)布他們感到非常激動,他們真誠地希望 tf.Transform 可以幫助 TensorFlow 開發(fā)者們更方便地預(yù)處理數(shù)據(jù),以及更好地理解這些數(shù)據(jù)。
開源地址:https://github.com/tensorflow/transform
來源:googleblog,雷鋒網(wǎng)編譯
雷鋒網(wǎng)相關(guān)閱讀:
百度將 HPC 技術(shù)引入深度學習;卡巴斯基操作系統(tǒng);AMD Ryzen 預(yù)售等 | AI 開發(fā)者頭條
TensorFlow 1.0 正式發(fā)布 你需要知道的都在這里
雷鋒網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。
雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。