0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

從生產(chǎn)層面強(qiáng)調(diào)了深度學(xué)習(xí)項(xiàng)目開發(fā)中需要更加重視數(shù)據(jù)集的構(gòu)建

jmiy_worldofai ? 來(lái)源:未知 ? 作者:李倩 ? 2018-11-02 10:41 ? 次閱讀

深度學(xué)習(xí)的研究和生產(chǎn)之間存在較大差異,在學(xué)術(shù)研究中,人們一般更重視模型架構(gòu)的設(shè)計(jì),并使用較小規(guī)模的數(shù)據(jù)集。本文從生產(chǎn)層面強(qiáng)調(diào)了深度學(xué)習(xí)項(xiàng)目開發(fā)中需要更加重視數(shù)據(jù)集的構(gòu)建,并以作者本人的親身開發(fā)經(jīng)驗(yàn)為例子,分享了幾個(gè)簡(jiǎn)單實(shí)用的建議,涉及了數(shù)據(jù)集特性、遷移學(xué)習(xí)、指標(biāo)以及可視化分析等層面。無(wú)論是對(duì)于研究者還是開發(fā)者,這些建議都有一定的參考價(jià)值。

本文還得到了 Andrej Karpathy 的轉(zhuǎn)發(fā):

作者簡(jiǎn)介:Pete Warden 是 Jetpac Inc 的 CTO,著有《The Public Data Handbook》和《The Big Data Glossary》兩本 O'Reilly 出版的書,并參與建立了多個(gè)開源項(xiàng)目,例如 OpenHeatMap 和 Data Science Toolkit 等。

圖片來(lái)源:Lisha Li

