- 那些比答案更重要的好問題
- 湛廬文化
- 5198字
- 2020-06-24 16:47:37
機器智能躍遷的三大要素
機器智能的發展與三大要素有關:第一是認知能力,第二是學習能力,第三是處理不確定性的能力。
認知能力即對周圍環境,包括人、物及其關系的理解能力——不只是看到,還要能夠理解這里正在發生什么和未來可能會發生什么。不過,擁有認知能力不等于擁有學習能力。也許機器完全能夠處理眼前的狀況,但它能夠自己學習與提高嗎?不一定。機器學習的未來發展有三種可能:第一種可能是,機器繼續在人的幫助下學習,我們通過標注一些結果、內容來訓練它們;第二種可能是,我們只通過視頻來展現動作,讓機器自己學習;第三種可能是,機器從自身生成的樣本、從自然界,或者從人類為其構造的例子中學習,并自己根據規則產生大量的例子來練習。這三類學習方法可以組合使用,來訓練包含感知、認知和行為能力的機器智能。
處理不確定性的能力則是人類最大的一個優勢。比如,你在開車時看到前方有如下場景:左邊是一個騎自行車的人,右邊是一個小孩,路上有一個球。此時,你需要判斷小孩會不會去撿球,如果去撿球的話,汽車該如何避讓,而左邊騎自行車的人會不會看到,這些都屬于不確定性。現在的自動駕駛軟件都是根據感知輸入做出確定的判斷和行動規劃的,并不能處理這些不確定性。但未來的機器需要并且能夠對這些進行處理。盡管輸入的數據中有很多是有噪聲的,但我們可以用概率計算的方式來解決。
對于這些被稱為自主系統的智能機器,特別是自動駕駛系統和機器人來說,有些場景是有危害的,而且這些場景中都包含大量的可變因素和感知過程的不確定性。既然不能在真實場景中做實驗,那就要在模擬器中做。整個訓練和測試過程需要大量的計算與存儲資源,這也是網絡和云計算帶來的便利。
機器是否能做到理解?
機器的認知能力在不斷增強,現在它們已經能夠識別視覺數據里的一些東西,例如人和物體。那么機器能否理解此時發生了什么?讓我們來看一個例子(見圖1-1),圖中的英文字幕描述了其所在的視頻場景中正在發生什么。這個英文字幕并不是人寫的,而是機器自動生成的,由算法產生。圖中顯示的只是一條挑選出來的最佳描述,其實算法看到了更多的信息,包括時間維度和視頻里的空間維度,因此可以給出更多的信息。我們看到,算法挑選出來的這條字幕已經和場景非常相關了。比如,當只看到一個人的時候,它會描述成“一個人在講話”;當看到PPT的時候,它會描述成“一個人在演講”;當看到下面觀眾的時候,就轉而描述成“一個人在一群人面前做一個報告”。所以,機器理解環境場景里發生了什么的能力正在提高,而這項進展不過是在過去兩三年內實現的。

圖1-1 機器如何理解環境
我們可以預想到在未來,人類會讓一臺機器去了解某個環境里正在發生什么,這些人之間有怎樣的關系,他們想干什么,或者說他們有什么意圖。當機器對這些問題都有比較好的把握時,就意味著機器的認知能力已經達到了可用的水平。
關于機器的認知能力,比較關鍵的一點是它有一個完整的框架(見圖1-2)。圖中左邊是多模態信息的輸入,右邊是認知結果的輸出,底部是知識的輸入。在多模態輸入這一層,視頻、音頻和語言文字等都是機器從現場環境中觀察到的,屬于感知層的輸入信息。視覺識別、語音識別和文字識別的作用是較為真實地將當前場景數字化,使其成為語義信息。但這不包括歷史信息和機器觀察不到的知識。因此,為了讓機器能夠理解環境,我們需要給它連上知識庫和歷史信息,把它看不到的東西加進來。這樣機器才能夠從多模態的輸入中融合已經看到過的信息和知識,并加以分析,最終達成對場景的理解。多模態的信息融合和知識圖譜整合的框架對于機器認知的發展是非常關鍵的。關于其中使用的各種算法的選擇和發展,許多人類算法工程師發揮了巨大的作用。

圖1-2 多模態視頻理解框架
機器的認知能力可以支持哪些功能呢?第一點,它可以直接把視頻內容(原來是像素和顏色)轉化成文字,代表語義,這樣就可以進行搜索了。第二點更為重要,它能進一步生成新的語義網絡的關系,支持視頻內容的問答。例如,你可以問它“這里面有沒有人在房間里做報告的部分”,它會幫你找出來。最重要的第三點,就是視覺關系理解。機器可以在不同的視頻之間尋找相關性,具有查找相似性的能力,并且可能產生記憶。
從上面的討論可知,知識圖譜對于機器智能的發展非常重要。一方面,我們可以給機器輸入固定知識,例如常識和穩定的領域知識。另一方面,機器也可以自己構建知識庫。機器人的深度攝像頭可以看到顏色,也可以看到深度。它在一個環境里繞一圈,就能給這個環境建立一個三維的場景地圖,同時也可以利用顏色數據識別出場景中的人、物體、沙發、墻壁等,從而建立起這個環境的空間知識庫,再加上隨時間推移記錄下來的人物之間的運動和交互關系,就構成了這個環境的動態知識庫。如果未來人們生活的每個房間、每個場所都有這樣一個動態知識庫存在,那就會形成一個高度簡潔、可搜索的數字化世界。這個世界與現實世界的關系不是一種在像素級別的一一對應——不是說這兒有一棵樹,數字世界里就有一棵所有細節都存在的樹,而是一種對現實世界高度抽象的描述。
接下來的一個問題是:如此大量的知識要怎么存放呢?想一想,人類的大腦能存儲多少知識?其實不是很多。例如,我的腦中有一些與IT相關的知識,卻放不下多少金融知識和醫學知識。但這對機器而言是可能實現的。全部的人類知識可以分成兩大類:第一類是穩定知識,包含通用知識和領域知識。通用知識是人們從小學開始學習的不變的知識,領域知識則是從大學開始學習的分專業的知識。這些都是比較固定的知識,可以自上而下地構建知識圖譜。第二類是動態知識。這類知識不是在常規學習過程中學到的,而是隨著整個社會場景發展,甚至是隨著人的不同而改變的。想象這樣一個場景:當一個機器人或者一輛無人駕駛車在為客戶提供服務時,根據它服務的個人或家庭的不同,它會習得截然不同的知識。這些就屬于動態知識。動態知識還包括群體性知識。40多歲的人的知識范圍,與十幾歲的人完全不一樣。不同地域的人,他們的知識范圍也是不一樣的。動態知識是自下向上動態構建的,并且在不停地更新。
機器可以涵蓋全部這些知識,但在信息世界中,這些知識不可能都存放在終端內。一是有一些在云端,有一些在終端。因為在服務具體個體的時候,考慮到網絡延遲的影響,將所有知識都存放在云端的話,響應度是不夠的。這時,我們就要充分利用通信和網絡技術發展帶來的好處了。你可能聽說過邊緣計算,它指的是在5G時代可以很好地利用接入網的邊緣加入計算和存儲的功能。于是我們可以把知識按照訪問需要分布式存放在云端-邊緣-終端內。云端存放全部穩定知識,終端和邊緣存放部分穩定知識與全部動態知識。那么我們要如何在終端、邊緣和云端存放知識?以下三個例子會幫助你理解。
第一個例子與自然語言交互相關。你家里可能會有一臺小的智能音箱,它通過語音交互幫你提供一些信息。這其實是調用了云端的服務來實現的。有時你會感覺它的響應速度有些慢,這是因為碰上了網絡慢的情況。處理請求要從家里的小音箱到達云端的服務器(通常有幾十、數百公里的距離),網絡速度慢的時候,整個交互過程當然會變慢。如果將你的服務部署在距離你只有幾公里遠的邊緣服務器上,從而進行快速處理的話,那么響應速度會大幅提升。第二個例子與地域性相關。通過邊緣計算,我們可以創建與各地方言相關的語音服務和知識庫。第三個例子與場景相關。就拿基于語音的生活服務來說,在北京提供服務的知識庫和四川、廣東的肯定不一樣。比如大家都說要吃辣一點的菜,然而每個人所指的辣度是不一樣的。這就是與地域性相關、與場景相關的知識,最適合用邊緣計算做服務,具體方式是增強與地域人群的相關性,也可以增強服務的適應性。
機器學習的方式
目前,機器學習的常用方式有四種。第一種是無監督學習,需要機器自己去發現數據之間的關系,主要用于聚類。第二種是監督學習,需要有人告訴它這個是什么,這類是什么。打上標簽以后,機器可以通過訓練把這個中間的識別過程用模型表示出來。第三種是自監督,關聯學習。機器不需要人教,而是通過觀察幾種對象的相關性、前后的因果關系,自動生成一些關聯。比如說打方向盤時,車輪就會轉,前置攝像頭看到的景象都會偏移。關聯學習就會發現其中的關系。第四種是強化學習,機器會通過跟環境交互,觀察按照當前模型決策產生的一些影響,來優化動作序列或者決策序列。在機器學習過程中,它們會根據數據特點和應用需求來具體問題具體分析,融合使用這幾種機器學習的方式。
除了上述學習方式之外,機器學習未來發展的潛力還在于模仿學習和生成式學習。
模仿學習是指不需要人去標注數據,也不需要人去寫執行算法,機器能夠直接從人的示范中學習。人只要通過示教(直接拖動或者通過視頻),做出動作讓它看,機器就能自己學習。
生成式學習是指機器從自己生成的樣本中學習。機器從自然界中和從人給它構造的例子中獲得的數據量不夠,但它可以自己根據規則產生大量的例子來練習。機器自己會產生大量真實場景中很少出現的例子。典型的例子是自動駕駛領域,有些場景是有危害的,不可能在真實場景中去實踐,那就要在模擬器中做。我們可以在模擬器中模擬極端的場景,還可以在模擬器中反復訓練機器。同時,有了實時通信的無線網絡,就可以把多個智能機器放在一起,練習它們之間的協同交互。例如,A機器人要把物品遞給B機器人,這個過程可以通過編程實現,但是編寫的程序泛化能力和適應性都不強。更高級的方法是,通過設置基本的學習方法和獎勵規則讓機器人在模擬器中學習:A把一個東西抓起來遞給B,配合好了就能接住,配合不好東西就會掉落。經過多次練習,它們就知道如何做到完美配合。然后,再把算法轉移到真實環境里測試。
圖1-3中的例子展示了如何通過人的簡單示范,讓機器人學會做一件比較復雜的事情。左圖的研究員通過拖拉示范,告訴機器人怎樣把一個杯子里的球倒進地上的碗里。之后,這個機器人通過在模擬器里反復訓練,學會了去做這件事情的方法。更有趣的是,這不是一個固定動作。人在教它的時候,地上的碗是放在固定位置上的。而在機器人練習的過程中,碗的位置是可以改變的,而且位置的改變不是一個固定變量。機器人要自己調整適應,找到將球倒進去的方法。即使機器人已經根據現在的位置規劃好了運動軌跡并啟動執行,我們臨時改變底下小碗的位置,它也能夠及時調整自己運動的軌跡。

