前述 訓練時會有各種不同應用,而不同的應用中不會是所有數據都很好取得,以要談的圖像分類任務為例,要訓練一個動物分類器需要很多種類的動物,常見的貓咪和狗狗等等的很好蒐集,但如果是獅子、大象等等的相比貓狗而言非常難獲取。 如果這些難取得的動物類別只有少量數據,拿這些少量數據肯定無法讓分類器好的效果,此時需要有補充數據量的方法,藉此緩解資料量不足的問題。 Part 1 訓練資料量不足會帶來甚麼問題? 1、機器和人相似,對一個東西要學習足夠才有相當的能力做分類,因此資料量不足會帶來的最直接問題是模型缺乏訓練,分類效果不佳。 2、假如模型要訓練兩個類別,類別比為1000:1,當模型訓練這兩類後會發現後續對少數的類別分類效能較差,因為模型訓練時會不斷更新權重,而訓練時的損失函數或優化函數都偏向於多數類,等同多數類會將少數類蓋過。 如何緩解資料量不足帶來的問題? 1、第一個問題提到CNN可以有效訓練圖像並分類,因此這裡都用CNN來說明,在圖像分類中無非是要獲得更好的圖像辨識器,第一個解決方法就是「Data Augmentation」,藉由對原始圖像旋轉、裁切、增加噪點、白化等技術,將原本的圖片做了一些「變化」,就能獲得和原先圖像不同的資料。 圖片來源:https://chtseng.files.wordpress.com/2017/11/4674_hxh_mbr4kq.png 2、對圖像進行採樣,這裡介紹SMOTE,是一種採樣方式,透過對需平衡的樣本計算離其最近的數據,並利用自身和最近數據得到新增的數據點。此方法可以得到近似於自身的數據,但又不完全相同,和Data Augmentation生成的也不太相同。 3、抓取原始數據特徵並生成,前面都是利用原始數據本身來生成,但可以利用每個類別都有不同特徵的觀點出發,例如貓跟狗一定有不同特徵,就可以利用抓取特徵的方式來生成,VAE就是一個很好的方法,利用原始數據訓練編碼/解碼器,編碼器能抓取特徵,而解碼器就根據此特徵就能生成想要數量的資料。 Part 2 介紹了三種不同的方法,分別是Data Augmentation、SMOTE和VAE,整理三者的優缺點 Data Augmentation 優點: 透過對原始圖像做翻轉、裁切等等的簡單操作可以很快速的獲得資料量。 缺點: 經由圖像處理後的圖片有可能失去本身擁有的特性,例如模型訓練翻轉後的圖像後,變得無法分類原始圖像。 SMOTE 優點: 能夠生成跟自身較相近的圖像。 缺點: 需大量計算時間、假如周圍鄰居相隔較遠則無法有效生成相近數據。 VAE 優點: 抓取特徵後,透過VAE中的解碼器(生成器),能快速生成所需數量的數據,且一定包含原始圖像所擁有的特徵。 缺點: 假如原始數據量過少,會發生訓練編碼/解碼器時缺乏訓練,後果是編碼或解碼時不會是預想中的數據。 VAE、SMOTE參考程式碼:https://drive.google.com/drive/folders/1kfjZmKC53PjKB3yxyyPpOH0PiigVSWUY?usp=sharing