如何為機器學(xué)習(xí)獲取有效數(shù)據(jù) 處理小數(shù)據(jù)的7個技巧值得一看
本文轉(zhuǎn)自雷鋒網(wǎng),如需轉(zhuǎn)載請至雷鋒網(wǎng)官網(wǎng)申請授權(quán)。
我們經(jīng)常會聽到,大數(shù)據(jù)是建立成功的機器學(xué)習(xí)項目的關(guān)鍵。
一個主要的問題是:許多組織沒有你需要的數(shù)據(jù)。
在沒有基本的、必要的、未經(jīng)處理數(shù)據(jù)的情況下,我們應(yīng)該如何為機器學(xué)習(xí)的概念建立原型并加以驗證呢?在資源匱乏的情況下,我們應(yīng)如何有效地獲取并用數(shù)據(jù)創(chuàng)造價值?
在我工作的地方,我們會為客戶建立許多函數(shù)原型。為此,小數(shù)據(jù)對我大有幫助。在這篇文章中我會分享7個小技巧,能幫助你在用小數(shù)據(jù)集建立原型時改善成果。
1. 意識到你的模型并不***
這是***要務(wù),你正在建立一個模型,這個模型的認(rèn)知只基于一個大集合中的一小部分,所以模型也只有在這一處或這一情況下才能夠如預(yù)期一般運行良好。
如果你正在根據(jù)一些選中的室內(nèi)照片建立一個計算機視覺模型,不要期待它也能很好地處理室外照片。如果你想要建立一個基于聊天室調(diào)侃的語言模型,不要期待它可以寫一部精彩的小說。
確保你的經(jīng)理或客戶也能這樣理解。這樣,所有人對你的模型能傳達(dá)的結(jié)果會達(dá)成一個統(tǒng)一且現(xiàn)實的期待。同時,也有助于提出新的KPI指標(biāo),以便在原型范圍內(nèi)外對模型性能進(jìn)行量化。
2. 建立良好的數(shù)據(jù)基礎(chǔ)設(shè)施
在許多情況下,客戶并沒有你所需要的數(shù)據(jù),公開數(shù)據(jù)也不足以成為一個代替選項。如果你的部分原型需要收集和標(biāo)記新數(shù)據(jù),要確保你的基礎(chǔ)設(shè)施在處理的同時產(chǎn)生的阻力越小越好。
你需要確保數(shù)據(jù)標(biāo)記足夠簡單以至非技術(shù)人員也能輕松理解。我們會用到Prodigy,我認(rèn)為這是一種易得且可擴展的好工具。根據(jù)項目的規(guī)模,你可能還想設(shè)立一個自動的數(shù)據(jù)攝取工具,它可以吸收新數(shù)據(jù)并自動將新數(shù)據(jù)傳輸給標(biāo)記系統(tǒng)。
你的系統(tǒng)獲取新數(shù)據(jù)越快捷簡單,你就能得到越多數(shù)據(jù)。
3. 增加數(shù)據(jù)
你可以通過增加已有的數(shù)據(jù)來拓展你的數(shù)據(jù)庫。比如可以對數(shù)據(jù)進(jìn)行輕微調(diào)整,但又不會顯著影響模型輸出結(jié)果。比如說一張貓的圖片旋轉(zhuǎn)了40度,仍然是貓的圖片。
在大部分案例中,增加技巧可以使你創(chuàng)造更多的“半***”數(shù)據(jù)點來訓(xùn)練你的模型。你可在開始時向數(shù)據(jù)中加入少量的高斯噪聲。
對于計算機視覺,有許多簡便的方法來增加你的圖像,我曾有良好的Albumentations 數(shù)據(jù)庫使用體驗,它可以在進(jìn)行許多有效的圖像轉(zhuǎn)化的同時,不使標(biāo)記受損。
初始,水平翻轉(zhuǎn),垂直翻轉(zhuǎn),調(diào)整比例和旋轉(zhuǎn)角度
另一種被大部分人認(rèn)為有效的增加技巧是混合。這種技巧即字面意義上的將兩張輸入的圖片放在一起讓它們混合,并且組合它們的標(biāo)簽。
初始圖片,混合,噪式混合,垂直連接
在增加其他類型的輸入數(shù)據(jù)時時,需要考慮格式的轉(zhuǎn)換是否會改變標(biāo)記。
4. 生成合成數(shù)據(jù)
如果你困于增加真實數(shù)據(jù)的方案選擇,你可以開始考慮創(chuàng)造一些偽造的數(shù)據(jù),生成合成數(shù)據(jù)是應(yīng)對極端案例的好方法,而你的真實數(shù)據(jù)庫無法應(yīng)對。
舉個例子,許多機器人技術(shù)的強化學(xué)習(xí)系統(tǒng)(比如OpenAI的Dactyl)在配置真實的機器人之前,會在模擬3D環(huán)境中進(jìn)行訓(xùn)練。對于圖像識別系統(tǒng),你可以類似地建立一個3d情景,它可以提供你上千種新數(shù)據(jù)點。
15個模擬的Dactyl訓(xùn)練實例
還有許多方法可用于創(chuàng)造合成數(shù)據(jù),在Kanda,我們開發(fā)了一種基于轉(zhuǎn)盤的解決方案用于創(chuàng)造目標(biāo)檢測用的數(shù)據(jù)。如果你有很大的數(shù)據(jù)需求,你可以考慮使用Generative Adverserial Networks 來創(chuàng)造合成數(shù)據(jù)。由于GANs是難以訓(xùn)練是廣為人知的,所以先要確認(rèn)這方案是值得嘗試的。
NVIDIAs GauGAN 實操
有時你可以結(jié)合多種方法:蘋果公司有一種非常聰明的方法,使用GAN來處理3D建模的臉部圖像使得其看起來更具照片所呈現(xiàn)的真實感。如果你有時間的話,這是一種不錯的拓展數(shù)據(jù)庫的方法。
5. 謹(jǐn)慎處理數(shù)據(jù)幸運分裂
訓(xùn)練機器學(xué)習(xí)模型時,數(shù)據(jù)集通常會根據(jù)一定的比率隨機地分成訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集。通常這沒有什么,但是在處理小數(shù)據(jù)集時,因為訓(xùn)練數(shù)據(jù)樣本的低容量會產(chǎn)生一個高水平的噪音風(fēng)險。
在這種情況下,你可能意外得到了一個數(shù)據(jù)幸運分裂。某種特定數(shù)據(jù)集分裂后,你的模型會正常運行,同時可以很好地歸納測試數(shù)據(jù)集。然而在現(xiàn)實中,這僅僅是因為測試數(shù)據(jù)集(巧合地)沒有包含難解的樣本。
在這個場景中,k折交叉驗證法是一個更好的選擇。基本來說,你可以將數(shù)據(jù)集分成K組,為每一組訓(xùn)練新模型,可選擇其中的一組用于測試,而將剩下的幾組全部用于訓(xùn)練。這可以保證你所看到的測試成果并不是簡單地因幸運(或不幸)分裂而產(chǎn)生的。
6. 使用遷移學(xué)習(xí)
如果你處理某種標(biāo)準(zhǔn)數(shù)據(jù)格式,比如文本、圖像、視頻或聲音,你可以利用其他人已經(jīng)這些領(lǐng)域所取得的遷移學(xué)習(xí)成果來協(xié)助以上工作以提升效率,就像是站在巨人的肩膀上。
當(dāng)你進(jìn)行遷移學(xué)習(xí)時,可以利用其他人已經(jīng)建好的模型。(通常,其他人指谷歌,臉書或者重點大學(xué))并且需要微調(diào)模型使其合適你的特殊需要。遷移學(xué)習(xí)有用是因為大多數(shù)任務(wù)所處理的語言、圖像或聲音享有許多共通的特征。以計算機視覺為例,遷移學(xué)習(xí)可以偵測特定種類的形狀,顏色或模式。
最近,我正為一位客戶建立目標(biāo)檢測原型,這對準(zhǔn)確性有較高要求。通過對MobileNet Single Shot Detector的微調(diào)和應(yīng)用,工作效率已經(jīng)很大程度的提升了,該遷移學(xué)習(xí)模型是通過谷歌的數(shù)據(jù)集訓(xùn)練得到的(含有900萬張已標(biāo)記的圖片)。在一天的訓(xùn)練后,我能提供一個相當(dāng)穩(wěn)健的目標(biāo)檢測模型,在一個采用1500張已標(biāo)記圖片的測試中,顯示0.85的mAP。
7. 嘗試弱學(xué)習(xí)者的組合
有時,你只需要面對一個現(xiàn)實,你就是沒有足夠的數(shù)據(jù)來搞胡里花哨的東西。幸運的是,你可以轉(zhuǎn)而求助許多傳統(tǒng)機器學(xué)習(xí)AI,它們對你的數(shù)據(jù)集規(guī)模并不敏感(不會因數(shù)據(jù)的低容量產(chǎn)生較大的測試偏差)。
當(dāng)數(shù)據(jù)集小,數(shù)據(jù)點維度高的時候的時候,像Support Vector Machine 這樣的AI是一個好的選擇。
遺憾的是,這些AI并不總是像先進(jìn)應(yīng)用方法一樣準(zhǔn)確。這就是為什么他們會稱之為弱學(xué)習(xí)者了,至少與高參數(shù)化神經(jīng)網(wǎng)絡(luò)相比。
改善這一情況的方法是,結(jié)合幾個弱學(xué)習(xí)者的成果。(這可以是Support Vector Machines和Decision Trees的數(shù)組,他們可以在一起工作,建立預(yù)測)。這就是聯(lián)合學(xué)習(xí)所指的內(nèi)容了。