禁止轉載
前言
如果只打算看和機器學習有關的變分法,只需要看到小結這一章即可,後面的內容可以不用看。
一個概率分佈問題
介紹變分法之前,先拋出一個和機器學習有關的概率問題:
一個一維分佈p(x):
- 若已知期望爲μ,方差爲σ2,熵最大的情況下p是什麼分佈?
- 不要問題1的條件,換成若已知隨機變量的取值範圍在(a,b),熵最大的情況下p是什麼分佈?
對於問題1,可形式化爲
pmaxs.t.∫−∞∞−p(x)lnp(x)dx∫−∞∞p(x)dx=1∫−∞∞xp(x)dx=μ∫−∞∞(x−μ)2p(x)dx=σ2
對於問題2,可形式化爲
pmaxs.t.∫ab−p(x)lnp(x)dx∫abp(x)dx=1
仔細觀察之後,會發現上述問題並不好做,似乎和我們以前遇到的優化問題不同,區別在於優化目標p是一個函數,而不是一個或幾個標量
爲了解決這種優化問題,我們需要引入新的工具——變分法
變分法
- 泛函:首先引入泛函的概念,泛函指定義域爲函數集合,值域爲實數的“函數”,即函數的函數。而變分法則是處理泛函的數學領域(泛函分析則是研究對象主要爲函數構成的函數空間的數學領域)
- 歷史:變分法最早是爲了解決最速降線問題而設計的,在理論物理當中應用非常多
預備定理
如果∫abM(x)η(x)dx=0,M在(a,b)上連續,η爲任意函數,η(a)=0,η(b)=0,那麼∀x∈(a,b),M(x)=0.
證明:
令η(x)=−M(x)(x−a)(x−b),則M(x)η(x)=M(x)2[−(x−a)(x−b)]≥0,所以M(x)=0.
類似的代數證法,可以擴展到多變量問題,若∫ab[M(x)η(x)+N(x)ξ(x)]dx=0,η,ξ爲任意函數,且在a,b兩點爲0,則M(x)=0,N(x)=0.
這個定理先放在這,在推導Euler方程最後一步時會用
優化問題與函數集合
給定一個關於函數yˉ(x)的待求優化問題
yˉmin∫x1x2F(x,yˉ,yˉ′)dx
而且我們假定yˉ(x1)和yˉ(x2)已知,
如果y(x)是待求最優解,則函數yˉ可以描述爲
yˉ(x)=y(x)+ϵη(x)
其中η是任意函數,滿足η(x1)=0,η(x2)=0(很重要,後面要用),η可以看作是對F的一個擾動,ϵ是一個實數,通過改變η和ϵ,可以形成關於yˉ的函數族。
而且yˉ的一階導數爲
yˉ′=y′+ϵη′
所以原問題的目標函數可以寫爲
∫x1x2F(x,y+ϵη,y′+ϵη′)dx(1)
Euler方程第一形式
注意式(1)中y和η都是關於x的函數,所以式(1)的積分結果是一個關於ϵ的函數,記爲I(ϵ)。
一方面,觀察到當ϵ→0時,無論η取什麼,都有yˉ→y. 也即,無論η取什麼,ϵ=0都是I(ϵ)極小值點,所以
dϵdI∣∣ϵ=0=0(2)
另一方面,
dϵdI=∫x1x2∂ϵ∂Fdx(3)
對於∂ϵ∂F,記u=y+ϵη,v=y′+ϵη′,則
∂ϵ∂F=∂x∂F∂ϵ∂x+∂u∂F∂ϵ∂u+∂v∂F∂ϵ∂v=∂u∂Fη+∂v∂Fη′
帶回式(3)得
dϵdI=∫x1x2(∂u∂Fη+∂v∂Fη′)dx
當ϵ=0時,u=y,v=y′,所以
dϵdI∣∣ϵ=0=∫x1x2(∂y∂Fη+∂y′∂Fη′)dx(4)
觀察第二項,由分步積分公式∫udv=uv−∫vdu可得
∫x1x2∂y′∂Fη′dx=∂y′∂Fη∣∣x1x2−∫ηd(∂y′∂F)(5)
因爲η(x1)=0,η(x2)=0,所以∂y′∂Fη∣∣x1x2=0,代入式(5)得
∫x1x2∂y′∂Fη′dx=−∫ηdxd(∂y′∂F)dx(6)
把式(6)代入式(4)得
dϵdI∣∣ϵ=0=∫x1x2[∂y∂Fη−ηdxd(∂y′∂F)]dx=∫x1x2[∂y∂F−dxd(∂y′∂F)]ηdx
注意η是任意函數,且η(a)=0,η(b)=0,又式(2)可得∫x1x2[∂y∂F−dxd(∂y′∂F)]ηdx=0,所以由預備定理
∂y∂F−dxd(∂y′∂F)=0(7)
式(7)即爲Euler方程第一形式,也就是說如果ϵ=0是I的極值,那麼就必須滿足式(7).
當F不是y′的函數,僅爲F(x,y)時,式(7)簡化爲∂y∂F=0.
概率分佈問題的解決
至此,我們就已經可以解決一開始提出的概率分佈問題了。
問題1的解決
把形式化再抄一遍,並把目標函數由max換成min:
pmins.t.∫−∞∞p(x)lnp(x)dx∫−∞∞p(x)dx=1∫−∞∞xp(x)dx=μ∫−∞∞(x−μ)2p(x)dx=σ2
用拉格朗日乘子法把該問題轉化爲無約束問題:
=∫−∞∞p(x)lnp(x)dx+λ1(∫−∞∞p(x)dx−1)+λ2(∫−∞∞xp(x)dx−μ)+λ3(∫−∞∞(x−μ)2p(x)dx−σ2)∫−∞∞[p(x)lnp(x)+λ1p(x)+λ2xp(x)+λ3(x−μ)2p(x)+C(x,λ1,λ2,λ3)]dx
其中C滿足∫−∞∞C(x,λ1,λ2,λ3)dx=−λ1−λ2μ−λ3σ2,並看作是一個與p無關的函數。
我們假定p(x)在無窮遠處爲0,這樣就滿足了上述介紹的優化問題的形式,
記F(x,p)=plnp+λ1p+λ2xp+λ3(x−μ)2p+C,記最優解爲p∗,則由Euler方程第一形式,可得
0=∂p∗∂F=lnp+1+λ1+λ2x+λ3(x−μ)2
即
p=exp{−1−λ1−λ2x−λ3(x−μ)2}(8)
注意這已經是一個高斯函數的形式!
又由三個限制方程
∫−∞∞p(x)dx=1∫−∞∞xp(x)dx=μ∫−∞∞(x−μ)2p(x)dx=σ2
可以從中解出λ1,λ2,λ3,帶回式(8)得
p∗(x)=(2πσ2)211exp{−2σ2(x−μ)2}
所以在給定均值和方差的前提下,最大熵對應的分佈是高斯分佈。
問題2的解決
把形式化再抄一遍,並把目標函數由max換成min:
pmins.t.∫abp(x)lnp(x)dx∫abp(x)dx=1
同問題1,先用拉格朗日乘子法轉化成無約束問題:
=∫abp(x)lnp(x)dx+λ1(∫abp(x)dx−1)∫ab[p(x)lnp(x)+λ1p(x)−b−aλ1]dx
我們假定p(x)在a,b兩點概率爲0,這樣就滿足了上述介紹的優化問題的形式,
記F(x,p)=plnp+λ1p−b−aλ1,記最優解爲p∗,則由Euler方程第一形式,可得
0=∂p∗∂F=lnp+1+λ1
即
p∗=exp{−1−λ1}(9)
注意,這已經是一個均勻分佈的形式!
又由限制方程
∫−∞∞p(x)dx=1
可以從中解出λ1,帶回式(9)得
p∗(x)=b−a1
所以在有限區間內,最大熵對應的分佈是均勻分佈。此時無需均值和方差的約束。
小結
- 變分法在機器學習當中是一個很好用的技巧,其實機器學習當中輸入爲函數,輸出爲實數,這樣的泛函例子並不少見,例如各種散度——衡量了兩個分佈之間的差異性,散度的泛函又引入了變分推斷當中,例如變分自編碼器
- 機器學習當中遇到的大多數變分問題都較爲簡單,往往被積函數F和待求函數y的導數是無關的,也即只需要滿足Euler方程中∂y∂F=0就可以
- 後文將繼續介紹完整的變分法理論,後續理論在機器學習當中的使用較爲罕見,看到這裏就可以提前退場了,如果看的很爽,那麼就跟我繼續看下去吧,2333
變分法(後續)
Euler方程第二形式
注意到
dxdF(x,y,y′)=∂x∂Fdxdx+∂y∂Fdxdy+∂y′∂Fdxdy′=∂x∂F+∂y∂Fy′+∂y′∂Fy′′(10)
因爲
dxd(y′∂y′∂F)=y′′∂y′∂F+y′dxd(∂y′∂F)(11)
把式(10)等號右側第三項帶入式(11)可得
dxd(y′∂y′∂F)=[dxdF(x,y,y′)−∂x∂F−∂y∂Fy′]+y′dxd(∂y′∂F)=dxdF(x,y,y′)−∂x∂F−y′[∂y∂F−dxd(∂y′∂F)]
注意到∂y∂F−dxd(∂y′∂F)爲Euler方程的第一種形式,所以上式繼續化簡爲
dxd(y′∂y′∂F)=dxdF(x,y,y′)−∂x∂F
即
∂x∂F−dxd(F−y′∂y′∂F)=0(12)
式(12)即爲Euler方程第二形式,注意如果F不顯含x,那麼∂x∂F=0,則有F−y′∂y′∂F=C. 在這種情況下,第二形式非常方便。
變分算子
yˉ=y+ϵη(x)=y+δy
其中,δy就稱作對y的變分。
貼參考文獻[1]的一張圖,說明變分和微分的區別
- 微分:當x變化時,y的變化
- 變分:x不變,人爲的對y加擾動
一般我們認爲自變量的變分爲0(或者說不能變分),例如y(x),認爲δx=0,因爲在自變量上加擾動沒有意義,自變量這個時候應該看作是一個“標準”,其他量以這些“標準”爲依據。
變分算子和微分算子的可交換性
dxdδy=dxdϵη(x)=ϵdxdη(x)=ϵη′
另一方面
δdxdy=y′ˉ−y′=ϵη′
所以,變分算子和微分算子的順序可以交換。
變分算子和積分算子的可交換性
δ∫F(x)dx=∫F(x)dx−∫F(x)dx=∫Fˉ(x)dx−∫F(x)dx=∫[Fˉ(x)−F(x)]dx=∫δF(x)dx
所以,變分算子和積分算子的順序可以交換。
函數與泛函的變分算子
對於F(x,y,z)
δF=∂x∂Fδx+∂y∂Fδy+∂z∂Fδz
上式子說明了對x,y,z的擾動,是如何產生對F的擾動的
除式的變分公式:
δ(gf)=g2gδf−fδg
多函數的變分
對於多函數的問題,先以兩個函數爲例:
fˉ,gˉminI=∫x1x2F(x,fˉ,gˉ,fˉ′,gˉ′)dx
類似單變量的方法令最優解爲f,g,則有
fˉ=f+ϵηgˉ=g+ϵξ
一方面得到
dϵdI(ϵ)∣∣ϵ=0=0
另一方面
dϵdI(ϵ)∣∣ϵ=0=∫x1x2(Ffη+Fgξ+Ff′η′+Fg′ξ′)dx
用分佈及分公式可得
∫x1x2Ff′η′dx=Ff′η∣∣x1x2−∫x1x2ηdFf′=−∫x1x2ηdxd(Ff′)dx
g做類似的處理,帶回得
dϵdI(ϵ)∣∣ϵ=0=∫x1x2[(Ff−dxdFf′)]η+[(Fg−dxdFg′)]ξdx
由預備定理得
Ff−dxdFf′=0Fg−dxdFg′=0
上式爲多變量得Euler方程,可以看到它與單變量得形式是一致的。對於更多變量得情況,推導結果類似。
雙變量單函數的多重積分變分
記
I(ϵ)=∬DF(x1,x2,yˉ,∂x1∂yˉ,∂x2∂yˉ)dx1dx2
則有
dϵdI∣∣ϵ=0=∬D[∂y∂F∂ϵ∂y+∂(∂x1∂y)∂F∂ϵ∂(∂x1∂y)+∂(∂x2∂y)∂F∂ϵ∂(∂x2∂y)]dx1dx2=∬D[∂y∂F∂ϵ∂y+∂(∂x1∂y)∂F∂x1∂(∂ϵ∂y)+∂(∂x2∂y)∂F∂x2∂(∂ϵ∂y)]dx1dx2
首先給出格林公式
∬D[∂x1∂P+∂x2∂Q]dx1dx2=∫CPdx2−Qdx1(13)
如果令
P(x1,x2)=Φ(x1,x2)A(x1,x2)Q(x1,x2)=Φ(x1,x2)B(x1,x2)
帶回式(13)得
∬D[A∂x1∂Φ+B∂x2∂Φ]dx1dx2=−∬D(∂x1∂A+∂x2∂B)Φdx1dx2+∫C(Adx2−Bdx1)Φ(14)
所以,如果令
Φ=∂ϵ∂yA=∂(∂x1∂y)∂FB=∂(∂x2∂y)∂F
即yˉ=y+ϵΦ,那麼
dϵdI=∬D[∂y∂FΦ+A∂x1∂Φ+B∂x2∂Φ]dx1dx2
把後兩項用格林公式(14)替換,得到
dϵdI=∬D[∂y∂F−(∂x1∂A+∂x2∂B)]Φdx1dx2
注意式(14)中的線積分∫C(Adx2−Bdx1)Φ=0,所以線積分直接捨去了,這裏非常厲害!!!
線積分爲0的原因在於Φ在邊界一圈爲0,類似於單變量中兩個端點的η=0.
由預備定理
∂y∂F−(∂x1∂∂(∂x1∂y)∂F+∂x2∂∂(∂x2∂y)∂F)=0
上式即爲雙變量函數下的Euler方程,該式和單變量的形式其實是類似的。
參考文獻
[1] 變分法 https://www.youtube.com/playlist?list=PL090BE404EFE679E9. B站上也有相同的資源,但是不全
[2] C M. Bishop. Pattern Recognition and Machine Learning Bishop 附錄D