當(dāng)大數(shù)據(jù)材料拿不到手小樣本數(shù)據(jù)怎么起作用?
大數(shù)據(jù)是打造成功機器學(xué)習(xí)項目的關(guān)鍵。在很多機構(gòu)沒有你想要的數(shù)據(jù)這一關(guān)鍵原材料的情況下,我們該如何將機器學(xué)習(xí)的想法制成原型,使其產(chǎn)生實效呢?我們又該如何用有限的數(shù)據(jù)來源,有效獲取和創(chuàng)造價值呢?功能性原型(functional prototype)是一種辦法。
因此,我們常常需要開發(fā)小樣本數(shù)據(jù)。本文將介紹7種提高小樣本數(shù)據(jù)原型化效果的方法。
1. 模型不可能廣泛適用
這是工作的首要前提。所建立的模型僅僅基于宇宙萬物中的極小一部分,只有在這種情境下,模型才能順利運行。
如果你利用一系列室內(nèi)照片建立了一個視覺原型,那么這一模型絕對無法適用于室外。如果你利用網(wǎng)絡(luò)聊天的玩笑話素材建立了一個語言模型,這一模型也絕對無法適用于一部奇幻小說。
必須保證你的上司和客戶都明白這一點。只有如此,所有人才能對模型效果抱有現(xiàn)實合理的預(yù)期。也只有這樣,才有可能產(chǎn)生更實用的關(guān)鍵績效指標(biāo)(KPI),來量化原型范圍之內(nèi)及范圍之外的模型運行效果。
2. 建立良好的數(shù)據(jù)基礎(chǔ)設(shè)施
很多情況下,客戶沒有你需要的數(shù)據(jù),同時你又不能調(diào)取公共數(shù)據(jù)。如果收集和標(biāo)注新的數(shù)據(jù)屬于制作原型的步驟之一,應(yīng)確保參與工作的數(shù)據(jù)基礎(chǔ)設(shè)施不會給你制造麻煩。
最好保證數(shù)據(jù)標(biāo)注簡單明了,以便非技術(shù)人員理解和實行。我們最近開始使用Prodigy,這一軟件非常好:不僅容易入門,而且功能可拓展。還可以根據(jù)不同項目的大小,利用Prodigy設(shè)立一個自動數(shù)據(jù)攝取系統(tǒng),讓它幫你將數(shù)據(jù)自動錄入標(biāo)注庫中。
如果錄入新數(shù)據(jù)簡單快捷,新的數(shù)據(jù)也將唾手可得。
3.警惕“幸運分組”
在訓(xùn)練機器學(xué)習(xí)模型時,人們往往會根據(jù)某些比例,隨機將數(shù)據(jù)集劃分為訓(xùn)練組和測試組。這通常是可行的,但是在處理小樣本數(shù)據(jù)時,由于訓(xùn)練樣本量較小,出現(xiàn)噪音的概率很大。
這種情況下,你很可能只是偶然碰到了一個“幸運分組”,即一個能讓模型在測試組中完美運行和歸納的特定數(shù)據(jù)集分組。但實際上,這很可能只是因為測試組的數(shù)據(jù)恰好沒有包含困難項。
在這種情況下用K-折交叉檢驗方法會是一個更好的選擇。它的運作原理大概是,把一個數(shù)據(jù)集分為K“份”,訓(xùn)練新模型時,每次使用其中的一份作為測試組,其余作為訓(xùn)練組使用。以上方法保證了模型在測試中的表現(xiàn)并不受制于一個幸運(或不幸)的分組。
4.應(yīng)用遷移學(xué)習(xí)
如果你正在處理一些較為程式化的數(shù)據(jù),比如文本、圖片、視頻、音頻等等,可以通過遷移學(xué)習(xí)利用所有前人在這一領(lǐng)域的成果,就好比站在巨人的肩膀上一樣。
在進行遷移學(xué)習(xí)時,你使用的是其他人建立過的模型(通常來講,此處的“其他人”指谷歌、臉書或是一些知名大學(xué)),并在此基礎(chǔ)上,做出調(diào)試以適應(yīng)特殊需求。
遷移學(xué)習(xí)之所以起作用,是因為大部分處理語言、圖片或是音頻的任務(wù)都具有共同特征,例如計算機視覺中對特定形狀類型和顏色模式的偵測。
通過精準(zhǔn)調(diào)試MobileNet SSD 檢測模型(MobileNet Single Shot Detector),得以顯著加快項目的進程。MobileNet SSD檢測模型是在谷歌的Open Images v4數(shù)據(jù)集(包含約900萬標(biāo)注圖片!)上訓(xùn)練的目標(biāo)檢測模型。只經(jīng)過了一天的模型訓(xùn)練,就已經(jīng)能建構(gòu)出一個相當(dāng)靈活的目標(biāo)檢測模型,其性能在0.85的mAP值下可以檢測約1500個標(biāo)注圖片。
5.嘗試組合多個“弱學(xué)習(xí)組”
有時候必須承認(rèn),你的數(shù)據(jù)根本不足以支持你做一些花哨復(fù)雜的工作。不過幸運的是,許多對于數(shù)據(jù)集樣本容量要求不高的傳統(tǒng)機器學(xué)習(xí)算法能幫到你。面對樣本容量少而數(shù)據(jù)維度大的數(shù)據(jù)集,像SupportVector Machine這樣的算法就是比較好的選擇。
不幸的是,這些算法可能沒有當(dāng)今前沿的數(shù)據(jù)分析方法精準(zhǔn)。這就是為什么人們稱它們?yōu)?ldquo;弱學(xué)習(xí)組”,至少相對于高參數(shù)化的神經(jīng)網(wǎng)絡(luò),這些算法是更弱的。
集成學(xué)習(xí)的主要內(nèi)容,提高性能的方法之一就是將多個這樣的“弱學(xué)習(xí)組”進行組合(可以是一批諸如Support VectorMachines或Decision Trees之類的程序),使得它們能夠“協(xié)同工作”,共同產(chǎn)生一個預(yù)測結(jié)果。
6.開展數(shù)據(jù)擴充工作
我們常常能通過擴充數(shù)據(jù)來拓展現(xiàn)有數(shù)據(jù)集。擴充數(shù)據(jù),就是在不影響整體的模型輸出結(jié)果的前提下,略微調(diào)整現(xiàn)有數(shù)據(jù)集。比如說,把一只貓的圖片旋轉(zhuǎn)40度,它仍然是同一個圖片。
大多數(shù)時候,擴充數(shù)據(jù)能讓你制造更多用來訓(xùn)練模型的“半獨立”的數(shù)據(jù)點。剛起步時可以嘗試在數(shù)據(jù)里加入小部分高斯噪聲(GaussianNoise)。
在計算機視覺領(lǐng)域里,許多方法可以用于放大圖片。Albumentations圖片數(shù)據(jù)增強庫的使用體驗較好,它能完成許多實用的圖片轉(zhuǎn)化任務(wù),且不會損害原圖的標(biāo)注。
另一個廣受好評的擴充技術(shù)是Mixup。這一技術(shù)的功能像它的名稱所說那樣,能夠合并輸入端的兩個圖片,并組合兩者的標(biāo)注。
擴充其他類別的數(shù)據(jù)時,應(yīng)適當(dāng)考慮怎樣的圖片轉(zhuǎn)換會改變標(biāo)注,怎樣的轉(zhuǎn)換不會改變標(biāo)注。
7.生成人造數(shù)據(jù)
如果你竭盡了數(shù)據(jù)擴充的所有可能,就可以考慮編造數(shù)據(jù)了。生成人造數(shù)據(jù),不失為一種補充實際數(shù)據(jù)集的邊界案例的有效方法。
舉一個例子,很多機器加強學(xué)習(xí)系統(tǒng)(比如OpenAI的Dactyl)常常先在3D模擬環(huán)境下訓(xùn)練,而后才在真正的機器人應(yīng)用。對圖像識別系統(tǒng)而言,同樣可以構(gòu)建不同的3D場景,它們足以提供數(shù)以千計的新數(shù)據(jù)點。
15個模擬的Dactyl并行訓(xùn)練實例
生成人造數(shù)據(jù)的方法很多。Kanda正致力于創(chuàng)造一個基于轉(zhuǎn)臺結(jié)構(gòu)的數(shù)據(jù)生成方案,用于目標(biāo)檢測。假如你有很高的數(shù)據(jù)需求,可以考慮用生成式對抗網(wǎng)絡(luò)(Generative AdversarialNetworks,又名生成對抗網(wǎng)絡(luò),簡稱GAN)生成人造數(shù)據(jù)。但要注意,GAN出了名的難以訓(xùn)練,所以在使用前,要確保項目值得運用GAN。
有時候可以組合多種方法:蘋果公司巧妙地利用GAN來加工3D人臉建模,使之看起來更像真實照片。只要有時間投入,這就是個延伸數(shù)據(jù)集的好方法。