案例實踐丨最優化算法的前世今生

2020-12-17 手機鳳凰網

近期,大巖資本黃鉑博士結合生活實踐中的案例,深入淺出闡釋了最優化算法的前世今生。

從實際生活中最基礎的應用切入,黃鉑將抽象的算法概念生動化,解釋了什麼叫最優化問題、凸優化及算法分類、機器學習與人工智慧應用。

最優化問題及基礎應用

人生不如意之事十之八九,想達到我們想要達到的目標時,通常都有各種各樣的限制。那麼所謂最優化問題,就是指用最優的方式去平衡理想與現實之間的關係。

以簡單的郵差送信問題為例,郵差從A出發,送信到BCD,最後回到A。郵差每天必須經過BCD,而且每個點每天只能經過一次,在這樣的約束條件下,他的目標函數是儘可能以最短的時間完成送信。這個問題非常簡單,只要把所有的路徑枚舉出來,然後取最短時間的方式即可。

根據前面的例子,我們嚴格的將目標函數分為兩大類。

第一類是最大化,包括最大化盈利,最大化效率。另一類是最小化,包括最小化費用、時間和錯誤率。在金融行業,我們可以最大化預測股價的正確率,也可以最小化費用、最小化時間和錯誤率。

當然,我們可以同時最大化盈利,最小化費用和時間。所以通常在很多的優化問題中,這兩種任務可以組合起來出現在同一個問題框架下,這就是對於目標函數的定義。

最優化問題的兩大類:連續優化與離散優化

關於約束條件,理想很美好,現實很骨感,在現實生活中,我們會遇到比如預算有限、時間有限、外部強制性條件等各種各樣的問題,與目標函數一樣,這些限制條件不是單一存在的,也可能同時存在同一個問題裡,對於某一個優化問題來講,限制條件越複雜,求解就越困難。

基於此,我們簡單根據它的約束條件以及目標函數變量類型將最優化問題分成兩大類,連續優化和離散優化。

連續優化正如圖上所畫,線中間沒有斷點,而離散優化的變量取值,是一個不連續的記錄,就如同一開始講的郵差送信問題。

兩類相較而言,離散優化會更難解決,因為離散優化多了一條限制條件 -- 不連續的集合。很多時候,我們要求我們的變量是一個整數,或者來自一個給定的區間,所以說離散優化會比連續優化更難解,而兩種算法也會有非常大的不一樣。

從學術角度而言,連續優化與離散優化對應的是兩個比較獨立的學科,離散優化可能更多的應用於統計、大數據相關的場景,連續優化則會跟計算機密碼學相關,更多的與我們現實生活中的運籌優化應用相關。

從目標函數出發,它的最優值也分為兩類,局部最優和全局最優。我們看圖中黃色的點,在局部區域內是最低的,我們管這個值叫做局部最優值,但是當我們看整個圖時,紅色的點才是最低的,所以這個點我們叫全局最優值。

通常來說,取局部最優值是相較容易的,因為基本上你只需要看它臨近一小部分的信息就可以準確判斷是否局部最優,而在現實應用中,其實僅僅知道局部最優值就足以解決很多問題。而更難的問題在於全局最優值,因為前提是你需要看到整個畫面。

所以,對於這一類問題,我們目前沒有一個特別好的解決方法。現實生活中,我們會有比較多的方法去求局部最優值,而往往我們找到的幾乎跟實際上的全局最優值不一樣。

但有一個問題是例外,這類問題它具有比較好的性質,只要找到局部最優值,它就肯定是全局最優值,這類問題就叫凸優化。

凸優化問題中的最優值

凸優化的關鍵字在「凸」,我們要定義什麼樣的東西是凸的呢?看上圖,藍色區域代表優化問題裡變量可以取值的空間,當取值空間是凸的時候,這是凸優化的一個必要條件。

那麼什麼樣的集合是凸的集合?我們在集合裡任意選兩點X、Y,我們將這兩點連成線,從X到Y的這條線上所有的點都必須在集合裡,只有這樣的集合才叫做凸的集合。

相反,如果有任意一個點在集合之外,那就不是凸的集合。而對於一個凸優化的問題而言,它所有的變量取值必須來自於凸的集合。

所以說,對於所有的離散優化而言,它都不是凸優化的,因為它的取值其實不是一個空間,而是一個洞一個洞的,它是很多洞的集合。

所以,通常求解這類問題時很困難,很多時候我們求解的都是一個局部最優值。在實際生活中,我們求解的都是局部優化的問題,而這類問題在所有問題中所佔比例是非常非常低的。

如果把整個集合看作一個優化問題的集合,那麼相對來講,比較小的一部分是屬於連續優化的問題,其他更大的區域屬於離散優化的問題,而在連續優化的空間裡只有很小的一部分屬於凸優化的問題。所以說,在最優化的領域裡,我們真正解決的只是實際問題中的冰山一角。

凸優化問題的經典算法

對於凸優化的問題,黃鉑博士給大家介紹幾個最經典的算法。

第一個算法,最速下降法。首先,我們看下圖,這是一個等高線,我們可以把它理解為我們的高樓,每一個圈代表一層,最中心是最高的位置,我們最終目標是用最快的方式上到中心位置。

那麼,最速下降法是怎麼做的呢?比如從一樓上二樓可以有多種方法,很明顯我們從垂直方向往上跳,在局部來看是最快的,然後以這樣的方法上到最高層。

最速下降法有哪些特點呢?每一步都做到了最優化,但很遺憾的是,對於整個算法而言,它並不是非常好的算法。因為它的收斂速度是線性收斂,線性收斂對於最優化算法而言是一種比較慢的算法,但也是凸優化裡最自然的一個算法,最早被應用。

第二個算法,共軛梯度法。與最速下降法相比較(看下圖),綠色的線是最速下降法的迭代,從最外層到中心點可能需要五步迭代,但是共軛梯度法可能只需兩步迭代(紅色線)。

共軛梯度法最大特點是汲取前面的經驗再做下一步的動作,比如從四樓上五樓,我們會考慮方向是否最佳,汲取之前跳過的四步經驗,再探索新的方向往上跳。從數學的角度來講,每一步前進的方向和之前所有走過的路徑都是垂直的,因為這樣的性質,共軛梯度法的收斂速度遠遠高於最速下降法。

第三個算法,牛頓法。前面兩種算法,從數學的角度講,他們只用到了一階導數的信息,對於牛頓法而言,它不僅僅用到了局部一階導的信息,還用到了二階導的信息。

相比前面兩種算法,牛頓法的每一步,它在決定下一步怎麼走時,不僅考慮當前的下降速度是否足夠快,還會考慮走完這一步後,下一步坡度是否更陡,下一步是否更難走。可見,牛頓法所看到的區間會更遠,收斂速度更快,屬於二階收斂速度。

如果最速下降法需要100步的話,牛頓法就只需要10步,但也正因為牛頓法使用了二階導的信息,所以它需要更多的運算量。

第四個算法,擬牛頓法。1970年,Broyden、Fletcher、Goldfarb、Shanno四人幾乎同一時間發表了論文,對於傳統的牛頓法進行了非常好的改進,這個算法叫擬牛頓法,它的收斂速度與牛頓法相似,但是它不再需要計算二階導數,所以每一步的迭代速度大大增加。

它是通過當前一階導數的信息去近似二階導數的信息,因此整個運算速度大幅度增加。由於這個算法是四個人幾乎同一時間發現的,所以也叫BFGS算法。下圖中的照片是他們四個人聚在普林斯頓時拍的,很幸運的是,Goldfarb是我博士時期的導師。

實際生活中,被應用最廣的兩種算法,一個是BFGS,另一個就是共軛梯度法。這兩種算法經常會出現在很多的程序包裡或者開原始碼裡,如果使用在大規模的優化問題或者成千上萬個變量的問題中,也會有非常好的效果。

最優化算法的高級應用

隨著這些年大數據與人工智慧的發展,最優化的算法也隨之進一步發展,接下來幾個應用可能更有意思。

第一個應用叫壓縮感知,首先我們把一個圖去掉80%、90%的像素點,然後如何還原到原有的圖片,這個問題看起來非常困難,但是在實際應用中,壓縮感知的算法就有非常好的效果。與這個問題相關的,還有很多很優美的優化算法,比如稀疏優化,對偶加速算法、Lasso。

這個算法還有另外一個應用,人臉識別。看下圖,這個圖上是同一個人在做各種表情,甚至戴上墨鏡,人臉識別通常會用在海關、捉拿罪犯。當我們原始輸入的人臉有很多噪音時,它會通過最優化算法,將人臉畫像出來,比如當輸入的是戴有墨鏡的人臉,算法會將墨鏡和人臉分離開來。

同樣的算法可以應用在背景分離,比如我們想要一張非常美的海景,但是又不想要太多人在這個照片上,那麼就可以通過這個算法將人物和背景分離開。

看下圖右側,這是一個電梯口的監控錄像,背景是靜止的,而來來往往的人是動態的,通過最優化算法就可以將前景和背景分離出來。這項研究是在2009年由微軟研究員的幾名學者一起研究出來的。

最後一部分是深度學習。深度學習有很多層神經網絡,這個算法在97年就已經被提出來了,但是之所以最近才會有非常大規模的應用,因為在算法上會有非常大的提高,我們可以通過GPU來進行加速運算。

