最近朋友閑談,常常談到AI將會改變世界,紛紛表示,要讓孩子早些學AI,以免輸在起跑線上。我這個二把刀“科學家”,也常常(錯誤地)被請教AI如何。我的確不是AI的專家,隻是20年前,上大學的時候,自己開發過人工神經網絡的應用,近年也偶爾應用機器學習算法,所以冒膽寫了個掃盲帖。您看著順眼,讚一下當賞錢;您看著哪裏錯了,指正我就好了,但別罵我:)
我們所說的AI,也就是人工智能,到底是什麽,我們有能用它來做什麽?人工智能應該是一個大眾都能理解的術語---基本上就是電腦可以幹人腦的活,可以思考,可以分析。人工智能的優勢在於電腦比人腦算得快,電腦記性好,不會忘事。
人工智能聽起來很好,可是人工智能到底怎麽實現的呢?歸根到底,還是數學和數據,外加上越來越快的計算機。人們研究一個現象,一個事物,一個問題,往往都從前因和後果進行分析。從開發數學模型的角度來看,前因,就是模型的輸入,後果,就是模型的輸出。開發模型的本質,就是建立前因(輸入)和後果(輸出)的關係。比如說,地上有一塊石頭,你踢了一腳,石頭一下子飛起來。要是想知道,你用了多大勁,石頭飛多遠,我們肯定會用牛頓的力學方程,比如F=ma去分析。通過一係列的聯立方程,可以建立一個你用的力氣(F)和石頭飛的距離(S)之間的數學模型。當我們研究簡單的問題的時候,物理模型或者化學模型,能夠幫我們連接前因(輸入)和後果(輸出)。也就是說,我們很清楚,有了前因,必然會有這樣的後果。這種簡單問題,我們不需要人工智能。我們在中學學得數學和物理知識,就能夠解決問題了。
當問題變得更複雜一些,比如說,我們想了解今年糧食的產量,會涉及到很多個因素。挑幾個重要的,可以假設平均氣溫(T),平均降水(P)和平均日照(S)會影響糧食產量(Y)。考慮到問題的複雜性,如果我們把所有的物理,化學,生物的知識考慮進去,我們沒辦法完美地建立一個基於規律的模型。為了解決問題,大家往往考慮統計模型。統計模型隻關心輸入和輸出的數量上的聯係,而不考慮他們之間存在著怎樣的物理,化學和生物規律。這樣,我們建議一個統計模型 Y = a1 * T + a2 * P + a3 * S。我們在應用這個模型之前,得先去確定模型中的參數a1, a2, 和a3。這樣我們需要數據。通過數據,來確定模型參數,在人工智能裏麵,叫做訓練模型。這個問題,也不複雜,有了高中和一些大學的數學知識,就可以解決這樣的問題了。但是,要注意,因為我們不是百分百清楚,前因是怎樣導致後果的,我們隻能靠著數據來訓練模型。所以,我們需要數據。模型越複雜,我們需要的數據越多。
現實生活中,有很多非常複雜的問題。比如說,炒股票,炒黃金。影響黃金價格的因素實在太多,而因素之間,又是相互作用的。對著這相互作用,我們大概其懂點,又不全懂。我們很可能確定幾十個會影響黃金股票價位的因素,怎樣把這些因素和黃金股票的未來價格聯係在一起呢。我們沒辦法建立一個基於因果關係的模型,因為因素太多了,好多相互之間的因果關係,我們也不那麽清楚。當然,你可以考慮建立一個統計模型,很可惜,統計模型往往要求因素之間是相互獨立的。我們麵臨的問題,明顯不符合這個條件。那麽,有沒有一種方法,或者模型,能夠自己去處理因素之間的相互作用,同時又能夠用於預報股票價錢呢?
在已過的20年裏,蓬勃發展的人工神經網絡,就能幹這樣複雜的工作。人工神經網絡,模擬人類(或者動物)的神經元,通過神經元之間或強或弱的相互作用,來模擬複雜因素之間,或者是牽製,或者是促進的相互關係。一個神經網絡模型,裏麵有大量的神經元,分在不過的邏輯層次裏麵,不同層次之間的神經元又兩兩相連,每一個連接之間的強度,都是一個參數,需要通過訓練來確定。一個神經網絡的規模越大,神經元越多,訓練時候所需的數據越大。之所以現在人工神經網絡應用越來越廣泛,就是因為在其應用領域所積累的數據越來越多,滿足了訓練神經網絡的需要。穀歌的alpha go,用的就是人工神經網絡模型,估計是用幾十萬個棋局來訓練出來的。
說到底,人工智能,和前麵提到的中學生和大學生建立的物理模型和統計模型一樣,都是在找前因(輸入)和後果(輸出)之間的關係。隻是人工智能,可以處理非常複雜,因素眾多的前因和後果。人工智能的背後,其實就是機器學習(machine learning)和大數據。兩者缺一不可。機器學習,研究的是怎樣用計算機來建立前因和後果之間的關係。大數據,是為了訓練機器學習的模型和算法。一旦機器學習的模型通過大數據訓練好了,就可以用來做預報,指導業務操作了。
我們上學學知識,知識多了,好多問題我們就可以看明白了,看透了。人工智能,是通過數據來學知識,通過大量數據,讓電腦搞清楚了前因後果之間的來龍去脈,針對一個輸入,就能產生一個輸出,以至於,電腦學會了下圍棋。說一千道一萬,人工智能解決的還是人們關心和思考的前因和後果之間的聯係。現在的機器學習技術,還有大數據積累,能讓我們考慮更加複雜的問題罷了。在考慮人工智能的應用的時候,我們必須要考慮大數據。在這一行業,如果沒有大數據,我們就算開發除了模型,也沒辦法訓練他,然後應用它。至於機器學習的算法,我們跟風穀歌,站在巨人的肩膀上,暫時應該是夠用了。
AlphaZero不參照任何曆史數據,靠規則左右互搏,自己造數據,這個想法就石破天驚了。——————-好像是一個台灣學者為主的團隊做出來的。這是一大突破
AlphaZero不參照任何曆史數據,靠規則左右互搏,自己造數據,這個想法就石破天驚了。
AlphaGo就是利用統計來學習挑戰人類的,由於機器有近乎無限的計算能力和存儲能力,所以再高明的棋手,隻要你想贏棋,你基本就不可能戰勝機器,因為你的目的定了,機器的統計數據一定能戰勝你。這就好比在一條平坦的馬路上你和汽車賽跑,你不可能贏。但是如果要跟據實時情況來決定往哪個方向才是目的地,則你就可能跑贏汽車。 現在穀歌用AlphaGo去開發醫療診斷,個人覺得這是很適宜AlphaGo的所謂“人工智能”方向。
離開紮實的數學和物理去談