1. 程式人生 > >【轉】AlphaGo與人工智能

【轉】AlphaGo與人工智能

aec -o 隔離 大於 革命 image 中國人 其中 mach

AlphaGo與人工智能

技術分享圖片

在之前的一篇文章中我指出,自動駕駛所需要的“視覺識別能力”和“常識判斷能力”,對於機器來說是非常困難的問題。至今沒有任何機器可以在視覺方面達到驢的水平,更不要說和人比。可是最近Google的AlphaGo戰勝了圍棋世界冠軍,挺鬧騰的,以至於對AI的誤解又加深了。

本來玩個遊戲而已,恁要吹成是“歷史性的人機大戰”,說得好像是機器挑戰了人類的智能,傷了人類的自尊似的。這整個項目打著一個相當高大上的招牌,叫做“Deep Mind”。當然,其中的技術也有一些嚇人的名字,什麽“神經網絡”啊,“深度學習”啊……

聽到這些,總有一知半解的人,根據科幻電影的情節開始展望,這樣厲害的技術,應該可以用來做更加“智能”的事情,然後就開始對“人類的未來”作出一些猜想,比如自動車就要實現,人的工作很快都要被機器取代,甚至Skynet就要控制人類,雲雲。

我只想在這裏給這些人提個醒:還是別做科幻夢了,回到現實吧。

棋類是相對容易的AI問題

一個常見的外行想法,是以為AlphaGo真的具有“人類智能”,所以Google利用同樣的技術,應該可以實現自動車。這些人不但大大的高估了所謂“AI”的能力,而且他們不明白,不同的“AI問題”的難度,其實有著天壤之別。

圍棋是簡單的,世界是復雜的。機器視覺和自動車,難度比圍棋要大許多倍,根本不在一個量級。要達到準確的視覺判斷能力,機器必須擁有真正的認知能力和常識,這並不是AlphaGo所用的樹搜索和神經網絡,就可以解決的。由於需要以極高的速度處理“模擬信號”,這根本就不是人們常用的“數字計算機”可以解決的問題。也就是說,不是寫代碼就可以搞定的。

很早以前,人工智能專家們就發現一個很有趣的現象,是這樣:

  • 對於人來說很難,很煩的事情(復雜的計算,下棋,推理……),對於計算機來說,其實算是相對容易的事情。
  • 對於人來說很容易的事情(認人,走路,開車,打球……),對於計算機來說,卻非常困難。
  • 計算機不能應付復雜的環境,只能在相對完美的環境下工作,需要精確的,離散的輸入。
  • 人對環境的適應能力很高,擅長於處理模糊的,連續的,不完美的數據。

從以上幾點你可以看出,棋類活動正好符合了計算機的特點,因為它總是處於一種隔離的,完美的環境,具有離散的,精確的,有限的輸入。棋盤上就那麽幾十,幾百個點,不是隨便放在哪裏都可以的。一人走一步,輪流著走,不能亂來。整個棋盤的信息是完全可見的,沒有隱藏和缺損的信息。棋局的“解空間”雖然很大,卻非常規整,有規律可循。如果完全不靠經驗和技巧的話,圍棋的第一步可以有361種情況,第二步有360種情況,……

這對機器是非常有利的情況,因為計算機可以有計劃有步驟,兢兢業業的把各種可能出現的情況算出來,一直到許多步以後,然後從中選擇最有優勢的走法。所以下棋歸根結底,就是一個“樹搜索”問題,只不過因為規模太大,需要加入一些優化。圍棋的解空間雖然大,卻是一個已知數,它最多有250150種情況。AlphaGo使用所謂“神經網絡”,就是為了在搜索的時候進行優化,盡早的排除不大可能取勝的情況,免得浪費計算的時間。

這種精確而死板的活動,就跟計算一個比較大的乘法算式(比如2463757 x 65389)的性質類似,只不過規模大很多。顯然,人做這類事情很繁,很累,容易出錯,計算機對此卻任勞任怨,因為它本來就是個機器。當年“深藍”戰勝國際象棋世界冠軍的時候,我就已經預測到,計算機成為圍棋世界冠軍是遲早的事,所以沒必要玩這些虐待自己腦子的遊戲了。可惜的是,挺多人仍然把精通棋藝作為一種榮耀(因為“琴棋書畫劍”嘛)。很多中國人認為,中國人下圍棋總是輸給韓國人,是一種恥辱。現在看來這是多麽可笑的事情,這就像心算乘法不如韓國人快,就覺得是恥辱一樣 :)

認知是真正困難的AI問題

現在來對比一下人們生活中的瑣事,就說倒水端茶吧。

技術分享圖片

讓一個機器來給你倒水,有多難呢?意想不到的難!看看這個場景,如果你的電腦配備有攝像頭,那麽它怎麽知道茶壺在哪裏呢?要知道,茶壺的材料,顏色,形狀,和角度,可以有幾乎無窮多的變化。甚至有些茶壺跟哈哈鏡一樣,會把旁邊的物體的形狀都扭曲反射出來。桌上的物品附近都有各種反光和陰影,不同材料的反光特性還不一樣,這些都會大幅度的影響機器對物品的識別。

