閱讀971 返回首頁    go 阿裏雲 go 技術社區[雲棲]


機器學習先驅Thomas Dietterich:如何構建強健的人工智能


image001
俄勒岡州立大學教授、AAAI 前主席 Thomas G. Dietterich

7 月 22 - 23 日,在中國科學技術協會、中國科學院的指導下,由中國人工智能學會、阿裏巴巴集團 & 螞蟻金服主辦,CSDN、中國科學院自動化研究所承辦,雲棲社區作為獨家直播合作夥伴的 2017 中國人工智能大會(CCAI 2017)在杭州國際會議中心盛大召開。

在本次大會上,俄勒岡州立大學教授、AAAI 前主席 Thomas G. Dietterich 發表了主題為《構建強健的人工智能:原因及方式》的演講。

在演講中,Thomas G. Dietterich 綜合考慮了“已知的未知”情況(對不確定情形有一個明確的模型)以及“未知的未知”情況(模型不完整或有錯誤), 介紹了 7 種用於保證 AI 係統安全可靠的方法。

演講內容

以下是 Thomas G. Dietterich 的演講全文,AI科技大本營略做修改:

感謝大會的邀請,非常高興今天有機會在這邊演講。

我今天的演講跟前麵那些可能有所不同,技術性沒那麼強。當然,我也會講到一些數學知識,但更多的內容還是關於人工智能所麵臨的挑戰,以及我們現在所用的一些安全的解決方法。

首先,我會講一講我們對於強健 AI(robust artificial intelligence)的需求、背後的目的何在。然後,我要談一下,在模型不完整的時候,我們的 AI 係統需如何來正常工作。

我們知道,現在世界上還有很多東西是人工智能不知道的,我們的目標就是要知道,有什麼樣的方法能讓 AI 研究社區來解決這些問題。

人工智能已經有 61 年的曆史了,我們怎樣才能應對人工智能的不確定性,特別是
這些未知的未知(unknown unknowns)?


image003


近年來,人工智能在技術上的長足進展,讓我們可以考慮一些高風險領域的進一步應用,比如無人駕駛、自動幫醫生做手術的外科手術機器人,還有在金融市場從事自動化交易的人工智能,另外還有一些基礎設施相關的人工智能,比如我的同事正設法用人工智能來提升電網的管理效率。

當然,也有一些極富爭議的應用,例如,具備自主攻擊能力的武器係統。我認為這是一個很糟的主意,世界各國應該就此協商,簽署一份限製此類自主攻擊武器研發的條約。

所有這些係統都要去做出很多事關生死的重大決策,而人工智能和機器學習曆經多年的坎坷掙紮,如今不過是勉強能用。我們並沒有太多的時間來思考高風險應用上的強健性問題,但我們需要係統在麵對錯誤時也能十分穩定地運行、不出故障。

這裏的錯誤包括很多方麵:比如說,有時候會有人為的錯誤,還有一些會是網絡攻擊,或是設計者和使用者一開始就要求係統去做錯誤的事情,但我今天要講的兩個重點,則集中在不正確的模型與無法建模的意外現象方麵。


image005


為什麼我如此擔心那些無法建模的現象呢?其實有兩個原因,一是我們沒有辦法對世界上所有東西都建模,二是沒有必要對所有東西都進行建模。

image007


就人工智能的曆史而言,我們所討論的問題集中在兩個方麵:其一是先驗條件問題(qualification problems),我們無法把某個行動所有的先決條件全都數字化。比如說一輛車要起步,那麼燃料、電池、車鑰匙就要考慮在內,但還有其他的條件我們可能就忘記了,此類我們所無法完整考慮的先決條件是無窮無盡的。另一個是分支問題(ramification problems),也就是說,我們無法把一個行動可能會產生所有的後果加以數字化。這裏,我認為同樣重要的一點是,不要把所有的東西都進行建模。


image009


我們都知道,機器學習關於錯誤率的基本理論是,模型的出錯率與其複雜程度成正比,與樣本的大小成反比。如果數據量很小的話,我們就不能用特別複雜的模型,尤其是深度網絡,因為它們相當複雜。其後果就是,在樣本很小的情況下,我們的模型就必需非常簡單。我們的模型要比現實世界簡單,盡管這一點大家心知肚明,但我們還是要使用簡單的模型。我們必須慎重地簡化模型,因為這是優化預測準確度的方法。

image011


一個 AI 係統,是需要在沒有對整個世界完全建模的情況下有用的。當我們看一些安全至關重要的應用時,它會有什麼結果呢?

接下來我會講一講達到強健的 AI 的一些方法,以及我們作為一個研究社區的一些想法。


image013


