日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

AutoML - 数据增广

發布時間:2025/3/19 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AutoML - 数据增广 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

打開百度App,看更多圖片

DeepAugment是一個專注于數據擴充的自動化工具。 它利用貝葉斯優化來發現針對您的圖像數據集定制的數據增強策略。 DeepAugment的主要優點和特點是:

降低CNN模型的錯誤率(WRN-28-10顯示CIFAR10的錯誤率降低了60%)通過自動化流程可以節省時間比谷歌之前的解決方案——AutoAugment——快50倍完成的包在PyPI上。你可以通過運行以下命令來在終端上安裝它:

你也可以訪問項目的自述文件或運行谷歌Colab筆記本教程。要想了解更多關于我是如何構建這個的,請繼續閱讀!

引言

數據是人工智能應用中最關鍵的部分。沒有足夠的標記數據常常導致過度擬合,這意味著模型將無法歸納為未發現的示例。這可以通過數據擴充來緩解,數據擴充可以有效地增加網絡所看到的數據的數量和多樣性。它是通過對原始數據集(如旋轉、裁剪、遮擋等)應用轉換,人為地生成新數據來實現的。然而,確定哪種增強對手頭的數據集最有效并不是一項簡單的任務。為了解決這個問題,谷歌去年發布了AutoAugment,它通過使用強化學習發現了給定數據集的優化增強。

由于強化學習模塊的存在,使用谷歌的AutoAugment需要強大的計算資源。由于獲得所需的計算能力代價高昂,因此我開發了一種新的方法——DeepAugment,它使用貝葉斯優化而不是強化學習。

如何獲得更好的數據

努力改進數據質量通常比努力改進模型獲得更高的投資回報。改進數據有三種主要方法:收集更多的數據、合成新數據或擴展現有數據。收集額外的數據并不總是可行的,而且可能很昂貴。GANs所做的數據合成是很有前途的,但也很復雜,可能與實際的例子有所不同。

另一方面,數據擴充簡單且影響很大。它適用于大多數數據集,并通過簡單的圖像轉換完成。然而,問題是確定哪種增強技術最適合當前的數據集。發現正確的方法需要耗時的實驗。即使經過多次實驗,機器學習(ML)工程師仍然可能找不到最佳選擇。

對于每個圖像數據集,有效的增強策略是不同的,一些增強技術甚至可能對模型有害。例如,如果使用MNIST digits數據集,應用旋轉會使模型變得更糟,因為在“6”上180度旋轉會使它看起來像“9”,而仍然被標記為“6”。另一方面,對衛星圖像應用旋轉可以顯著改善結果,因為無論旋轉多少次,從空中拍攝的汽車圖像仍然是一輛汽車。

DeepAugment:閃電般迅速的autoML

DeepAugment旨在作為一種快速靈活的autoML數據擴充解決方案。更具體地說,它被設計為AutoAugment的更快和更靈活的替代品。(2018年Cubuk等人的博客)AutoAugment是2018年最令人興奮的發布之一,也是第一種使用強化學習來解決這一特定問題的方法。在本文發表時,AutoAugment的開源版本沒有提供控制器模塊,這阻礙了用戶為自己的數據集使用它。此外,學習增強策略需要15,000次迭代,這需要巨大的計算資源。即使源代碼完全可用,大多數人也無法從中受益。

deepaugmented通過以下設計目標來解決這些問題:

在保證結果質量的前提下,最小化數據擴充優化的計算復雜度。模塊化和人性化。為了實現第一個目標,與AutoAugment相比,DeepAugment的設計具有以下差異:使用貝葉斯優化代替強化學習(需要更少的迭代)(~100x加速)最小化子模型大小(降低每次訓練的計算復雜度)(~20x加速)減少隨機擴充搜索空間設計(減少所需的迭代次數)為了實現第二個目標,即使DeepAugment模塊化和人性化,用戶界面的設計方式為用戶提供了廣泛的可能性配置和模型選擇(例如,選擇子模型或輸入自設計的子模型,請參閱配置選項)。

設計擴充策略

DeepAugment旨在為給定的圖像數據集找到最佳的擴充策略。增強策略被定義為五個子策略的總和,這兩個子策略由兩種類型的增強技術和兩個實值[0,1]組成,決定了每種增強技術的應用能力。我使用imgaug包實現了增強技術,imgaug包以其大量的增強技術(見下文)而聞名。

當多樣化和隨機應用時,增強是最有效的。例如,與其旋轉每個圖像,不如旋轉圖像的某些部分,剪切另一部分,然后對另一部分應用顏色反轉。基于這一觀察,Deepaugment對圖像隨機應用五個子策略之一(包括兩個增強)。優化過程中,每個圖像被五個子策略之一增強的概率(16%)相等,而完全不被增強的概率為20%。雖然這個策略設計受到了autoaugmented的啟發,但有一個主要的區別:我沒有使用任何參數來應用子策略的概率,以便使策略的隨機性更低,并允許在更少的迭代中進行優化。

這個策略設計為貝葉斯優化器創建了一個20維的搜索空間,其中10個維度是分類(增強技術的類型),其他10個維度是實值(大小)。由于涉及到分類值,我將貝葉斯優化器配置為使用隨機森林估計器。

DeepAugment如何找到最佳策略

DeepAugment的三個主要組件是控制器(貝葉斯優化器),增強器和子模型,整個工作流程如下:控制器采樣新的增強策略,增強器按新策略轉換圖像,子模型是通過增強圖像從頭開始訓練。