圖1-3 機器人如何模仿學習
用手工編程做出這套控制算法還是很困難的,并且很難考慮到多種場景。但我們可以讓機器人通過模仿學習加上強化學習,在模擬器里反復訓練,這樣它們就可以學會這項技能。
處理不確定性
人類是最擅長處理不確定性的。比如駕駛員在復雜路況下開車時,要不停地處理不確定性。例如前面行駛中的車會不會減速?騎自行車的人會不會轉彎?這些是不確定的。現在的計算機系統都是按照確定性在做事,處理人工生成的數據,執行確定的工作流程。但未來的機器要在真實的物理世界中和人、物交互工作,所以未來的機器智能必須能夠處理不確定性。
未來的機器智能必須能夠處理不確定性。
從計算的角度,我們可以用概率計算的方式來處理不確定性。概率計算的關鍵在于預測與調整。一個簡單的思路是,先根據目標場景的已有數據樣本產生一個概率模型,并用它生成一個預測,然后通過觀察這個預測與實際發生場景之間的差異去調整概率模型,使之與實際發生的場景相符。這種概率計算的方式計算量很大,以前的機器運行速度很慢,基本沒法實現。現在,機器的整體計算能力大幅提高,還可以設計專門的加速硬件,概率計算的方式就變得可行了。
從互聯的角度,我們可以通過變未知為已知來處理不確定性。機器之間相互連接的方式有很多種,從有線連接到無線連接。有線連接可分為多個級別(芯片內部、芯片之間、機器之間),利用不同的介質與協議實現不同的數據傳輸帶寬和延遲,讓機器之間進行快速可靠的通信。無線連接可以使機器之間跨越空間距離、跨越物理傳輸介質去傳遞信號,帶來更大的想象空間。有了這些連接之后,人與機器之間、機器與機器之間可以實現無縫通信,各取所長地處理信息,把原本對于個體來說不確定的情況變成確定的。
圖1-4展示了一個非常好的例子。右邊的4個視頻是普通的十字路口攝像頭拍攝的視頻。以前,這些攝像頭被用來檢查有沒有車闖紅燈、有沒有套牌車等情況。現在,我們可以利用通信技術同步處理4個攝像頭的視頻數據,檢測車輛、行人及其運動軌跡,從而將這個場景實時重建成左邊這個虛擬的、完整的全方位視圖,并且實時追蹤各個車輛、行人的運行。然后,利用短距離的實時無線通信技術,可以把這些信息發送給進入這個路口的車輛。這樣,每輛車都會知道其他方向有什么車可能與它發生碰撞,即使它被公交車、大卡車擋住視線也能看到,因為智能的機器給了它一個“上帝視角”,還給出了預測,這是人類無法做到的。

圖1-4 智能交通路口
一個典型的通過計算和連接把未知、不確定性轉變為已知、確定性的例子,讓我們看到了“技術+網絡”可以帶來的力量。