雷鋒網 AI科技評論按:深度學習大牛吳恩達曾經說過:做AI研究就像造宇宙飛船,除了充足的燃料之外,強勁的引擎也是必不可少的。假如燃料不足,則飛船就無法進入預定軌道。而引擎不夠強勁,飛船甚至不能升空。類比於AI,深度學習模型就好像引擎,海量的訓練數據就好像燃料,這兩者對於AI而言同樣缺一不可。
在深度學習中,當數據量不大時可能會導致過擬合,使得訓練誤差很小,但測試誤差卻特別大。怎麽辦呢,你又沒錢買數據?顯然最好的辦法(之一,其他方法請參看“ 當數據量不夠大的時候 ”)就是自己“造”數據——人工增加訓練集的大小,也就是Data Augmentation Transformation。
不同的任務背景下,通常我們可以通過圖像的幾何變換,使用例如 剪切 、 旋轉/反射/翻轉變換 、 縮放變換 、 平移變換 、 尺度變換 、 對比度變換 、 噪聲擾動 、 顏色變換 等一種或多種組合數據增強變換的方式來增加數據集的大小。例如假如你的數據集只有10張256*256的圖片,那麽通過剪切你可以在每張圖片上得到32*32=1024張224*224的圖片,然後再做一次水平翻轉,那麽你的數據集就擴大了2048倍,也就是說你現在有了一個20480張圖片的數據集。看起來很誘人。那麽它的效果如何呢?
(雷鋒網註: 幾何變換不改變像素值, 而是改變像素所在的位置. 通過Data Augmentation方法擴張了數據集的範圍, 作為輸入時, 以期待網絡學習到更多的圖像不變性特征。)
近期加拿大多倫多大學的Salehinejad等人在論文( arXiv:1708.04347v1 )中提出了另外一種不同於上面幾種的數據增強變換—— 極坐標變換 ,方法極為簡單,完全可以作為數據增強變換一個案例來介紹。
所謂極坐標變換,就是像素由原來(x, y)的表示通過極坐標變換得到(r, θ)的表示,然後把它表示成一個二維圖片。數學知識只涉及這兩個高中的數學公式:
用圖來表示就是:
例如在一張256*256的圖片上,選擇圓心任意、半徑為256且等分為256條像素輻條(角度變化為2*pi/256)的圓盤來覆蓋圖片,那麽覆蓋到像素都將對應一個(r, θ)對,放到二維直角坐標系中就生成了一幅新圖。由於極坐標在靠近圓心位置像素粒度較大,而遠離圓心位置的像素粒度較小,所以改變圓心位置,將得到不同的圖片。
作者選擇了兩個數據集來進行試驗。其中一個是MNIST數據集,共10個類,每個類分別為0-9的手寫體數字。(RT為極坐標變換後的對應圖片)
另一個是多模醫學影像數據集(Multimodal medical dataset),作者共選了9個類。
在實驗中作者每個類只有20張圖片。也即在數據增強變換之前(original)MNIST-OR數據集有200張圖片,MMD-OR有180張圖片。作者通過極坐標變換把數據增大了100倍,MNIST-RT有20000張圖片,MMD-RT有18000張圖片。
隨後作者分別選用AlexNet和GoogleNet兩個深度學習模型對以上四個數據集進行訓練,其結果則非常喜人。
對比有四:
1、在數據量較小時,AlexNet的表現要比GoogLeNet好;
2、通過數據增強變換後的數據集能夠更迅速地收斂,且精度較高;
3、通過數據增強變換後的數據集收斂時漲落較小。
4、對比MNIST數據和多模醫學影像數據集,MNIST的兩個數據集(OR和RT)精度之間的差別更明顯。這可能是因為多模醫學影像數據集的圖像之間有關聯,例如橫向腹部磁共振成像和矢狀面腹部磁共振成像之間有一定的關聯性。
很明顯嘍,極坐標變換的數據增強變換方式也是很有效的。所以吧,沒錢買數據了,不妨試試各種數據增強的變換方法,也可以將各種變換組合使用,那你的數據量將成n次方地增加。
雷鋒網 (公眾號:雷鋒網) 註——
以上內容參考了這些文章:
1、 Training Neural Networks with Very Little Data -- A Draft
2、 深度學習中的Data Augmentation方法
3、 深度學習中的Data Augmentation方法和代碼實現
4、 數據不夠怎麽訓練深度學習模型?不妨試試遷移學習
5、 當數據量不夠大的時候,有什麽方法可以提高CNN訓練效果?
雷鋒網原創文章,未經授權禁止轉載。詳情見 轉載須知 。
Tags: 數據 變換 學習 深度 燃料 加拿大多倫多大學
文章來源: