http://dahua.spaces.live.com/blog/cns!28AF4251DF30CA42!2323.entry
4月10日
How to get a solution?
我們所做的topic,一般有幾個(gè)階段:
Analysis: 分析問題,找到問題的關(guān)鍵
Modeling / Formulation: 對(duì)問題進(jìn)行數(shù)學(xué)抽象,建立模型,或者formulate目標(biāo)函數(shù)
Solving: 設(shè)計(jì)出求解的算法
Experiments: 實(shí)驗(yàn)
最近的工作都集中在Solving這部分,就說(shuō)說(shuō)這個(gè)吧。
求解的方法
求解問題有很多不同的方法,就我知道的來(lái)說(shuō),大概有這么幾個(gè)大家族。
-
Heuristics。 就是根據(jù)對(duì)問題的觀察而設(shè)
計(jì)的一些簡(jiǎn)單的方法,不一定遵循什么規(guī)范,或者有什么深刻的數(shù)學(xué)根據(jù)。這類方法往往比較簡(jiǎn)單易懂,intuition比較明顯,很多時(shí)候
performance也挺不錯(cuò)的,不見得比高深的方法差,因而在實(shí)際工程中很受歡迎,幾乎應(yīng)用在全部的學(xué)科。不過(guò),好像很多朋友對(duì)這類方法頗為不屑,認(rèn)
為“沒有技術(shù)含量”,或者叫做“沒有理論深度”。
確實(shí),有相當(dāng)部分的Heuristics純粹粗制濫造,投機(jī)取巧。不過(guò),還有很多Heuristics雖然簡(jiǎn)單,但是切中問題要害,在
長(zhǎng)期的復(fù)雜的實(shí)際應(yīng)用中經(jīng)受住了考驗(yàn)。這些方法,表面看來(lái)可能只是再簡(jiǎn)單不過(guò)的幾條四則運(yùn)算公式,說(shuō)不上多少理論,但是并不代表它沒有深刻的理論基礎(chǔ)。一
個(gè)典型的例子是Google
PageRank中使用的傳導(dǎo)公式(簡(jiǎn)單版本),道理和公式都很簡(jiǎn)單,可是,做過(guò)類似工作的朋友可能都知道,它和代數(shù)圖論以及馬爾可夫隨機(jī)過(guò)程有著很深的
聯(lián)系。 又比如,F(xiàn)ourier
Transform在剛出來(lái)的時(shí)候,僅僅是工程師的一些heuristics,后來(lái)關(guān)于它的理論已經(jīng)成為了泛函分析的一個(gè)核心組成部分,也是信號(hào)處理的理
論基礎(chǔ)之一。
真正好的heuristics,它的好處肯定不是瞎懵出來(lái),而是有內(nèi)在原因的。對(duì)它們的原理的探索,不斷帶動(dòng)理論方面的發(fā)展,甚至創(chuàng)造
了新的理論方向。說(shuō)到這里,有人可能會(huì)argue,這是“理論家們?cè)诠逝摶祜埑?#8221;。Hmm,這種說(shuō)法我不能認(rèn)同,但是,確實(shí)存在“把工程方法胡亂進(jìn)行
理論化”的事實(shí)。什么才叫有價(jià)值的理論化,而不是故弄玄虛,確實(shí)值得思考,這里先不展開了。
-
Analytical Solution。 當(dāng)你把
問題formulate出來(lái)后,有些情況是直接可以從問題推導(dǎo)出解析解的。這種情況通常存在于objective
function是Linear或者Quadratic的情況。大家都很喜歡這種情況的出現(xiàn),理論漂亮,實(shí)現(xiàn)簡(jiǎn)潔。但是,據(jù)我的觀察,很多情況下,這種
elegance是通過(guò)減化模型換取的。把cost寫成quadratic
term,把distribution假設(shè)為Gauss,很多時(shí)候都能得到這樣的結(jié)果。
我不反對(duì)進(jìn)行簡(jiǎn)化,也欣賞漂亮的analytical
solution,如果它把問題解決得很好。但是,這里面有個(gè)問題,很多能獲得簡(jiǎn)單解析解的問題已經(jīng)被做過(guò)了,剩下的很多難點(diǎn),未必是一個(gè)簡(jiǎn)化模型能有效
解決的。簡(jiǎn)化是一種很好的方法,但是,使用起來(lái),尤其是在實(shí)際中的應(yīng)用必須慎重,要清楚了解它們可能帶來(lái)的問題。
比如說(shuō),很多模型喜歡使用差的平方來(lái)衡量誤差大小。但是,這很早就被指出是unrobust的,一個(gè)很大的deviation會(huì)
dominate整個(gè)optimization,使得solution嚴(yán)重偏離方向。如果這種robustness在帶解決的問題中是一個(gè)必須考慮的要
素,那么用平方誤差就要仔細(xì)考慮了。
-
Numerical Optimization。 如
果formulation沒有解析解,那么自然的想法就是使用數(shù)值方法求解。目前大家常用的是基于Gradient/Hessian之類的local
optimization的方法,有時(shí)會(huì)加上random initialization。如果objective
function是convex的,那么這種方法保證收斂到global optimal,這是大家很希望的。convex
problem無(wú)論在formulation還是在solution的階段,都是很有學(xué)問的。很多問題可以formulate成convex的,但是未必
都那么直接,這需要有這方面的基礎(chǔ)。Solving一個(gè)convex
problem有現(xiàn)成的方法,但是,如果能對(duì)問題的結(jié)構(gòu)有insightful的觀察,可能能利用問題本身的特點(diǎn)大幅度降低求解的復(fù)雜度——這往往比直接
把問題扔進(jìn)solver里面等答案更有意義。
除了convex optimization,還有一種數(shù)值方法應(yīng)用非常廣泛,叫做coordinate
ascend或者alternate
optimization。大概的思路是,幾個(gè)有關(guān)的變量,輪流選擇某個(gè)去優(yōu)化,暫時(shí)固定其它的。在Machine
Learning里面非常重要的Expectation-Maximization
(EM算法)就屬于這個(gè)大家族。另外,很多復(fù)雜的graphical model采用的variational
inference也是屬于此類。使用這類方法,有兩個(gè)問題:一個(gè)是如果幾個(gè)variable之間相互影響,變一個(gè),其他跟著變的話,那么直接使用這種方
法可能是錯(cuò)誤的,并不能保證收斂。另外一個(gè)問題是,如果problem不是convex的話,可能沒有任何保證你得到的solution和global
solution有聯(lián)系。很可能,你得到的解和真正的全局最優(yōu)解相差十萬(wàn)八千里。這個(gè)沒有什么通用有效的途徑來(lái)解決。不過(guò),針對(duì)具體問題的結(jié)構(gòu)特點(diǎn),在求
解過(guò)程中施加一定的引導(dǎo)是有可能的。
-
Dynamic Programming。 這個(gè)方
法更多見于經(jīng)典計(jì)算機(jī)算法中,不過(guò)現(xiàn)在越來(lái)越多在Vision和Learning見到它的影子。主要思路是把大問題分解為小問題,總結(jié)小問題的
solution為大問題的solution。至于如何設(shè)計(jì)分解和綜合的過(guò)程,依賴于對(duì)問題的觀察和分析,并無(wú)通用的法則可循。用DP解決問題的洞察力需
要逐步的積累。不少經(jīng)典算法就源自于DP,比如shotest
path。一個(gè)可能有用的觀察是,如果問題或者模型呈現(xiàn)鏈狀,樹狀,或者有向無(wú)環(huán)圖結(jié)構(gòu)的,可能很有希望能通過(guò)DP高效解決。
-
Local Exchange。 很多建立在圖上的
問題,都可以通過(guò)某種局部交換來(lái)達(dá)到全局的平衡。像Belief propagation, Junction tree等等在graphical
model的重要inference方法,還有tranduction
model,都用到了類似的策略。這在實(shí)踐中被證明為非常有效。但是,并不是隨便設(shè)計(jì)的局部交換過(guò)程都是收斂的。這里面需要關(guān)注兩個(gè)問題:(1)交換過(guò)程
是不是能保證某些重要的invariance不被破壞;(2)交換過(guò)程中,是不是有一個(gè)objective,比如距離全局平衡的deviation,它在
每一步都保持單調(diào)。有很多交換過(guò)程,在有向無(wú)環(huán)圖中保證收斂,但是,在帶環(huán)圖中由于信息的重復(fù)傳遞可能引起不穩(wěn)定,或者不能收斂到正確的解。
-
Monte Carlo Sampling。 蒙特
卡羅采樣的原理非常簡(jiǎn)單,就是用樣本平均,來(lái)逼近期望(這個(gè)可能需要用intractable的積分完成,沒法直接算)。求平均很簡(jiǎn)單,關(guān)鍵在于采樣過(guò)
程。我們求解問題,通常是在后驗(yàn)分布中采樣,這種分布在大部分問題中,不要說(shuō)直接采樣了,可能連解析形式都沒法給出。如果采樣問題有效解決了,基本上我們
研究的大部分問題其實(shí)都可以通過(guò)采樣完成。
由于直接采樣往往非常困難,于是就產(chǎn)生了其它的方法,間接做這個(gè)事情。一種想法就是,既然p(x)不好直接采,我找一個(gè)比較容易采樣的
q(x)來(lái)逼近p(x),然后給從q(x)采出的每個(gè)樣本加一個(gè)weight,p(x) /
q(x)。這在理論上被嚴(yán)格證明是對(duì)的——這種方法叫做Importance
Sampling。這里的問題在于,如果q(x)和p(x)不太接近,那么采樣效率非常低下,如果在一個(gè)高維空間,可能采1000年都達(dá)不到要求。可是,
要得到一個(gè)approximate很好的q(x)本身不比直接從p(x)采樣來(lái)得容易。
還有一種聰明一點(diǎn)的方法,叫sequential importance
sampling。在這里面q(x),不是一蹴而就建立起來(lái)的,而是每個(gè)樣本先采一部分,然后根據(jù)那部分,確定下一部分的proposal
distribution,繼續(xù)采,也就是說(shuō)q(x)和樣本都是dynamically built
up。這個(gè)方法在vision里面一個(gè)非常著名的應(yīng)用是用于tracking,相應(yīng)發(fā)展出來(lái)的方法論叫做particle filtering。
另外一大類重要的采樣方法,叫Markov Chain Monte
Carlo(MCMC)。這個(gè)的想法是,設(shè)計(jì)一個(gè)馬爾科夫鏈,讓它的平衡分布恰好是p(x),那么等它平衡時(shí)開始采。以前我們做隨機(jī)過(guò)程作業(yè)是已知一個(gè)
markov chain,求equilibrium
distribution,設(shè)計(jì)MCMC就是反過(guò)來(lái)了。最重要的MCMC方法莫過(guò)于Metropolis-Hastings
Algorithm和Gibbs Sampling,前者常被用于設(shè)計(jì)在solution space的隨機(jī)游走(Random
walk),后者則是conditional sampling的基礎(chǔ)方法。
可是Markov過(guò)程怎么轉(zhuǎn)移呢。最簡(jiǎn)單的Random Walk結(jié)合acceptance
rate之后理論上是對(duì)的。可是,讓sampler隨便亂走,猴年馬月才能把solution
space走一遍阿。于是,有人提出結(jié)合一個(gè)solution space的局部信息來(lái)引導(dǎo)它往有用的方向走。一個(gè)重要的方法叫做Hybric
Monte
Carlo(HMC),想法就是把它模擬成一個(gè)物理場(chǎng),把要sample的分布視為波爾茲曼分布后獲得物理場(chǎng)的勢(shì)能,通過(guò)哈密頓動(dòng)力學(xué)模型(其實(shí)就是牛頓
力學(xué)的推廣)來(lái)驅(qū)動(dòng)sampler。可是,如果問題更為復(fù)雜呢,比如整個(gè)solution
space有幾個(gè)井,sample掉到某一個(gè)井可能出不來(lái)了。為了解決這個(gè)問題,一種重要的方法叫Tempering,就是開始給分子充分加熱,讓它獲得
足夠的動(dòng)能能在各個(gè)井之間來(lái)回跳,然后逐步冷卻,從而能捕捉到多個(gè)勢(shì)井。
Monte
Carlo方法較早的時(shí)候主要用于統(tǒng)計(jì)物理,目前已經(jīng)廣泛應(yīng)用于計(jì)算機(jī),生物,化學(xué),地質(zhì)學(xué),經(jīng)濟(jì)學(xué),社會(huì)學(xué)等等的研究。這是目前所知道的用于求解復(fù)雜的
真實(shí)模型的最有效的方法。它的核心,就是猜——你直接解不出來(lái),只好猜了,呵呵。但是,怎樣才能猜得準(zhǔn),則是大有學(xué)問——幾十年來(lái)各個(gè)領(lǐng)域關(guān)于Monte
Carlo研究的工作汗牛充棟,有很多進(jìn)展,但是還有很長(zhǎng)的路要走。
和這里很多留學(xué)生一樣,我一向潛心于自己的學(xué)習(xí)和研究。可是最近,我們的世界并不寧?kù)o,我認(rèn)識(shí)的不只一個(gè)在美國(guó)的朋友受到了不太友好的挑釁——在不
知不覺中,我們可能已經(jīng)身處反分裂和支持奧運(yùn)的前線。我看到包括MIT
CSSA在內(nèi)的很多學(xué)生團(tuán)體開始組織起來(lái)支持自己的祖國(guó)。我沒有具體幫上什么,但是,我對(duì)所有在用自己的行動(dòng)捍衛(wèi)國(guó)家榮譽(yù)的同胞懷有最深的敬意。我也希
望,我的努力,能讓外國(guó)的朋友明白中國(guó)人是值得尊敬的。
posted on 2008-09-06 23:39
bneliao 閱讀(218)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
math