天天看點

兩場比賽,AlphaGo表現出了哪些計算和智能 | 硬創公開課

雷鋒網(公衆号:雷鋒網)按:本文來自 硬創公開課 | alphago專場的分享。分享嘉賓,出門問問nlp工程師,李理。

兩場比賽,AlphaGo表現出了哪些計算和智能 | 硬創公開課

一、到底什麼是深度學習?

我認為深度學習相對于傳統的機器學習,最大的特點就是不需要(太多)的feature engineering。

在機器學習流行之前,都是基于規則的系統,是以做語音的需要了解語音學,做自然語言處理(nlp)的需要很多語言學知識,做深藍需要很多國際象棋大師。而到後來統計方法成為主流之後,領域知識就不再那麼重要,但是我們還是需要一些領域知識或者經驗來提取合适的feature,feature的好壞往往決定了機器學習算法的成敗。

對于nlp來說,feature還相對比較好提取,因為語言本身就是高度的抽象;而對于speech或者image來說,我們人類自己也很難描述我們是怎麼提取feature的。比如我們識别一隻貓,我們隐隐約約覺得貓有兩個眼睛一個鼻子有個長尾巴,而且它們之間有一定的空間限制關系,比如兩種眼睛到鼻子的距離可能差不多。但怎麼用像素來定義”眼睛“呢?如果仔細想一下就會發現很難。當然我們有很多特征提取的方法,比如提取邊緣輪廓等等。

但是人類學習似乎不需要這麼複雜,我們隻要給幾張貓的照片給人看,他就能學習到什麼是貓。人似乎能自動“學習”出feature來,你給他看了幾張貓的照片,然後問題貓有什麼特征,他可能會隐隐預約的告訴你貓有什麼特征,甚至是貓特有的特征,這些特征豹子或者老虎沒有。

深度學習為什麼最近這麼火,其中一個重要的原因就是不需要(太多)提取feature。

從機器學習的使用者來說,我們以前做的大部分事情是feature engineering,然後調一些參數,一般是為了防止過拟合。而有了深度學習之後,我們似乎什麼也不用幹!給它标注足夠多的訓練資料就行了。

具體的應用比如語音識别,圖像識别,自然語言處理,這是比較成熟的一些領域。在一些其它領域,比如殺毒,天氣預測。隻要需要用機器模組化,特征比較難以描述,而且又有足夠多标注資料的地方都可以試一試深度學習。

深藍的主要技術有兩個:alpha-beta搜尋和估值模型。搜尋,大家應該都明白,機器學習就是更加領域專家(國際象棋大師)提取的特征(比如棋子的價值,位置的作用,棋子的保護和威脅關系等等),然後建立一個複雜的模型來判斷局面(不太清楚是否用了機器學習)。

而alphago的核心技術是:mcts搜尋和cnn神經網絡。cnn使得機器可以學習人類的“棋感”,進而在開局和中局不落下風,然後殘局憑借強大的計算能力戰勝人類。

因為深度神經網絡非常火,大家可能覺得它是alphago能赢的關鍵,其實我覺得不是這樣。

根據tian yuandong(田淵棟)和alphago的論文,如果不做任何搜尋,隻是根據“棋感”(其實就是估值函數),cnn最好能達到kgs 3d的水準,我估計也就業餘1段的水準。而mcts算法在沒有value network的情況下在9 x 9的棋盤上能戰勝人類高手,其實這也間接印證了alphago在殘局的實力是搜尋(計算)起重要作用。原來基于搜尋的軟體在開局和中局就崩盤或者虧太多了,是以就不能展現搜尋的優勢了。另外alphago使用了value network,這保證即使搜尋有一些小問題,從人類學來的棋感也能保證不至于偏差太大。

alphago的特點是:開局和中局依靠人類的棋盤學習棋感(可以了解為背棋盤,不過比死記硬背好一點,有一定的泛化能力),然後殘局的計算能力碾壓人類,就好像以前的李昌鎬,前面看不出什麼好來,但官子你就是下不過他,沒辦法,不服不行。

之前我們都太多關注alphago的神經網絡部分,其實它赢棋的關鍵可能在于殘局的計算上。我們沒有想到。

作為對人工智能感興趣的工程師,我既感到高興又不免有些傷感。

