自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

數(shù)據(jù)科學(xué)家“恐怖故事”

大數(shù)據(jù) 數(shù)據(jù)分析
本文講的是作者Vincent Vanhoucke所經(jīng)歷的恐怖故事,完全真實(shí),這些小事故也決定了這位Google首席科學(xué)家的職業(yè)生涯。

[[253242]]

大數(shù)據(jù)文摘出品

編譯:張秋玥、蔣寶尚

文字語音轉(zhuǎn)換圈內(nèi)流傳這么一則真假未知的故事:一個研究者花了數(shù)月(甚至數(shù)年)調(diào)整他/她的語音生成模型,使其語音樣本聽起來效果非常好。最后他們發(fā)現(xiàn),他們從頭到尾都誤用同一語音文件進(jìn)行訓(xùn)練,最終模型只是完全符合該語音文件特征所以才擁有如此流暢的語音樣本輸出。這個故事到現(xiàn)在都讓人不寒而栗。

想象一下另一則恐怖故事:你是個小實(shí)習(xí)生,老板讓你搭建一個判斷識別“Yes”與“No”的語音識別分類器。你有這些音頻文件:yes1.wav,no1.wav,yes2.wav,no2.wav,yes3.wav等等。你建好了分類器,效果也很好。就在你要展示工作成果之前,你發(fā)現(xiàn)這個模型唯一在做的事情就是通過讀取文件名里的yes或者no來預(yù)測結(jié)果,壓根不會聽文件里面的音頻。你嚇傻了,大哭一場,準(zhǔn)備跑路。

這就是本文作者Vincent Vanhoucke所經(jīng)歷的恐怖故事,完全真實(shí),這些小事故也決定了這位Google首席科學(xué)家的職業(yè)生涯。

以下是他以第一人稱講述的更多小故事,讓我們看看能夠從中得到哪些經(jīng)驗(yàn):

那是我作為研究者的第一份工作。任務(wù)很明確,提供了大量數(shù)據(jù)以及優(yōu)秀的預(yù)測準(zhǔn)確度標(biāo)準(zhǔn)來評估模型效果。模型的基準(zhǔn)結(jié)果很強(qiáng),我最后甚至和一位客戶一起在生產(chǎn)實(shí)踐中部署了這個模型。

我有試圖根據(jù)我覺得很聰明很厲害的方法來改進(jìn)模型表現(xiàn)指標(biāo)——它沒有很完美但每一天都在進(jìn)步。我都能看到我腦子里慢慢形成的一篇優(yōu)秀學(xué)術(shù)論文啦。生活真美好。

這算是一項(xiàng)產(chǎn)業(yè)研究,所以在開始撰寫論文之前我還需要通過最后一項(xiàng)測試:使用真實(shí)顧客數(shù)據(jù)來評估模型,以便于快速在生產(chǎn)實(shí)踐中部署改進(jìn)方案。在真實(shí)數(shù)據(jù)集上我的模型達(dá)成了零精確度成就。我可是一直在提高我覺得超級厲害的表現(xiàn)指標(biāo)來著。

數(shù)據(jù)科學(xué)家“恐怖故事”

八成是出了bug,要不就是真實(shí)顧客數(shù)據(jù)質(zhì)量很糟糕——我腦子這么想著,覺得沒多大關(guān)系就急著開始上手寫論文了。但實(shí)際上我又并沒有辦法完全放下這個糟糕結(jié)果,所以我就開始研究到底是怎么回事。我最后發(fā)現(xiàn)的是全世界數(shù)據(jù)科學(xué)家共同的噩夢:準(zhǔn)確度就是零,這一點(diǎn)毫無疑問。我其他所有的準(zhǔn)確度數(shù)據(jù)都是所謂的“幽靈”數(shù)字。我簡直不敢信:這些數(shù)字看起來超可信啊,它們比基準(zhǔn)高但并沒有高到不可能的地步。

人們常說,災(zāi)難一般不會“成單”出現(xiàn),而是在有兩件事一起出錯時,因?yàn)槲覀兛傮w來說很擅長預(yù)判并改正單個失誤。為了完全了解到底是什么樣幾乎不可能發(fā)生的系列事件導(dǎo)致了這些看似可信的精確度數(shù)字的出現(xiàn),我必須得從細(xì)節(jié)開始分析。

模型目標(biāo)是改善用來識別人名的語法數(shù)據(jù)結(jié)構(gòu)。比如說,假如你叫“Robert Moore”,語音識別系統(tǒng)可能將會把你的名字編譯成為一個語音圖,大致看起來像是某種正則表達(dá)式:“/(ˈɹɑb.əɹt|ˈbob|ˈɹɑb) mʊɹ/”——它還兼容類似于“Rob”或“Bob”的昵稱呢。我的任務(wù)是生成更好的語音圖。我的數(shù)據(jù)被存儲為鍵值對數(shù)據(jù)庫的形式:

  1. record { 
  2. key (string): “robert_moore” 
  3. value (Grammar): /(ˈɹɑb.əɹt|ˈbob|ˈɹɑb)mʊɹ/ 

這里有一個bug:有些我的語法數(shù)據(jù)結(jié)構(gòu)里用到的語音符號并不會被發(fā)音引擎識別。系統(tǒng)嘗試把語法數(shù)據(jù)結(jié)構(gòu)編譯為一個應(yīng)當(dāng)代表正則表達(dá)式的圖像對象,但它失敗了。在層層代碼的深處,有人曾嘗試將系統(tǒng)變得對于這些失敗更加穩(wěn)?。寒吘梗灰赡?,你永遠(yuǎn)不希望系統(tǒng)在生產(chǎn)實(shí)踐中突然垮掉嘛。那段代碼看起來類似于這樣:

  1. Graph* graph = compile(record->value); 
  2. if (!graph) { // Failed to compile. 
  3. graph = compile(record->key); // (什么鬼???) 

這可真的讓我大吃一驚措手不及:怎么會有人覺得只要一條數(shù)據(jù)庫記錄損壞了就代表這條記錄的鍵包含真正的負(fù)載?而且這怎么可能可行嘛?“值”就是一條序列化的型語法,“鍵”就只是一串字符而已。再深挖一點(diǎn)——看,更“穩(wěn)健”的在這里:

  1. Grammar* grammar = parse(record); 
  2. if (!grammar) { // Failed to parse. 
  3. grammar = parse(pronounce(record)); // (啥???) 

如果數(shù)據(jù)不是我們預(yù)想的類型,我們就會盡量提取那條記錄的內(nèi)容為單詞進(jìn)行發(fā)音。為什么不呢,反正已經(jīng)毫無希望了嘛。而且,發(fā)音生成是一項(xiàng)非常耗時耗計算力的操作。想象一下,不管出于什么原因,一大串沒有任何意義的垃圾字符(包括對于拒絕服務(wù)的報復(fù)性操作)突然被輸入到系統(tǒng)里,這對于系統(tǒng)意味著什么。系統(tǒng)將會立刻過載,而非“逐漸失敗”。

你可能已經(jīng)意識到接下來要發(fā)生什么了。我的數(shù)據(jù)的鍵都是用戶的真名,比如“robert_moore”。發(fā)音引擎很容易就將其近似于“/ˈɹɑb.əɹt mʊɹ/.”。所以,我的數(shù)據(jù)的問題直接來自于決定模型評估標(biāo)準(zhǔn)的事實(shí)。

理論上來說這就與我在前文提到的根據(jù)文件名預(yù)測音頻是yes還是no一個道理。我沒預(yù)料到的是,發(fā)音模型的隨機(jī)試驗(yàn)看起來確實(shí)改善了結(jié)果。然而,那其實(shí)只是取決于每次實(shí)驗(yàn)中未編譯成功的數(shù)據(jù)比例而已。我的模型失敗次數(shù)越多,生成的錯誤就更多,真實(shí)鍵值使用的更多,我的模型精確度就越好。至于解鎖零精確度成就的真實(shí)數(shù)據(jù)?那個數(shù)據(jù)庫里的鍵都是亂七八糟的字符串,看起來類似于“h4a7n6ks2l”這種發(fā)音模型?

我還算是幸運(yùn)的。我對符號檢索問題進(jìn)行的修復(fù)確實(shí)提高了效果,新系統(tǒng)確實(shí)得到了改進(jìn)。數(shù)周的實(shí)驗(yàn)最后都是竹籃打水一場空,我還得跟同事解釋我這個模型差點(diǎn)就上線運(yùn)行害了所有客戶,以及為啥我越傷害這個模型線下精確度就越高。必須得說一句,他們最后只是大笑了一場這事兒就過去了,還是很客氣的。

下面是我學(xué)到的經(jīng)驗(yàn)教訓(xùn):

第一,不要相信任何人、任何事情。

誰都想抓住你的把柄,尤其是數(shù)據(jù)科學(xué)界。大多數(shù)問題會將預(yù)測結(jié)果變得看起來糟糕很多,但有時結(jié)果看起來還是足夠好且真實(shí)讓人無法起疑心。實(shí)際上在語言建模領(lǐng)域,這是一個超級常見的問題。計算以及比較困惑度階段超多陷阱,極小的錯誤都時常能夠提高實(shí)驗(yàn)數(shù)字(而非降低!)。因此,這個領(lǐng)域的人對于證明的要求都很高;基于這個原因,我建議在將模型推廣之前你最好多在開源評估工具上試驗(yàn)試驗(yàn)。

第二,更不要相信你自己。

在我整個學(xué)術(shù)生涯中,我很快就學(xué)到了我需要過分質(zhì)疑任何我得到的結(jié)果,盡管我本性并非如此。我現(xiàn)在會為了模型結(jié)果持續(xù)尋求外部意見,最好是使用一個完全不同的代碼庫。

第三,寫簡單的防衛(wèi)代碼

不要自作聰明。你的代碼應(yīng)該跟你本人一樣偏執(zhí),就算是合同里最小的細(xì)節(jié)有一點(diǎn)不符,你的模型都該立刻引人注目地垮掉。每個程序員都肯定經(jīng)歷過這樣的事:閱讀堆棧跟蹤到一段標(biāo)注為“這就永遠(yuǎn)不該發(fā)生”的代碼。大量數(shù)據(jù)被寫入磁盤,甚至位翻轉(zhuǎn)這種事情都時有發(fā)生。我以前有過一個生產(chǎn)系統(tǒng),因?yàn)閄ML分析錯誤就直接崩潰了。磁盤上配置文件(程序自動生成的)看起來就像這樣:

  1. <item/> 
  2. <item/> 
  3. …類似的一百萬行… 
  4. <item/> 
  5. <itel/> 
  6. <item/> 
  7. <item/> 
  8. …再省略一百萬行… 
  9. <item/> 

看到哪里不同了嘛?我都等不及下一次日冕物質(zhì)拋射活動來讓我們都變成更厲害的程序員啦(譯者注:這個作者只是在這里發(fā)泄怨氣…)。

第四,不要相信你的代碼,更不要相信你自己的數(shù)據(jù)處理能力。

想讓你的數(shù)據(jù)出錯,方法超多的。即使你只有1%的數(shù)據(jù)出錯,你的A/B測試結(jié)果可能也完全不對。比如,有些著名網(wǎng)絡(luò)數(shù)據(jù)集里的某些圖片就是無法被某些圖像解析器讀取。如果你使用另一個解析器,或者你將這些圖片計入分母,最后的結(jié)果都會與別人不同。很長一段時間內(nèi),我都在評估結(jié)果內(nèi)重復(fù)計入了某些測試圖像,因此得到了壓根不正確卻看似很可信的數(shù)字結(jié)果。

第五,盡量故意擾亂你的實(shí)驗(yàn)。

把標(biāo)簽打亂,計算概率層面精確度。在1%的數(shù)據(jù)上進(jìn)行訓(xùn)練,確保你過度擬合。更好的方法是:把你的模型交給別人,讓他們自己上手使用。每個實(shí)驗(yàn)室都有這么一個永遠(yuǎn)能第一時間掛掉你完美代碼的人。盯住他們就對啦!

這種對結(jié)果的有益的懷疑論可能是我在博士與非博士之間發(fā)現(xiàn)的品質(zhì)上的最大區(qū)別。我們博士都經(jīng)受過這樣的打擊?;叵肫饋恚液苄疫\(yùn)能夠以這么一種尷尬又沒有很不合適的方式在職業(yè)生涯早期收到驚訝,以確保我永遠(yuǎn)都小心翼翼地進(jìn)行研究。必須說不幸的是,數(shù)據(jù)科學(xué)界從來沒有“幸福小事故”這種事情(西方公眾名人Bob Ross名言:世上沒有“錯誤”一說,它們只是“幸福小事故”)。

相關(guān)報道:https://medium.com/s/story/no-happy-little-accidents-8663540763f8

【本文是51CTO專欄機(jī)構(gòu)大數(shù)據(jù)文摘的原創(chuàng)譯文,微信公眾號“大數(shù)據(jù)文摘( id: BigDataDigest)”】

     大數(shù)據(jù)文摘二維碼

戳這里,看該作者更多好文

責(zé)任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2019-12-04 15:02:22

數(shù)據(jù)科學(xué)家故事數(shù)據(jù)分析

2017-08-04 15:53:10

大數(shù)據(jù)真?zhèn)螖?shù)據(jù)科學(xué)家

