這個算法普及之後,人工智能產業的春天終於到來了

近年來,AI這個行業發展地風生水起,各大科技公司如果開口不談AI(人工智能),就好像已經落後在這個互聯網世界的最前沿了。的確我們也清楚地看到了AI在許許多多領域的應用,某種程度上已經取代了簡單的人工勞動。賽事裡已經出現了AI智能解說,層出不窮的智能語音助手等。2016年的谷歌AlphaGo與圍棋九段高手

李世乭的世紀大戰更是燃爆了整個科技界。

AI產業為何在這幾年突然就像爆發似的蓬勃起來,很大程度上是因為一個看似笨拙其實極為有效的算法被普及開來。這個就是相信大家已經有所耳聞的蒙特卡洛算法了。

這個算法普及之後,人工智能產業的春天終於到來了

著名賭城——蒙特卡洛城

這套基於統計模擬的方法在20世紀40年代被提出,參加過沒過“曼哈頓計劃”的兩位大神烏拉姆和馮諾依曼。馮諾依曼特地以摩洛哥著名賭城“蒙特卡洛”來命名,這樣的命名相當生動有趣,彷彿一下子就正視了這套方法的核心——概率和策略。蒙特卡洛方法建立在對大範圍隨機數的選取甄別,逐步將數據引向概率高的目標內,而那些被系統認為概率低或者不符合要求的隨機數據被拋棄,反覆迭代這個過程,最後達到我們計算的目標。

舉個例子,基本上我們每個人找工作都是要經過很多次嘗試,可能會同時面試很多家公司。拿到意向的錄用合同之後,我們會充分做比較,會拋棄那些待遇差,福利低或者晉升渠道窄的職位,將選擇放在更好的職位上。假如拋開找工作的時間成本不談,我們始終處在找工作的過程裡。為了找到好公司,我們要做的就是不斷地去面試新公司,然後把這個新職位與之前面試過的作對比,如果新公司好,那麼就拋棄上一家,如果新公司不好,我們就再嘗試下一家。如果反反覆覆(當前這種情況在實際裡很少見)不斷嘗試下去,再經歷了越來越多家公司的嘗試之後,我們最終會找到一家更好的公司,(尋找到一家最好的公司的方法叫拉斯維加斯方法)注意這裡不是最好,而是更好,因為你永遠無法面試完所有的公司。

蒙特卡洛方法的思想就是基於此,不斷找尋滿足規定範圍內的隨機數據,然後找尋滿足我們既定要求的數據,對這些海量的隨機數據進行分析甄別,在浩如煙海的數據庫裡發現正確的結論。

中學數學裡,我們都聽過18世紀法國數據家布豐投針實驗來求圓周率的故事。有人按照布豐的方法做實驗,在3萬多次投針實驗之後,用布豐的公式就得出圓周率小數點6位精度的數值,充分證明了這個方法的有效性。現在的人們回望布豐這個實驗,認為布豐應該是蒙特卡洛思想的先驅。

這個算法普及之後,人工智能產業的春天終於到來了

系統每次得到數據之後,都會分析這樣的數據對於全局的意義,得出一個獲勝概率之後,系統會決定記錄還是拋棄這些數據。很快有人就發現,這個思想也許在棋類遊戲中會有很大作用。人們開始構想出,能不能創造一種代替人類思考的棋類軟件,最終和人類對抗。這個宏偉的構想從計算機誕生後不久就開始了。上個世紀50年代,圖靈甚至在計算機尚不知程序為何物時,就自己編寫了一套邏輯算法,自己代替計算機思考來與人對抗的棋類遊戲。在那個計算能力匱乏的時代,圖靈證明了這樣的構想行之有效。雖然最後圖靈在與同事的對弈過程中慘敗。

80年代之後,計算機硬件的能力日益強大,跨域一個數量級的計算能力根本不用耗費太長時間。人們看到了硬件發展帶來的重大紅利,開始嘗試一種古老的方法來實現那個偉大的構想,也就是充分藉助了計算機無與倫比的計算力來枚舉對弈過程中所有可能出現的情況。這個方法路線在當時是對的,人類創造的機器棋力也逐年增加。

在1997年迎來了里程碑事件。IBM的超級電腦“深藍”在不被讓任何棋子的前提下公平地擊敗了人類最偉大的國際象棋棋手,卡斯帕羅夫。“深藍”是在加裝了400塊專門設計的硬件加速卡之後達到了當時驚人的每秒2億次浮點的算力情況下開始對弈,卡斯帕羅夫敗在了這無與倫比的算力上。

