劉鐵巖談機器學習:隨波逐流的太多,我們需要反思

微軟研究院AI頭條發表於2019-01-07

大家好,我是劉鐵巖,來自微軟亞洲研究院。今天非常榮幸,能跟大家一起分享一下微軟研究院在機器學習領域取得的一些最新研究成果。

劉鐵巖談機器學習:隨波逐流的太多,我們需要反思

大家都知道,最近這幾年機器學習非常火,也取得了很多進展。這張圖總結了機器學習領域的最新工作,比如 ResNet、膠囊網路、Seq2Seq Model、Attention Mechanism 、GAN、Deep Reinforcement Learning 等等。

劉鐵巖談機器學習:隨波逐流的太多,我們需要反思

這些成果推動了機器學習領域的飛速發展,但這並不意味著機器學習領域已經非常成熟,事實上仍然存在非常大的技術挑戰。比如現在主流機器學習演算法需要依賴大量的訓練資料和計算資源,才能訓練出效能比較好的機器學習模型。同時,雖然深度學習大行其道,但我們對深度學習的理解,尤其是理論方面的理解還非常有限。深度學習為什麼會有效,深度學習最佳化的損失函式曲面是什麼樣子?經典最佳化演算法的最佳化路徑如何?最近一段時間,學者們在這個方向做了很多有益的嘗試,比如討論隨機梯度下降法在什麼條件下可以找到全域性最優解,或者它所得到的區域性最優解跟全域性最優解之間存在何種關係。

再比如,最近很多學者開始用自動化的方式幫助機器學習尤其是深度學習來調節引數、搜尋神經網路的結構,相關領域稱為元學習。其基本思想是用一個機器學習演算法去自動地指導另一個機器學習演算法的訓練過程。但是我們必須要承認,元學習其實並沒有走出機器學習的基本框架。更有趣的問題是,如何能夠讓一個機器學習演算法去幫助另一個演算法突破機器學習的現有邊界,讓機器學習的效果更好呢?這都是我們需要去回答的問題。沿著這些挑戰,在過去的這幾年裡,微軟亞洲研究院做了一些非常有探索性的學術研究。

對偶學習解決機器學習對大量有標籤資料的依賴

劉鐵巖談機器學習:隨波逐流的太多,我們需要反思

首先,我們看看對偶學習。對偶學習主要是為了解決現有深度學習方法對訓練資料過度依賴的問題。當我們沒有標註好的訓練資料時,是否還能做有意義的機器學習?在過去的幾年裡,人們做了很多嘗試,比如無監督學習監督學習等等。但是無論如何,大家心裡要清楚,只有有訊號、有反饋、才能實現有效的學習,如果我們對這個世界一無所知,我們是不能進行有效的學習的。

沿著這個思路,我們在思考:除了人為提供的標籤以外,是不是存在其他有效的反饋訊號,能夠形成學習的閉環?我們發現很多機器學習任務其實天然有結構對偶性,可以形成天然的閉環。

比如機器翻譯。一方面我們會關心從英文翻譯到中文,另一方面我們一定也關心從中文翻譯到英文,否則就無法實現兩個語種人群之間的無縫交流。再比如語音處理。我們關心語音識別的同時一定也關心語音合成,否則人和機器之間就沒有辦法實現真正的雙向對話。還有影像理解、對話引擎、搜尋引擎等等,其實它們都包含具有對偶結構的一對任務。

如何更加準確地界定人工智慧的結構對偶性呢?我們說:如果第一個任務的輸入恰好是第二個任務的輸出,而第一個任務的輸出恰好是第二個任務的輸入,那麼這兩個任務之間就形成了某種結構的“對偶性”。把它們放在一起就會形成學習的閉環 ,這就是“對偶學習”的基本思想。

有了這樣的思想以後,我們可以把兩個對偶任務放到一起學,提供有效的反饋訊號。這樣即便沒有非常多的標註樣本,我們仍然可以提取出有效的訊號進行學習。

對偶學習背後其實有著嚴格的數學解釋。當兩個任務互為對偶時,我們可以建立如下的機率聯絡:

劉鐵巖談機器學習:隨波逐流的太多,我們需要反思