根據子模型的訓練歷史計算獎勵。獎勵返回給控制器,控制器使用此獎勵和相關的增強策略更新代理模型(請參閱下面的“貝葉斯優化如何工作”一節)。然后控制器再次采樣新策略,并重復相同的步驟。此過程循環,直到達到用戶確定的最大迭代次數。

控制器(貝葉斯優化器)是使用scikit- optimization庫的ask-and-tell方法實現的。它被配置為使用一個隨機森林估計器作為其基本估計器,并期望改進作為其獲取函數。

DeepAugment的基本工作流程

貝葉斯優化是如何工作的

貝葉斯優化的目的是找到一組最大化目標函數值的參數。 貝葉斯優化的工作循環可以概括為:1.建立目標函數的代理模型2.查找代理上執行得最好的參數3.使用這些參數執行目標函數4.使用這些參數和目標函數的得分更新代理模型5.重復步驟2-4,直到達到最大迭代次數

有關貝葉斯優化的更多信息,請閱讀高級的這篇解釋的博客,或者看一下這篇綜述文章。

貝葉斯優化的二維描述,其中x和y軸表示增強類型,點(i,j)處的顏色表示用增強i和j所增強的數據進行訓練時CNN模型的精度。

貝葉斯優化的權衡

目前用于超參數優化的標準方法有隨機搜索、網格搜索、貝葉斯優化、進化算法和強化學習,按方法復雜度排序。在超參數優化的精度、成本和計算時間方面,貝葉斯優化優于網格搜索和隨機搜索(參見這里的經驗比較)。這是因為貝葉斯優化從先前參數的運行中學習,與網格搜索和隨機搜索相反。

當貝葉斯優化與強化學習和進化算法進行比較時,它提供了具有競爭力的準確性,同時需要更少的迭代。例如,為了學習好的策略,谷歌的AutoAugment迭代15,000次(這意味著訓練子CNN模型15,000次)。另一方面,貝葉斯優化在100-300次迭代中學習良好的策略。貝葉斯優化的經驗法則是使迭代次數等于優化參數的次數乘以10。

超參數優化方法的直觀比較。通過比較類別,加號(+)的數量表示該方法有多好。

挑戰及對策

挑戰1:優化增強需要大量的計算資源,因為子模型應該從頭開始反復訓練。大大減慢了我的工具的開發過程。 盡管使用貝葉斯優化使其更快,但優化過程仍然不夠快,無法使開發變得可行。

對策:我開發了兩種解決方案。首先,我優化了子CNN模型(見下圖),這是該過程的計算瓶頸。其次,我以更確定的方式設計了增強策略,使貝葉斯優化器需要更少的迭代。

設計子CNN模型。它在AWS p3.2x大型實例(帶有112 TensorFLOPS的Tesla V100 GPU)上以32x32圖像在約30秒(120個周期)的時間內完成培訓。

挑戰2:我在DeepAugment的開發過程中遇到了一個有趣的問題。在通過一遍又一遍地訓練子模型來優化增強期間,它們開始過度擬合驗證集。當我更改驗證集時,我發現的最佳策略表現不佳。這是一個有趣的例子,因為它不同于一般意義上的過度擬合,即模型權重過度擬合數據中的噪聲。

對策:我沒有使用相同的驗證集,而是將剩余的數據和訓練數據保留為“種子驗證集”,并在每次子CNN模型訓練時對1000個圖像的驗證集進行采樣(參見下面的數據管道)。這解決了增強過度擬合問題。

如何集成到ML pipeline中

DeepAugment發布在PyPI上。你可以通過運行以下命令來在終端安裝它:

并且使用方便:

通過配置DeepAugment,可以獲得更高級的用法:

有關更詳細的安裝/使用信息,請訪問項目的自述文件或運行Google Colab筆記本教程。

結論

據我們所知,DeepAugment是第一種利用貝葉斯優化來尋找最佳數據增強的方法。 數據增強的優化是最近的一個研究領域,AutoAugment是解決這一問題的首批方法之一。

Deepaugment對開源社區的主要貢獻在于它使進程具有可擴展性,允許用戶在不需要大量計算資源的情況下優化擴充策略*。它是非常模塊化的,比以前的解決方案AutoAugment快50倍以上。

WideResNet-28-10 CNN模型與CIFAR10圖像在被Deepaugment發現的策略增強和不增強時的驗證精度比較驗證精度提高8.5%,相當于減少了60%的誤差。

結果表明,使用CIFAR-10小圖像數據集的WideResNet-28-10模型與不使用增強的模型和數據集相比,Deepaugment可以減少60%的誤差。

Deepaugment目前只優化圖像分類任務的增強。它可以擴展到優化對象檢測或分割任務,如果你愿意,我歡迎你的貢獻。但是,我認為最好的增強策略非常依賴于數據集的類型,而不是任務(例如分類或對象檢測)。這意味著無論任務是什么,AutoAugment都應該找到類似的策略,但如果這些策略最終變得非常不同,那將是非常有趣的!

雖然DeepAugment目前適用于圖像數據集,但將其擴展到文本、音頻或視頻數據集將非常有趣。同樣的概念也適用于其他類型的數據集。

*使用AWS P3.X2Large實例,DeepAugment在CIFAR-10數據集上花費4.2小時(500次迭代),成本約為13美元。

?

總結

以上是生活随笔為你收集整理的AutoML - 数据增广的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。