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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

AutoML简要概述

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

前言

AutoML是指盡量不通過人來設定超參數,而是使用某種學習機制,來調節這些超參數。這些學習機制包括傳統的貝葉斯優化,多臂老虎機(multi-armed bandit),進化算法,還有比較新的強化學習。

我將AutoML分為傳統AutoML ,自動調節傳統的機器學習算法的參數,比如隨機森林,我們來調節它的max_depth, num_trees, criterion等參數。 還有一類AutoML,則專注深度學習。這類AutoML,不妨稱之為深度AutoML ,與傳統AutoML的差別是,現階段深度AutoML,會將神經網絡的超參數分為兩類,一類是與訓練有關的超參數,比如learning rate, regularization, momentum等;還有一類超參數,則可以總結為網絡結構。對網絡結構的超參數自動調節,也叫 Neural architecture search (nas) 。而針對訓練的超參數,也是傳統AutoML的自動調節,叫 Hyperparameter optimization (ho)

傳統AutoML

1. 貝葉斯優化

貝葉斯優化是一種近似逼近的方法,用各種代理函數來擬合超參數與模型評價之間的關系,然后選擇有希望的超參數組合進行迭代,最后得出效果最好的超參數組合。

算法流程

  • 初始化,隨機選擇若干組參數x,訓練模型,得到相應的模型評價指標y

  • 用代理函數來擬合x,y

  • 用采集函數來選擇最佳的x*

  • 將x*帶入模型,得到 新的y,然后進入第2步

  • 具體算法

    算法代理函數采集函數優缺點
    BO高斯過程Expected Improvement應用廣泛,在低維空間表現出色
    SMAC回歸隨機森林Upper Confidence Bound對離散型變量表現出色
    TPE高斯混合模型Expected Improvement高維空間表現出色,有論文表明最實用

    特點

    • 需要消耗大量資源及時間。由于需要至少幾十次迭代,即需要訓練幾十次的模型,因而會造成大量資源、時間消耗。基于這個特點,可以說貝葉斯優化算法適合傳統AutoML ,而不適合深度AutoML

    • 效果不穩定。由于初始化存在隨機性,其效果不穩定。也有論文表明,貝葉斯優化算法并不顯著優于隨機搜索(random search)

      ?

    2. Multi-armed Bandit

    multi-armed bandit是非常經典的序列決策模型,要解決的問題是平衡“探索”(exploration)和“利用”(exploitation)。

    舉一個bandit例子,你有20個按鈕,每個按鈕按一次可能得到一塊錢或者拿不到錢,同時每個按鈕的得到一塊錢的概率不同,而你在事前對這些概率一無所知。在你有1000次按按鈕的機會下,呼和得到最大收益。

    這類算法,通過將自動調參問題,轉化為bandit問題,配置更多資源給表現更優異的參數模型。

    具體算法

    Hyperband是一個頗具代表的算法。總體思路我們由一個自動調節LeNet的例子來展示:

    image

    R=81代表總資源,? 代表每次篩選的比例,ni代表參數配置的組合數,ri代表資源數,這里代表一個epoch,第一行代表隨機得到ni個參數配置,然后經過第ri次迭代之后,根據模型validation loss選擇出top k個表現好的模型,繼續下一行ri的訓練。

    特點

  • Bandit思想還是很重要的,是一類針對資源配置的算法,可以有效避免資源浪費在很差的參數配置上。

  • Bandit結合貝葉斯優化,就構成了傳統的AutoML的核心,比如伯克利的這篇paper,或者今年cmu的atm 。事實上,在華為,我也搞了這方面的專利,核心也是Bandit與貝葉斯優化。

  • Bandit同樣適合于深度AutoML中nas任務,但是對ho任務的應用,我是存疑的,比如學習率lr 一大一小兩組實驗,在前期極有可能是大lr那組的loss下降快,如果用bandit判斷這個lr優秀,而停止了另一組的實驗,很有可能造成錯誤。因為大的學習率,在前期可能確實會加快收斂,但是一段時間后,可能就會震蕩了,最后的收斂精度可能就很低。

  • 深度AutoML

    1. 進化算法

    一般的進化算法其實大同小異,差別在如何選擇變異,有比較細的變異,比如在Large-Scale Evolution of Image Classifiers 這篇文章中,就定義了非常具體的變異,比如有改變通道數量,改變filter大小,改變stride等等;而在Simple And Efficient Architecture Search for Convolutional Neural Networks這篇論文中,它的變異,就借鑒了現有公認的比較好的結構,加深網絡就用conv-bn-relu3件套,加寬網絡加大通道數量,增加skip connection。

    這些進化算法在做自動模型選擇時,每次迭代都不可避免的需要在整個數據集上跑若干個epoch,而每次迭代都有許多個變異,又需要很多次迭代,導致最后的訓練時間太久。

    fine-tune基礎上的進化

    Simple And Efficient Architecture Search for Convolutional Neural Networks 這篇論文提出,我們先用一個成熟的模型去訓練(也可以fine-tune訓練),然后在這個模型的基礎上去變異,變異之后用fine-tune訓練幾個epoch即可。這帶來兩個好的結果:

  • fine tune減少了大量的訓練時間

  • 我們最后拿出來的模型,至少不比成熟模型差

  • 個人認為,這篇論文很有實際意義

    2. 強化學習

    強化學習在nas和ho兩方面都有應用。

    強化學習-自動網絡結構搜索

    Learning Transferable Architectures for Scalable Image Recognition

    用RNN作為controller,產生網絡結構,然后根據收斂精度調節rnn。

    將整個網絡分為兩種cell,Normal cellReduction cell,每個cell有B個block組成,而一個cell由rnn生成的過程如圖所示:

    image

  • 選擇一個hidden layer A

  • 選擇一個hidden layer B

  • 為A選擇一個op

  • 為B選擇一個op

  • 選擇一個結合op

  • 重復1-5步驟B次,生成一個cell

  • 該方法現在cifar10上尋找到兩種cell的結構,然后遷移到imagenet上。

    值得注意的是,該方法雖然效果驚人,但是人為的提前設定非常多:

  • 每個cell有B個block組成,B是人為設定的值,這里被設為了5;

  • cell的數量及cell的排序順序都是提前訂好的;

  • 因此在這個網絡結構的搜索中,模型的探索空間有限,同時它在cifar10上進行訓練,因此相對于最早的用強化學習來做automl的方法,已經加速了許多。但是還是不夠快,針對速度問題,有一篇paper:enas。

    ENAS 在上述方法的基礎上,采用參數共享的方式,避免每次新產生的模型重頭訓練的問題,因此大大加速了訓練時間,使得gpu耗時降低到了一天之內(cifar10數據集),可謂效果驚人!

    強化學習-優化器

    Neural Optimizer Search with Reinforcement Learning

    用RNN作為optimizer的controller,產生optimizer,然后用小的cnn模型訓練5個epoch,得到的val_acc作為reward,訓練。

    將每個optimizer抽象的表達為:

    image

    比如:

    image

    最后產生了兩類optimizer:

    image

    強化學習總結

    強化學習在深度學習中的應用可謂方方面面,比如用強化學習做圖像的增強學習device配置等等,但是強化學習的問題在于每一類問題,哪怕換一份相近的數據,也要從頭訓練;而且訓練消耗的時間非常長。

    3. 其它方法

    1. 輔助網絡初始化參數

    SMASH: One-Shot Model Architecture Search through HyperNetworks 在這篇論文中,介紹了一種利用輔助網絡給不同的網絡初始化參數,從而無需重訓練的方法。

    其大致流程是在一堆待搜索的網絡結構中,隨機挑選數據和網絡結構,用輔助網絡負責參數初始化,然后訓練用梯度下降訓練這個輔助網絡。在該輔助網絡訓練的足夠好之后,就可以用它給各個不同的網絡初始化參數,然后測試validation loss,最后挑出最優的網絡結構,從頭開始正常訓練。

    該方法通過訓練一次輔助網絡,避免每個網絡都需要訓練的情況,使得訓練時間大大減小。該方法非常具有參考意義

    2. DARTS

    Differentiable architecture search (DARTS). 在這項研究中,將神經網絡的探索空間從discrete變為continuous,從而可以使用梯度下降的方式,來優化神經網絡的結構。
    這個研究生非常有意思,非常有希望,期待這方面的繼續發展!


    ?

    總結

    以上是生活随笔為你收集整理的AutoML简要概述的全部內容,希望文章能夠幫你解決所遇到的問題。

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