一分鐘整明白Tensorflow Extended

大數(shù)據(jù)

作者:張相於

本文介紹了基于tf搭建一套通用機(jī)器學(xué)習(xí)平臺的關(guān)鍵部分和大體流程,但沒有給出更詳細(xì)的介紹。

是KDD 2017 Applied Data Science Paper,作者是谷歌的一大票人,這么多作者,按照經(jīng)驗(yàn)來看應(yīng)該是這個(gè)平臺的主要開發(fā)人員。本文介紹的平臺取名Tensorflow Extended,也就是說其核心組件都是使用tensorflow來完成的,可以理解為是基于tensorflow的一次二次開發(fā)。那么這個(gè)tfx和tf有什么區(qū)別呢?我的理解,區(qū)別主要在于tf提供的是一套功能,可以用來執(zhí)行模型訓(xùn)練相關(guān)的一系列工作,而tfx是構(gòu)建在tf基礎(chǔ)之上的一個(gè)包含了機(jī)器學(xué)習(xí)整個(gè)生命周期的完整系統(tǒng),這個(gè)系統(tǒng)不只包含了tf所提供的模型訓(xùn)練等機(jī)器學(xué)習(xí)相關(guān)功能,還提供了如數(shù)據(jù)校驗(yàn)和驗(yàn)證、模型熱啟動(dòng)、線上服務(wù)、模型發(fā)布等重要功能。

這篇文章的意義并不在于手把手教你如何搭建一套tfx,而是闡釋了搭建一套tfx系統(tǒng)所需要包含的主要組件,以及這些組件在實(shí)現(xiàn)時(shí)需要考慮哪些關(guān)鍵點(diǎn),還有作者團(tuán)隊(duì)在這其中積累的經(jīng)驗(yàn)教訓(xùn)。換句話說,更多的是一篇“授人以漁”的文章。對于希望動(dòng)手實(shí)現(xiàn)一套類似tfx這樣通用機(jī)器學(xué)習(xí)平臺的人來說,具有著重要的指導(dǎo)意義。下面將我認(rèn)為比較有價(jià)值的部分做一摘錄和解讀。

整體設(shè)計(jì)原則

tfx的核心設(shè)計(jì)原則包括以下幾點(diǎn):

構(gòu)建可服務(wù)于多個(gè)學(xué)習(xí)任務(wù)的統(tǒng)一平臺。這要求系統(tǒng)具有足夠的通用性和可擴(kuò)展性。支持持續(xù)訓(xùn)練和服務(wù)。這兩個(gè)事情看起來簡單,但是如果考慮到其中的風(fēng)險(xiǎn)控制和自動(dòng)化問題發(fā)現(xiàn)等細(xì)節(jié)的話,也并不簡單。人工干預(yù)。如何優(yōu)雅地讓人參與整個(gè)流程,解決機(jī)器不好解決的問題,也是一個(gè)挑戰(zhàn)。可靠性和穩(wěn)定性。這里的可靠性和穩(wěn)定性不只指的是服務(wù)不崩潰這個(gè)級別,還包括在數(shù)據(jù)層面發(fā)生問題的時(shí)候服務(wù)的效果依然可以保持穩(wěn)定可靠。

數(shù)據(jù)分析、轉(zhuǎn)換和驗(yàn)證

數(shù)據(jù)是機(jī)器學(xué)習(xí)系統(tǒng)的核心,如何處理數(shù)據(jù)決定了整個(gè)模型的質(zhì)量,這部分作者介紹了數(shù)據(jù)分析、轉(zhuǎn)換和驗(yàn)證方面的實(shí)現(xiàn)要點(diǎn)。

數(shù)據(jù)分析

數(shù)據(jù)分析指的是系統(tǒng)會對進(jìn)入到系統(tǒng)的數(shù)據(jù)進(jìn)行自動(dòng)地統(tǒng)計(jì)分析,例如數(shù)據(jù)值的分布,特征在樣本上的分布,每個(gè)樣本上特征的分布等等。同時(shí)還支持對數(shù)據(jù)做分片統(tǒng)計(jì),例如分別對正負(fù)樣本的統(tǒng)計(jì),對來自不同國家數(shù)據(jù)的統(tǒng)計(jì),等等。這里的難點(diǎn)之一在于,在大數(shù)據(jù)和時(shí)效性要求下,很多數(shù)據(jù)統(tǒng)計(jì)的精確值是不好計(jì)算的,所以很多時(shí)候 需要使用流式近似算法來計(jì)算足夠好的近似值。

數(shù)據(jù)轉(zhuǎn)換

所謂數(shù)據(jù)轉(zhuǎn)換,指的是從原始數(shù)據(jù)到可訓(xùn)練特征之間的種種數(shù)據(jù)變換,例如離散化、特征映射等等。里面還提到一些對稀疏特征的處理細(xì)節(jié)。

這部分比較重要的一點(diǎn)是保證訓(xùn)練和服務(wù)時(shí)數(shù)據(jù)轉(zhuǎn)換的一致性,這兩者不一致往往會導(dǎo)致模型效果變差。tfx的做法是將數(shù)據(jù)轉(zhuǎn)換也作為模型的一部分輸出,從而避免這種不一致的發(fā)生。換句話說,是通過在訓(xùn)練階段和服務(wù)階段復(fù)用同樣的代碼邏輯來保證一致性,而不是兩個(gè)地方分別實(shí)現(xiàn)不同代碼,這是很重要的一點(diǎn)。從我的經(jīng)驗(yàn)來看,做不到這一點(diǎn)的話,不僅可能會出現(xiàn)特征轉(zhuǎn)換不一致的問題,還會使得開發(fā)工作量增大,并且增加正確性驗(yàn)證的工作量。

數(shù)據(jù)驗(yàn)證

所謂數(shù)據(jù)驗(yàn)證,指的是進(jìn)入系統(tǒng)的數(shù)據(jù)是否符合預(yù)期,是否存在異常。tfx的做法是引入一個(gè)數(shù)據(jù)schema的結(jié)構(gòu),用來指定對一份數(shù)據(jù)的約束,例如數(shù)據(jù)的類型、是否必填、最大最小值等等。這么做的目的是防止不符合預(yù)期的數(shù)據(jù)進(jìn)入到模型訓(xùn)練階段,影響模型的質(zhì)量。有了這個(gè)schema,就可以對進(jìn)入系統(tǒng)的數(shù)據(jù)做驗(yàn)證,進(jìn)一步,還可以給出建議,尤其是在數(shù)據(jù)本身發(fā)生了變化,原有的約束應(yīng)該發(fā)生改變的情況下,系統(tǒng)可以自動(dòng)發(fā)現(xiàn)可能的變化,反饋給開發(fā)者,讓開發(fā)者決定是否接納系統(tǒng)提出的改進(jìn)建議。下圖是一個(gè)使用schema進(jìn)行數(shù)據(jù)驗(yàn)證的例子,圖中紅色內(nèi)容是驗(yàn)證后給出的建議。

上面提到的約束條件可以進(jìn)行擴(kuò)展,但是作者給出的建議是,過于復(fù)雜的約束常常難以給出適合的約束條件,而且如果數(shù)據(jù)發(fā)生變化會難以維護(hù)。出于是的數(shù)據(jù)驗(yàn)證更好地服務(wù)于系統(tǒng),并且方便用戶使用,下面是一些核心的設(shè)計(jì)原則:

用戶應(yīng)該一眼就能看明白什么出了問題,以及問題的影響面。異常應(yīng)該簡單明了,并且用戶明白如何處理。例如,你可以說某個(gè)特征值超出了某個(gè)范圍,但不要說某兩個(gè)特征的KL散度超過了閾值。根據(jù)數(shù)據(jù)的自然變化提示給出新的schema建議。很多數(shù)據(jù)會隨著時(shí)間發(fā)生變化,所以需要考慮這一點(diǎn)。希望用戶能夠像對待bug一樣對待數(shù)據(jù)異常。所以,tfx允許數(shù)據(jù)異常像bug一樣被記錄、追蹤和解決。

用戶還可以通過追蹤異常的變化情況來發(fā)現(xiàn)特征工程方面的改進(jìn)空間。

模型訓(xùn)練

模型訓(xùn)練這部分沒有太多值得一提的,主要就是在用tensorflow做訓(xùn)練。值得一提的是模型的熱啟動(dòng)(warm start)問題。熱啟動(dòng)解決的是模型需要長時(shí)間訓(xùn)練才能收斂的問題,這個(gè)時(shí)候可以用一個(gè)已經(jīng)訓(xùn)練好的模型,從中選取一些共同的特征權(quán)重,作為模型的初始狀態(tài),這樣可以使得模型更快收斂,從而加快訓(xùn)練速度。為了使得這部分邏輯通用化,tfx將其進(jìn)行了抽象開發(fā),并進(jìn)行了開源(可能是開源在了tf里,這部分沒有驗(yàn)證)。

模型評估和驗(yàn)證

機(jī)器學(xué)習(xí)系統(tǒng)是個(gè)多組件復(fù)雜系統(tǒng),這使得 bug有很多地方可能發(fā)生,而這些bug很多時(shí)候都不會導(dǎo)致系統(tǒng)崩潰,而且人又難以發(fā)現(xiàn),所以需要對模型進(jìn)行評估和驗(yàn)證。

定義“好”模型

作者將好的模型定義為可以安全提供服務(wù)(safe to serve)并且具有預(yù)期的預(yù)測質(zhì)量(desired prediction quality)。其中安全提供服務(wù)指的是模型在服務(wù)時(shí)不會因?yàn)楦鞣N原因崩潰掉,例如占用太多資源或數(shù)據(jù)格式錯(cuò)誤。而預(yù)測質(zhì)量指的就是模型預(yù)測的準(zhǔn)確率,這與業(yè)務(wù)的效果息息相關(guān)。

驗(yàn)證的敏感度

模型驗(yàn)證面臨的一個(gè)挑戰(zhàn)在于確定驗(yàn)證的敏感度。如果過于敏感,數(shù)據(jù)稍有波動(dòng)就報(bào)警,會導(dǎo)致頻繁報(bào)警,最終人們會忽略報(bào)警;而如果過于不敏感,則會漏掉問題。作者的經(jīng)驗(yàn)是,模型一旦出問題一般會導(dǎo)致各種指標(biāo)的重大變化,所以敏感度可以設(shè)的粗一些。當(dāng)然這個(gè)比較業(yè)務(wù)相關(guān),還是要根據(jù)自己 的業(yè)務(wù)來決定。

分片驗(yàn)證

除了對模型做整體驗(yàn)證,有時(shí)可能還需要對數(shù)據(jù)的某個(gè)分片做驗(yàn)證。例如針對男性用戶的驗(yàn)證等等。這對于模型的針對性細(xì)致評估和優(yōu)化很有意義。

極客網(wǎng)企業(yè)會員

免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請進(jìn)一步核實(shí),并對任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。任何單位或個(gè)人認(rèn)為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書面權(quán)利通知或不實(shí)情況說明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。

2017-11-15
一分鐘整明白Tensorflow Extended
作者:張相於 本文介紹了基于tf搭建一套通用機(jī)器學(xué)習(xí)平臺的關(guān)鍵部分和大體流程,但沒有給出更詳細(xì)的介紹。 是KDD 2017 Applied Data Sc

長按掃碼 閱讀全文