另外,我們在優化算法上也有了非常好的進展。其相關的優化算法是隨機優化,顧名思義,它不會優化所有的變量、所有的樣本,而是隨機挑選一個或者幾個樣本進行優化,然後在不需要看完整樣本的情況下就可以有非常好的效果,可以大規模的提高模型訓練速度。

相關焦點

  • 大巖資本黃鉑:最優化算法的前世今生(中篇)
    周年慶上量化投資基金經理黃鉑博士結合生活實踐中的案例為大家深入淺出闡釋了最優化算法的前世今生。從實際生活中最基礎的應用切入,黃鉑博士將抽象的算法概念生動化,解釋了什麼叫最優化問題、凸優化及算法分類、機器學習與人工智慧應用。黃博士的分享內容較長,我們將分上、中、下三篇連載推出,本文為中篇。凸優化問題中的最優值
  • 今生的夫妻是前世情人,今生的情人是前世夫妻:善待每一份相遇!
    作者:胡楊映月情人之所以對你柔情似水,之所以是浪漫溫柔的代名詞,之所以讓你感覺愛得百轉柔腸,之所以讓你刻骨銘心,是因為你們是前世的夫妻。今生之所以尋你而來,只因為前世的一份緣還沒有盡,所以今生來續前緣,是來還債的。
  • iPhone用戶心頭好 細說CarPlay前世今生
    前世丨是什麼讓BMW真香?關於CarPlay(iOS 14)的新特性,用車組同事曾經做過詳細解析,感興趣的朋友可以點擊下方回顧圖閱讀。此外我也為大家拍攝了上手視頻,想「雲體驗」請一定不要錯過。編輯點評:如果造車成真,Apple無疑又走在了網際網路公司的前面,不過分析師郭明錤也說了,即使一切順利「Apple Car」也很難在2025年之前登場。
  • 烏金木家具的前世今生
    那會有什麼樣的前世今生呢?先來說說烏金木家具的前世。烏金木的前身是大斑馬木,烏金木家具的前世是斑馬木家具。了解了烏金木家具的前世,再來說說烏金木家具的今生。烏金木沙發看過文章的朋友對於烏金木和烏金木家具的前世今生,會有一種什麼樣的感悟呢?
  • 今生的情人,是前世未盡的緣
    來自靈魂深處的記憶,讓我們彼此沒有絲毫陌生感,我知道你喜好,你懂的我的感覺一切都好想是留著前世的記憶。01.你深情的說,也許我們是前世的夫妻,沒有纏綿夠,所以今生來續前世未盡的緣,平淡的話語,比什麼甜言蜜語,都讓人心動,或許我們就是遵循著前世的記憶,才會相聚。你說你在佛前求了好多年,你說你在三生石上刻下了我們的名字,你說你在薩提樹下,等了幾個輪迴,只是為了今生和我的一程陪伴。
  • 2021年的許願瓶.陪你一起翻越前世今生
    許願瓶2021年的許願瓶你在我的囊中我的夢想在你的心中從此以後陪你一起翻越前世今生前世今生有你有我2021年的許願瓶裡面響起了我的心跳聲曾經的傲慢年輕的任性流失的一點都不剩我要輕裝上陣陪你一起翻越前世今生
  • 圖神經網絡的「前世今生」
    作者 | 俞壹齡編輯 | 李仲深GNN的前世今生 Humility簡介GNN的分類>網絡Embedding與GNN的異同GCN從CNN到GCN -- 卷積算子的泛化譜域卷積算法SCNN-- 譜圖卷積理論的直接應用
  • 佛說:今生種種皆是前世因果
    佛說:今生種種皆是前世因果,出現在你身邊的人一定會讓你經歷一些什麼,有的人帶給你快樂幸福,有的人讓你悲傷不安,一切的經歷是因為一個緣字,前世有緣今生相聚,三世因果,循環不失。愛情是一場輪迴,這輩子的愛,是上輩子的債;一切相遇皆有原因,一切事皆有輪迴,我們能得到到是前世種下的善因,我們得不到的是沒有姻緣,前世因今世果,有因有果,才會有愛的萌芽,你能得到但不能長久的是種下的善因不夠,我們能得到長久但是生活不如意到是因為前世的虧欠,傷害了別人所以今生不能安寧!
  • 佛教:虛雲大師的前世今生,修行是生生世世的事情
    關於前世今生的故事,歷史上有許多有名的名人都會為我們做證明,證實每個人都有自己的前世今生。書到今生讀已遲,黃庭堅的前世今生。清朝的大才子袁枚,讀過宋朝文學家,書法家,詩人黃庭堅前世今生的故事後,不禁嘆曰:書到今生讀已遲;那些聰明絕頂的神童,絕對不是一生一世的事情,讓我們看一看黃庭堅前世今生的公案。
  • 你前世欠了多少情債?前世姻緣註定今生的相遇,宿世情深該如何把握?
    前世你對我有恩,今生我便以身相許 如果雙方前世有恩情,今生相會便能喜結良緣,這樣的夫妻緣,報恩的一方能夠為了對方無怨無悔的奉獻,最能美滿幸福。
  • 漫畫記錄回龍觀「前世今生」
    漫畫 記錄回龍觀「前世今生  最近,一組名為「北京以北回龍觀的前世今生」的漫畫在網上廣為流傳。70餘幅手繪漫畫,記錄了從2000年到2020年之間,昌平區回龍觀地區一年又一年的變化:交通越來越便捷,生活越來越便利,環境越來越優美,家門口有了健身公園,鄰裡間守望相助……一幅幅漫畫勾起了無數人對回龍觀的記憶。漫畫的作者吳戈是最早搬進回龍觀文化居住區的居民。
  • 今生嫁你的人是前世葬你的人嗎
    這時,路過一遊方僧人,從懷裡摸出一面鏡子叫書生看.書生看到茫茫大海.一名遇害的女子一絲不掛地躺在海灘上路過一人 看一眼,搖搖頭走了.又路過一人,將衣服脫下給女屍蓋上走了.再路過一人過去 挖個坑 小心翼翼把屍體掩埋了.僧人解釋道那具海灘上的女屍,就是你未婚妻的前世。你是第二個路過的人,曾給過他一件衣服。她今生和你相戀,只為還你一個情。
  • 前世今生來世輪迴的幾種可能
    今生只記得小時候玩過的玩具、被父母打、被鄰居的雞公跟著啄……,我們卻無法記得前世的任何事。所以,來分析一下,三生輪迴的幾種可能:1、如果人掛掉之後,會進入另外一個來世的輪迴世界,過奈何橋,喝孟婆湯,這一定是每個鬼都要強制喝的,不容選擇,這樣才符合今生記不得前世的事實。
  • 時序資料庫的前世今生
    時序資料庫的前世今生 華為雲社區技術火 發表於 2020-12-17 17:51:10   時序資料庫忽然火了起來
  • 南昌艦的「前世今生」
    南昌艦的「前世今生」   南昌艦,舷號101它是055型驅逐艦首艦中國自主研發的第一代萬噸級驅逐艦發展歷程2014年12月055型首艦在江南長興造船廠舉行開工儀式2017年6月28日
  • 五本前世今生的甜文:前塵往事難忘記,今生依然愛你
    1、《命中未定》作者:時久短書評:本文講述了一個前世今生的四角戀愛故事。男二和女二是命中注定的愛侶,生生世世相戀。女主每一世都對男二一見鍾情,不擇手段也要得到他。現代的女主通過夢境和第一世的自己合謀迫害女二,卻還是斬不斷她和男二的天賜姻緣。在拆散他們的過程中,女主漸漸迷失本心,卻不知道在她追逐男二的同時,男主也在追逐每一世的她。
  • 蝙蝠俠的前世今生 蝙蝠logo演變史觀賞
    蝙蝠俠的前世今生 蝙蝠logo演變史觀賞 時間:2012-08-06 09:46:25   來源:AC模玩網   責任編輯:黑貓拓
  • 佛說:前世的宿命,今生的姻緣
    夫妻之間,無緣不聚今生的夫妻,是前世的宿命姻緣或是報恩,償還前世宿債或是抱怨,討前世所欠之情繁華世間,沒有無緣無故的愛亦沒有無緣無故的恨凡事皆有定數因緣聚會>從來都有其三世的因果佛說,三生之因,當受三世之果夫妻恩愛有加,是前世種善因所致夫妻反目成仇,也是前世所種惡因導致要想擁有一份美滿的姻緣還需種善因,方能得善果多行善事
  • 前世今生 有你相伴《妖怪名單前世今生》手遊官方PC版正式上線
    【天極網IT新聞頻道】《妖怪名單之前世今生》是一款塔防結合卡牌養成的手遊。以國漫《妖怪名單》作為遊戲背景,核心戰鬥採用塔防戰鬥的模式,並結合了卡牌養成的成長玩法,原汁原味還原IP劇情,集齊前世羈絆陣容在今生中打開新的篇章。來藍疊安卓模擬器體驗!
  • 今生的妻子,兒女,紅顏,情人。前世到底和你是什麼關係!
    今生的妻子,兒女,紅顏,情人。前世到底和你是什麼關係!從前有個書生,和未婚妻約好在某年某月某日結婚。到那一天,未婚妻卻嫁給了別人。僧人解釋道,那具海灘上的女屍,就是你未婚妻的前世。你是第二個路過的人,曾給過他一件衣服。她今生和你相戀,只為還你一個情。但是她最終要報答一生一世的人,是最後那個把她掩埋的人,那人就是他現在的丈夫。