這裡 X 和 Y 分別對應某個任務的輸入空間和輸出空間,在計算 X 和 Y 的聯合機率分佈時有兩種分解方法,既可以分解成 P(x)P(y|x; f) ,也可以分解成 P(y)P(x|y; g)。這裡,P(y|x; f) 對應了一個機器學習模型,當我們知道輸入 x 時,透過這個模型可以預測輸出 y 的機率,我們把這個模型叫主任務的機器學習模型,P(x|y; g) 則是反過來,稱之為對偶任務的機器學習模型。

有了這個數學聯絡以後,我們既可以做有效的無監督學習,也可以做更好的有監督學習和推斷。比如我們利用這個聯絡可以定義一個正則項,使得有監督學習有更好的泛化能力。再比如,根據  P(x)P(y|x; f)  我們可以得到一個推斷的結果,反過來利用貝葉斯公式,我們還可以得到用反向模型 g 做的推斷,綜合兩種推斷,我們可以得到更準確的結果。我們把以上提到的對偶學習技術應用在了機器翻譯上,取得了非常好的效果,在中英新聞翻譯任務上超過了普通人類的水平。

解決機器學習對大計算量的依賴

輕量級機器學習

最近一段時間,在機器學習領域有一些不好的風氣。有些論文裡會使用非常多的計算資源,比如動輒就會用到幾百塊 GPU卡 甚至更多的計算資源。這樣的結果很難復現,而且在一定程度上導致了學術研究的壟斷和馬太效應。

那麼人們可能會問這樣的問題:是不是機器學習一定要用到那麼多的計算資源?我們能不能在計算資源少幾個數量級的情況下,仍然訓練出有意義的機器學習模型?這就是輕量級機器學習的研究目標。

劉鐵巖談機器學習:隨波逐流的太多,我們需要反思

在過去的幾年裡,我們的研究組做了幾個非常有趣的輕量級機器學習模型。比如在 2015 發表的 lightLDA 模型,它是一個非常高效的主題模型。在此之前,世界上已有的大規模主題模型一般會用到什麼樣的計算資源?比如 Google 的 LDA 使用上萬個 CPU cores,才能夠透過幾十個小時的訓練獲得 10 萬個主題。為了降低對計算資源的需求,我們設計了一個基於乘性分解的全新取樣演算法,把每一個 token 的平均取樣複雜度降低到 O(1),也就是說取樣複雜度不隨著主題數的變化而變化。因此即便我們使用這個主題模型去做非常大規模的主題分析,它的運算複雜度也是很低的。例如,我們只使用了 300 多個 CPU cores,也就是大概 8 臺主流的機器,就可以實現超過 100 萬個主題的主題分析。

這個例子告訴大家,其實有時我們不需要使用蠻力去解決問題,如果我們可以仔細分析這些演算法背後的機理,做演算法方面的創新,就可以在節省幾個數量級計算資源的情況下做出更大、更有效的模型。

同樣的思想我們應用到了神經網路上面,2016 年發表的 LightRNN演算法是迄今為止迴圈神經網路裡面最高效的實現。當我們用 LigthtRNN 做大規模的語言模型時,得到的模型規模比傳統的 RNN 模型小好幾個數量級。比如傳統模型大小在100GB 時,LightRNN 模型只有50MB,並且訓練時間大幅縮短 。不僅如此,LightRNN模型的 perplexity比傳統RNN還要更好。

可能有些同學會產生疑問:怎麼可能又小又好呢?其實,這來源於我們在迴圈神經網路語言模型的演算法上所做的創新設計。我們把對 vocabulary 的表達從一維變到了兩維,並且允許不同的詞之間共享某一部分的 embedding 。至於哪些部分共享、哪些不共享,我們使用了一個二分圖匹配的演算法來確定。

劉鐵巖談機器學習:隨波逐流的太多,我們需要反思


第三個輕量型機器學習的演算法叫 LightGBM,這個工具是 GBDT 演算法迄今為止最高效的實現。LightGBM的背後是兩篇 NIPS 論文,其中同樣包含了很多技術創新,比如 Gradient-based one-side sampling,可以有效減少對樣本的依賴; Exclusive feature bundling,可以在特徵非常多的情況下,把一些不會發生衝突的特徵粘合成比較 dense 的少數特徵,使得建立特徵直方圖非常高效。同時我們還提出了 Voting-based parallelization 機制,可以實現非常好的加速比。所有這些技巧合在一起,就成就了LightGBM的高效率和高精度。

