整理:白泉
來源:白泉讀書(ID:myheartmyhome)
蟻群尋找食物都沿著最短路徑,即便遇到外界幹擾,總能很快調整過來,找到最佳的路徑。螞蟻這種自我學習、不斷修正、自我進化的能力,被稱為蟻群算法。
在自然界中,螞蚊的食物源總是隨機分散於蟻巢周圍,在蟻群協調、分工、合作後總能找到一條通往食物源的最短路徑。現實中,我們能觀察到大量螞蟻在巢穴與食物源之間形成近乎直線的路徑,而不是曲線、圓等其他形狀(見下圖)。
蟻群不僅能完成複雜的任務,還能適應環境的變化,如在蟻群運動路線上突然出現障礙物時,一開始各只螞蟻分布是均勻的,不管路徑長短,螞蟻總是先按同等概率選擇各條路徑(見下圖)。
蟻在運動過程中,能在其經過的路徑上留下信息素,並且能感知到這種物質的存在及其強度,並以此指導自己運動的方向,螞蟻傾向於信息素濃度高的方向移動。在相同時間內較短路徑上的信息素量就遺留得較多,則選擇較短路徑得螞蟻也隨即增多(見下圖)。
不難看出,由於大量螞蟻組成得蟻群集體行為表現出的一種信息正反饋現象在某一路徑上走過的螞蟻越多,則後來者選擇該路徑的概率就越大,螞蟻個體質檢就是通過這種信息交流機制來搜索食物,並最終沿著最短路逕行進(見下圖)。
算法有別於傳統編程模式,程序是基於一定規則隨機運行來尋找最佳配置,也就是說,當程序最開始找到目標的時候,路徑可能不是最優的。但是,程序可以通過螞蟻尋找食物時候的信息素原理,不斷地去修正原來的路線,使整個路線越來越短,也就是說,程序執行的時間越長,所獲得的路徑就越可能接近最優路徑。這看起來很類似與我們所見的無數例子進行歸納概括形成最佳路徑的過程。實際上好似是程序的一個自我學習、自我進化的過程,這是算法。
拿螞蟻尋找最短路來說,事實上每隻螞蟻能了解到的範圍很局限,每隻螞蟻之間也沒有直接的關係,但是每隻螞蟻都和環境發生交互,而通過信息素這個紐帶,實際上把各個螞蟻之間關聯起來了。比如,當只螞蟻找到了食物,它並沒有直接告訴其它螞蟻這兒有食物,而是向環境播撒信息素,當其它的螞蟻經過它附近的時候,就會感覺到信息素的存在,進而根據信息素的指引找到了食物。
那麼,螞蟻究竟是怎麼找到食物的呢?
在沒有螞蟻找到食物的時候,環境沒有有用的信息素,那麼螞蟻為什麼會相對有效的找到食物呢?這要歸功於螞蟻的移動規則,尤其是在沒有信息素時候的移動規則。
首先,它要能儘量保持某種慣性,這樣使得螞蟻儘量向前方移動(開始,這個前方是隨機固定的一個方向),而不是原地無謂的打轉或者震動;
其次,螞蟻要有一定的隨機性,雖然有了固定的方向,但它也不能像粒子一樣直線運動下去,而是有一個隨機的幹擾。這樣就使得螞蟻運動起來具有了一定的目的性,儘量保持原來的方向,但又有新的試探,尤其當碰到障礙物的時候它會立即改變方向,這可以看成一種選擇的過程,也就是環境的障礙物讓螞蟻的某個方向正確而其他方向則不對。這就解釋了為什麼單個螞蟻在複雜的諸如迷宮的地圖中仍然能找到隱蔽得很好的食物。當然,在有一隻螞蟻找到了食物的時候,其他螞蟻會沿著信息素很快找到食物的。
這一是要歸功於信息素,另外要歸功於環境,具體說是計算機時鐘。信息素多的地方顯然經過這裡的螞蟻會多,因而會有更多的螞蟻聚集過來。假設有兩條路從窩通向食物,開始的時候,走這兩條路的螞蟻數量同樣多(或者較長的路上螞蟻多,這也無關緊要)。當螞蟻沿著一條路到達終點以後會馬上返回來,這樣短的路螞蟻來回一次的時間就短,這也意味著重複的頻率就快,因而在單位時間裡走過的螞蟻數目就多,酒下的信息素自然也會多,自然會有更多的螞蟻被吸引過來,從而灑下更多的信息素,而長的路正相反,因此,越來越多地螞蟻聚集到較短的路徑上來,最短的路徑就近似找到了。
也許有人會問局部最短路徑和全局最短路的問題,實際上螞蟻逐漸接近全局最短路的,為什麼呢?這源於螞蟻會犯錯誤,也就是它會按照一定的概率不往信息素高的地方走而另闢蹊徑,這可以理解為一種創新,這種創新如果能縮短路途,那麼根據剛才敘述的原理,更多的螞蟻會被吸引過來。
螞蟻這種尋找窩和食物之間最短路的策略機制,就是一種不斷自我進化的算法。
通常,人們對於人生成功的策略理解太簡單了,認為成功的人都是找到了某種規律或秘訣(中國人傳統裡把這規律或秘訣稱之為「道」),似乎只要找到「道」,人生所有的難題都迎刃而解。
有沒有這種規律或秘訣呢?沒有!那也就更沒有因得「道」而直接登上人生巔峰的!人生就象螞蟻尋找食物一樣,只能通過不斷學習、修正、進化,為自己不斷增大概率,實現「迭代升級」。這大概就叫人生算法。
橋水基金創始人達利歐撰寫了一本書,書名叫《原則》,書中分享了成功原則,他說:算法,就是在連續性基礎上運行的原則。
巴菲特的搭檔查理·芒格也說:當成功概率很高的時刻,下最大的賭注,而其餘時間按兵不動。這說的也就是人生算法。
網絡上有這麼一個具體的問題,可以幫助我們更具體地了解人生算法。
問題是這樣的——
假設你現在面對兩個按鈕:按下第一個按鈕,直接給你一百萬美元;按下第二個按鈕,你有50%的機會拿到一億美元,也有50%機會什麼都沒有。
這兩個按鈕只能選一個,你選哪個?
有人選第一個,理由是落袋為安,100萬美元也不是個小數。
有人選第二個,理由是萬一成功,從此就成了人生贏家。
但是,這道題的核心不是考這個,這道題是有唯一正確答案的。那就是要選第二個按鈕——一半的機會拿到一億美元。
你可以找到一個人並告訴他,我有一半機會能拿到一億美元;如果你給我一百萬美元,我就願意把這個機會分享給你。你去按,什麼也沒有,你認倒黴,如果拿到了一億美元,咱們一人一半。
有的算法,引入了風險,但沒有風控機制,這只能初級;有的算法,引入了風險共擔機制;有的算法引入了市場化機制。算法越迭代,成功的概率就不斷地提高。
而當你掌握核心算法,所要做的事就是大量地重複這個動作。說得更簡單一點,人生算法就是你面對世界不斷重複的、最基本的路,找到它,重複它,強化它。
這樣一來,你想要抓住的機會,就是大概率的事件。