首先從生物學來看,進化其實並不是優化,其實它隻是選擇在這個環境能夠存活下來的有機物。我們可以說,生物學上的進化其實就是選擇最強健的物種。因為,這個地球上現存的物種經曆了各種挑戰,比如說氣候變化等等。

我們能夠存活下來,是因為我們要跟很多其他的動物進行競爭,他們讓我們更強壯。同時,我們還有很多不同的個體組成的群體。另外,我們每個人內部也有冗餘,比如說每個基因都可以分為隱性和顯性,這樣我們可以把自身沒用到基因傳給未來的子孫後代,讓我們得以保持基因的多樣性。我相信,生物學給了我們很多關於強健的 AI 係統的啟發。


image015


這是我的演講大綱。首先,我會講“robustness to known unknowns”,我們的模型包含了反應外界重要因素的變量,但是我們對他們是不確定的。接下來,我會講“robustness to unknown unknowns”,針對無法建模的現象。

1. 針對不確定性的決策
image017

在上個世紀50年代的時候,我們第一個想法就是在不確定的情況下怎麼進行決策。

我們來看一些標準的策略過程。首先,我們會觀察目標值 Y,然後要選擇Action(行動) A,來讓它的期望值達到最好的效果。我們把這樣的決策進行建模:E[U|A, Y],希望把期望的效應達到最大化。

我們可以將該不確定性模型定義為 P[U| A, Y],這是你通常會看到的東西:在任意一本有關人工智能的書或者經濟學的書裏,都可以看到。


image019


看看上麵這個圖,我們這邊有兩種不同的 Action:Action a1 和 Action a2。如果選擇 a1,我們會得到如紅線所示的結果,如果選擇 a2,我們會得到如藍線所示的結果。兩者期望的效益是一樣的,但是 a2 的變化較大一些,有較高的上行風險和下行風險。

如果說對它們進行優化,其實兩種都是非常好,但是很多人對 AI 係統裏麵的風險非常的敏感。如果說你對於風險敏感,那麼更多地可能會選擇 a1。


2. 強健的優化
image021

實際上,許多 AI 推理問題都可以理解為優化問題。我們來講課本裏的一個簡單線性問題,如上圖所示,這裏麵有兩個變量,分別是 x1、x2,以及兩個限製條件:(a*x1 + b*x2)小於等於 r,(c*x1 + d*x2)小於等於 s。

隨著綠色箭頭的方向,目標是在增長的,因此我們可以在這個可行區域內找到最佳優化點。


image023

假設我們對這些限製不確定,那麼我們需要使用不確定區間。這個的想法是,我們有常數a、b等等,我們不知道他們確切的值,但是我們知道他們屬於一個不確定區間。比如,a 的不確定集合是 U。這是對不確定性的另一種表達方式,但是更實用。

現在我們想最大化目標值,那麼我們該如何解決這些不確定區間帶來的問題呢?假設紅線是我們這些常量的替代值,那麼這裏的交叉點就是最優解決方案。當然這在我們的問題中是不可能出現的,區域優化在對新問題來說是不適用的的。當限製條件不確定時,規劃的解決方案可能不可行,這將導致非常嚴重的問題。

對此我們該怎麼辦?


image025


其中一個方案是使用極小化極大算法(一種找出失敗的最大可能性中的最小值的算法)來消除不確定性。我們有 adversary,並允許從不確定集合中選擇 a、b 等常量的值。通過這種方案,我們可以得到穩健的解決方案,然而這種方案太過保守。


image027

根據 Bertsimas 在 MIT 的工作,這裏其實有一個很重要的思想:給 adversary 加一個 budget。

現在我們可以分類討論bugdet B。當設置 B 為 0 時,我們會得到最初的線性方程。如果 B 很大,那麼這個我們就有很大的可能性達不到目標。所以我們可以通過 B 來預測結果到底如何。這是針對“ budget on adversary ”強優化的最新想法。


image029


現在有一些非常有趣理論:現有一些 AI 算法是可以被看作穩健性優化。其中一個例子是支持向量機監督學習設置。我們給一些未知函數 y = f(x)訓練樣本,並且給出了一個損失函數 L(y(hat),y),當正確答案為 y 時,觀察輸出 y(hat)。

然後,我們找到能夠將損失總和最小化的 h,公式如上圖所示。


image031


在Xu,Caramanis & Mannor 2009 年的論文中(如上圖所示),他們展示了這種正則化的方法相當於強優化。


3. 優化對風險敏感的目標
image033

現在,讓我們考慮一下,如何利用馬爾科夫決策過程(Markov decision process)來對風險敏感的目標進行優化。用這種方法來決策流程的最大問題是,你必須先觀察這世界找到策略設定回饋,你要設定最終的目標、反饋。

