天天看點

谷歌釋出全新TensorFlow庫“tf.Transform” 簡化機器學習資料預處理過程

在實際的機器學習開發中,開發者通常需要對資料集進行大量的耗時費力的預處理過程,以适應各種不同标準的機器學習模型(例如神經網絡)。這些預處理過程根據待解問題的不同和原始資料的組織形式而各不相同,包括不同格式之間的轉換,分詞、詞幹提取和形成詞彙,以及包括歸一化在内的各種數值操作等等。實際上,資料的預處理已經成為了機器學習開發中無法回避的一個難題。

針對這一難題,谷歌于 22 日通過開發者部落格正式釋出了一個基于 tensorflow 的全新功能元件 —— tf.transform。它允許使用者在大規模資料處理架構中定義預處理流水線(preprocessing pipelines),同時使用者還可以将這些流水線導出,并将其作為 tensorflow 計算圖(tensorflow graph)的一部分。使用者可以通過組合 python 函數來定義該流水線,然後在 apache beam 架構下通過 tf.transform 執行。(注:apache beam 是一個用于大規模的、高效的、分布式的資料處理的開源架構)目前,基于 apache beam 架構的流水線可以在 google cloud dataflow 平台上運作,并計劃在未來支援更多的平台(可能包括 apache apex,apache flink 和 apache spark 等)。值得一提的是,通過 tf.transform 導出的 tensorflow 計算圖還可以在模型預測階段将這種資料預處理步驟複用(例如,通過 tensorflow serving 提供模型時)。

另一方面,開發者最終在産品形态運作機器學習模型時通常還會遇到“訓練服務偏差”(training-serving skew),即由于服務中處理的資料與模型訓練中使用的資料存在一定的差異,進而造成的預測品質下降。

谷歌釋出全新TensorFlow庫“tf.Transform” 簡化機器學習資料預處理過程

面對這一問題,此次新釋出的 tf.transform 元件還能保證預處理過程的零偏差,即保證服務中的資料預處理和訓練中的資料預處理執行完全相同的操作,特别是當模型訓練和服務運作在不同的架構時,例如訓練在 tensorflow,服務在 apache beam 的情況。

除了便于資料的預處理之外,tf.transform 還允許使用者計算其資料集的統計概要(summary statistics)。對于每個機器學習項目的開發者而言,深刻了解其資料都非常重要,因為任何對底層資料做出的錯誤假設都可能會産生一些微妙的錯誤。通過更簡單和高效地計算資料的統計概要,tf.transform 可以幫助開發者更好地檢查他們關于原始資料和預處理資料的假設。

最後,谷歌在部落格中表示,對于 tf.transform 的釋出他們感到非常激動,他們真誠地希望 tf.transform 可以幫助 tensorflow 開發者們更友善地預處理資料,以及更好地了解這些資料。

本文作者:恒亮