很多人以為人工智能就快實現了,往往是因為他們混淆了“識別”和“理解”?,F在所謂的“人工智能”都是在做識別:語音識別,圖像識別,而真正的智能是需要理解能力的。我們離理解有多遠呢?恐怕真正的工作根本就沒開始。 很長時間以來,我都在思索理解與識別的差別。理解與識別是很不一樣的,卻總是被人混為一談。我深刻的明白理解的重要性,可是我發(fā)現很少有其他人知道“理解”是什么。AI 領域因為混淆了識別和理解,一直以來處于混沌之中。 最近因為圖像識別等領域有了比較大的進展,人們對 AI 產生了很多科幻似的,盲目的信心,出現了自 1980 年代以來最大的一次“AI 熱”。很多人以為 AI 真的要實現了,被各大公司鼓吹的“黑科技”沖昏了頭腦,卻看不到現有的 AI 方法與人類智能之間的巨大鴻溝。所以下面我想介紹一下我所領悟到的機器和人類在視覺能力方面的差距,希望一些人看到之后,能夠再次擁有冷靜的頭腦。 在之前一篇文章《人工智能的局限性》中,我已經闡述了對自然語言處理領域誤區(qū)的看法。當時因為對計算機視覺方面了解不多,所以沒有包含視覺方面的內容。熟悉了機器視覺的各種做法之后,我想在這篇文章里詳述一下視覺方面的內容。這兩篇文章加在一起,可以說概括了我對 AI 語言和視覺兩個方面的領悟。 “圖像識別”和“視覺理解”的差別對于視覺,AI 領域混淆了“圖像識別”和“視覺理解”?,F在熱門的所謂 “AI” 都是“圖像識別”,而動物的視覺系統具有強大的“視覺理解”。視覺理解和圖像識別有著本質的不同。 深度學習視覺模型(CNN一類的)只是從大量數據擬合出從“像素=>名字”的函數。它也許能從一堆像素猜出圖中物體的“名字”,但它卻不知道那個物體“是什么”,無法對物體進行操作。注意我是特意使用了“猜”這個字,因為它真的是在猜,而不像人一樣準確的知道。 “圖像識別”跟“語音識別”處于同樣的級別,停留在語法(字面)層面,而沒有接觸到“語義”。語音識別是“語音=>文字”的轉換,而圖像識別則是“圖像=>文字”的轉換。兩者都輸出文字,而“文字”跟“理解”處于兩個不同的層面。文字是表面的符號,你得理解了它才會有意義。 怎樣才算是“理解了物體”呢?至少,你得知道它是什么形狀的,有哪些組成部分,各部分的位置和邊界在哪里,大概是什么材料做成的,有什么性質。這樣你才能有效的對它采取行動,達到需要的效果。否則這個物體只是一個方框上面加個標簽,不能精確地進行判斷和操作。 想想面對各種日常事物的時候,你的腦子里出現的是它們的名字嗎?比如你拿起刀準備切水果,旁邊沒有人跟你說話,你的腦子里出現了“刀”這個字嗎?一般是沒有的。你的腦子里出現的不是名字,而是“常識”。常識不是文字,而是一種抽象而具體的數據。 你知道這是一把刀,可是你的頭腦提取的不是“刀”這個字,而是刀“是什么”。你的視覺系統告訴你它的結構是什么樣的。你知道它是金屬做的,你看到刀尖,刀刃,刀把,它也許是折疊的。經驗告訴你,刀刃是鋒利的可以切東西的部分,碰到可能會受傷,刀把是可以拿的地方。如果刀是折起來的,你得先把它翻開,那么你從哪一頭動手才能把它翻開,它的軸在哪里? 你順利拿起刀,開始切水果??墒悄愕念^腦里仍然沒有出現“刀”這個字,也沒有“刀刃”,“刀把”之類的詞。在切水果的同時,你大腦的“語言中心”可能在哼一首最近喜歡的歌詞,它跟刀沒有任何關系。語言只是與其他人溝通的時候需要的工具,自己做事的時候我們并不需要語言。完成切水果的動作,你需要的是由視覺產生的對物體結構的理解,而不是語言。 你不需要知道一個物品叫什么名字就能正確使用它。同樣的,光是知道一個物品的名字,并不能幫助你使用它??吹揭粋€物體,如果腦子里首先出現的是它的名字,那么你肯定是很愚鈍的人,無法料理自己的生活?,F在的“機器視覺”基本就是那樣的。機器也許能得出圖片上物體的名字,卻不知道它是什么,無法操作它。 試想一下,一個不能理解物體結構的機器人,它只會使用圖像識別技術,在你的頭上識別出一個個的區(qū)域,標注為“額頭”,“頭發(fā)”,“耳朵”…… 你敢讓它給你理發(fā)嗎? 這就是我所謂的“視覺理解”與“圖像識別”的差別。你會意識到,這種差別是巨大的。 視覺識別不能缺少理解如果我們降低標準,只要求識別出物體的名字,那么以像素為基礎的圖像識別,比如卷積神經網絡(CNN),也是沒法像人一樣準確識別物體的。人識別物體并不是像神經網絡那樣的“拍照,識別”兩節(jié)拍動作,而是一個動態(tài)的,連續(xù)的過程:觀察,理解,觀察,理解,觀察,理解…… 感官接受信息,中間穿插著理解,理解反過來又控制著觀察的方向和順序。理解穿插在了識別物體的過程中,“觀察/理解”成為不可分割的整體。人看到物體的一部分,理解了那是什么,然后繼續(xù)觀察它周圍是什么,反復這個過程,最后才判斷出物體是什么。機器在識別的過程中沒有理解的成分存在,這就是為什么機器在圖像識別能力上無法與人類匹敵。 這個“觀察/理解”的過程發(fā)生的如此之快,眨眼間就完成了,以至于很多人都沒察覺到其中“理解成分”的存在。所以我們現在放慢這個過程,來一個慢鏡頭特寫,看看到底發(fā)生了什么。假設你從來沒見過下面這個東西,你知道它是什么嗎? 一個從沒見過這東西的人,也會知道這是個“車”。為什么呢?因為它有輪子。為什么你知道那是輪子呢?仔細一想,因為它是圓的,中間有軸,所以好像能在地面上滾動。為什么你知道那是“軸”呢?我就不繼續(xù)折騰你了,自己想一下吧。所有這些分析都是“視覺理解”所產生的,而這些理解依賴于你一生積累的經驗,也就是我所謂的“常識”。 其實為了識別這個東西,你并不需要分析這么多。你之所以做這些分析,是因為另一個人問你“你怎么知道的?” 人識別物體靠的是所謂“直覺”。一看到這個圖片,你的腦子里自然產生了一個 3D 模型。一瞬間之后,你意識到這個模型符合“車”的機械運動原理,因為你以前看見過汽車,火車,拖拉機…… 你的腦子里浮現出這東西可能的運動鏡頭,你仿佛看到它隨著輪子在動。你甚至看到其中一個輪子壓到巖石,隨著連桿抬了起來,而整個車仍然保持平衡,沒有反倒,所以這車也許能對付崎嶇的野外環(huán)境。 這里有一個容易忽視的要點,那就是輪子的軸必須和車體連在一起。如果輪子跟車體沒有連接,或者位置不對,看起來無法帶著車體一起運動,人都是知道的。這種輪軸與車身的連接關系,屬于一種叫“拓撲”(topology)的概念。 拓撲學是一門難度挺高的數學分支,但人似乎天生就理解某些淺顯的拓撲概念。實際上似乎高等動物都或多或少理解一些拓撲概念,它們一看就知道哪些東西是連在一起的,哪些是分開的。捕獵的動物都知道,獵物的尾巴是跟它們身體連在一起的,所以咬住它們的尾巴就能抓住它們。 拓撲學還有一個重要的概念,那就是“洞”。聰明一點的動物基本上都理解“洞”的概念。很顯然老鼠,兔子等穴居動物必須理解洞是什么。它們的天敵,貓科動物等,也理解洞是什么。如果我拿一個紙箱給我的貓玩,我在上面挖一個洞,等他鉆進去,他是不會進去的。我必須在上面挖兩個洞,他才會進去。為什么呢?因為他知道,要是箱子上面只有一個洞,要是他進去之后洞被堵上,他就出不來了! 機器如何才能理解洞這個概念呢?它如何理解“連續(xù)”? 總之,人看到物體,他看到的是一個 3D 模型,他理解其中的拓撲關系和幾何性質,所以一個人遇到前所未見的物體,他也能知道它大概是什么,推斷出如何使用它。理解使得人可以非常準確地識別物體。沒有理解能力的機器是做不到這一點的。 人的視覺系統與機器的差別人的眼睛與攝像頭有著本質的差異。眼睛的視網膜中央非常小的一塊區(qū)域叫做“fovea”,里面有密度非常高的感光細胞,而其它部分感光細胞少很多,是模糊的。可是眼睛是會轉動的,它被腦神經控制,敏捷地跟蹤著感興趣的部分:線條,平面,立體結構…… 人的視覺系統能夠精確地理解物體的形狀,理解拓撲,而且這些都是 3D 的。人腦看到的不是像素,而是一個 3D 拓撲模型。 眼睛觀察的順序,不是一行一行從上往下把每個“像素”都記下來,做成 6000x4000 像素的圖片,而是聚焦在重點上。它可以沿著直線,也可以沿著弧線觀察,可以轉著圈,也可以跳來跳去的。人腦通過自己的理解能力,控制著眼睛的運動,讓它去觀察所需要的重點。由于視網膜中央分辨率極高,所以人腦可以得到精度非常高的信息。然而由于不是每個地方都看的那么仔細,所以眼睛采集的信息量可能不大,人腦需要處理的信息也不會很多。 人的視覺系統能理解點,線,面的概念,理解物體的表面是連續(xù)的還是有洞,是凹陷的還是凸起的,分得清里和外,遠和近,上下左右…… 他能理解物體的表面是什么質地,如果用手去拿會有什么樣的反應。他能想象出物體的背面大概是什么樣子,他能在頭腦中旋轉或者扭曲物體的模型。如果物體中間有缺損,他甚至能猜出那位置之前什么樣子。 人的視覺系統比攝像頭有趣的多。很多人都看過“光學幻覺”(optical illusion)的圖片,它們從一個角度揭示了人的視覺系統背后在做什么。比如下圖本來是一個靜態(tài)的圖片,可是你會感覺有很多暗點在白線的交叉處,但如果你仔細看某一個交叉處,暗點卻又不見了。這個幻覺很經典,被叫做 Herman grid,在神經科學界被廣泛研究。稍后我還會提到這個東西。 本來是靜態(tài)圖片,你卻感覺它在轉。 本來上下兩塊東西是一樣的顏色,可是看起來下面的顏色卻要淺一些。如果你用手指擋住中間的高亮部分,就會發(fā)現上下兩塊的顏色其實是一樣的。 另一個類似的幻覺,是著名的“Abelson 棋盤幻覺”。圖中 A 和 B 兩個棋盤格子的顏色是一樣的,你卻覺得 A 是黑色,而 B 是白色。不信的話你可以用軟件把這兩塊格子從圖片上切下來,挨在一起對比一下。如果你好奇這是為什么,可以參考這篇文章。 在下圖里,你會覺得看見了一個黑色的倒三角形,可是其實它并不存在。 很多的光學幻覺都說明人的視覺系統不是簡單的攝像頭一樣的東西,它具有某些特殊功能。這些特殊功能和機制導致了這些幻覺。這使得人類視覺不同于機器,使得人能夠提取出物體的結構信息,而不是只看到像素。 提取物體的拓撲結構特征,這就是為什么人可以理解抽象畫,漫畫,玩具。雖然世界上沒有貓和老鼠長那個樣子,一個從來沒看過《貓和老鼠》動畫片的小孩,卻知道這是一只貓和一只老鼠,后面有個房子。你試試讓一個沒有拿《貓和老鼠》劇照訓練過的深度學習模型來識別這幅圖? 更加抽象的玩具,人也能識別出它們是哪些人物。頭和四肢都變成了方的,居然還是覺得很“像”。你不覺得這很神奇嗎? 人腦理解“拓撲”的概念,這使得人能夠不受具體像素干擾而正確處理各種物體。對拓撲結構的理解使得人對物體的識別非常準確,甚至可以在信息不完整,模糊,扭曲的情況下工作,在惡劣的天氣環(huán)境下,有反光,有影子的情況下也能識別物體。 說到反光,你有想過機器要如何才能識別出場景里有一面鏡子或者玻璃嗎?如果場景中有反光的物體,比如鏡子,平靜的水面,鍍鉻的物品,神經網絡(CNN)那種依靠像素濾鏡訓練出來的函數還會有用嗎?要知道它們看到的像素,可能有一大片是通過鏡面反射形成的,所以無法通過局部的紋理識別出這種情況來。 這是個現實的問題。自動車或者機器人要如何知道前面的路面上有積水或者結冰了?它們要如何知道從水面反射過來的鏡像不是真實的物體?比如,它們如何知道下圖里路面上的倒影不是真正的樹呢?要知道,倒影的像素紋理,跟真實的場景可能是非常相似的。 人是通過對光的理解,各種常識來識別鏡子,玻璃,地上的水和冰的存在。一個不理解光和水的性質的機器,它能察覺這些東西的存在嗎?靠像素分析能知道這些?要知道,這些東西在某些地方出現,可以是致命的危險。 很有趣的事情,理解光線的反射和折射,似乎已經固化到了每個動物的視覺系統里面。我觀察到這一點,是因為我的臥室和客廳之間的櫥柜門上有兩面大鏡子。我的貓在臥室里,能夠從鏡子里看見我在客廳拿著逗貓繩。他沖過來的時候卻不會撞到鏡子上面,而是出了臥室門立馬轉一個角度,沖向我的方向。我每次看到他敏捷的動作都會思考,他是如何知道鏡子的存在呢?他是如何知道鏡子里的貓就是他自己,而不是另一只貓? 人腦會構造事物的 3D 模型說了光,再來說影吧。畫過素描的人都知道,開頭勾勒出的輪廓是沒有立體感的,然后你往恰當的位置加一些陰影,就有了立體感。所以動物的視覺系統里存在對影子的分析處理,而且這種功能我們似乎從來沒需要學習,生下來就有?!傲Ⅲw視覺”是如此強烈的固化到了我們的頭腦里,一旦產生了立體感,你就很難再看見平面的像素。 靠著光和影的組合,人和動物能得到很多信息。比如上圖,我們不但看得出這是一個立體的雞蛋,而且能推斷出雞蛋下面是一個平面,可能是一張桌子,因為有陰影投在了上面。 神經網絡知道什么是影子嗎?它如何知道影子不是實際存在的物體呢?它能從影子得到有用的信息嗎? 神經網絡根本不知道影子是什么。早就有人發(fā)現,Tesla 基于圖像識別的 Autopilot 系統會被陰影所迷惑,以為路面上的樹影是一個障礙物,試圖避開它,卻差點撞上迎面來的車。我在很早的一篇文章已經談過這個問題。 再來一個關于繪畫的話題。學畫的初期,很多人都發(fā)現畫“透視”特別困難。所謂透視就是“近大遠小”。本來房子的幾堵墻都是長方形,是一樣高的,可是你得把遠的那一邊畫短一些,而且相關部分的比例都要畫對,就像照片上那樣,所以墻就成了梯形的。房頂,窗戶等,也全都得做相應的調整。你得這樣畫,看畫的人才會感覺是對的,不然就會感覺哪里不對勁,不真實。 這件事真的很難,大部分人(包括我)一輩子都沒學會畫透視。雖然拿起筆來量一下,我確實看到遠的那一邊要短一些,可是我的腦子似乎會“自動糾錯”,讓我認為它們都是一樣長的。所以要是光靠眼睛徒手作畫,我會把那些邊都畫成一樣長。我似乎永遠學不會畫畫! 畫透視是如此困難的事情,以至于 16 世紀的德國畫家丟勒為此設計了一種專門的設備。 你可能沒有想到,這個使得我們學畫困難的罪魁禍首,其實是人類視覺系統的一項重要功能,它幫助我們理解身邊的環(huán)境。雖然眼睛看到的物體是近大遠小,可是人腦會自動調整它們在你“頭腦里的長度”,所以你知道它們是一樣長的。 這也許就是為什么人能從近大遠小的光學成像還原出正確的 3D 模型。在你頭腦中的模型里面,房子的幾堵墻是一樣高的,就像它們在現實中的情況一樣。有了準確的 3D 模型,人才能正確地控制自己在房子周圍的運動。 這種導致我們學畫困難的“3D 自動糾錯”功能,似乎固化到了每個人,每個高等動物的視覺系統里。我們并不需要學習就有這種能力,它一直都在起作用。反倒是我們要想“關掉”這個功能的時候,需要付出非常多的努力! 為什么人想要畫出透視效果那么困難呢?因為一般人畫畫,都不是在畫他們頭上那兩只眼睛看到的東西,而是在畫他們的“心之眼”(mind’s eye)看到的東西——他們頭腦中的那個 3D 模型。這個 3D 模型是跟現實“同構”的,模型里房子的墻壁都是一樣高的,他們畫出來也是一樣高的,所以就畫錯了。只有經過專業(yè)訓練的畫家,才有能力關閉“心之眼”,直接畫出眼睛看到的東西。 我猜想,每一種高等動物的視覺系統都有類似的機制,使得它們從光學成像“重構”出與現實同構的 3D 模型。缺乏 3D 建模能力的機器,是無法準確理解看到的物體的。 現在很多自動駕駛車用激光雷達構造 3D 模型,可是相對于人類視覺形成的模型,真是太粗糙了。激光雷達靠主動發(fā)射激光,產生一個掃描后的“點云”,分辨率很低,只能形成一個粗糙的 3D 輪廓,無法識別物體,也無法理解它的結構。我們應該好好思考一下,為什么人僅靠被動接收光線就能構造出如此精密的 3D 模型,理解物體的結構,而且能精確地控制自己的動作來操作這些物體。 現在的深度學習模型都是基于像素的,沒有抽象能力,不能構造 3D 拓撲模型,甚至連位置關系都分不清楚。缺乏人類視覺系統的這種“結構理解”能力,可能就是為什么深度學習模型需要那么多的數據,那么多的計算,才勉強能得出物體的名字。而小孩子識別物體根本不需要那么多數據和計算,看一兩次就知道這東西是什么了。 人腦提取了物體的要素,所以很多信息都可以忽略了,所以人需要處理的數據量,可能比深度學習模型小很多。深度學習領域盲目地強調提高算力,制造出越來越大規(guī)模的計算芯片,GPU,TPU…… 可是大家想過人腦到底有多大計算能力嗎?它可能并不需要很多計算。 從上面的各種現象,我們也許已經看明白了,人類視覺系統是很神奇的?,F有的機器視覺研究并沒有理解人類視覺的這些能力是怎么實現的。在接下來的續(xù)集中我們會詳細的看清楚,AI 領域到底理解多少人類神經系統的構造。 |
|
來自: 昵稱65829145 > 《待分類》