想象一下標準的馬爾科夫決策問題過程,我們通過代理(agent)來觀察這個世界的狀態,這個代理會根據一些政策來采取行動,並收到回饋(reward)。比如,下圍棋的時候一直到遊戲結束才能得到 reward,但是在駕駛汽車時,每做一次正確決定就會得到一次 reward,或者至少免受懲罰。


image035
image037
image039


另外,我們還需要一個總回饋參數。我們來看一下,如果策略是固定的,我們要執行它,你可能要調整其他的一些參數,可以想像我們所收到的回饋參數會有這樣的概率的分布,可以看到,它有一個下行的風險。我們要優化這個目標,讓它盡可能避免下行的風險。我們現在使用的是 CVaR(Conditional Value at Risk) ,如上圖所示。


image041


這裏可以得出一個結論:優化 CVaR,對模型的錯誤有更好的魯棒性。


image043

其實還有很多的例子,這邊我就不談了,因為時間的關係我們看下一部分。


4. 檢測異常
image045

首先,我們可以檢測到模型裏的缺陷。或許我們不能修正他們,但是至少我們可以檢測出來。如果我們能檢測到模型裏的某個異常,那麼我們就可以尋求用戶的幫助,或者我們可以采取一些我們認為比機器學習到的更安全的措施。

image047

比如,我們可以監測預測類別的分布。試想一下,我們在做手寫字符的識別係統,在英語裏麵,我們知道字符其實是有一定的分布頻率的:最常見的英語字符是“E”,第二常見的是“T”等等。我們可以觀察一下模型的分類器的結果,對比預測的分布,如果兩者相差很大,那麼很可能是出了問題。


image049

另一種方法是馬爾科夫決策過程。舉個例子,如果我們正在玩遊戲,並希望達到某個目標,那麼我們玩的時間越長,離達成目標的距離就越近。

比如,這是我們的預期價值函數,這是解決問題的步驟。通常情況下,我們在玩遊戲或者按計劃執行時,我們是在朝上走的,最大限度的讓價值最大化。當然,當我們做的不好的時候,我們可以看到有些曲線的軌跡並不是朝上走的。看起來就像我們脫離了軌道,這或許意味著我們的模型存在一些問題。


image051

另外一件可以做的事就是監測輔助規律。Hermansky 寫過一篇很有意思的論文,是關於語音識別的裏麵的未知的未知。在做語音識別的時候,你可以為不同的頻段,比如低頻、中頻、高頻,訓練單獨的識別器。在自然語言中,你發出的兩個音節之間是有時間間隔的,因此我們可以監控這些間隔時長。如果我們發現分類器給出的分布結果和我預期的差別很大,那麼我們就可以探測哪個地方出了問題。

Hermansky 提出了一個解決方案:弄清楚哪些頻段其實是噪音,因為在給定的環境中,有一些類型的噪音源其實是集中在某一個頻段的。


image053

另外一個例子要追溯到 1992 年的一個自動駕駛汽車項目。當時的這個係統很簡單,隻有一個車道保持係統和一個自動轉向係統,當時是用神經網絡做的。在這個神經網絡裏,有一個攝像頭用來拍攝道路、樹木等,然後這些信息會通過 4 個隱藏單元,用來預測轉向指令。

此外,這 4 個隱藏單元對輸入的圖片進行重構,這樣就可以比較原始圖片和重構後圖片之間的差異,如果兩者之間的差異較大,那麼這個轉向命令就是不可信的。

在這一想法中,相同的隱藏層要完成兩項任務,因此我們可以監測這些隱藏單元。如果重構後的圖片差異很大,那麼這些隱藏單元的這項任務完成的並不好,這也就意味著,在預測轉向命令這一任務上,這些隱藏單元可能也做的很差。


image055

我們可以做的另外一件事就是觀察異常情況。如上圖所示,我們的訓練樣本的分布是Ptrain,通過這些訓練樣本,我們訓練處分類器。我們的測試樣本的分布則是Ptest。如果訓練樣本的分布和測試樣本的分布相同,那麼我們係統的準確性就能得到保障。但是通常情況下,測試樣本和訓練樣本的分布是不一樣的,在這種情況下,我們應該怎樣做呢?


image057


當然,你肯定聽說過領域適應(Domain Adoption)和遷移學習。我要講的可能是稍微簡單一點的問題,僅僅隻需要檢測測試數據是否與訓練數據不同,這個例子是基於我在計算機視覺領域的一項研究工作。

此前,我曾參加過一個生態學的項目。當時我們想要衡量美國淡水河流的健康程度,於是環保部門派了一些人去收集這些河流裏的昆蟲標本,將昆蟲的分布狀態作為判斷河流健康程度的標準。


image059