分散式機器學習

雖然我們做了很多輕量級的機器學習演算法,但是當訓練資料和機器學習模型特別大的時候,可能還不能完全解決問題,這時我們需要研究怎樣利用更多的計算節點實現分散式的機器學習

劉鐵巖談機器學習:隨波逐流的太多,我們需要反思


我們剛剛出版了一本新書——《分散式機器學習:演算法、理論與實踐》,對分散式機器學習做了非常好的總結,也把我們很多研究成果在這本書裡做了詳盡的描述。下面,我挑其中幾個點,跟大家分享。

分散式機器學習的關鍵是怎樣把要處理的大資料或大模型進行切分,在多個機器上做並行訓練。一旦把這些資料和模型放到多個計算節點之後就會涉及到兩個基本問題:首先,怎樣實現不同機器之間的通訊和同步,使得它們可以協作把機器學習模型訓練好。其次,當每個計算節點都能夠訓練出一個區域性模型之後,怎樣把這些區域性模型做聚合,最終形成一個統一的機器學習模型。

資料切分

劉鐵巖談機器學習:隨波逐流的太多,我們需要反思

資料切分聽起來很簡單,其實有很多門道。舉個例子,一個常見的方式就是把資料做隨機切分。比如我們有很多訓練資料,隨機切分成 N 份,並且把其中一份放到某個區域性的工作節點上去訓練。這種切分到底有沒有理論保證?

我們知道機器學習有一個基本的假設,就是學習過程中的資料是獨立同分布取樣得來的,才有理論保證。但是前面提到的資料切分其實並不是隨機的資料取樣。從某種意義上講,獨立同分布取樣是有放回抽樣,而資料切分對應於無放回抽樣。一個很有趣的理論問題是,我們在做資料切分時,是不是可以像有放回抽樣一樣,對學習過程有一定的理論保證呢?這個問題在我們的研究發表之前,學術界是沒有完整答案的。

我們證明了:如果我先對資料進行全域性置亂,然後再做資料切分,那麼它和有放回的隨機取樣在收斂率上是基本一致的。但是如果我們只能做區域性的資料打亂,二者之間的收斂率是有差距的。所以如果我們只能做區域性的資料打亂,就不能訓練太多 epoch,否則就會與原來的分佈偏離過遠,使得最後的學習效果不好。

非同步通訊

劉鐵巖談機器學習:隨波逐流的太多,我們需要反思

說完資料切分,我們再講講各個工作節點之間的通訊問題。大家知道,有很多流行的分散式框架,比如 MapReduce,可以實現不同工作節點之間的同步計算。但在機器學習過程中,如果不同機器之間要做同步通訊,就會出現瓶頸:有的機器訓練速度比較快,有的機器訓練速度比較慢,而整個叢集會被這個叢集裡最慢的機器拖垮。因為其他機器都要跟它完成同步之後,才能往前繼續訓練。

為了實現高效的分散式機器學習,人們越來越關注非同步通訊,從而避免整個叢集被最慢的機器拖垮。在非同步通訊過程中,每臺機器完成本地訓練之後就把區域性模型、區域性梯度或模型更新推送到全域性模型上去,並繼續本地的訓練過程,而不去等待其他的機器。

但是人們一直對非同步通訊心有餘悸。因為做非同步通訊的時候,同樣有一些機器運算比較快,有一些機器運算比較慢,當運算比較快的機器將其區域性梯度或者模型更新疊加到全域性模型上以後,全域性模型的版本就被更新了,變成了很好的模型。但是過了一段時間,運算比較慢的機器又把陳舊的梯度或者模型更新,疊加到全域性模型上,這就會把原來做得比較好的模型給毀掉。人們把這個問題稱為“延遲更新”。不過在我們的研究之前,沒有人定量地刻畫這個延遲會帶來多大的影響。

在去年 ICML 上我們發表了一篇論文,用泰勒展開式定量刻畫了標準的隨機梯度下降法和非同步並行隨機梯隊下降法的差距,這個差距主要是由於延遲更新帶來的。如果我們簡單粗暴地使用非同步 SGD,不去處理延遲更新,其實就是使用泰勒展開裡零階項作為真實的近似。既然它們之間的差距在於高階項的缺失,如果我們有能力把這些高階項透過某種演算法補償回來,就可以使那些看起來陳舊的延遲梯度煥發青春。這就是我們提出的帶有延遲補償的隨機梯度下降法。

