我們講一個內容不僅僅把數學的概念同生活的智慧聯系在一起,而是可以用數學來指導你做決定。我會用數學中的模擬退火算法,來跟你說說,為什么年輕人應該多出去闖闖,而年紀大以后,就應該更加專注自己的賽道。如果我們把人生當作爬坡的過程來說,那么誰開始都不是完美的,但是通過自己的不斷努力提升自己,最后的目標,就是達到自己可能達到的最高的位置。這個人生的成長過程,很像數學問題中找到一個函數的最高點。比如說,我們要找一個函數y=?x^2+2x的最大值,這個函數的曲線,像是一個小山的拋物線。
我們如何找到這個曲線的最高點呢?一個最直接的方法就是求導數的方法,然后可以令導數為0,這樣解出的方程就可以對應最高點的位置。這個例子中確實可以用求導數的方法。但是實際中,如果函數復雜一點,或者函數本身不可導,甚至明確的表達式不存在,那我們就需要數值解(numerical solution)了。數值解法有很多類方法,其中一種叫做爬山法。爬山法顧名思義,就像一個人爬山一樣。當一個人爬一座陌生的山時,只需要時刻保證自己的位置比前一刻高,就能夠最后爬到山頂。就算法而言,這個算法每次都從當前的位置附近,隨機選一個位置,如果這個位置比當前的位置更高,就來到新的這個位置,反之重新再選擇一次。以此類推,經過多輪迭代,我們可以找到整個函數的最高點。但是爬山法有一個很大的問題。我們來看一個形狀稍微復雜一點的曲線,這個曲線有兩個山峰,右邊的山峰更高。如果初始值的位置在左邊高點的山腳位置,那么經過多次迭代,一定會收斂到第一個矮的山峰處,這個數學上稱之為局部最高點(local maximum)。之所以爬山法找到的是局部最高點,因為這個位置比周圍的點都要高。而真正的全局最高點(global maximum)在右邊那個更高的山峰處。也就是說,當函數的形式比較復雜的時候,用爬山法可能會陷入局部最高點。
這個也不難理解,試想一下,如果你在大霧天爬山的時候,因為視野有限,你按照爬山法,每次都要求比前一時刻更高,那么你很可能最后到達的是一個小山坡。雖然小山坡比周圍的位置都要高,但距離真正的山頂還差得很遠。那么爬山法這個問題該如何解決呢?我們首先分析一下為什么會出現這個問題。之所以算法不能從局部最高點跳出來,就是因為它每一步都試圖比上一步要高。如果局部最高點的時候,我們可以接受右側比它更低的點的位置,它就有可能來到那個更高的山峰的山腳下,從這個點迭代,就可以跳出局部最大值而到達全局最大值。換句話說,之所以這些數值解法會陷入局部最大值,是因為它們不能接受暫時的性能下降,每一步都追求性能提高。因此解決的思路就很直接了:接受暫時的不太完美,才有可能換取到一個更好的未來。
這就好比很多人在換工作的時候都一定要下一份工作的工資比當前的高。但如果新的公司的行業前景更好,那么更好的選擇或許是應該接受當前薪資的退步,從而在以后達到一個更高的高度。那么如何接受這種不完美呢?爬山法利用了隨機:具體來說,如果在當前位置的周圍隨機找到了一個點,該點的位置高度不如當前位置的話,那么我們也以一定的概率接受這個位置。這種隨機,就是英國經濟學家蒂姆·哈福德(Tim Harford)在他的暢銷書《混亂》里所描述的“混亂”。哈福德說,“意外情況會擾亂我們的日常工作或生活,但是如果我們能夠積極發揮我們的創造力,便能轉悲為喜。意外的出現雖然導致藝術家、科學家和工程師們從山峰跌入谷底,一旦我們離開自己的山峰,來到一個新的谷底,便能化腐朽為神奇”。
我們已經知道了利用隨機性,來接受暫時的不完美,以避免陷入局部最優點。現在我們還有最后一個問題要解決:這個接受不完美的隨機概率大小,應該是多少呢?上世紀70年代末和80年代初,IBM的沃森實驗室的兩個科學家柯克帕特里克(S.Kirkpatrick)和格拉特(C.D.GelattJr)在研究優化算法的時候,從物理學得到了啟發,發明了一個算法,叫做模擬退火算法(simulated annealing algorithm)。我們先說說退火(annealing)。我們都聽說過淬火,就是鑄造寶劍時師傅把燒得通紅的寶劍丟入水里。淬火過程中金屬會在液體中快速冷卻,從而讓寶劍的硬度大大提高。淬火是一種大家最熟悉的冷卻工藝。除了“淬火”之外,還有一種冷卻工藝,就是我們說的退火。退火的冷卻速度比淬火慢得多。退火通過緩慢降低金屬的溫度,可以使金屬內部組織達到或接近平衡狀態,幫助金屬內部釋放應力、增加材料延展性和韌性,獲得良好的工藝性能和使用性能??驴伺撂乩锟藢τ谕嘶鹩幸粋€洞見。他解釋道,在退火過程中材料冷卻的速度會對其內部結構產生很大的影響。而在物理學中,“溫度”和“隨機性”是對應的:溫度越高,隨機運動越大。那么退火過程,就代表著一種隨機性從高到低的衰減。既然退火過程最終可以使得所有的金屬晶體達到一個完美的平衡狀態,那么爬山算法中的隨機性,也應該隨著時間不斷降低。
具體來講,在開始的時候,我們以較大的概率接受不完美,也就是下一刻的位置比當前的位置要低,但隨著時間推移,這個接受不完美的概率應該慢慢變小。這就是模擬退火算法。模擬退火算法這個思想,被柯克帕特里克和格拉特發表在1983年的《科學》雜志上,文章的標題是《基于模擬退火的優化算法》“Optimization by Simulated Annealing”。模擬退火算法的效果令人吃驚地好:發表在《科學》的這篇文章中用模擬退火算法設計出了更好的芯片布局,而現在模擬退火算法已經成為優化算法中的一個經典算法。學完了模擬退火算法,我們就可以回答開始的那個問題。為什么年輕的時候應該去大城市闖一闖,并且應該多嘗試一些職業呢?
首先,人生其實就是一個尋找最優解的過程。開始誰都不是完美的,但是我們通過不斷努力,不斷提升自己,最后的目標,就是達到自己可能達到的最優位置。這個過程,和爬山法的思想是一致的。在不斷進步的過程中,很自然的一個選擇,就是你要求自己在人生中的每一步,都要追求比前一步更優。例如很多人在換工作的時候,都要求下一份工作的工資比當前的要高,或者更穩定。這種選擇看起來很自然,但是算法告訴我們,這種每一步都要求比上一步好的策略,容易讓自己陷入局部最高點:你選擇了一個工資更高,或者更穩定的行業,這導致你錯過了另外一個雖然現在看起來不太靠譜,但是發展潛力巨大的賽道。解決的方法,就是引入隨機性:以一定概率接受暫時的不完美,就可以有效地避免陷入局部最優點。這種隨機性,就對應著去大城市闖一闖,多嘗試各種職業,找到自己的興趣和潛力所在,而不是安安穩穩地在一個職業上終老。
而模擬退火算法則進一步告訴我們,這個隨機性應該隨著你的年齡慢慢降低。當你年輕的時候,可以讓這個隨機性最強,充分地探索,讓自己接受暫時的不完美,從而能夠避免陷入局部的最優值,而在將來躍上一個更高的山峰。而到年齡大了以后,當你知道自己最適合什么以后,你就要控制隨機性了,你應該在自己最適合的地方深耕,而不要輕易切換賽道。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.