我們要做的是建立一個計算機視覺係統,來對這些昆蟲進行分類,而那些戶外的工作人員收集了 29 種昆蟲作為訓練的數據集。後來,我們利用這些數據訓練一個監督學習係統,而且運行結果也不錯。

但是,很快我們發現,有的測試數據並不是這 29 類中的一種,有可能是其他的昆蟲、或者小石頭、葉片、垃圾等等。

我們要怎樣做呢?


image061


此前我們曾做過很多關於異常檢測的工作,這裏的方法很簡單,就是在係統裏加一個一場檢測器,它主要用來負責檢測新圖片。如果這張圖片與訓練數據中的圖片看起來很陌生,那麼它就會給定一個“異常分數”,如果這個分數超過某個閾值,那麼係統就會“拒絕”這張圖片,如果低於這個閾值,那麼就可以放行,進入到下一步——分類器。

image063


這裏是一個初步的研究,我們訓練的分類器時候隻用了兩個類別的數據,但是實際的測試數據包括 26 類。


image065


實際上,還有很多其他的嚐試,其中一些可能比我們現在的要好。比如Open Category Classification ,Change-Point Detection,Covariate Shift Correction,Domain Adaptation,這些都是和這些問題相關的。


5. 使用更大的模型
image067

另外一種思路是直接增大模型。如果我們的模型缺少外界世界的信息,那麼為什麼我們不把模型做大一點,直接讓模型具備更多的世界表征?而這就涉及到之前 Hans Uszkoreit(德國人工智能研究中心科技總監、北京人工智能技術中心總監兼首席科學家)所講的:創建一個大型的知識庫,特別是要從網絡文檔中抓取信息。

當然,這樣做也存在一個通病。每當給一個模型增加一個新的組成部分,那麼這個模型就會多一個出錯的可能性。如果你在用這個模型做推理工作,那麼很可能會出現錯誤。這實際上是另外一種過擬合的問題。

當我們想要避免額外的錯誤時,就需要讓知識庫保持簡單。


6. 使用因果模型
image069

還有一種思路是使用因果模型。 因果模型僅僅需要很少的訓練數據,而且它們還以遷移到新的問題領域。

想象一下,采用因果模型,我們甚至可以對太陽和黑洞內部正在發生的事情做很好的預測。雖然不管以前還是現在,我們都沒有與之相關數據,但是我們有能夠信任的因果模型,可以派上用場。


7. 組合模型
image071

AI 領域裏另一個比較重要的思想是“組合(ensemble)”。每一個模型都可能會有不完整或者不正確的地方,但是將這些模型組合起來,我們可以做的更好。在做的各位可能大多都知道 Kaggle 的競賽,獲勝者往往用的是“組合”的方法。

image073

比如,IBM 的 Watson 實際上就是一個巨大的“組合”。它擁有超過 100 種技能來完成各種任務。此外,必應、百度、穀歌等也用到了很多技能的組合,比如,這些搜索引擎會綜合排名、事實得分(evidence score)等方法來確定給用戶呈現哪些搜索結果。


總結
image075


上麵這張圖,列舉了現有的可以幫助我們構建強健計算機係統和 AI 係統的各種方法。

首先,針對已知的未知,也就是當我們有一個模型,但是想要檢測裏麵的錯誤時,要怎麼辦?正如我剛才所講,我們可以在概率模型上使用“Risk Sensative Decision Making”的方法,或者我們可以利用對抗式的方法來進行優化。

接著,我談到了“robustness to unmodeled phenomena”,這裏針對的是未知的未知。剛剛我提到,我們有一係列的辦法可以探測模型是否不完整,以及為什麼有時會失效。但是,有的時候,我們能做的隻有向人類尋求幫助。可以大膽猜測,大部分的 AI 模型都還太小、太簡單。未來,我們需要比現在大得多的知識庫,這樣我們才能使用更大的模型。

此外,我還介紹了因果模型,這些模型類似於遷移學習,一個模型可以適用於不同的場景。最後,我提到了組合模型的方法。

今天,新一代的 AI 係統正被用於各種令人激動的領域,值得注意的是,其中很多應用都涉及到與人身安全相關的高風險決策,因此,我們需要構建強健的 AI 係統來解決這些問題。

AI 係統不可能對所有情況建模,因此這些係統需要在建模不完全或者包含某些錯誤情況時也能正常運行。

除了上述提到的這些思路,我們還需要更多的想法,希望未來在座的各位也能有所貢獻。

謝謝大家!

作者:CSDN周翔
來源:CSDN

最後更新:2017-08-13 22:49:16

  上一篇:go  阿裏雲大數據實驗室:MaxCompute使用體驗
  下一篇:go  如何從前端小白變身為前端大神