2012-12-06 15:36:55

CIO

2012-12-26 10:51:20

數(shù)據(jù)科學(xué)家

2021-03-29 13:38:41

數(shù)據(jù)科學(xué)機(jī)器學(xué)習(xí)技術(shù)

2018-10-16 14:37:34

數(shù)據(jù)科學(xué)家數(shù)據(jù)分析數(shù)據(jù)科學(xué)

2012-06-12 09:33:59

2018-02-28 15:03:03

數(shù)據(jù)科學(xué)家數(shù)據(jù)分析職業(yè)

2016-08-02 17:00:12

Hadoop大數(shù)據(jù)系統(tǒng)

2020-03-20 14:40:48

數(shù)據(jù)科學(xué)Python學(xué)習(xí)

2020-04-09 15:32:20

數(shù)據(jù)科學(xué)AutoML代智能

2016-04-11 14:15:06

數(shù)據(jù)科學(xué)數(shù)據(jù)挖掘工具

2022-04-25 09:48:31

數(shù)據(jù)科學(xué)崗位離職

2015-08-25 13:20:29

數(shù)據(jù)科學(xué)

2015-08-28 09:22:07

數(shù)據(jù)科學(xué)

2018-08-20 19:24:40

數(shù)據(jù)科學(xué)數(shù)據(jù)清理數(shù)據(jù)分析

2022-11-03 14:13:24

騰訊科學(xué)家

2012-12-27 09:52:23

數(shù)據(jù)科學(xué)家大數(shù)據(jù)

2014-07-03 09:38:19

2019-08-26 09:47:56

數(shù)據(jù)科學(xué)家數(shù)據(jù)分析
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號