貝葉斯優(yōu)化是機(jī)器學(xué)習(xí)超參數(shù)優(yōu)化的常用技術(shù)之一,本文不會使用艱深的數(shù)學(xué)論證,而是通過簡單的術(shù)語帶你領(lǐng)略貝葉斯優(yōu)化之美。
假設(shè)有一個函數(shù) f(x)。其計算成本很高,它不一定是分析表達(dá)式,而且你不知道它的導(dǎo)數(shù)。
你的任務(wù):找到全局最小值。
當(dāng)然,這是一個困難的任務(wù),而且難度超過機(jī)器學(xué)習(xí)領(lǐng)域內(nèi)的其它優(yōu)化問題。梯度下降就是一種解決方案,它能通過函數(shù)的導(dǎo)數(shù),利用數(shù)學(xué)捷徑來實(shí)現(xiàn)更快的表達(dá)式評估。
或者,在某些優(yōu)化場景中,函數(shù)的評估成本較低。如果你能在幾秒內(nèi)得到輸入 x 的變體的數(shù)百種結(jié)果,那么使用簡單的網(wǎng)格搜索就能得到很好的結(jié)果。
或者,你還可以使用一整套非常規(guī)的非梯度優(yōu)化方法,比如粒子群或模擬退火。
不幸的是,當(dāng)前的任務(wù)沒有這樣的便利。我們的優(yōu)化受到了多個方面的限制,其中最顯著的包括:
計算成本高。理想情況下,只要我們查詢函數(shù)的次數(shù)足夠多,我們就能在實(shí)質(zhì)上將它復(fù)現(xiàn)出來,但在實(shí)際情況下,輸入的采樣很有限,優(yōu)化方法必須在這種情況下也能有效工作。
導(dǎo)數(shù)未知。在深度學(xué)習(xí)以及其它一些機(jī)器學(xué)習(xí)算法中,梯度下降及其變體方法依然是最常用的方法,這當(dāng)然是有原因的。知道了導(dǎo)數(shù),能讓優(yōu)化器獲得一定的方向感——我們沒有這種方向感。
我們需要找到全局最小值,這個任務(wù)即使對于梯度下降這種復(fù)雜精細(xì)的方法來說也很困難。我們的模型有時需要某種機(jī)制來避免被困于局部最小值。
解決方案:針對以最少的步驟尋找全局最小值的問題,貝葉斯優(yōu)化是一個優(yōu)雅的框架。
我們來構(gòu)建一個假設(shè)的示例函數(shù) c(x),即一個模型在給定輸入 x 下的成本。當(dāng)然,這個函數(shù)的實(shí)際情況對優(yōu)化器來說是未知的。假設(shè) c(x) 的實(shí)際形狀如下:這就是所謂的「目標(biāo)函數(shù)」。
貝葉斯優(yōu)化可通過一種名為「代理優(yōu)化(surrogate optimization)」的方法解決這一問題。在語境中,代理母親(代孕媽媽)是指同意為其他人生小孩的女人。基于同樣的語境,代理函數(shù)是指目標(biāo)函數(shù)的一種近似。
代理函數(shù)可基于采樣得到的數(shù)據(jù)點(diǎn)而構(gòu)建。
我們可以根據(jù)代理函數(shù)來識別哪些點(diǎn)是有潛力的最小值。然后我們在這些有潛力的區(qū)域執(zhí)行更多采樣,然后據(jù)此更新代理函數(shù)。
在每一次迭代中,我們都要繼續(xù)觀察當(dāng)前的代理函數(shù),通過采樣對相關(guān)區(qū)域有更多了解,然后更新函數(shù)。注意,代理函數(shù)可表示成評估成本低得多的數(shù)學(xué)形式(比如用 y=x 近似表示一個成本更高的函數(shù) y=arcsin((1-cos2x)/sin x) 的某個特定范圍)。
經(jīng)過一定數(shù)量的迭代之后,我們的目標(biāo)是抵達(dá)全局最小值,除非該函數(shù)的形狀非常古怪(比如其中有大量大起大落的部分),這時候你就要問自己了:是不是數(shù)據(jù)有問題?
我們先來欣賞一下這種方法的美妙之處。它不會對函數(shù)做出任何假設(shè)(只要它是可優(yōu)化的既可)、不需要導(dǎo)數(shù)的相關(guān)信息、可通過巧妙地使用不斷更新的近似函數(shù)來執(zhí)行常識推理。對原本的目標(biāo)函數(shù)的高成本估計也不再是問題。
這是一種基于代理的優(yōu)化方法。但它的貝葉斯性質(zhì)體現(xiàn)在哪里?
貝葉斯統(tǒng)計和建模和本質(zhì)是基于新信息先驗(yàn)(之前的)信念,然后得到更新后的后驗(yàn)(之后的)信念。這里的代理優(yōu)化就是這樣工作的,使得其能通過貝葉斯系統(tǒng)、公式和思想很好地表示。
我們來更仔細(xì)地看看這個代理函數(shù),其通常表示成高斯過程,這可被看作是一種擲骰子過程,返回的是與給定數(shù)據(jù)點(diǎn)擬合的函數(shù)(比如 sin 或 log),而不是數(shù)字 1 到 6. 這個過程會返回若干函數(shù)以及它們各自的概率。
左圖:基于 4 個數(shù)據(jù)點(diǎn)生成的幾個基于高斯過程的函數(shù);右圖:將這些函數(shù)聚合之后。
Oscar Knagg 這篇文章直觀地介紹了高斯過程的工作方式:https://towardsdatascience.com/an-intuitive-guide-to-gaussian-processes-ec2f0b45c71d
為什么要使用高斯過程來建模代理函數(shù),而不是使用其它曲線擬合方法?這是因?yàn)楦咚惯^程本質(zhì)上就是貝葉斯模式的。高斯過程是一種概率分布,就像一個事件的最終結(jié)果分布一樣(比如擲硬幣的 1/2 概率),只不過高斯過程是在所有可能的函數(shù)上的分布。
舉個例子,我們也許可以定義當(dāng)前的數(shù)據(jù)點(diǎn)集可由函數(shù) a(x) 表示 40%、由函數(shù) b(x) 表示 10% 等等。通過將代理函數(shù)表示成概率分布,可使用新信息,通過固有的概率貝葉斯過程來完成更新。也許當(dāng)新信息被引入時,a(x) 函數(shù)又只能表示 20% 的數(shù)據(jù)了。這樣的變化受貝葉斯公式的約束。
這會使得類似于新數(shù)據(jù)點(diǎn)的多項(xiàng)式回歸擬合這樣的目標(biāo)難以完成甚至不可能完成。
表示成先驗(yàn)概率分布的代理函數(shù)會通過一個「獲取函數(shù)(acquisition function)」而更新。這個函數(shù)負(fù)責(zé)在探索與利用權(quán)衡的基礎(chǔ)上,對提議的新點(diǎn)進(jìn)行測試。
利用的目標(biāo)是采樣代理模型能很好地預(yù)測目標(biāo)函數(shù)的地方。這會用到已知的有潛力的位置。但是,如果我們已經(jīng)充分探索了某個特定的區(qū)域,再繼續(xù)利用已知信息也收益不大了。
探索的目標(biāo)是采樣不確定度較高的位置。這能確保空間中不留下未探索的主要區(qū)域——全局最小值可能就藏在此處。
太過重視利用而不太重視探索的獲取函數(shù)會讓模型駐留于其發(fā)現(xiàn)的第一個最小值(通常是局部最小值)。反過來,重探索而輕利用的獲取函數(shù)則一開始就不會留在某個最小值,不管是局部最小值還是全局最小值。因此,為了得到很好的結(jié)果,需要達(dá)到微妙精巧的平衡。
獲取函數(shù) a(x) 必須兼顧探索和利用。常見的獲取函數(shù)包括預(yù)期提升和提升的最大可能性,所有這些衡量的都是給定有關(guān)先驗(yàn)(高斯過程)的信息下,一個特定輸入在未來產(chǎn)生回報的概率。
我們歸總一下這些知識點(diǎn)。貝葉斯優(yōu)化的執(zhí)行方式為:
初始化一個高斯過程「代理函數(shù)」先驗(yàn)分布。
選擇幾個數(shù)據(jù)點(diǎn) x 使得獲取函數(shù) a(x) 在當(dāng)前先驗(yàn)分布上的結(jié)果是最大的。
在目標(biāo)成本函數(shù) c(x) 中評估數(shù)據(jù)點(diǎn) x 并獲取其結(jié)果 y。
使用新數(shù)據(jù)更新高斯過程先驗(yàn)分布,得到一個后驗(yàn)分布(這將作為下一步的先驗(yàn)分布)。
重復(fù)第 2-5 步并多次迭代。
解讀當(dāng)前的高斯過程分布(成本很低),找到全局最小值。
貝葉斯優(yōu)化的核心是將概率思想融入到代理優(yōu)化思想之中。這兩種思想組合到一起,能創(chuàng)造出一種強(qiáng)大的系統(tǒng)。該系統(tǒng)具有很多應(yīng)用場景,從醫(yī)藥產(chǎn)品開發(fā)到自動駕駛汽車。
不過,貝葉斯優(yōu)化最常見的應(yīng)用領(lǐng)域還是機(jī)器學(xué)習(xí),尤其是超參數(shù)優(yōu)化任務(wù)。舉個例子,如果我們要訓(xùn)練一個梯度上升分類器,則會遇到幾十個超參數(shù),從學(xué)習(xí)率到最大深度再到最小不純度拆分值。在這里,x 表示模型的超參數(shù),c(x) 表示模型在給定超參數(shù) x 下的表現(xiàn)。
使用貝葉斯優(yōu)化的主要動機(jī)是:在有些場景中,評估輸出的成本非常高。首先,需要使用這些參數(shù)構(gòu)建一整個集成樹;其次,它們需要運(yùn)行并完成幾次預(yù)測,這對于集成方法來說成本高昂。
可以這樣說,在給定一組參數(shù)的條件下,使用神經(jīng)網(wǎng)絡(luò)來評估損失函數(shù)的速度更快:只是重復(fù)執(zhí)行矩陣乘法,這是非常快的,尤其是使用專用計算硬件時。這是使用梯度下降的原因之一,也就是反復(fù)查詢以找到前進(jìn)的方向。
總結(jié)
代理優(yōu)化是使用一個代理函數(shù)或近似函數(shù)來通過采樣估計目標(biāo)函數(shù)。
貝葉斯優(yōu)化是通過將代理函數(shù)表示成概率分布而將代理優(yōu)化放入一個概率框架中,然后再使用新信息更新這個分布。
獲取函數(shù)則是用于基于已知的先驗(yàn),評估利用空間中的某個特定點(diǎn)得到「好」結(jié)果的概率。其關(guān)鍵在于探索與利用的平衡。
貝葉斯優(yōu)化的主要使用場景是目標(biāo)函數(shù)評估成本高的任務(wù),比如超參數(shù)調(diào)節(jié)。有一些用于該任務(wù)的軟件庫,比如 HyperOpt。
編輯:hfy
-
函數(shù)
+關(guān)注
關(guān)注
3文章
4327瀏覽量
62573 -
貝葉斯
+關(guān)注
關(guān)注
0文章
77瀏覽量
12564 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8406瀏覽量
132566
發(fā)布評論請先 登錄
相關(guān)推薦
評論