這件事說起來很簡單,但實操起來有很大的難度。因為在梯度函式的泰勒展開中的一階項其實對應於原損失函式的二階項,也就是所謂的海森矩陣(Hessian Matrix)。當模型很大時,計算海森矩陣要使用的記憶體和計算量都會非常大,使得這個演算法並不實用。在我們的論文裡,提出了一個非常高效的對海森矩陣的近似。我們並不需要真正去計算非常高維的海森矩陣並儲存它,只需要比較小的計算和儲存代價就可以實現對海參矩陣相當精確的近似。 在此基礎上,我們就可以利用泰勒展開,實現對原來的延遲梯度的補償。我們證明了有延遲補償的非同步隨機梯度下降法的收斂率比普通的非同步隨機梯度下降法要好很多,而且各種實驗也表明它的效果確實達到了我們的預期。

模型聚合

劉鐵巖談機器學習:隨波逐流的太多,我們需要反思

除了非同步通訊以外,每個區域性節點計算出一個區域性模型之後,怎樣聚合在一起也是一個值得思考的問題。在業界裡最常用的方式是把各個不同的區域性模型做簡單的引數平均。但是,從理論上講,引數平均僅在凸問題上是合理的。如果大家對凸函式的性質有一些瞭解,就知道如果模型是凸的,那麼我們對凸模型引數進行平均後得到的模型的效能,不會比每個模型效能的平均值差。

但是當我們用這樣的方式去處理深層神經網路這類嚴重非凸的模型時,就不再有理論保證了。我們在 2017 年這幾篇論文裡指出了這個理論的缺失,並指出我們不應該做模型引數的平均,而是應該做模型輸出的平均,這樣才能獲得效能的保障,因為雖然神經網路模型是非凸的,但是常用的損失函式本身是凸的。

但是模型輸出的平均相當於做了模型的整合,它會使模型的尺寸變大很多倍。當機器學習不斷迭代時,這種模型的整合就會導致模型尺寸爆炸的現象。為了保持凸性帶來的好處,同時又不會受到模型尺寸爆炸的困擾,我們需要在整個機器學習流程裡不僅做模型整合,還要做有效的模型壓縮。

這就是我們提出的模型整合-壓縮環路。透過模型整合,我們保持了凸性帶來的好處,透過模型壓縮,我們避免了模型尺寸的爆炸,所以最終會取得一個非常好的折中效果。

深度學習理論探索

接下來我們講講如何探索深度學習的理論邊界。我們都知道深度學習很高效,任意一個連續函式,只要一個足夠複雜的深度神經網路都可以逼近得很好。但是這並不表示機器就真能學到好的模型。因為當目標函式的介面太複雜時,我們可能掉入區域性極小值的陷阱,無法得到我們想要的最好模型。當模型太複雜時,還容易出現過擬合,在最佳化過程中可能做的不錯,可是當你把學到的模型應用到未知的測試資料上時,效果不一定很好。因此對於深度學習的最佳化過程進行深入研究是很有必要的。

g-Space

劉鐵巖談機器學習:隨波逐流的太多,我們需要反思


這個方向上,今年我們做了一個蠻有趣的工作,叫 g-Space Deep Learning。

這個工作研究的物件是影像處理任務裡常用的一大類深度神經網路,這類網路的啟用函式是ReLU函式。ReLU是一個分段線性函式,在負半軸取值為0,在正半軸則是一個線性函式。ReLU Network 有一個眾所周知的特點,就是正尺度不變性,但我們對於這個特點對神經網路最佳化影響的理解非常有限。

那麼什麼是正尺度不變性呢?我們來舉個例子。這是一個神經網路的區域性,假設中間隱節點的啟用函式是ReLU函式。當我們把這個神經元兩條輸入邊上面的權重都乘以一個正常數 c,同時把輸出邊上的權重除以同樣的正常數 c,就得到一個新的神經網路,因為它的引數發生了變化。但是如果我們把整個神經網路當成一個整體的黑盒子來看待,這個函式其實沒有發生任何變化,也就是無論什麼樣的輸入,輸出結果都不變。這就是正尺度不變性。