這個算法普及之後,人工智能產業的春天終於到來了

深藍與卡斯帕羅夫對弈

坦白的說,“深藍”驚人戰績並不能說明人工智能時代在90年代末就已經開啟。雖然那個時代人工智能的理論也有很大發展,但終究不是在實戰裡打敗了人類。打敗人類的其實是計算機超凡的計算力。也剛巧,國際象棋的複雜度剛好滿足著那個時代計算機硬件的發展水平,所以“深藍”才得以大放其彩。

然而,單論棋類遊戲而言,圍棋的難度要遠遠高於國際象棋,假若人類還要以同樣的枚舉方法來對付圍棋,恐怕這個地球上所有的計算機加在一起都遠不能滿足算力要求。因此人類迫切需要從軟件算法上來找到突破,而不是一味地堆硬件獲得更高算力。

很快蒙特卡洛這個方法被重新認識,90年代初,其實世界上已經有很多圍棋軟件,但是當時的圍棋軟件棋力幾乎不值一提。大老李①說過在他小學那個年代,任何普通人只要專心學習幾個月圍棋就可以打敗當時最先進的圍棋軟件。每年都有一個世界計算機圍棋錦標賽,參賽的人類棋手要讓子20個才勉強可以使棋類軟件與人類平起平坐。

21世紀到來的前幾年,人們將圍棋軟件的“思考方式”上升一個段位。開始考慮用篩選組合與彙總分析的方式來對弈。行進到某一步時,計算機不必考慮所有走法,只是分析當前的落子位置,並且計算逐漸引向高勝率的招數。這樣不斷的落子方式產生,又不斷拋棄,系統保留了那些勝率高的方法,當檢索完畢就將落子。這樣一來,棋類軟件就減少了太多無用的計算過程,算法的空間度降低了很多級。然而對於圍棋來說,這還是遠遠沒有達到與職業棋手旗鼓相當的水平。

這個算法普及之後,人工智能產業的春天終於到來了

AlphaGo大戰李世乭

直到最近5年來,計算機的算力達到了解決圍棋問題的要求,終於可以應對繁重的隨機運算。圍棋軟件通過自我對弈就可以在幾天時間達到人類九段水平。自我學習的能力讓人無比深刻。此時,超凡的計算力和軟件算法相匹配並足以比肩人類最頂尖棋手。於是陸陸續續有職業棋手被打敗。直到李世乭落敗,直到Master打敗全部人類高手,直到AlphaGo宣佈不再與人類對弈。

這個算法普及之後,人工智能產業的春天終於到來了

隨著迭代過程增加,實驗數據與真實結果誤差越來越小

蒙特卡洛算法一個最核心的部分仍是如何去產生更加純正的隨機數。現在任何一種編程語言庫函數里都會有關於隨機數的rank函數,然而這些隨機數都是根據特定算法產生的,並不是真的隨機,並不像布豐投針那樣可以產生絕對原裝的隨機數,是算法就必定有漏洞。最近,美國佐治亞大學的費倫博格博士使用蒙特卡洛方法用於一個簡單的模擬磁性晶體中原子行為的數學模型時出現錯誤。出現這些錯誤的根源在於這5個程序產生的數串其實並不隨機, 它們實際上隱藏了一些相互關係和樣式。結果,最後模擬出來的結果大失所望,完全不是一開始要得到的結果。

現在的人工智能產業如火如荼,如果沒有這套算法的加持,模擬人類思考的方式,那麼遠遠稱不上智能。人類的行為和想法應該都是可以按照策略和彙總分析來完成的,當然很多人做事情並不是這樣,但是計算機的發展從一開始就是嚴謹的,一旦達到預定算法的結果,那麼就會毫不留情地去執行。所以也就導致了,很多在人類看來猶豫不決的事情,在機器看來應該毫不拖拉地去做出選擇,而很多看來司空見過的事件,對於機器來說確實其難無比,甚至會引起宕機。

任何人工智能產品的背後都是離不開大數據的統計分析以及策略的篩選。無人駕駛汽車,智能語音助手比比皆是。然而不是所有的人工智能產品個體都需要在線才可以發揮效力,這樣遠遠不夠,可以預見,人工智能產業不過是剛剛起步,未來的人工智能產品會成為一個獨立的個體,甚至會有自己的淺顯意識,而不僅僅是一套大數據系統下的棋子。

①:喜馬拉雅FM:大老李聊數學。


分享到:


相關文章: