出品 | AI科技大本營(公衆號ID:rgznai100)
算法
AI科技大本營按:4 月 15 日舉辦的京東人工智能創新峯會上,剛剛上任京東人工智能南京分院學術總顧問的周志華教授作了《關於深度學習一點思考》的公開分享。網絡
近年來,深度神經網絡在語音、圖像領域取得突出進展,以致於不少人將深度學習與深度神經網絡等同視之。但周志華表示,總結 Kaggle 競賽中的獲獎結果能夠發現,神經網絡獲勝的每每就是在圖像、視頻、聲音這幾類典型任務上,而在其它涉及到混合建模、離散建模、符號建模的任務上,相比其餘模型就會差一些。機器學習
爲何會產生這樣的結果?周志華從深度神經網絡的深層含義提及,條分縷析地總結出神經網絡取得成功的三大緣由:分佈式
有逐層的處理函數
有特徵的內部變化性能
有足夠的模型複雜度學習
並得出結論:若是知足這三大條件,則並不必定只能用深度神經網絡。大數據
因爲神經網絡存在的一些缺陷,不少時候人們不得不考慮其餘的模型。周志華介紹了他所領導的團隊提出的 gcforest 方法,稱該方法有良好的跨任務表現、自適應的模型複雜度等優點。優化
而對於 gcforest 研究的重要意義,正如周志華在分享中表示的那樣,深度學習是一個黑屋子,之前你們都知道它裏面有深度神經網絡,如今咱們把這個屋子打開了一扇門,把 gcforest 放進來,我想之後可能還有更多的東西,這是這個工做從學術科學發展上更重要的價值所在。人工智能
周志華教授是美國計算機學會 (ACM)、美國科學促進會 (AAAS)、國際人工智能學會 (AAAI) 、國際電氣電子工程師學會 (IEEE) 、國際模式識別學會 (IAPR)、國際工程技術 (IET/IEE) 等學會的會士,實現了 AI 領域會士大滿貫,也是惟一一位在中國大陸取得所有學位的 AAAI 會士,對於機器學習中的集成學習、多標記學習與半監督學習有着卓越的貢獻。他還一手參與建立了南京大學人工智能學院並擔任院長。
下面是演講全文,AI科技大本營整理:
各位可能最近都據說咱們南京大學成立了人工智能學院,這是中國 C9 高校的第一我的工智能學科。今天就跟你們談一談咱們本身對於深度學習的一點點很是粗淺的見解,僅供你們批評討論。
▌什麼是深度學習?
咱們都知道如今人工智能很熱,掀起這股的熱潮最重要的技術之一就是深度學習技術。今天當咱們談到深度學習的時候,其實已經能夠看到在各類各樣的應用,包括圖像、視頻、聲音、天然語言處理等等。若是咱們問一個問題,什麼是深度學習?大多數人基本會認爲,深度學習差很少就等於深度神經網絡。
我給你們看一個例子。有一個很是著名的學會是國際工業與應用數學學會,他們有一個報紙叫 SIAM News。去年 6 月份的頭版上有一篇文章,它裏面的重點說的就是深度學習是什麼?它(深度學習)是機器學習的一個子域(subfield),這裏面要用深度神經網絡。
因此基本上若是咱們要談深度學習的話,首先要從神經網絡開始。神經網絡並非一個新生事物,人們已經研究了超過半個世紀。但以往的話咱們會用這樣的神經網絡,就是中間有一個隱層或者有兩個隱層。在這樣的神經網絡裏面,它的每個單元是一個什麼樣的東西呢?是個很是簡單的計算模型。
好比說這麼一個計算模型,實際上半個多世紀之前咱們就已經總結出來了。咱們收到一些輸入,這些輸入經過一些鏈接放大,到了細胞以後,它的「加和」若是超過一個閾值,這個細胞就激活了。實際上說穿了就是這麼一個很是簡單的公式,所謂的神經網絡就是不少這樣的公式經過嵌套迭代獲得的一個數學系統。
今天咱們說深度神經網絡的時候指的是什麼?其實簡單來講就是用的神經網絡有不少層,很深很深。大概多少?看一個數據,2012 年深度學習剛剛受到你們的重視的時候,一個 ImageNet 競賽的冠軍用了 8 層,2015 年 152 層,2016 年 1207 多層,這是一個很是龐大的系統。
要把這個系統訓練出來難度很是大,但有一個很是好的消息,真正的神經網絡裏面的計算單元,它最重要的激活函數是連續的,是可微的。之前在神經網絡裏面咱們常常用 Sigmoid,它是連續可微的,如今在深度神經網絡裏,咱們常常用 tanh 或者 tanh 的變體,它也是連續可微的。有了這麼一個性質之後,咱們會獲得一個很是好的結果,這個結果就是如今咱們能夠很容易計算系統的梯度。所以就能夠很容易用著名的 BP 算法(注:反向傳播算法)來訓練這系統。
今天經過這樣的算法,神經網絡已經取得了很是多的勝利,但實際上在學術界你們一直沒有想清楚一件事情,就是咱們爲何要用這麼深的模式?可能今天有不少人會說深度學習已經取得了不少的成功,但它一個很大的問題就是理論基礎不清楚,咱們理論上還說不清楚它到底怎麼作?爲何會成功?這裏面的關鍵是什麼?其實咱們根本不知道該從什麼角度去看它。由於若是咱們要作理論分析的話,首先應該有一點直覺,你到底由於什麼有用,在這條路上往前走纔能有關鍵的結果。
關於深度神經網絡爲何能深,其實這件事情到今天爲止學術界都沒有統一的見解。在這裏面給你們講一個咱們前一段時間給出的論述,這個論述實際上是從主要模型的複雜度的角度來討論的。
▌深度學習成功的關鍵是什麼?
咱們知道一個機器學習模型的複雜度實際上和它的容量有關,而這個容量直接決定了它的學習能力,因此說學習能力和複雜度是有關的。其實咱們老早就知道,若是咱們可以加強一個學習模型的複雜度,它的學習能力就可以提高,那麼怎樣去提升複雜度呢?
對神經網絡這樣的模型來講有兩條很明顯的途徑,一條是咱們把模型變深,一條是咱們把它變寬,可是若是從提高複雜度的角度,變深會更有效。當你變寬的時候你只不過增長了一些計算單元、增長了函數的個數,而在變深的時候不只增長了個數,其實還增長了嵌入的層次,因此泛函的表達能力會更強。因此從這個角度來講,咱們應該嘗試變深。
你們可能就會問了,既然要變深,大家不早就知道這件事了嗎?爲何如今纔開始作呢?其實這就涉及到另一個問題,咱們在機器學習裏面把學習能力變強了,這其實未必真的是一件好事。由於咱們機器學習一直在鬥爭的一個問題,就是咱們常常會碰到過擬合。
給定一個數據集,咱們但願把數據集裏的東西學出來,可是有時候可能把這個數據自己的一些特性學出來了,而這個特性卻不是通常的規律。當把學出來的錯誤東西當成通常規律來用的時候,就會犯巨大的錯誤,這種現象就是過擬合。爲何會把數據自己的特性學出來?就是由於咱們的模型學習能力太強了。
因此以往咱們不太用太複雜的模型,爲何如今咱們能夠用這樣的模型?其實有不少因素,第一個因素是如今咱們有很大的數據,那麼好比說我手上若是隻有 3000 多數據,學出來的特性就不太多是通常規律。可是若是有三千萬、甚至三千萬萬的數據,那麼這些數據裏的特性原本就是通常規律,因此使用大的數據自己就是緩解過擬合的關鍵條件。
第二個因素,今天有不少很強大的計算設備,因此纔可以訓練出這樣的模型,同時經過領域裏不少學者的努力,咱們有了大量關於訓練這樣複雜模型的技巧和算法,因此這使得咱們使用複雜模型成爲可能。
按照這個思路來講,其實有三件事:第一,咱們今天有更大的數據;第二;有強力的計算設備;第三,有不少有效的訓練技巧。
這致使咱們能夠用高複雜度的模型。而深度神經網絡偏偏就是一種很便於實現的高複雜度的模型。因此這麼一套理論解釋,若是咱們說它是一個解釋的話,它好像是能告訴咱們爲何咱們如今能用深度神經網絡。爲何它能成功?就是由於複雜度大。
在一年多以前,咱們把這個解釋說出來的時候,其實國內外不少同行也很贊同這麼一個解釋,由於你們以爲這聽起來蠻有道理的,其實我一直對這個不是特別滿意,這是爲何?其實有一個潛在的問題咱們一直沒有回答。若是從複雜度解釋的話,咱們就沒有辦法說爲何扁平的或者寬的網絡作不到深度神經網絡的性能?由於事實上咱們把網絡變寬,雖然它的效率不是那麼高,可是它一樣也能起到增長複雜度的能力。
實際上咱們在 1989 年的時候就已經有一個理論證實,說神經網絡有萬有逼近能力:只要你用一個隱層,就能夠以任意精度逼近任意複雜度的定義在一個緊集上的連續函數。
其實不必定要很是深。這裏面我要引用一個說法,神經網絡有萬有逼近能力,多是有的人會認爲這是致使神經網絡爲何這麼強大的一個主要緣由,其實這是一個誤解。
咱們在機器學習裏面用到的全部模型,它必須具備萬有逼近能力。若是沒有這個能力,根本不可用。因此最簡單的,哪怕傅立葉變換,它就已經有這個能力,因此這個能力不是神經網絡所特有的。那咱們在這兒要強調的一件事情是什麼?其實我只要有一個隱層,我加無限度的神經元進去,它的能力也會變得很強,複雜度會變得很高。可是這樣的模型不管在應用裏面怎麼試,咱們發現都不如深度神經網絡好。因此從複雜的角度可能很難解決這個問題,咱們須要一點更深刻的思考。
因此咱們要問這麼一個問題:深度神經網絡裏面最本質的東西究竟是什麼?今天咱們的答案多是要作表示學習的能力。以往咱們用機器學習,首先拿到一個數據,好比這個數據對象是一個圖像,咱們就用不少特徵把它描述出來,好比說顏色、紋理等等,這一些特徵都是咱們人類專家經過手工來設計的,表達出來以後咱們再去進行學習。
而今天咱們有了深度學習以後,如今再也不須要手工設計特徵,把數據從一端扔進去,模型從另一端出來,中間全部的特徵徹底經過學習本身來解決,這是所謂的特徵學習或者表示學習,這和以往的機器學習技術相比是一個很大的進步,咱們再也不須要徹底依賴人類專家去設計特徵了。
有時候咱們的工業界朋友會說,這裏面有一個很重要的叫作端到端學習,你們認爲這個很是重要。其實這一件事情要分兩個方面來看:一個方面當咱們把特徵學習和分類器學習聯合起來考慮,能夠達到聯合優化的做用,這是好的方面;但另外一方面,若是這裏面發生什麼咱們不清楚,這時候端到端的學習不必定真的好,由於可能第一部分往東,第二部分往西,合起來看往東走的更多一些,其實內部有一些東西已經抵消了。
實際上機器學習裏面早就有端到端學習,好比說作特徵選擇,但這類方法是否是比其它特徵選擇的方法要強?不必定,因此這不是最重要的,真正重要的仍是特徵學習或者表示學習。
咱們再問下一個問題,表示學習最關鍵的又是什麼?對這件事情咱們如今有這麼一個答案,就是逐層的處理。如今咱們就引用很是流行的《深度學習》一書裏的一張圖,當咱們拿到一個圖像的時候,若是咱們把神經網絡看做不少層的時候,首先在最底層咱們看到是一些像素的東西,當咱們一層一層往上的時候,慢慢的有邊緣,再往上有輪廓等等,在真正的神經網絡模型裏不必定有這麼清晰的分層,但整體上確實是在往上不斷作對象的抽象。
而這個特色,咱們如今認爲這好像是深度學習真正成功的關鍵因素之一,由於扁平神經網絡能作不少深層神經網絡所作的事,可是有一點它作不到:當它是扁平的時候,就沒有進行一個深度加工,因此深度的逐層抽象可能很關鍵。那若是咱們再看一看,你們可能就會問,其實逐層處理這件事,在機器學習裏也不是一個新東西。
之前有不少逐層處理的東西,好比說決策樹,它就是逐層處理,這是很是典型的模型。這個已經有五六十年的歷史了,但它爲何作不到深度神經網絡這麼好呢?首先它的複雜度不夠,由於決策樹的深度,若是咱們只考慮離散特徵,其最深的深度不會超過特徵的個數,因此它的模型複雜度有上限;第二整個決策樹的學習過程當中,它內部沒有進行特徵變化,始終是在一個特徵空間裏面進行,這可能也是一個問題。
你們若是對高級一點的機器學習模型有所瞭解,你可能會問,如今不少 Boosting 模型也是一層一層往下走,爲何它沒有取得深度學習的成功?我想問題其實差很少,首先複雜度還不夠,第二,更關鍵的一點,它始終在原始空間裏面作事情,全部的這些學習器都是在原始特徵空間,中間沒有進行任何的特徵變換。
深度神經網絡到底爲何成功?裏面的關鍵緣由是什麼?我想首先咱們須要兩件事,第一是逐層地處理,第二咱們要有一個內部的特徵變換。而當咱們考慮到這兩件事情的時候,咱們就會發現,其實深度模型是一個很是天然的選擇。有了這樣的模型,咱們很容易能夠作上面兩件事。可是當咱們選擇用這麼一個深度模型的時候,咱們就會有不少問題,它容易 overfit,因此咱們要用大數據,它很難訓練,咱們要有不少訓練的 trick,這個系統的計算開銷很是大,因此咱們要有很是強有力的計算設備,好比 GPU 等等。
實際上全部這些東西是由於咱們選擇了深度模型以後產生的一個結果,他們不是咱們用深度學習的緣由。因此這和以往咱們的思考不太同樣,以往咱們認爲有了這些東西,致使咱們用深度模型,如今咱們以爲這個因果關係偏偏是反過來的——由於咱們要用它,因此咱們纔會考慮上面的這些東西。
而另外還有一點咱們要注意,當咱們要有很大的訓練數據的時候,這就要求咱們必需要有很複雜的模型。假設咱們有一個線性模型的話,給你 2000 萬要的仍是 2 億的樣本,其實對它不是太大區別,它已經學不進去。而咱們有了充分的複雜度,其實咱們看到偏偏它又給咱們使用深度模型加了一分。
因爲這幾個緣由,咱們才以爲可能這是深度學習裏面最關鍵的事情。因此這是咱們如今的一個認識:
這三件事情是咱們如今認爲深度神經網絡爲何可以成功的關鍵緣由,或者說這是一個猜想。若是知足這幾個條件,我其實能夠立刻想到,不必定真的要用神經網絡,神經網絡是選擇的幾個方案之一,我只要同時作到這三件事,別的模型也能夠,並不必定只能用深度神經網絡。
▌深度神經網絡的缺陷
咱們就要想想,咱們有沒有必要考慮神經網絡以外的模型?實際上是有的。由於你們都知道神經網絡有不少缺陷。
第一,凡是用過深度神經網絡的人都知道,你要花大量的精力來調它的參數,由於這是一個巨大的系統。這裏面會帶來不少問題,首先當咱們調參數的時候,這個經驗實際上是很難共享的。有的朋友可能說,我在第一個圖像數據集之上調數據的經驗,當我用第二個圖像數據集的時候,這個經驗確定能夠重用的。可是咱們有沒有想過,好比說咱們在圖像方面作了一個很大的神經網絡,這時候若是要去作語音,其實在圖像上面調參數的經驗,在語音問題上可能基本上不太有借鑑做用,因此當咱們跨任務的時候,經驗可能就很難有成效。
並且還帶來第二個問題,咱們今天都很是關注結果的可重複性,無論是科學研究、技術發展,都但願這結果可重複,而在整個機器學習領域裏面,深度學習的可重複性是最弱的。咱們常常會碰到這樣的狀況,有一組研究人員發文章報告了一個結果,而這結果其餘的研究人員很難重複。由於哪怕你用一樣的數據、一樣的方法,只要超參數的設計不同,你的結果就不同。
咱們在用深度神經網絡的時候,模型的複雜度必須事先指定,由於在訓練模型以前,神經網絡是什麼樣就必須定了,而後才能用 BP 算法等等去訓練它。其實這就會帶來很大的問題,由於在沒有解決這個任務以前,咱們怎麼知道這個複雜度應該有多大呢?因此實際上你們作的一般都是設更大的複雜度。
若是在座各位關注過去三四年裏深度神經網絡、深度學習領域的進展,你能夠看到不少最前沿的工做在作什麼事呢?其實都是在有效地縮減網絡的複雜度。好比說 ResNet 網絡,還有最近你們常常用的模型壓縮等,其實咱們想想不都是把複雜度變小,其實是先用了一個過大的複雜度,而後再降下來。
那麼咱們有沒有可能在一開始就讓這個模型的複雜度隨着數據而變化?這一點對神經網絡可能很困難,可是對別的模型是有可能的。還有不少別的問題,好比說理論分析很困難,須要很是大的數據,黑箱模型等等。
從另一個方面,各位朋友可能說,你作學術研究可能要考慮這些事,我是作應用的,你只要給我解決問題就行了。就算從這角度來說,咱們研究神經網絡以外的東西也是很必要的。雖然神經網絡這麼流行,這麼成功,可是其實咱們能夠看到,在不少的任務上性能最好的,不見得徹底是深度神經網絡,好比說你們常常關心的 Kaggle 競賽,它上面是各類各樣的真實問題,好比說有機票、訂旅館,商品推薦等等。
若是咱們看上面的獲勝者,今天不少還不是神經網絡,不少是像隨機森林等這樣的模型。若是咱們真的仔細去關注,真的神經網絡獲勝的每每就是在圖像、視頻、聲音這幾類典型任務上,而在其它涉及到混合建模、離散建模、符號建模的任務上,其實神經網絡的性能比其它模型還要差一些。
因此若是咱們從一個學術的角度從新總結下這件事,咱們就能夠看到,今天咱們談到的深度模型基本上都是深度神經網絡。若是用術語來講的話,它是多層可參數化的可微分的非線性模塊所組成的模型,而這個模型能夠用 BP 算法來訓練。
那麼這裏面有兩個問題:第一,咱們現實世界遇到的各類各樣的問題的性質,並非絕對都是可微的,或者可以用可微的模型作最佳建模;第二,過去幾十年裏面,咱們的機器學習界作了不少不少模型出來,這些均可以做爲咱們構建一個系統的基石,而中間有至關一部分模塊是不可微的。
那麼這些能不能用來構建深度模型?能不能經過構建深度模型以後獲得更好的性能呢?能不能經過把它們變深以後,使得今天深度模型還打不過隨機森林這一些模型的任務,可以獲得更好的結果呢?
因此咱們如今有一個很大的挑戰,這不光是學術上也是技術上的挑戰,就是咱們能不能用不可微的模塊來構建深度模型。
其實這個問題一旦獲得回答,咱們同時就能夠獲得好多其餘問題的回答。好比說深度模型是否是就是深度神經網絡?咱們能不能用不可微的模型把它作深,這個時候咱們不能用 BP 算法來訓練,同時咱們能不能讓深度模型在更多的任務上獲勝。這個問題其實咱們提出來以後在國際上也有一些學者提出了一些類似見解。好比你們都知道深度學習很是著名的領軍人物 Geoffrey Hinton 教授,他也提出來但願深度學習之後能不能擺脫 BP 算法來作,他提出這個想法比咱們要更晚一些。因此我想這一些問題是站在很前沿的角度上作的探索。
那咱們本身就受到這樣的一個啓發,咱們要考慮這三件事,就是剛纔跟你們分析獲得的三個結論:第一要作逐層處理,第二是特徵的內部變換,第三咱們但願獲得一個充分的模型複雜度。
▌深度森林
我本身領導的研究組最近在這一方面作了一些工做,咱們最近提出了一個 深度森林的方法。
在這個方法裏面我今天不跟你們講技術細節,它是一個基於樹模型的方法,主要是借用集成學習的不少想法。其次在不少不一樣的任務上,它的模型獲得的結果和深度神經網絡是高度類似的,除了一些大規模的圖像等等。在其餘的任務上,特別是跨任務表現很是好,咱們能夠用一樣一套參數,用在不一樣的任務中獲得不錯的性能,就不須要逐任務的慢慢調參數。
還有一個很重要的特性,它有自適應的模型複雜度,能夠根據數據的大小自動來斷定該模型長到什麼程度。它的中間有不少好的性質,有不少朋友可能也會下載咱們的開源代碼拿去試,到時候咱們會有更大規模分佈式的版本等等,要作大的任務必需要有更大規模的實現,就再也不是單機版能作的事。
但另外一方面,咱們要看到這其實是在發展學科思路上一個全新的思路探索,因此今天雖然它已經可以解決一部分問題了,可是咱們應該能夠看到它再往下發展,前景多是今天咱們還不太可以徹底預見到的,因此我這邊簡單回顧一下卷積神經網絡,這麼一個很是流行的技術,它其實也是通過了很長期的發展。
最先信號處理裏面關於卷積的出現,實際上是有一個多世紀了,可是如今深度神經網絡的歷史是從 1962 年兩位諾貝爾獎得主關於生物視覺皮層的研究開始。可是無論怎麼樣第一次在神經網絡裏引入卷積是 1982 年,在此以後他們作了不少的工做,1989 年引入 BP 算法,那時算法就已經成型了,到了 1995 年第一次對 CNN 有了一個完整的描述,在 1998 年對美國支票的識別取得了很大的成功,在 2006 年提出了經過無監督逐層訓練深層模型,到了 2009 年這個技術被引到 CNN 裏,咱們能夠作深度的 CNN,2012 年深度的 CNN 被用在 ImageNet 比賽中,直接掀起了一波深度學習的浪潮。
回顧這段歷史,從卷積神經網絡開始出現,到這個算法真正在工業界取得巨大成效,中間通過了 30 年的發展,我常常說咱們其實沒有什麼真正的顛覆性技術,全部的技術都是一步步發展。今天咱們有新的探索,新的探索可以解決一些問題,但咱們應該往長遠看,在通過不少年,不少人的進一步努力後,今天的探索應該是爲將來技術打下一個更加劇要的基礎。
咱們作的這一工做,我想它其實是深度森林這一大類模型的開始,技術細節就不展開了,可是它全面的用到了集成學習裏,據我所知多樣性加強方面,全部的技術都用進去,因此若是你們感興趣,這是我本身寫的一本書。
我所作的工做的最重要的意義是什麼呢?之前咱們說深度學習是一個黑屋子,這個黑屋子裏面有什麼東西呢?你們都知道它有深度神經網絡,如今咱們把這個屋子打開了一扇門,把深度森林放進來,我想之後可能還有更多的東西。因此這是這個工做從學術科學發展上的意義上,有一個更重要的價值。
▌AI時代最重要的是人才
最後我想用兩分鐘的時間談一談,南京大學人工智能學院立刻跟京東開展全面的、深刻的在科學研究和人才培養方面的合做。
關於人工智能產業的發展,咱們要問一個問題,咱們到底須要什麼?你們說須要設備嗎?其實作人工智能的研究不須要特殊機密的設備,你只要花錢,這些設備都買獲得,GPU 這些都不是什麼高端的禁運的商品。第二是否是缺數據?也不是,如今咱們的數據收集存儲、傳輸、處理的能力大幅度的提高,處處都是數據,真正缺的是什麼?
其實人工智能時代最缺的就是人才。由於對這個行業來講,你有多好的人,纔有多好的人工智能。因此咱們如今能夠看到,其實全球都在爭搶人工智能人才,不光是中國,美國也是這樣。因此咱們成立人工智能學院,其實就有這樣的考慮。
信息化以後人類社會必然進入智能化,能夠說這是一個不可逆轉、不可改變的一個趨勢。由於咱們基於數據信息爲人提供智能輔助,讓人作事更容易,這是咱們全部人的願望。蒸汽機的革命是把咱們從體力勞動裏面解放出來,人工智能革命應該是把咱們人類從一些反覆性強的簡單智力勞動中解放出來,並且人工智能這一個學科和其餘短時間的投資風口和短時間熱點不太同樣,它通過 60 多年的發展,已經有了一個龐大的、真正的知識體系。
可能咱們投資風口裏面有一些詞,今年還很熱,明年就已經不見了,這些詞若是咱們追究一下,它裏面科學含義究竟是什麼?可能沒幾我的說的清楚,而人工智能和這些東西徹底不同,是通過 60 多年發展出來的一個學科。
高水平的人工智能人才奇缺,這是一個世界性的問題,咱們不少企業都是重金挖人,但實際上挖人不能帶來增量,因此咱們要從源頭作起,爲國家、社會、產業的發展培養高水平的人工智能人才。