高興是因為我們可以“創造”出比我們自己“聰明”的機器,傷感就像教拳擊的師傅看到徒弟的水準已然超過自己,不免有“老了,不中用了”的感歎。但這是大勢所趨,不可避免,人工智能會在很多領域超過人類。

這是計算機用時的政策問題,因為根據前面的分析,後面的殘局才是alphago赢棋的關鍵,是以它把更多的時間放在殘局是合理的政策。

從數學上來講,圍棋有個最優的走法,也就是用mini-max搜尋到遊戲結束時的一條最優路徑(也許有多條,但至少有一條),然後就能知道最優的情況下黑棋勝白棋多少目。

我認為alphago離最優解其實還是差得老遠的,尤其是開局和中局。其實這也間接的說明人類在開局上其實也離最優解差得太遠。人類幾千年也下不了多少盤棋(而且水準越差的人的棋對整個人類圍棋沒有太大幫助)。我們認為一個開局是否好,隻能根據水準相似的高手下這個布局的勝率來推測它的好壞。但如果我們在最後50步的時候誤差就很大,那麼往前傳播時積累的誤差就更大了,我們可能經常忽略了一個看起來不好的走法,而這個走法可能就是“支援”這個開局的關鍵。

當然alphago的殘局比人厲害,那麼就可以通過自己對弈來學習,然後往前傳播誤差。但是由于這個問題本質是np的,即使它用了mcts的方法來避免“明顯不好”的走法。但是由于圍棋的複雜性,可能某個“看起來不好”的走法可能恰恰是一個關鍵的勝負手呢?另外根據之前的分析,即使每步都能99%的準确,那麼往前推100步準确的可能性也基本是0了。

是以如果人類不能解決np問題,不能提出計算能力超過圖靈機的計算模型,那麼人類制造的機器也是不太可能解決這個問題的(當然這隻是我的直覺,不知道能不能數學上證明)。

不過即使這樣,能制造和人類一樣,雖然在質上不能超越人類,但在量上能超越人類的機器也是很有意義的。

alphago是通過人類高手的對局作為訓練資料來訓練的,也就是給定一個局面,用人類高手的下一步棋做完這個局面的最優走法。通過大量的這樣的資料,使用cnn自動學習出類似人類的”棋感“。當然雖然說cnn不需要太多的feature,其實alphago也是用了一些圍棋的知識的,比如征子。我雖然比較業餘,也知道征子能否成功要看那六線上是否有對手的接應,另外更棋的高低也有關系,即使有接應,如果棋太低,可能也能征子成功,這個就要計算了。

另外,alphago也通過自己和自己對弈的強化學習來改進它”棋感“。我個人覺得為什麼要強化學習的原因可能是:之前那些棋譜學習出來的是很多人的”棋感“,通過強化學習,alphago能選擇更适合自己的“棋感”。

這樣的”棋感“更能适應它的後階段的計算能力。就好像如果我下棋計算能力不行,我就走一些比較穩的開局。我計算力超強,我就和你搏殺,走複雜的變化。

alphago一晚上的學習大概能達到什麼樣的效果?

這個很難說,我個人覺得他們應該不會再訓練新的模型,因為即使是深度神經網絡,調參也是很tricky的事情。而且他們現在領先,應該不會冒險更新模型。

alphago本身的技術是mcts和cnn,mcts其實是屬于強化學習這個領域的。

深度學習可以用在很多領域,前面說過了,隻要這個領域需要建構一個模型來預測,而且有大量标注的訓練資料。

強化學習是非常關鍵,我覺得強化學習才是人類社會學習的過程,通過行為改變世界,然後從回報中學習。雖然人類也有一些監督學習,比如學校的教育,把前人的結論作為訓練資料。但大部分的創新(擷取新知識或者修正舊知識)都是靠強化學習。之前學校學到的可以認為是先驗知識,但還是要自己的行為和嘗試。紙上得來終覺淺,絕知此事要躬行。

比如我們要讓機器人在火星生存,火星的環境我們是不太清楚的,隻能根據地球的資料訓練一個基本的先驗的模型。到了火星之後機器人就必須能通過強化學習來學習新的知識來适應新的環境。

本文作者:吳德新

繼續閱讀