這個不變性其實很麻煩,當啟用函式是 ReLu函式時,很多引數完全不一樣的神經網路,其實對應了同一個函式。這說明當我們用神經網路的原始引數來表達神經網路時,引數空間是高度冗餘的空間,因為不同的引數可能對應了同一個網路。這種冗餘的空間是不能準確表達神經網路的。同時在這樣的冗餘空間裡可能存在很多假的極值點,它們是由空間冗餘帶來的,並不是原問題真實的極值點。我們平時在神經網路最佳化過程中遇到的梯度消減、梯度爆炸的現象,很多都跟冗餘的表達有關係。

既然引數空間冗餘有這麼多缺點,我們能不能解決這個問題?如果不在引數空間裡做梯度下降法,而是在一個更緊緻的表達空間裡進行最佳化,是不是就可以解決這些問題呢?這個願望聽起來很美好,但實際上做起來非常困難。因為深度神經網路是一個非常複雜的函式,想對它做精確的緊緻表達,需要非常強的數學基礎和幾何表達能力。我們組裡的研究員們做了非常多的努力,經過了一年多的時間,才對這個緊緻的空間做了一個完整的描述,我們稱其為 g-Space 。

g-Space 其實是由神經網路中一組線性無關的通路組成的,所謂通路就是從輸入到輸出所走過的一條不回頭的通路,也就是其中一些邊的連線集合。我們可以證明,如果把神經網路裡的這些通路組成一個空間,這個空間裡的基所組成的表達,其實就是對神經網路的緊緻表達。

劉鐵巖談機器學習:隨波逐流的太多,我們需要反思

有了 g-Space 之後,我們就可以在其中計算梯度,同時也可以在 g-Space 裡計算距離。有了這個距離之後,我們還可以在 g-Space 裡定義一些正則項,防止神經網路過擬合

我們的論文表明,在新的緊緻空間裡做梯度下降的計算複雜度並不高,跟在引數空間裡面做典型的 BP 操作複雜度幾乎是一樣的。換言之,我們設計了一個巧妙的演算法,它的複雜度並沒有增加,但卻迴避了原來引數空間裡的很多問題,獲得了對於 ReLU Network 的緊緻表達,並且計算了正確的梯度,實現了更好的模型最佳化。

有了這些東西之後,我們形成了一套新的深度學習最佳化框架。這個方法非常 general,它並沒有改變目標函式,也沒改變神經網路的結構,僅僅是換了一套最佳化方法,相當於整個機器學習工具包裡面只換了底層,就可以訓練出效果更好的模型來。

劉鐵巖談機器學習:隨波逐流的太多,我們需要反思

元學習的限制

劉鐵巖談機器學習:隨波逐流的太多,我們需要反思

第四個研究方向也非常有趣,我們管它叫 Learning to Teach,中文我沒想到特別好的翻譯,現在權且叫做“教學相長”。

我們提出 Learning to Teach 這個研究方向,是基於對現在機器學習框架的侷限性的反思。這個式子雖然看起來很簡單,但它可以描述一大類的或者說絕大部分機器學習問題。這個式子是什麼意思?首先 (x, y) 是訓練樣本,它是從訓練資料集 D 裡取樣出來的。 f(ω) 是模型,比如它可能代表了某一個神經網路。我們把 f(ω)作用在輸入樣本 x 上,就會得到一個對輸入樣本的預測。然後,我們把預測結果跟真值標籤 y 進行比較,就可以定義一個損失函式 L。

現在絕大部分機器學習都是在模型空間裡最小化損失函式。所以這個式子裡有三個量,分別是訓練資料 D,損失函式 L,還有模型空間 Ω。 這三個量都是引數,它們是人為設計好的,是不變的。絕大部分機器學習過程,是在這三樣給定的情況下去做最佳化,找到最好的 ω,使得我們在訓練資料集上能夠最小化人為定義的損失函式。即便是這幾年提出的 meta learning 或者 learning2learn,其實也沒有跳出這個框架。因為機器學習框架本身從來就沒有規定最小化過程只能用梯度下降的方法,你可以用任何方法,都超不出這個這個式子所表達的框架。

但是為什麼訓練資料集 D、損失函式 L 和模型引數空間 Ω 必須人為預先給定?如果不實現給定,而是在機器學習過程中動態調整,會變成什麼樣子?這就是所謂的 Learning to Teach。我們希望透過自動化的手段,自動調節訓練資料集 D、損失函式 L 和模型引數空間 Ω,以期擴充現有機器學習的邊界,幫助我們訓練出更加強大的機器學習模型。

要實現這件事情其實並不簡單,我們需要用全新的思路和視角。我們在今年連續發表了三篇文章,對於用自動化的方式去確定訓練資料、函式空間和損失函式,做了非常系統的研究。

劉鐵巖談機器學習:隨波逐流的太多,我們需要反思

我給大家形象地描述一下我們的研究。 比如我們怎麼用自動化的方式去選擇合適的資料?其實很簡單。除了原來的機器學習的模型以外,我們還有一個教學模型 teacher model。這個模型會把原來的機器學習的過程、所處的階段、效果好壞等作為輸入,輸出對下一階段訓練資料的選擇。這個 teacher model 會根據原來的機器學習模型的進展過程,動態選擇最適合的訓練資料,最大限度提高效能。同時teacher model也會把機器學習交叉驗證集上的效果作為反饋,自我學習,自我提高。

劉鐵巖談機器學習:隨波逐流的太多,我們需要反思

同樣 model teaching 的環路中也存在一個 teacher model ,它會根據原來的機器學習過程所處的階段、訓練的效果,選擇合適的函式空間,讓原來的機器學習擴大自己的搜尋範圍,這個過程也是自適應的、動態的。原來的機器學習模型我們叫 student model,和我們引入的教學模型 teacher model 之間進行互動,就可以將學習過程推向一個新的高度。

劉鐵巖談機器學習:隨波逐流的太多,我們需要反思

同樣,teacher model也可以動態調整原來student model 所要最佳化的目標。 比如,我們的學習目標可以從簡到難,最開始的時候,一個簡單的學習目標會讓我們很快學到一些東西,但是這個學習目標可能和我們最終問題的評價準則相差很遠。我們不斷把簡單平滑的目標,向著問題評價的複雜的非連續函式逼近,就會引導 student model 不斷提高自己的能力,最後實現很好的學習效果。

總結一下,當我們有一個 teacher model,它可以動態地設計訓練資料集、改變模型空間、調整目標函式時,就會使得原來“student model”的訓練更寬泛、更有效,它的邊界就會被放大。 我們在三篇論文裡面分別展示了很多不同資料集上的實驗結果。

劉鐵巖談機器學習:隨波逐流的太多,我們需要反思

我自己認為 Learning to Teach 非常有潛力,它擴大了傳統機器學習的邊界。我們的三篇論文僅僅是拋磚引玉,告訴大家這件事情可以做,但前面路還很長。

到此為止,我把最近這一兩年微軟亞洲研究院在機器學習領域所做的一些研究成果跟大家做了分享,它們只是我們研究成果的一個小小的子集,但是我覺得這幾個方向非常有趣,希望能夠啟發大家去做更有意義的研究。

展望未來

現在機器學習領域的會議越來越膨脹,有一點點不理智。每一年那麼多論文,甚至都不知道該讀哪些。人們在寫論文、做研究的時候,有時也不知道重點該放在哪裡。比如,如果整個學術界都在做 learning2learn,是不是我應該做一篇 learning2learn 的論文?大家都在用自動化的方式做 neural architecture search,我是不是也要做一篇呢?現在這種隨波逐流、人云亦云的心態非常多。

我們其實應該反思:現在大家關注的熱點是不是涵蓋了所有值得研究的問題?有哪些重要的方向其實是被忽略的?我舉個例子,比如輕量級的機器學習,比如 Learning to Teach,比如對於深度學習的一些理論探索,這些方面在如今火熱的研究領域裡面涉及的並不多,但這些方向其實非常重要。只有對這些方向有非常深刻的認識,我們才能真正推動機器學習的發展。希望大家能夠把心思放到那些你堅信重要的研究方向上,即便當下它還不是學術界關注的主流。

接下來我們對機器學習未來的發展做一些展望,這些展望可能有些天馬行空,但是卻包含了一些有意義的哲學思考,希望對大家有所啟發。

量子計算

第一個方面涉及機器學習和量子計算之間的關係。量子計算也是一個非常火的研究熱點,但是當機器學習碰到量子計算,會產生什麼樣的火花?其實這是一個非常值得我們思考的問題。

目前學術界關注的問題之一是如何利用量子計算的計算力去加速機器學習的最佳化過程,這就是所謂的quantum speedup。但是,這是否是故事的全部呢?大家應該想一想,反過來作為一名機器學習的學者,我們是不是有可能幫助量子計算呢?或者當機器學習和量子計算各自往前走,碰到一起的時候會迸發出怎樣的新火花?

劉鐵巖談機器學習:隨波逐流的太多,我們需要反思

其實在量子計算裡有一些非常重要的核心問題,比如我們要去評估或者或者預測 quantum state(量子態),然後才能把量子計算的結果取出來。這個過程在傳統理論裡面已經證明,在最壞情況下,我們就需要指數級的取樣,才能對 quantum state 做比較好的估計。但這件事情會帶來負面影響,量子計算雖然很快,但是如果探測量子態耗費了大量時間來做取樣,就會拖垮原來的加速效果,最後合在一起,並沒有實現任何加速。

我們知道很多最壞情況下非常複雜的問題,比如 NP Complete問題,用機器學習的方法去解,其實可以在平均意義上取得非常好的效果。我們今年在ACML上獲得最佳論文的工作就是用機器學習的方法來解travelling salesman問題,取得了比傳統組合最佳化更高效的結果。沿著這個思路,我們是不是可以用機器學習幫助處理量子計算裡的問題,比如quantum state prediction,是不是根本不需要指數級的取樣,就可以得到一個相當好的估計?線上學習強化學習等都能在這方面有所幫助。

同時,量子和機器學習理論相互碰撞時,會發生一些非常有趣的現象。我們知道,量子有不確定性,這種不確定性有的時候不見得是件壞事,因為在機器學習領域,我們通常希望有不確定性,甚至有時我們還會故意在資料里加噪聲,在模型訓練的過程中加噪聲,以期獲得更好的泛化效能。

從這個意義上講,量子計算的不確定性是不是反而可以幫助機器學習獲得更好的泛化效能?如果我們把量子計算的不確定性和機器學習的泛化放在一起,形成一個統一的理論框架,是不是可以告訴我們它的 Trade-off 在哪裡?是不是我們對量子態的探測就不需要那麼狠?因為探測得越狠可能越容易 overfit。是不是有一個比較好的折中?其實這些都是非常有趣的問題,也值得量子計算的研究人員和機器學習的研究人員共同花很多年的時間去探索。

以簡治繁

第二個方向也很有趣,它涉及到我們應該以何種方式來看待訓練資料。深度學習是一個以繁治繁的過程,為了去處理非常複雜的訓練資料,它使用了一個幾乎更復雜的模型。但這樣做真的值得嗎?跟我們過去幾十年甚至上百年做基礎科學的思路是不是一致的?

劉鐵巖談機器學習:隨波逐流的太多,我們需要反思

在物理、化學、生物這些領域,人們追求的是世界簡單而美的規律。不管是量子物理,還是化學鍵,甚至經濟學、遺傳學,很多複雜的現象背後其實都是一個二階偏微分方程,比如薛定諤方程,比如麥克斯韋方程組,等等。這些方程都告訴我們,看起來很複雜的世界,其實背後的數學模型都是簡單而美的。這些以簡治繁的思路,跟深度學習是大相徑庭的。

機器學習的學者也要思考一下,以繁治繁的深度學習真的是對的嗎?我們把資料看成上帝,用那麼複雜的模型去擬合它,這樣的思路真的對嗎?是不是有一點捨本逐末了?以前的這種以簡治繁的思路,從來都不認為資料是上帝,他們認為背後的規律是上帝,資料只是一個表象。

我們要學的是生成資料的規律,而不是資料本身,這個方向其實非常值得大家去思考。要想沿著這個方向做很好的研究,我們需要機器學習的學者擴大自己的知識面,更多地去了解動態系統或者是偏微分方程等,以及傳統科學裡的各種數學工具,而不是簡單地使用一個非線性的模型去做資料擬合。

