什么是數據增強?
如果有足夠的訓練數據,機器學習模型可以表現出色。不幸的是,對于許多應用程序來說,對高質量數據的訪問仍然是一個障礙。
解決這個問題的一個方法是“數據增強”,這是一種從現有的訓練樣本中生成新的訓練樣本的技術。數據增強是一種在數據約束環境下提高機器學習模型性能和準確性的低成本和有效的方法。
機器學習模型的“過度擬合”
當機器學習模型在有限的例子上進行訓練時,它們往往會“過度擬合”。當機器學習模型對其訓練示例執行準確,但不能推廣到未見數據時,就會發生“過度擬合”。
在機器學習中有幾種方法可以避免“過度擬合”,比如選擇不同的算法、修改模型的結構和調整參數。但最終,解決“過度擬合”的主要方法是向訓練數據集添加更多高質量數據。
例如,考慮卷積神經網絡(CNN),這是一種機器學習架構,特別適合于圖像分類任務。如果沒有大量多樣的訓練例子,CNN最終會在現實世界中對圖像進行錯誤分類。另一方面,如果CNN接受不同角度和不同光照條件下的物體圖像訓練,它在現實世界中識別物體的能力會變得更加強大。
然而,收集額外的培訓示例可能是昂貴的、耗時的,有時甚至是不可能的。這一挑戰在監督學習應用程序中變得更加困難,因為訓練示例必須由人類專家標記。
數據增加
增加訓練數據集多樣性的方法之一是創建現有數據的副本,并對其進行小的修改。這被稱為“數據增強”。
例如,假設在圖像分類數據集中有20張鴨子的圖像。通過創建鴨子圖像的副本并水平翻轉它們,您已經將“鴨子”類的訓練示例增加了一倍。您可以使用其他轉換,如旋轉、剪切、縮放和轉換。您還可以結合這些轉換來進一步擴展獨特的訓練示例集合。
數據擴充不需要局限于幾何操作。添加噪點、改變顏色設置和其他效果(如模糊和銳化濾鏡)也可以幫助將現有的訓練示例作為新的數據。
數據擴充的例子
數據增強對于監督學習特別有用,因為您已經有了標簽,不需要額外的工作來注釋新的示例。數據增強對于其他類型的機器學習算法也很有用,如無監督學習、對比學習和生成模型。
數據增強已經成為訓練計算機視覺應用的機器學習模型的標準實踐。流行的機器學習和深度學習編程庫具有易于使用的函數,可以將數據增強集成到機器學習訓練管道中。
數據增強不僅局限于圖像,還可以應用于其他類型的數據。對于文本數據集,可以用它們的同義詞替換名詞和動詞。在音頻數據中,可以通過添加噪聲或改變播放速度來修改訓練示例。
數據擴充的限制
數據增強并不是解決所有數據問題的靈丹妙藥。您可以將其視為機器學習模型的免費性能增強器。基于您的目標應用程序,您仍然需要具有足夠示例的相當大的訓練數據集。
在某些應用程序中,訓練數據可能太過有限,無法通過數據擴充來提供幫助。在這些情況下,必須收集更多的數據,直到達到最小閾值,才能使用數據增強。有時,您可以使用遷移學習,即您在一個通用數據集(例如ImageNet)上訓練機器學習模型,然后通過微調其針對目標應用程序的有限數據的更高層次來重新利用它。
數據增強也不能解決其他問題,比如訓練數據集中存在的偏差。數據擴充過程還需要進行調整,以解決其他潛在的問題,例如類不平衡。
如果使用得當,數據管理可以成為機器學習工程師工具箱中的一個強大工具。