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