Andrej Karpathy 在 Train AI(https://www.figure-eight.com/train-ai/)進(jìn)行演講時(shí)展示了這張幻燈片,我非常喜歡它!它完美地展現(xiàn)了深度學(xué)習(xí)的研究與實(shí)際的生產(chǎn)之間的差異。學(xué)術(shù)論文大多僅僅使用公開數(shù)據(jù)中的一小部分作為數(shù)據(jù)集而關(guān)注創(chuàng)造和改進(jìn)模型。然而據(jù)我所知,當(dāng)人們開始在實(shí)際的應(yīng)用中使用機(jī)器學(xué)習(xí)時(shí),對(duì)于訓(xùn)練數(shù)據(jù)的擔(dān)憂占據(jù)了他們的大部分時(shí)間。

有很多很好的理由可以用來(lái)解釋為什么研究人員如此關(guān)注于模型的架構(gòu),但這也確實(shí)意味著,對(duì)那些專注于將機(jī)器學(xué)習(xí)應(yīng)用于生產(chǎn)環(huán)境中的人員來(lái)說(shuō),他們可以獲取到的相關(guān)資源是很少的。為了解決這個(gè)問題,我在會(huì)議上進(jìn)行了關(guān)于「the unreasonable effectiveness of training data」的演講,而在這篇博客中,我想進(jìn)一步闡述為什么數(shù)據(jù)如此重要以及改進(jìn)它的一些實(shí)用技巧。

作為我工作的一部分,我與很多研究人員還有產(chǎn)品團(tuán)隊(duì)之間進(jìn)行了密切的合作。我看到當(dāng)他們專注于模型構(gòu)建這一角度時(shí)可以獲得很好的效果,而這也讓我篤信于改進(jìn)數(shù)據(jù)的威力。將深度學(xué)習(xí)應(yīng)用到大多數(shù)應(yīng)用中的最大障礙是如何在現(xiàn)實(shí)世界中獲得足夠高的準(zhǔn)確率,而據(jù)我所知,提高準(zhǔn)確度的最快途徑就是改進(jìn)訓(xùn)練集。即使你在其他限制(如延遲或存儲(chǔ)空間)上遇到了阻礙,在特定的模型上提高準(zhǔn)確率也可以幫助你通過使用規(guī)模較小的架構(gòu)來(lái)對(duì)這些性能指標(biāo)做出權(quán)衡。

語(yǔ)音數(shù)據(jù)集

我無(wú)法將我對(duì)于生產(chǎn)性系統(tǒng)的大部分觀察分享給大家,但我有一個(gè)開源的例子可以用來(lái)闡釋相同的模式。去年,我為 TensorFlow 創(chuàng)建了一個(gè)簡(jiǎn)單的語(yǔ)音識(shí)別示例(https://www.tensorflow.org/tutorials/audio_recognition),結(jié)果表明在現(xiàn)有的數(shù)據(jù)集中,沒有哪一個(gè)是可以很容易地被用作訓(xùn)練數(shù)據(jù)的。多虧了由 AIY 團(tuán)隊(duì)幫助我開發(fā)的開放式語(yǔ)音記錄站點(diǎn)(https://aiyprojects.withgoogle.com/open_speech_recording)我才得以在很多志愿者的慷慨幫助下,收集到了 6 萬(wàn)個(gè)記錄了人們說(shuō)短單詞的一秒鐘音頻片段。在這一數(shù)據(jù)訓(xùn)練下的模型雖然可以使用,但仍然沒有達(dá)到我想要的準(zhǔn)確度。為了了解我設(shè)計(jì)模型時(shí)可能存在的局限性,我用相同的數(shù)據(jù)集發(fā)起了一個(gè) Kaggle 比賽(https://www.kaggle.com/c/tensorflow-speech-recognition-challenge/)。參賽者的表現(xiàn)比我的簡(jiǎn)單模型要好得多,但即使有很多不同的方法,多個(gè)團(tuán)隊(duì)的精確度最終都僅僅達(dá)到了 91%左右。對(duì)我而言,這意味著數(shù)據(jù)本身存在著根本性的問題,而實(shí)際上參賽者們也的確發(fā)現(xiàn)了很多問題,比如不正確的標(biāo)簽或被截?cái)噙^的音頻。這些都激勵(lì)著我去解決他們發(fā)現(xiàn)的問題并且增加這個(gè)數(shù)據(jù)集的樣本數(shù)量。

我查看了錯(cuò)誤度量標(biāo)準(zhǔn),以了解模型最常遇到的問題,結(jié)果發(fā)現(xiàn)「其他」類別(當(dāng)語(yǔ)音被識(shí)別出來(lái),但這些單詞不在模型有限的詞匯表內(nèi)時(shí))更容易發(fā)生錯(cuò)誤。為了解決這個(gè)問題,我增加了我們捕獲的不同單詞的數(shù)量,以提供更加多樣的訓(xùn)練數(shù)據(jù)。

由于 Kaggle 參賽者報(bào)告了標(biāo)簽錯(cuò)誤,我通過眾包的形式增加了一個(gè)額外的驗(yàn)證過程:要求人們傾聽每個(gè)片段并確保其與預(yù)期標(biāo)簽相符。由于 Kaggle 競(jìng)賽中還發(fā)現(xiàn)了一些幾乎無(wú)聲或被截?cái)嗟奈募?,我還編寫了一個(gè)實(shí)用的程序來(lái)進(jìn)行一些簡(jiǎn)單的音頻分析(https://github.com/petewarden/extract_loudest_section),并自動(dòng)清除特別糟糕的樣本。最后,盡管刪除了錯(cuò)誤的文件,但由于更多志愿者和一些付費(fèi)的眾包服務(wù)人員的努力,我們最終獲得了超過 10 萬(wàn)的發(fā)言樣本。

為了幫助他人使用數(shù)據(jù)集(并從我的錯(cuò)誤中吸取教訓(xùn)?。┪覍⑺邢嚓P(guān)內(nèi)容以及最新的結(jié)果寫入了一篇 arXiv 論文(https://arxiv.org/abs/1804.03209)。其中最重要的結(jié)論是,在不改變模型或測(cè)試數(shù)據(jù)的情況下,(通過改進(jìn)數(shù)據(jù))我們可以將 top-1 準(zhǔn)確率從 85.4% 提高到 89.7%。這是一個(gè)巨大的提升(超過了 4%),并且當(dāng)人們?cè)诎沧炕?a target="_blank">樹莓派的樣例程序中使用該模型時(shí),獲得了更好的效果。盡管目前我使用的遠(yuǎn)非最優(yōu)的模型,但我確信如果我將這些時(shí)間花費(fèi)在調(diào)整模型上,我將無(wú)法獲得這樣的性能提升。

在生產(chǎn)的配置過程中,我多次見證了上述這樣的性能提升。當(dāng)你想要做同樣的事情的時(shí)候,可能很難知道應(yīng)該從哪里開始。你可以從我處理語(yǔ)音數(shù)據(jù)的技巧中得到一些靈感,但在接下來(lái)的內(nèi)容中,我將為你介紹一些我認(rèn)為有用的具體的方法。

首先,觀察你的數(shù)據(jù)

這看起來(lái)顯而易見,但你首先最應(yīng)該做的是隨機(jī)瀏覽你將要使用的訓(xùn)練數(shù)據(jù)。將一些文件復(fù)制到本地計(jì)算機(jī)上,然后花幾個(gè)小時(shí)來(lái)預(yù)覽它們。如果您正在處理圖片,使用類似于 MacOS 的取景器的功能滾動(dòng)瀏覽縮略圖,將可以讓你快速地瀏覽數(shù)千個(gè)圖片。對(duì)于音頻,你可以使用取景器播放預(yù)覽,或者將文本隨機(jī)片段轉(zhuǎn)儲(chǔ)到終端。正因?yàn)槲覜]有花費(fèi)足夠的時(shí)間來(lái)對(duì)第一版語(yǔ)音命令進(jìn)行上述處理,Kaggle 參賽者們才會(huì)在開始處理數(shù)據(jù)時(shí)發(fā)現(xiàn)了很多問題。

我總是覺得這個(gè)過程有點(diǎn)愚蠢,但我從未后悔過。每當(dāng)我完成這些工作時(shí),我都可以發(fā)現(xiàn)一些對(duì)數(shù)據(jù)來(lái)說(shuō)非常重要的事情,比如不同類別之間樣本數(shù)量的失衡、數(shù)據(jù)亂碼(例如擴(kuò)展名標(biāo)識(shí)為 JPG 的 PNG 文件)、錯(cuò)誤的標(biāo)簽,或者僅僅是令人驚訝的組合。Tom White 在對(duì) ImageNet 的檢查中獲得了許多驚人的發(fā)現(xiàn),比如:標(biāo)簽「太陽(yáng)鏡」,實(shí)際上是指一種古老的用來(lái)放大陽(yáng)光的設(shè)備。Andrej 對(duì) ImageNet 進(jìn)行手動(dòng)分類的工作(http://karpathy.github.io/2014/09/02/what-i-learned-from-competing-against-a-convnet-on-imagenet/)同樣教會(huì)了我很多與這個(gè)數(shù)據(jù)集相關(guān)的知識(shí),包括如何分辨所有不同的犬種,甚至是人。

你將要采取的行動(dòng)取決于你的發(fā)現(xiàn),但是在你做任何其他數(shù)據(jù)清理工作之前,你都應(yīng)該先進(jìn)行這種檢查,因?yàn)閷?duì)數(shù)據(jù)集內(nèi)容的直觀了解有助于你在其余步驟中做出更好的決定。

快速地選擇一個(gè)模型

不要在選擇模型上花費(fèi)太多時(shí)間。如果你正在進(jìn)行圖像分類任務(wù),請(qǐng)查看 AutoML,或查看 TensorFlow 的模型存儲(chǔ)庫(kù)(https://github.com/tensorflow/models/)或 Fast.AI 收集的樣例(http://www.fast.ai/)來(lái)找到你產(chǎn)品中面對(duì)的類似問題的模型。重要的是盡可能快地開始迭代,這樣你就可以盡早且經(jīng)常性地讓實(shí)際用戶來(lái)試用你的模型。你隨時(shí)都可以上線改進(jìn)的模型,并且可能會(huì)看到更好的結(jié)果,但你必須首先對(duì)數(shù)據(jù)進(jìn)行合適的處理。深度學(xué)習(xí)仍然遵循「輸入決定輸出」的基本計(jì)算規(guī)律,所以即使是最好的模型也會(huì)受到訓(xùn)練集中數(shù)據(jù)缺陷的限制。通過選擇模型并對(duì)其進(jìn)行測(cè)試,你將能夠理解這些缺陷從而開始改進(jìn)數(shù)據(jù)。

為了進(jìn)一步加快模型的迭代速度,你可以嘗試從一個(gè)已經(jīng)在大型現(xiàn)有數(shù)據(jù)集上預(yù)訓(xùn)練過的模型開始,使用遷移學(xué)習(xí)來(lái)利用你收集到的(可能小得多的)一組數(shù)據(jù)對(duì)它進(jìn)行微調(diào)。這通常比僅在較小的數(shù)據(jù)集上進(jìn)行訓(xùn)練的結(jié)果要好得多,而且速度更快,這樣一來(lái)你就可以快速地了解到應(yīng)該如何調(diào)整數(shù)據(jù)收集策略。最重要的是,你可以根據(jù)結(jié)果中的反饋調(diào)整數(shù)據(jù)收集(和處理)流程,以便適應(yīng)你的學(xué)習(xí)策略,而不是僅僅在訓(xùn)練之前將數(shù)據(jù)收集作為單獨(dú)的階段進(jìn)行。

在做到之前先假裝做到(人工標(biāo)注數(shù)據(jù))

建立研究和生產(chǎn)模型最大的不同之處在于,研究通常在開始時(shí)就有了明確的問題定義,而實(shí)際應(yīng)用的需求潛藏在用戶的頭腦中,并且只能隨著時(shí)間的推移而逐漸獲知。例如,對(duì)于 Jetpac,我們希望找到好的照片并展示在城市的自動(dòng)旅行指南中。剛開始我們要求評(píng)分者給他們認(rèn)為好的照片打上標(biāo)簽,但我們最終卻得到了很多張笑臉,因?yàn)檫@就是他們對(duì)這個(gè)問題的理解。我們將這些內(nèi)容放入產(chǎn)品的展示模型中,來(lái)測(cè)試用戶的反應(yīng),結(jié)果發(fā)現(xiàn)這并沒有給他們留下什么深刻的印象。為了解決這個(gè)問題,我們將問題修改為「這張照片是否讓你想要前往它所展示的地方?」。這很大程度上提高了我們結(jié)果的質(zhì)量,然而事實(shí)表明,來(lái)自東南亞的工作人員,更傾向于認(rèn)為充滿了在大型酒店中穿西裝的人和酒杯的會(huì)議照片看起來(lái)令人驚嘆。這種不匹配是對(duì)我們生活的泡沫的一個(gè)提醒,但它同時(shí)也是一個(gè)實(shí)際問題,因?yàn)槲覀儺a(chǎn)品的目標(biāo)受眾是美國(guó)人,他們看到會(huì)議照片會(huì)感到壓抑和沮喪。最終,我們六個(gè) Jetpac 團(tuán)隊(duì)的成員自己為超過 200 萬(wàn)張照片進(jìn)行了評(píng)分,因?yàn)槲覀儽热魏慰梢员挥?xùn)練去做這件事的人都更清楚標(biāo)準(zhǔn)。