為了識別物體,機器需要常識,它的頭腦裏必須有概念,必須知道什麽樣的東西才能叫做“茶壺”和“茶杯”。不要小看這一步的難度,這意味著機器必須理解基本的“拓撲結構”,什麽叫做“連續的平面”,什麽叫做“洞”,什麽是“凹”和“凸”,什麽是“裏”和“外”…… 另外,這機器必須能夠分辨物體和陰影。它必須知道水是什麽,水有什麽樣的運動特性,什麽叫做“流動”。它必須知道“水往低處流”,然後它又必須知道什麽叫“低”和“高”…… 它必須知道茶杯為什麽可以盛水,茶壺的嘴在哪裏,把手在哪裏,怎樣才能拿起茶壺。如果一眼沒有看見茶壺的把手,那它在哪裏?茶壺的哪一面是“上面”,要怎樣才可以把水從茶壺的嘴裏倒出來,而不是從蓋子上面潑出來?什麽是裂掉的茶杯,它為什麽會漏水,什麽是缺口的茶杯,它為什麽仍然可以盛水而不漏?幹凈的茶杯是什麽樣子的,什麽是臟的茶杯,什麽是茶垢,為什麽茶垢不算是臟東西?如何控制水的流速和落點,什麽叫做“水濺出來了”,要怎麽倒水才不會濺出來?……

你也許沒有想到,倒茶這麽簡單的事情,需要用到如此多的常識。所有這些變數加在一起,其實遠遠的大於圍棋棋局的數量,人卻可以不費力的完成。這能力,真是應該讓人自己都嚇一跳,然而人卻對此不以為然,稱之為“瑣事”!因為其他人都可以做這樣的事情,甚至猴子都可以,怎麽能顯得出我很了不起呢?人的自尊和虛榮,再一次的蒙蔽了他自己。他沒有意識到,這其實是非常寶貴,讓機器難以匹敵的能力。他說:“機器經過大量的學習,總有一天會做到的。看我們有神經網絡呢,還有深度學習!”

機器學習是什麽

有些人喜歡拿“機器學習”或者“深度學習”來嚇唬人,以為出現了“學習”兩個字,就可以化腐朽為神奇。而其實所謂機器學習,跟人類的學習,完全是兩回事。機器的“學習能力”,並沒有比石頭高出很多,因為機器學習說白了,只不過是通過大量的數據,統計擬合出某些函數的參數。

技術分享圖片

比如,你采集到一些二維數據點。你猜測它們符合一個簡單的函數 y = ax3 + bx2 + cx + d,但不知道a, b, c和d該是多少。於是你就利用所謂“機器學習”(也就是數學統計),推斷出參數a, b, c和d的值,使得采集到的數據盡可能的靠近這函數的曲線。可是這函數是怎麽來的呢?終究還是人想出來的。機器無論如何也跳不出y = ax3 + bx2 + cx + d這個框子。如果數據不符合這個範式,還是只有靠人,才能找到更加符合數據特性的函數。

所謂神經網絡,其實也是一個函數,它在本質上跟y = ax3 + bx2 + cx + d並沒有不同,只不過輸入的參數多一些,邏輯復雜一些。“神經網絡”跟神經,其實完全沒有關系,卻偏喜歡說是受到了神經元的啟發而來的。神經網絡是一個非常聰明的廣告詞,它不知道迷惑了多少人。因為有“神經”兩個字在裏面,很多人以為它會讓機器具有智能,而其實這些就是統計學家們斯通見慣的事情:擬合一個函數。你可以擬合出很好的函數,然而這跟智能沒什麽關系。

AlphaGo並不是人工智能歷史性的突破

這次AlphaGo戰勝了圍棋冠軍,跟之前IBM的“深藍”電腦戰勝國際象棋世界冠軍,意義其實差不多。能夠寫出程序,在這些事情上打敗世界冠軍,的確是一個進步,它肯定會對某些特定的應用帶來改善。然而,這並不說明AI取得了革命性的進步,更不能表明電腦具有了真正的,通用的智能。恰恰相反,電腦能夠在棋類遊戲中戰勝人類,正好說明下棋這種活動,其實並不需要很多的智能。從事棋類活動的能力,並不足以衡量人的智力。

著名的認知科學家Douglas Hofstadter(《GEB》的作者),早就指出AI領域的那些熱門話題,比如電腦下棋,跟真正意義上的人類智能,幾乎完全不搭邊。絕大部分人其實不明白思考和智能到底是什麽。大部分所謂AI專家,對人腦的工作原理所知甚少,甚至完全不關心。

AlphaGo所用的技術,也許能夠用於其它同類的遊戲,然而它並不能作為解決現實問題的通用方法。特別是,這種技術不可能對自動車的發展帶來突破。自動車如果只比開車技術很差的人強一點,是不可接受的。它必須要近乎完美的工作,才有可能被人接受,然而這就要求它必須具有人類級別的視覺認知能力。比如,它必須能夠察覺到前面車上綁了個家具,沒綁穩,快要掉下來了,趕快換車道,超過它。可惜的是,自動車的“眼睛”裏看到的,只是一個個的立方塊,它幾乎完全不理解身邊到底發生著什麽,它只是在跟隨和避讓一些線條和方塊…… 我們多希望馬路都是遊戲一樣簡單,清晰,完美,沒有意外的,可惜它不是那樣的。每一個細節都可能關系到人的生死,這就是現實世界。

技術分享圖片

為AlphaGo熱血沸騰的人們,別再沈迷於自動車和Skynet之類的幻想了。看清AI和“神經網絡”的實質,用它們來做點有用的東西就可以,沒必要對實現“人類智能”抱太大的希望。

【轉】AlphaGo與人工智能