Improvisational Learning

劉鐵巖談機器學習:隨波逐流的太多,我們需要反思

第三個方向關乎的是我們人類到底是如何學習的。到今天為止,深度學習在很多領域的成功,其實都是做模式識別模式識別聽起來很神奇,其實是很簡單的一件事情。幾乎所有的動物都會模式識別。人之所以有高的智慧,並不是因為我們會做模式識別,而是因為我們有知識,有常識。基於這個理念,Yann LeCun 一個新的研究方向叫 Predictive Learning(預測學習)。它的思想是什麼?就是即便我們沒有看到事物的全貌,因為我們有常識,有知識,我們仍然可以做一定程度的預測,並且基於這個預測去做決策。這件事情已經比傳統的模式識別高明很多,它會涉及到人利用知識和常識去做預測的問題。

但是,反過來想一想,我們的世界真的是可以預測的嗎?可能一些平凡的規律是可以預測的,但是我們每個人都可以體會到,我們的生活、我們的生命、我們的世界大部分都是不可預測的。所以這句名言很好,The only thing predictable about life is its unpredictability(人生中唯一能預測的就是其不可預測性)。

劉鐵巖談機器學習:隨波逐流的太多,我們需要反思

我們既然活在一個不可預測的世界裡,那麼我們到底是怎樣從這個世界裡學習,並且越來越強大?以下只是一家之言,我們猜測人類其實在做一件事情,叫 Improvisation,什麼意思?就是我們每個人其實是為了生存在跟這個世界抗爭。我們每天從世界裡面學習的東西,都是為了應付將來未知的異常。當一件不幸的事情發生的時候,我們如何才能生存下來?其實是因為我們對這個世界有足夠的瞭解,於是會利用已有的知識,即興制定出一個方案,讓我們規避風險,走過這個坎。

我們希望在我們的眼裡,世界的熵在降低。我們對它瞭解越多,它在我們的眼裡的熵越低。同時,我們希望當環境發生變化時,比如意外發生時,我們有能力即興地去處理。這張PPT 裡面描述的即興學習框架就是我們在跟環境互動,以及在做各種思想實驗,透過無監督的方式自我學習應對未知異常的能力。

從這個意義上講,這個過程其實跟 Predictive Learning 不一樣,跟強化學習也不一樣,因為它沒有既定的學習規律和學習目標,並且它是跟環境做互動,希望能夠處理未來的未知環境。這其實就跟我們每個人積累一身本事一樣,為的就是養兵千日用兵一時。當某件事情發生時,我怎麼能夠把一身的本事使出來,活下去。這個過程能不能用數學的語言描述? Improvisational Learning 能不能變成一個新的機器學習研究方向?非常值得我們思考。

群體智慧

劉鐵巖談機器學習:隨波逐流的太多,我們需要反思

最後一個展望涉及到一個更哲學的思辨:人類的智慧之所以這麼高,到底是因為我們個體非常強大,還是因為我們群體非常強大?今天絕大部分的人工智慧研究,包括深度學習,其實都在模仿人類個體的大腦,希望學會人類個體的學習能力。可是捫心自問,人類個體的學習能力真的比大猩猩等人類近親高几個數量級嗎?答案顯然不是,但是今天人類文明發展的程度,跟猴子、跟大猩猩他們所處社群的文明的發展程度相比卻有天壤之別。

所以我們堅信人類除了個體聰明以外,還有一些更加特殊的東西,那就是社會結構和社會機制,使得我們的智慧突飛猛進。比如文字的產生,書籍的產生,它變成了知識的載體,使得某一個人獲得的對世界的認知,可以迅速傳播給全世界其他人,這個社會機制非常重要,會加速我們的進化。

再者,社會分工不同會使得每個人只要最佳化自己的目標,讓自己變強大就可以了。各個領域裡有各自的大師,而這些大師的互補作用,使得我們社會蓬勃發展。

所以社會的多樣性,社會競爭、進化、革命、革新,這些可能都是人類有今天這種高智慧的原因。而這些東西在今天的機器學習領域,鮮有人去做非常好的建模。我們堅信只有對這些事情做了非常深入的研究,我們才能真正瞭解了人的智慧,真的瞭解了機器學習,把我們的研究推向新的高度。

相關文章