這是一個(gè)極端的例子,但它表明標(biāo)注過程在很大程度上依賴于應(yīng)用程序的要求。對(duì)于大多數(shù)生產(chǎn)用例來(lái)說(shuō),找出模型正確問題的正確答案需要花費(fèi)很長(zhǎng)的一段時(shí)間,而這對(duì)于正確地解決問題至關(guān)重要。如果你正在試圖讓模型回答錯(cuò)誤的問題,那么將永遠(yuǎn)無(wú)法在這個(gè)不可靠的基礎(chǔ)上建立可靠的用戶體驗(yàn)。

圖片來(lái)自 Thomas Hawk

我發(fā)現(xiàn)能夠判斷你所問的問題是否正確的唯一方法是對(duì)你的應(yīng)用程序進(jìn)行模擬,而不是使用有人參與迭代的機(jī)器學(xué)習(xí)模型。因?yàn)樵诒澈笥腥祟惖膮⑴c,這種方法有時(shí)被稱為「Wizard-of-Oz-ing」。在 Jetpac 的案例中,我們讓人們?yōu)橐恍┞眯兄改蠘永謩?dòng)選擇照片,而不是訓(xùn)練一個(gè)通過測(cè)試用戶的反饋來(lái)調(diào)整挑選圖片的標(biāo)準(zhǔn)的模型。一旦我們可以很可靠地從測(cè)試中獲得正面反饋,我們接下來(lái)就可以將我們?cè)O(shè)計(jì)的照片選擇規(guī)則轉(zhuǎn)化為標(biāo)注指導(dǎo)手冊(cè),以便用這樣的方法獲得數(shù)百萬(wàn)個(gè)圖像用作訓(xùn)練集。然后,我們使用這些數(shù)據(jù)訓(xùn)練出了能夠預(yù)測(cè)數(shù)十億張照片質(zhì)量的模型,但它的 DNA 來(lái)自我們?cè)O(shè)計(jì)的原始的人工規(guī)則。

在真實(shí)數(shù)據(jù)上進(jìn)行訓(xùn)練

在 Jetpac 案例中,我們用于訓(xùn)練模型的圖像和我們希望應(yīng)用模型的圖像來(lái)源相同(主要是 Facebook 和 Instagram),但是我發(fā)現(xiàn)的一個(gè)常見問題是,訓(xùn)練數(shù)據(jù)集與模型最終輸入數(shù)據(jù)的一些關(guān)鍵差異最終會(huì)體現(xiàn)在生產(chǎn)中。例如,我經(jīng)常會(huì)看到基于 ImageNet 訓(xùn)練的模型在被嘗試應(yīng)用到無(wú)人機(jī)機(jī)器人中時(shí)會(huì)遇到問題。這是因?yàn)?ImageNet 大多為人們拍攝的照片,而這些照片存在著很多共性,比如:用手機(jī)或照相機(jī)拍攝,使用中性鏡頭,大致在頭部高度,在白天或人造光線下拍攝,標(biāo)記的物體居中并位于前景中等等。而機(jī)器人和無(wú)人機(jī)使用視頻攝像機(jī),通常配有高視野鏡頭,拍攝位置要么是在地面上要么是在高空中,同時(shí)缺乏光照條件,并且由于沒有對(duì)于物體輪廓的智能判定,通常只能進(jìn)行裁剪。這些差異意味著,如果你只是在 ImageNet 上訓(xùn)練模型并將其部署到某一臺(tái)設(shè)備上,那么將無(wú)法獲得較好的準(zhǔn)確率。

訓(xùn)練數(shù)據(jù)和最終模型輸入數(shù)據(jù)的差異還可能體現(xiàn)在很多細(xì)微的地方。想象一下,你正在使用世界各地的動(dòng)物數(shù)據(jù)集來(lái)訓(xùn)練一個(gè)識(shí)別野生動(dòng)物的相機(jī)。如果你只打算將它部署在婆羅洲的叢林中,那么企鵝標(biāo)簽被選中的概率會(huì)特別低。如果訓(xùn)練數(shù)據(jù)中包含有南極的照片,那么模型將會(huì)有很大的機(jī)會(huì)將其他動(dòng)物誤認(rèn)為是企鵝,因而模型整體的準(zhǔn)確率會(huì)遠(yuǎn)比你不使用這部分訓(xùn)練數(shù)據(jù)時(shí)低。

有許多方法可以根據(jù)已知的先驗(yàn)知識(shí)(例如,在叢林環(huán)境中大幅度降低企鵝的概率)來(lái)校準(zhǔn)結(jié)果,但使用能夠反映產(chǎn)品真實(shí)場(chǎng)景的訓(xùn)練集會(huì)更加方便和有效。我發(fā)現(xiàn)最好的方法是始終使用從實(shí)際應(yīng)用程序中直接捕獲到的數(shù)據(jù),這與我上面提到的「Wizard of Oz」方法之間存在很好的聯(lián)系。這樣一來(lái),在訓(xùn)練過程中使用人來(lái)進(jìn)行反饋的部分可以被數(shù)據(jù)的預(yù)先標(biāo)注所替代,即使收集到的標(biāo)簽數(shù)量非常少,它們也可以反映真實(shí)的使用情況,并且也基本足夠被用于進(jìn)行遷移學(xué)習(xí)的一些初始實(shí)驗(yàn)了。

混淆矩陣

當(dāng)我研究語(yǔ)音指令的例子時(shí),我看到的最常見的報(bào)告之一是訓(xùn)練期間的混淆矩陣。這是一個(gè)顯示在控制臺(tái)中的例子:

[[258 0 0 0 0 0 0 0 0 0 0 0] [ 7 6 26 94 7 49 1 15 40 2 0 11] [ 10 1 107 80 13 22 0 13 10 1 0 4] [ 1 3 16 163 6 48 0 5 10 1 0 17] [ 15 1 17 114 55 13 0 9 22 5 0 9] [ 1 1 6 97 3 87 1 12 46 0 0 10] [ 8 6 86 84 13 24 1 9 9 1 0 6] [ 9 3 32 112 9 26 1 36 19 0 0 9] [ 8 2 12 94 9 52 0 6 72 0 0 2] [ 16 1 39 74 29 42 0 6 37 9 0 3] [ 15 6 17 71 50 37 0 6 32 2 1 9] [ 11 1 6 151 5 42 0 8 16 0 0 20]]

這可能看起來(lái)很嚇人,但它實(shí)際上只是一個(gè)表格,顯示網(wǎng)絡(luò)出錯(cuò)的詳細(xì)信息。這里有一個(gè)更加美觀的帶標(biāo)簽版本:

表中的每一行代表一組與真實(shí)標(biāo)簽相同的樣本,每列顯示標(biāo)簽預(yù)測(cè)結(jié)果的數(shù)量。例如,高亮顯示的行表示所有無(wú)聲的音頻樣本,如果你從左至右閱讀,則可以發(fā)現(xiàn)標(biāo)簽預(yù)測(cè)的結(jié)果是正確的,因?yàn)槊總€(gè)標(biāo)簽都落在」Silence」一欄中。這表明,該模型可以很好地識(shí)無(wú)聲的音頻片段,不存在任何一個(gè)誤判的情況。從列的角度來(lái)看,第一列顯示有多少音頻片段被預(yù)測(cè)為無(wú)聲,我們可以看到一些實(shí)際上是單詞的音頻片段被誤認(rèn)為是無(wú)聲的,這其中有很多誤判。這些知識(shí)對(duì)我來(lái)說(shuō)非常有用,因?yàn)樗屛腋幼屑?xì)地觀察那些被誤認(rèn)為是無(wú)聲的音頻片段,而這些片段事實(shí)上并不總是安靜的。這幫助我通過刪除音量較低的音頻片段來(lái)提高數(shù)據(jù)的質(zhì)量,而如果沒有混淆矩陣的線索,我將無(wú)從下手。

幾乎所有對(duì)結(jié)果的總結(jié)都可能是有用的,但是我發(fā)現(xiàn)混淆矩陣是一個(gè)很好的折衷方案,它提供的信息比單個(gè)的準(zhǔn)確率更多,同時(shí)也不會(huì)涵蓋太多我無(wú)法處理的細(xì)節(jié)。在訓(xùn)練過程中觀察數(shù)字變化也很有用,因?yàn)樗梢愿嬖V你模型正在努力學(xué)習(xí)什么類別,并可以讓你在清理和擴(kuò)充數(shù)據(jù)集時(shí)專注于某些方面。

可視化模型

