回覆列表
  • 1 # 機器之心Pro

    機率理論為理解學習,建立合理的智慧系統提供了數學框架。在此演講中,Uber 首席科學家、劍橋大學教授 Zoubin Ghahramani 回顧了機率學 AI 領域的基礎,然後重點介紹了該領域的研究前沿,涉及到了貝葉斯深度學習、機率程式設計、貝葉斯最佳化、資料科學中的 AI 等主題。他認為,在深度學習革命之後,下一個前進的方向會是機率機器學習。

    Zoubin Ghahramani 是英國皇家學會會士,劍橋大學資訊工程系教授,Uber 首席科學家,英國國家資料科學研究所圖靈研究所劍橋主任。Zoubin Ghahramani 教授曾工作或學習於賓夕法尼亞大學、MIT、多倫多大學、倫敦大學學院蓋茨比組、卡耐基梅隆大學。他的研究聚焦於機器學習/人工智慧機率方法,在這些主題上已經發表了超過 250 篇論文。他曾是 Geometric Intelligence(被 Uber 收購,成為了 Uber AI Labs)的聯合創始人,指導眾多人工智慧與機器學習公司。2015 年,因其對機器學習的貢獻,被選為英國皇家學會會士。

    如今人工智慧與機器學習的發展令人振奮。這幾年,我們在遊戲中取得了各種突破,例如玩 Atari 遊戲、圍棋、撲克。更重要的是,如今這個時代對應用機器學習與人工智慧非常感興趣,例如語音識別、計算機視覺、推薦系統、自動駕駛等。

    當我們思考人工智慧時,會想到我們當前處於什麼狀態?離我們想要的人工智慧還有多遠?我們是否有解決未來挑戰的理論基礎?為了解決賦有挑戰性的 AI 任務,我們需要關於感知、學習、推理與決策的理論。這也是我們建立 AI 系統的方式。

    深度學習的火熱與缺陷

    如今深度學習是最為最為火熱的學習方法。很多人,特別是剛進入 AI 領域不久的人會認為深度學習可以解決所有問題,是建立智慧系統的有力工具。所以,什麼是深度學習系統?

    深度學習就是神經網路,而神經網路是帶有許多引數的可調非線性函式。上圖中,引數θ是神經網路的權重。神經網路是特別有趣的函式,因為輸入 x 和引數θ都是非線性的。現在神經網路所做的是,透過一個函式組合從輸入 x 到輸出 y 表示這一函式,也就是神經網路中的層。總結來說,神經網路的核心是非線性函式+基礎統計+基礎最佳化。

    深度學習可以說是神經網路的重新包裝。現代深度學習系統非常類似於 80 、90 年代流行的神經網路模型,也有一些重要的變化:

    1. 新的架構與演算法上的創新(例如多層網路、ReLU、dropput、LSTM 等);

    2. 非常重要的是我們當前有非常大的資料集;

    3. 非常大規模的計算資源(GPU、雲);

    4. 更好的軟體工具(Theano、Torch、TensorFlow),更方便的建立神經網路;

    5. 還有產業越來越大的投資也媒體關注;

    以上使得越來越多的人進入到 AI 領域,發展也越來越快。因此,深度學習領域可以說去的了非常大的發展,也對人工智慧非常重要。

    但深度學習系統也有缺陷。雖然這些系統在許多基準任務上有非常好的表現,但它們也有缺陷:

    1. 需要大量資料,例如總需要數百萬的樣本(data hungry);

    2. 需要大量計算資源來訓練以及部署深度學習系統;

    3. 表徵不確定性的能力極差;

    4. 融合先驗知識與符號表徵對深度學習非常重要,這也是許多人在研究的;

    5. 易受對抗樣本的影響;

    6. 過於繁瑣的最佳化:非凸的,找到最好的架構選擇,學習流程,初始化等;

    7. 深度學習是難以解釋的黑箱,缺乏透明度,難以令人信任,使得深度學習難以部署到一些非常重要的任務上。

    這些事深度學習的挑戰,也是研究員們想要戰勝的難題。

    模型的機率視角

    儘管深度學習非常流行,但接下來我們需要考慮的是機器學習下一步的發展是什麼。因此,我們需要將機器學習視為機率建模問題。在機器學習中,模型表述了從某個系統中能觀察到的所有資料,也就是說模型不僅可以描述所有我們收集到的某種資料,同時它還能描述那些沒收集到的同類資料。

    機率是推理不確定性的數學,正如微積分是推理變化率的數學。機率語言模型能夠捕捉複雜的推理,發現未知,無需監督即可揭開資料的結構。並且,機率可使得專家透過先驗信念的形式把知識注入到 AI 系統。

    如果當我們對世界的某種資料建模時,我們需要預測那些沒觀察到的資料以及它們之間的不確定性,因此我們可以使用數學中機率論描述這種不確定性並完成「模型」的構建。

    在使用機率論描述模型中的不確定性後,貝葉斯機率能允許我們推斷未知量,並調整模型以從資料中學習。Zoubin Ghahramani FRS 表示機器學習中的很多問題都能歸結到這一個貝葉斯框架內,或者至少需要歸結到這一框架。

    為了進一步解釋貝葉斯推斷,Zoubin 進一步解釋了貝葉斯法則。簡單而言,貝葉斯法則可以描述為「執果索因」,即知道某個事件發生了後,求得該事件最可能是在什麼情況下發生的。在 ML 中,貝葉斯法則會告訴我們如何更新對未知世界或假設(hypothesis)的知識與信念,且更新假設或信念的資訊從我們已知的觀察或資料(data)中獲取。

    如下所示若需要在給定資料的條件下判斷假設存在的可能性,我們只需要根據該貝葉斯法則就能求出。

    在貝葉斯法法則中,總體資料是未知的,也就是說我們需要使用機率分佈表徵這種不確定性。在觀察到資料之前,我們有先驗機率 P(hypothesis),它表示我們事先認為任意一個假設及其所出現的機率。此外,對於任意一個假設,我們需要評估根據它能觀察到資料的機率,即 P(data|hypothesis)。這與似然度非常相似,當我們乘上這兩個機率項,並透過除上所有可能的假設來做歸一化,我們就可以得到後驗機率 P(hypothesis|data)。

    這是一種通用的法則來根據資料更新我們對假設的信念,這一個法則同樣告訴我們該如何執行學習過程。學習其實就是將先驗知識遷移到後驗知識,如果我們獲得更多的資料,那麼僅僅只是反覆對當前的狀態應用這一個法則以更新獲得新的後驗知識。

    若將基本貝葉斯法則應用到機器學習中,我們就可以得到以下三個非常基礎的方程,即學習、預測和模型對比。此外,值得注意的是,貝葉斯法則並不是最基本的公理,它是由由機率的加法原則與乘法原則組合而成。

    其中學習即給定資料與模型預測最可能的引數θ,這樣在確定了引數θ後就能確定整個模型,學習後的系統也就確定了。為了計算後驗機率 P(θ|D, m),根據貝葉斯法則需要使用θ的先驗機率 P(θ|m) 和似然度 P(D|θ, m)。預測即在給定資料 D 和模型 m 的情況下預測出現樣本 x 的機率,它可以用一個積分或數學期望表示。

    你可能會想,當前深度學習如此成功,基本上任何複雜任務都只需要套入這種端到端的方法就能取得不錯的效果,那麼我們還需要機率與貝葉斯法則嗎?還是說貝葉斯法則只是 18 世紀的老舊研究而跟不上當前 21 世紀的深度方法?Zoubin 非常推崇為任務與模型引入機率,它展示了以下一些原因來說明為什麼機率對於機器學習非常重要。

    首先我們希望系統能校準模型與預測不確定性,因為我們希望系統明確地知道它到底不知道什麼。例如在自動駕駛中,當系統遇到了和以前都不一樣或者不合理的場景,我們希望系統能給出回答表示它不知道怎麼處理,而不是如同當前深度模型那樣給出一個錯誤的回答。此外,機率框架同樣允許我們實現非常優雅的模型複雜度控制或者結構搜尋。這表明基於貝葉斯機率,我們都不再需要正則化或其它防止過擬合的方法,因為它能自動調整和控制模型複雜度。

    對於 AI 來說,我們希望構建的系統能執行合理的決策。這表明我們希望系統能透過連貫的方式根據資料更新信念,並且根據效用論最大化效用來做出合理與理性的決策。同樣,我們需要將先驗知識嵌入到學習系統中,並且隨著我們獲得越來越多的資料,先驗知識應該以連續和魯棒的方式得到更新。

    此外,對於 AI 系統來說非常重要的就是基於小資料集進行訓練與推斷。在實際生活中,很多工都只有非常少量的資料,深度學習明顯並不能解決這樣的問題,因為模型複雜度過高或過低分別會導致過擬合或效能不佳等問題。貝葉斯機率能利用先驗知識,從而只需要更少的資料就能推斷出合理的決策。

    若使用 b(x) 表徵命題 x 中的信念強度,那麼它的取值應該在 0 到 1 之間,且只有在系統完全確信 x 會發生或完全不確信才能取到 1 和 0。此外,b(x|y) 表示在給定 y 可能會出現的信念下,x 會發生的信念強度。早在 1946 年,Cox Axioms 就寫下了一些如何表示信念的定理。如上所示信念的強度應該由一個實數表示,信念應該與常識具有定性的一致性等等。此外,信念函式還應該滿足機率定理,包括機率加法、乘法和貝葉斯法則。

    Zoubin 表示信念函式並不是表示傳統機率論中重複實驗與頻率等的不確定性,它僅僅表示信念的強度,這對於 AI 系統有非常重要的作用。為了說明這種重要性,他進一步從決策論與博弈論中引入一個觀點以說明如何根據信念做更好的決策,即 Dutch Book 定理。

    根據 Zoubin 在 UberAI 研究院的經歷,他發現很多學習與智慧過程都依賴於對不確定性的機率表示,例如車主供給與乘客需求關係的預測、對交通和城市的建模以及自動駕駛等。儘管 Uber 在處理這些問題時同樣需要使用深度學習擬合適當的函式,但機率是構建能執行理性決策的智慧體所必需的。

    介紹了機率在機器學習中的重要性後,Zoubin 在後面重點討論了他在這一領域的研究方向與成果。以下展示了他主要涉及的領域,且都以自動化機器學習為中心。之所以在機器學習前加上「自動化」,是應為他認為目前的機器學習並不是那麼合理,它還能在很多地方變得更加高效與自動化。

    貝葉斯深度學習

    在這一個影片中,Zoubin 並不會介紹全部領域,他只會重點討論三個方向,即貝葉斯深度學習、機率程式設計和自動化統計學。首先對於貝葉斯深度學習,他表示前面很多地方都將深度學習與貝葉斯統計立在對立面,但其實它們並不是對立的。深度學習旨在構建不同型別的模型,而貝葉斯推斷旨在關注學習的方法,它們是可以相互結合的。

    那麼到底深度學習中的貝葉斯指的是什麼呢?如果我們重新思考深度神經網路,一般的方法會根據損失函式更新模型的權重和偏置項,這也就表示引數上的不確定性。但我們應該同時解決結構上的不確定性,例如神經網路層級的結構或層級數等。目前結構上的不確定性比較難解決,但引數上的不確定性要好解決地多。

    如下給定一個神經網路,其中 X、y 和θ分別為輸入、輸出和模型引數。如果從貝葉斯的角度觀察該神經網路,那麼先驗機率 P(θ|α) 就是說在沒有觀察到資料之前,給定某些超引數α下神經網路引數θ可能是什麼。後驗機率 P(θ|α, D) 則表示在觀察到資料後,給定某些超引數α下神經網路引數θ的分佈應該是什麼樣的。

    有趣的是,Radford Neal 在 1994 年表示如果從貝葉斯的角度觀察帶有單個隱藏層的神經網路,那麼當該隱藏層的神經元數量可以無限增長,那麼模型就會收斂到高斯過程,所有權重都會服從高斯分佈。當時很多研究者對這一過程非常感興趣,但是由於神經網路有非常多的區域性極小值且很難最佳化,因此很多研究者轉而關注能優雅使用凸最佳化的支援向量機。同時,由於單個隱藏層需要無限的神經元才能近似高斯過程,那麼我們為什麼不直接使用高斯過程呢,這也是當時很多研究者的心聲。

    到了現在,Alexander 等研究者在 ICLR 2018 的論文中重新探討了高斯過程與深度神經網路之間的關係。他們表示在廣義條件下,隨著我們神經網路架構越來越寬,隱含的隨機函式會收斂為高斯過程,這也就是將 Neal 在 1994 年的研究成果擴充套件到了深度神經網路。研究者們嚴格證明了多層有限全連線網路最終能收斂到高斯過程,其中隱藏層的數量可以是定值,而隱藏層的單元數需要根據層級的增長嚴格地以不同的增長率增加。

    如下 Zoubin 表示貝葉斯深度學習可以以多種方式實現,它們的關鍵計算問題是在引數上做貝葉斯推斷,並在給定神經網路資料的情況下構建所有引數的機率分佈。

    如上早期的貝葉斯深度學習主要在於很多研究者並不希望研究神經網路。而自 2011 年以後,很多研究者重新開始關注神經網路中的推斷過程,並嘗試令貝葉斯推斷更快與更簡潔。在上圖中,神經網路嘗試在給定資料的情況下擬合一些引數,而當沒有資料點的時候,神經網路那種點估計會出現很大的誤差,因此貝葉斯神經網路一般在這種情況下能做得更好。

    當然,近來也有將深度學習結合高斯過程的研究,例如 17 年 Bradshaw 等人提出的 GPDNN,它結合了深度神經網路與高斯過程良好的屬性,並對於對抗樣本有非常好的屬性。對於 GPDNN 來說,當我們測試對抗樣本時,它輸出的最高熵類別機率對應於「don"t know」。該網路知道什麼時候給定的樣本是系統無法判斷的,因此 GPDNN 是一種更好的深度架構來表示未見過的潛在資料。

    機率程式設計與自動化統計學

    Zoubin 重點展示的第二個方向是機率程式設計,機率程式設計讓使用者可以將生成機率模型指定為程式(program),然後將這些模型「編譯(compile)」為推理過程。機率模型本質上也是組合式的,而之前的大部分工作都集中在透過組合隨機變數來構建豐富的機率程式上。

    首先對於傳統模型而言,機率性模型開發與推斷演算法的推導式非常耗時與容易出錯的,因此我們可以藉助機率程式語言將機率模型表述為能生成資料的計算機程式。例如機率程式語言 Edward,它構建於兩種組合表示的基礎上,即隨機變數和推理。Edward 可以整合到 TensorFlow,它讓我們輕鬆使用從點估計到變分推理和 MCMC 等各種可組合的推理方法來擬合相同的模型。

    Zoubin 隨後展示了用機率程式語言所寫的隱馬爾可夫模型,它只需要不到 10 行的程式碼就能完成整個模型。他認為機率程式設計最大的優勢是對科學建模的變革,而 Uber 構建的機率程式語言 Pyro 就是這樣的嘗試。

    Pyro 基於 Python 與 PyTorch 之上,專注於變分推理,同時支援可組合推理演算法。Pyro 的目標是更加動態(透過使用 PyTorch)和通用(允許遞迴)。

    Zoubin 表示直接指定機率模型是笨重的,其執行也容易出錯。機率程式語言(PPL)透過聯合機率與程式語言的表徵力量來解決上述問題。機率程式是一般確定性計算和隨機取樣值的混合,隨機計算表徵了資料的生成性。這一表徵中隱含著機率,且這一規範也是通用的:透過這種方式可以編寫任意的可計算機率模型。Pyro 全部使用 Python 作為基礎語言,清晰而令人熟悉。

    Pyro 構建在優秀的 PyTorch 庫之上,後者包括使用非常快速、GPU 加速的張量數學的自動微分。PyTorch 動態構建梯度,使得 Pyro 程式包含隨機控制結構,即 Pyro 程式中的隨機選擇能夠控制其他隨機選擇的出現。隨機控制結構是 PPL 通用的關鍵。因此,Pyro 能夠表徵任意機率模型,同時提供靈活、可擴充套件到大型資料集的自動最佳化推斷。

    最後,Zoubin 展示了一種自動化統計學。因為現在到處都存在資料,那麼理解資料、構建模型並作決策會有非常大的價值。但是問題是目前沒有那麼多合格的資料科學家,因此可能的方向是開發一種自動從資料中構建模型的方法。

    那麼對於構建 AI 系統,我們到底要遵循什麼樣的規則?以下展示了感知、學習、推理和決策制定等 AI 系統應該遵循的原則,我們構建自動 AI 系統也應該遵循這些規則。

    如上藉助深度學習、ReLU 啟用函式和各種結構,我們的系統能感知到真實世界中的資料。而貝葉斯法則和最大似然等規則可以讓系統以更小的成本學習知識,其它如推理和決策也應該根據機率論、決策論和博弈論等領域的方法完成構建。

    對於整個演講的總結,Zoubin 表示機率建模為構建理性的 AI 系統提供了非常好的框架,在這個框架下我們能將現實世界中的不確定表示出來,並從資料中學習。

    以上是 Zoubin 演講的簡要內容,前面主要介紹了為什麼機率建模非常重要,後面則講述了他所關注領域,包括貝葉斯深度學習、機率程式設計和自動化模型構建等。

  • 中秋節和大豐收的關聯?
  • 24歲女網紅身家78億,卻被人當街砸雞蛋,潑冷水,她到底幹了啥?