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