可視化聚類是我最喜歡的用來(lái)理解我的網(wǎng)絡(luò)如何解讀訓(xùn)練數(shù)據(jù)的方式之一。TensorBoard 為這種探索提供了很好的支持,盡管它經(jīng)常被用于查看詞嵌入,但我發(fā)現(xiàn)它幾乎適用于與任何嵌入有類似的工作方式的網(wǎng)絡(luò)層。例如,圖像分類網(wǎng)絡(luò)在最后的全連接或 softmax 單元之前通常具有的倒數(shù)第二層,可以被用作嵌入(這就是簡(jiǎn)單的遷移學(xué)習(xí)示例的工作原理,如 TensorFlow for Poets(https://codelabs.developers.google.com/codelabs/tensorflow-for-poets/#0))。嚴(yán)格意義上來(lái)說(shuō),這些并不是嵌入,因?yàn)槲覀儾]有在訓(xùn)練過程中努力確保在真正的嵌入具有希望的空間屬性,但對(duì)它們的向量進(jìn)行聚類確實(shí)會(huì)產(chǎn)生一些有趣的結(jié)果。

舉例來(lái)說(shuō),之前一個(gè)同我合作過的團(tuán)隊(duì)對(duì)圖像分類模型中某些動(dòng)物的高錯(cuò)誤率感到困惑。他們使用聚類可視化來(lái)查看他們的訓(xùn)練數(shù)據(jù)是如何分布到各種類別的,當(dāng)他們看到「捷豹」時(shí),他們清楚地發(fā)現(xiàn)數(shù)據(jù)被分成兩個(gè)彼此之間存在一定間隔的不同的組。

圖片來(lái)源: djblock99 和 Dave Adams

他們所看到的的圖表如上所示。一旦我們將每個(gè)聚類的圖片展示出來(lái),結(jié)果就變得顯而易見:很多捷豹品牌車輛被錯(cuò)誤地標(biāo)記為捷豹(動(dòng)物)。一旦他們知道了這一問題,他們就能夠檢查標(biāo)注過程,并意識(shí)到工作人員的指導(dǎo)和用戶界面是令人困惑的。有了這些信息,他們就能夠改善標(biāo)注者的訓(xùn)練過程并修復(fù)工具中存在的問題,從而將所有汽車圖像從捷豹類別中刪除,進(jìn)而讓模型在該類別上獲得更好的效果。

通過深入了解訓(xùn)練集中的內(nèi)容,聚類提供了與僅僅觀察數(shù)據(jù)相同的好處,但網(wǎng)絡(luò)實(shí)際上是通過根據(jù)自己的學(xué)習(xí)理解將輸入分組來(lái)指導(dǎo)你的探索。作為人類,我們非常善于從視覺上發(fā)現(xiàn)異常情況,所以將我們的直覺和計(jì)算機(jī)處理大量輸入的能力相結(jié)合為追蹤數(shù)據(jù)集質(zhì)量問題提供了一個(gè)高可擴(kuò)展的解決方案。關(guān)于如何使用 TensorBoard 來(lái)完成這樣的工作的完整教程超出了本文的范圍,但如果你真的想要提高結(jié)果,我強(qiáng)烈建議你熟悉這個(gè)工具。

持續(xù)收集數(shù)據(jù)

我從來(lái)沒有見過收集了更多的數(shù)據(jù),但最終沒有提高模型準(zhǔn)確性的情況,事實(shí)證明,有很多研究都支持我的這一經(jīng)驗(yàn)。

該圖來(lái)自「重新審視數(shù)據(jù)的不合理的有效性(https://ai.googleblog.com/2017/07/revisiting-unreasonable-effectiveness.html)」,并展示了在訓(xùn)練集的規(guī)模增長(zhǎng)到數(shù)以億計(jì)的情況下圖像分類的模型準(zhǔn)確率如何持續(xù)增加。Facebook 最近進(jìn)行了更進(jìn)一步的探索,使用數(shù)十億有標(biāo)注 Instagram 圖像在 ImageNet 圖像分類任務(wù)上取得了最優(yōu)的準(zhǔn)確率(https://www.theverge.com/2018/5/2/17311808/facebook-instagram-ai-training-hashtag-images)。這表明,即使對(duì)于已有大型、高質(zhì)量數(shù)據(jù)集的任務(wù)來(lái)說(shuō),增加訓(xùn)練集的大小仍然可以提高模型效果。

這意味著,只要任何用戶可以從更高的模型準(zhǔn)確率中受益,你就需要一個(gè)可以持續(xù)改進(jìn)數(shù)據(jù)集的策略。如果可以的話,找到創(chuàng)造性的方法利用微弱的信號(hào)來(lái)獲取更大的數(shù)據(jù)集(是一個(gè)可以嘗試的方向)。Facebook 使用 Instagram 標(biāo)簽就是一個(gè)很好的例子。另一種方法是提高標(biāo)注過程的智能化程度,例如通過將模型的初始版本的標(biāo)簽預(yù)測(cè)結(jié)果提供給標(biāo)注人員,以便他們可以做出更快的決策。這種方法的風(fēng)險(xiǎn)是可能在標(biāo)注早期造成某種程度的偏見,但在實(shí)踐中,所獲得的好處往往超過這種風(fēng)險(xiǎn)。此外,通過聘請(qǐng)更多的人來(lái)標(biāo)記新的訓(xùn)練數(shù)據(jù)來(lái)解決這個(gè)問題,通常也是一項(xiàng)物有所值的投資,但是對(duì)這類支出沒有預(yù)算傳統(tǒng)的組織可能會(huì)遇到阻礙。如果你是非營(yíng)利性組織,讓你的支持者通過某種公共工具更方便地自愿提供數(shù)據(jù),這可能是在不增加開支的情況下增加數(shù)據(jù)集大小的可取方法。

當(dāng)然,對(duì)于任何組織來(lái)說(shuō),最優(yōu)的解決方案都是應(yīng)該有一種產(chǎn)品,它可以在使用時(shí)自然生成更多的有標(biāo)注數(shù)據(jù)。雖然我不會(huì)太在意這個(gè)想法,它在很多真實(shí)的場(chǎng)景中都不適用,因?yàn)槿藗冎皇窍氡M快得到答案,而不希望參與到復(fù)雜的標(biāo)注過程中來(lái)。而對(duì)于初創(chuàng)公司來(lái)說(shuō),這是一個(gè)很好的投資熱點(diǎn),因?yàn)樗拖袷且粋€(gè)改進(jìn)模型的永動(dòng)機(jī),當(dāng)然,在清理或增強(qiáng)數(shù)據(jù)時(shí)總是無(wú)法避免產(chǎn)生一些單位成本,所以經(jīng)濟(jì)學(xué)家最終經(jīng)常會(huì)選擇一種比真正免費(fèi)的方案看起來(lái)更加便宜一點(diǎn)的版本。

潛在的風(fēng)險(xiǎn)

幾乎所有的模型錯(cuò)誤對(duì)應(yīng)用程序用戶造成的影響都遠(yuǎn)大于損失函數(shù)可以捕獲的影響。你應(yīng)該提前考慮可能的最糟糕的結(jié)果,并嘗試設(shè)計(jì)模型的后盾以避免它們發(fā)生。這可能只是一個(gè)因?yàn)檎`報(bào)的成本太高而不想讓模型去預(yù)測(cè)的類別的黑名單,或者你可能有一套簡(jiǎn)單的算法規(guī)則,以確保所采取的行動(dòng)不會(huì)超過某些已經(jīng)設(shè)定好的邊界參數(shù)。例如,你可能會(huì)維持一個(gè)你不希望文本生成器輸出的臟話詞表,即便它們存在于訓(xùn)練集中。因?yàn)樗鼈儗?duì)于你的產(chǎn)品來(lái)說(shuō)是很不合適的。

究竟會(huì)發(fā)生什么樣的不好結(jié)果在事前總是不那么明顯的,所以從現(xiàn)實(shí)世界中的錯(cuò)誤中吸取教訓(xùn)至關(guān)重要。最簡(jiǎn)單的方法之一就是在一旦你有一個(gè)半成品的時(shí)候使用錯(cuò)誤報(bào)告。當(dāng)人們使用你的應(yīng)用程序時(shí),你需要讓他們可以很容易地報(bào)告不滿意的結(jié)果。要盡可能獲得模型的完整輸入,但當(dāng)它們是敏感數(shù)據(jù)時(shí),僅僅知道不良輸出是什么同樣有助于指導(dǎo)你的調(diào)查。這些類別可被用于選擇收集更多數(shù)據(jù)的來(lái)源,以及你應(yīng)該去了解其哪些類別的當(dāng)前標(biāo)簽質(zhì)量。一旦對(duì)模型進(jìn)行了新的調(diào)整,除了正常的測(cè)試集之外,還應(yīng)該對(duì)之前產(chǎn)生不良結(jié)果的輸入進(jìn)行單獨(dú)的測(cè)試??紤]到單個(gè)指標(biāo)永遠(yuǎn)無(wú)法完全捕捉到人們關(guān)心的所有內(nèi)容,這個(gè)錯(cuò)例圖片庫(kù)有點(diǎn)像回歸測(cè)試,并且為你提供了一種可以用來(lái)跟蹤你改進(jìn)用戶體驗(yàn)程度的方式。通過查看一小部分在過去引發(fā)強(qiáng)烈反應(yīng)的例子,你可以得到一些獨(dú)立的證據(jù)來(lái)表明你實(shí)際上正在為你的用戶提供更好的服務(wù)。如果因?yàn)檫^于敏感而無(wú)法獲取模型的輸入數(shù)據(jù),請(qǐng)使用內(nèi)部測(cè)試或內(nèi)部實(shí)驗(yàn)來(lái)確定哪些輸入可以產(chǎn)生這些錯(cuò)誤,然后替換回歸數(shù)據(jù)集中的那些輸入。

在這篇文章中,我希望設(shè)法說(shuō)服你在數(shù)據(jù)上花費(fèi)更多時(shí)間,并給你提供一些關(guān)于如何改進(jìn)它的想法。目前這個(gè)領(lǐng)域還沒有得到足夠的關(guān)注,我甚至覺得我在這里的建議是在拋磚引玉,所以我感謝每一個(gè)與我分享他們的策略的人,并且我希望未來(lái)我可以從更多的人那里了解到更多有成效的方法。我認(rèn)為會(huì)有越來(lái)越多的組織分配工程師團(tuán)隊(duì)專門用于數(shù)據(jù)集的改進(jìn),而不是讓機(jī)器學(xué)習(xí)研究人員來(lái)推動(dòng)這一方向的進(jìn)展。我期待看到整個(gè)領(lǐng)域能夠得益于在數(shù)據(jù)改進(jìn)上的工作。我總是為即使在訓(xùn)練數(shù)據(jù)存在嚴(yán)重缺陷的情況下模型也可以良好運(yùn)作而感到驚嘆,所以我迫不及待地想看到在改進(jìn)數(shù)據(jù)以后我們可以取得的效果!

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴

原文標(biāo)題:生產(chǎn)級(jí)深度學(xué)習(xí)的開發(fā)經(jīng)驗(yàn)分享:數(shù)據(jù)集的構(gòu)建和提升是關(guān)鍵

文章出處:【微信號(hào):worldofai,微信公眾號(hào):worldofai】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何使用tensorflow快速搭建起一個(gè)深度學(xué)習(xí)項(xiàng)目

    我們繼續(xù)以 NG 課題組提供的 sign 手勢(shì)數(shù)據(jù)為例,學(xué)習(xí)如何通過Tensorflow快速搭建起一個(gè)深度學(xué)習(xí)
    的頭像 發(fā)表于 10-25 08:57 ?7662次閱讀

    #硬聲創(chuàng)作季 #深度學(xué)習(xí) 深度學(xué)習(xí)基礎(chǔ)-1.2.1 數(shù)據(jù)及其拆分

    數(shù)據(jù)深度學(xué)習(xí)
    水管工
    發(fā)布于 :2022年10月27日 17:48:02

    計(jì)算機(jī)視覺/深度學(xué)習(xí)領(lǐng)域常用數(shù)據(jù)匯總

    `深度學(xué)習(xí)領(lǐng)域的“Hello World!”,入門必備!MNIST是一個(gè)手寫數(shù)字數(shù)據(jù)庫(kù),它有60000個(gè)訓(xùn)練樣本集和10000個(gè)測(cè)試樣本集,每個(gè)樣本圖像的寬高為28*28。此數(shù)據(jù)
    發(fā)表于 08-29 10:36

    深度學(xué)習(xí)開發(fā)和測(cè)試的定義

    (test set),并且使用這些數(shù)據(jù)構(gòu)建出了一個(gè)在訓(xùn)練和測(cè)試上均表現(xiàn)良好的貓咪檢測(cè)器??僧?dāng)你將這個(gè)分類器(classifier)部署
    發(fā)表于 11-30 16:58

    深度學(xué)習(xí)在汽車的應(yīng)用

    的“深度層面源于輸入層和輸出層之間實(shí)現(xiàn)的隱含層數(shù)目,隱含層利用數(shù)學(xué)方法處理(篩選/卷積)各層之間的數(shù)據(jù),從而得出最終結(jié)果。在視覺系統(tǒng),深度
    發(fā)表于 03-13 06:45

    淺談深度學(xué)習(xí)之TensorFlow

    使得實(shí)現(xiàn)復(fù)雜的 DNN 結(jié)構(gòu)成為可能,而不需要深入復(fù)雜的數(shù)學(xué)細(xì)節(jié),大數(shù)據(jù)的可用性為 DNN 提供了必要的數(shù)據(jù)來(lái)源。TensorFlow 成為最受歡迎的
    發(fā)表于 07-28 14:34

    labview+yolov4+tensorflow+openvion深度學(xué)習(xí)

    的網(wǎng)絡(luò)結(jié)構(gòu)。當(dāng)然,深度學(xué)習(xí)的方法用來(lái)檢測(cè),也有自己的很多缺點(diǎn)。例如:數(shù)據(jù)量要求大,工業(yè)數(shù)據(jù)收集成本高。但是隨著數(shù)據(jù)增強(qiáng)技術(shù),無(wú)監(jiān)督
    發(fā)表于 05-10 22:33

    討論紋理分析在圖像分類的重要性及其在深度學(xué)習(xí)中使用紋理分析

    地執(zhí)行基于紋理特征的分類任務(wù)。為了讓深度學(xué)習(xí)在基于紋理的數(shù)據(jù)上更好地工作,需要有一種方法,可以圖像中提取紋理特定的特征,并將其傳遞給全連接
    發(fā)表于 10-26 16:57

    深度學(xué)習(xí)介紹

    的“深度層面源于輸入層和輸出層之間實(shí)現(xiàn)的隱含層數(shù)目,隱含層利用數(shù)學(xué)方法處理(篩選/卷積)各層之間的數(shù)據(jù),從而得出最終結(jié)果。在視覺系統(tǒng),深度
    發(fā)表于 11-11 07:55

    什么是深度學(xué)習(xí)?使用FPGA進(jìn)行深度學(xué)習(xí)的好處?

    準(zhǔn)確的模型。有了上述機(jī)制,現(xiàn)在可以通過讓神經(jīng)網(wǎng)絡(luò)模型學(xué)習(xí)各種問題來(lái)自動(dòng)解決問題,創(chuàng)建高精度模型,并對(duì)新數(shù)據(jù)進(jìn)行推理。然而,由于單個(gè)神經(jīng)網(wǎng)絡(luò)只能解決簡(jiǎn)單的問題,人們嘗試通過構(gòu)建深度神經(jīng)網(wǎng)
    發(fā)表于 02-17 16:56

    關(guān)于如何從零開始構(gòu)建深度學(xué)習(xí)項(xiàng)目的詳細(xì)教程

    第一部分:?jiǎn)?dòng)一個(gè)深度學(xué)習(xí)項(xiàng)目 第二部分:創(chuàng)建一個(gè)深度學(xué)習(xí)數(shù)據(jù)
    的頭像 發(fā)表于 04-19 15:21 ?3851次閱讀

    深度學(xué)習(xí)數(shù)據(jù),哪里可以獲得這些數(shù)據(jù)?

    這是用于開發(fā)物體檢測(cè)算法的真實(shí)世界圖像數(shù)據(jù)。這些只需要最少的數(shù)據(jù)預(yù)處理。它與本列表中提到的MNIST數(shù)
    的頭像 發(fā)表于 04-27 16:28 ?1.2w次閱讀

    零基礎(chǔ)入行深度學(xué)習(xí)

    深度學(xué)習(xí)到底有多熱,這里我就不再強(qiáng)調(diào)了,也因此有很多人關(guān)心這樣的幾個(gè)問題,“適不適合轉(zhuǎn)行深度學(xué)習(xí)(機(jī)器學(xué)
    的頭像 發(fā)表于 10-19 14:07 ?2680次閱讀

    為什么學(xué)習(xí)深度學(xué)習(xí)需要使用PyTorch和TensorFlow框架

    如果你需要深度學(xué)習(xí)模型,那么 PyTorch 和 TensorFlow 都是不錯(cuò)的選擇。 并非每個(gè)回歸或分類問題都需要通過深度
    的頭像 發(fā)表于 09-14 10:57 ?3382次閱讀

    深度學(xué)習(xí)框架的作用是什么

    的任務(wù),需要使用深度學(xué)習(xí)框架。 深度學(xué)習(xí)框架是對(duì)深度學(xué)習(xí)
    的頭像 發(fā)表于 08-17 16:10 ?1482次閱讀