來源:https://www.zhihu.com/question/47602063/answer/150845355
針對這個問題,我們邀請了微軟亞洲研究院機器學習組的主管研究員秦濤博士與大家分享他的觀點。
微軟亞洲研究院機器學習組包含機器學習的各個主要方向,在理論、算法、應用等不同層面推動機器學習領域的學術前沿。該組目前的研究重點為深度學習、增強學習、分布式機器學習和圖學習。其研究課題還包括排序學習、計算廣告和雲定價。在過去的十幾年間,該組在頂級國際會議和期刊上發表了大量高質量論文,幫助微軟的產品部門解決了很多複雜問題,並向開源社區貢獻了微軟分布式機器學習工具包(DMTK)和微軟圖引擎(Graph Engine),LightLDA、LightGBM等,並受到廣泛關注。該組正在招賢納士,誠邀各路英雄好漢加盟,共同逐鹿AI天下。聯繫我們。
————這裡是正式回答的分割線————
要回答這個問題,先要從人工智慧近年的進展開始說起。
從1956年達特茅斯會議上人工智慧的誕生開始,到如今人工智慧已經發展了61年,這期間人工智慧歷經風雨,經歷了數次高潮也有數次低谷,每次高潮都是因為核心技術的提出引起了人們極大的興趣,吸引了大量的資金的投入。但同時由於大家的期望值遠遠超過了技術所能夠達到的高度,因此當人們發現巨大的資金和人才的投入不能達到預期成果的時候,人工智慧的冬天也隨之而來。幸運的是,現在我們正處於人工智慧的第三次浪潮,並且目前看來,距離下一個冬天還是挺遠的。從媒體的報導,大家可能都能了解到,人工智慧在各個方向都取得了非常大的進展,不管是研究上、實踐上,還是應用上。下面我們簡單回顧一下人工智慧近年來在各個方向取得的進展。
早在2012年,微軟就在「21世紀的計算」大會上展示了一個同聲傳譯的系統,這個系統其實相當複雜:當微軟研究院創始人Rick Rashid用英文演講的時候,這個系統首先需要將英文的語音識別成英文的文本,然後通過一個翻譯系統把英文翻譯成中文,然後再把中文文本合成成為中文的語音。整個複雜的過程都是通過深度學習的技術來支撐的。
在2015年底,發生了一件對計算機視覺領域而言非常重要的事情,就是微軟亞洲研究院的研究員提出了一個新的基於CNN的深度模型叫做殘差網絡,這個殘差網絡深度高達152層,取得了當時圖象識別比賽上面最好的成績。到現在為止,深度殘差網絡在計算機視覺的研究中被廣泛使用,並且被集成到微軟還有其他大公司的產品中。
再到後來,2016年初,可能大家都知道,AlphaGo這個系統打敗了圍棋世界冠軍李世石,這非常出乎人們的預料,特別是AI專家的預料,因為大家普遍認為,機器要在圍棋上戰勝人類可能還需要20年。在2016年下半年,微軟宣布了另外一項AI上的進展,就是在日常對話的語音識別中,微軟的技術已經達到了人類的水平,這也是非常了不起的,因為如果大家關注一下我們日常的講話,就會發現,其中有很多停頓,並且帶一些語氣詞,與朗誦或者新聞播音相差很大,這種日常對話識別要達到人類的水平是很不容易的。
從以上的簡單回顧可以看出,人工智慧的第三波浪潮和深度學習是分不開的。深度學習裡最經典的模型是全連接的神經網絡,就是每相臨的兩層之間節點之間是通過邊全連接;再就是卷積神經網絡,這個在計算機視覺裡面用得非常多;再就是循環神經網絡RNN,這個在對系列進行建模,例如自然語言處理或者語音信號裡面用得很多,這些都是非常成功的深度神經網絡的模型。還有一個非常重要的技術就是深度強化學習技術,這是深度學習和強化學習的結合,也是AlphaGo系統所採用的技術。
深度學習的成功主要歸功於三大因素——大數據、大模型、大計算。現在可以利用的數據特別是人工標註的數據非常多,使得我們能夠從數據中學到以前沒法學習的東西。另外技術上的發展使得訓練大模型成為了可能,例如上千層的深度神經網絡,這個在四年以前都覺得不能想像的事情,現在都已經發展成為現實,並且在產品中都有了很廣泛的使用。再就是大計算,從CPU到GPU,可獲取的計算資源越來越豐富。
大數據、大模型、大計算是深度學習的三大支柱,因此這三個方向都是當前研究的熱點,例如如何從更多更大的數據裡面進行學習,如何訓練更大更深的模型。非常深的模型,當前更成功的例子是在計算機視覺裡面,但如何把這種更深的模型引入到自然語言處理裡面,還需要研究,例如當前幾個大公司的神經機器翻譯模型,都是利用較深的RNN,但是還是遠遠達不到殘差網絡的深度。從大計算這個方面來講,整個演變過程是從CPU到GPU到FPGA,再發展到現在有些公司定製自己專有晶片,國內的有一些創業公司,也都在做一些AI晶片,專門為AI來設計一些硬體。大計算另外一個角度就是深度學習的平臺和系統,這個可以說是各大AI或者是網際網路公司的著重發力的地方,例如微軟的CNTK、DMTK,再比如TensorFlow、Torch,以及學術界的開源平臺包括Theano、Caffe、MxNet等等。可以預計,在短期內,各大公司還會在這個領域做非常激烈的競爭,希望能夠吸引第三方公司使用他們的平臺和系統。
俗話說成也蕭何敗也蕭何,大數據、大模型、大計算是深度學習成功的三大支柱因素,但他們同時也為深度學習的進一步發展和普及帶來了一些制約因素。接下來,我會為大家介紹目前深度學習的五大挑戰及其解決方案。
挑戰1:標註數據代價昂貴
前沿1:從無標註的數據裡學習
大家都知道,深度學習訓練一個模型需要很多的人工標註的數據。例如在圖象識別裡面,經常我們可能需要上百萬的人工標註的數據,在語音識別裡面,我們可能需要成千上萬小時的人工標註的數據,機器翻譯更是需要數千萬的雙語句對做訓練,在圍棋裡面DeepMind當初訓練這個模型也用了數千萬圍棋高手走子的記錄,這些都是大數據的體現。
但是,很多時候找專家來標註數據是非常昂貴的,並且對一些應用而言,很難找到大規模的標註的數據,例如一些疑難雜症,或者是一些比較稀有的應用場景。這裡我們做一個粗略的分析,看看標註數據的代價有多高。比如說對機器翻譯而言,現在如果我們請人工來翻譯,一個單詞的費用差不多是5—10美分之間,一個句子平均長度差不多是30個單詞,如果我們需要標註一千萬個雙語句對,也就是我們需要找專家翻譯一千萬句話,這個標註的費用差不多是2200萬美元。
大家可以看到數據標註的費用是非常非常高的,讓一個創業公司或者一些剛剛涉足人工智慧的公司拿這麼大一筆資金來標註數據是很難或者是不太可行的。因此當前深度學習的一個前沿就是如何從無標註的數據裡面進行學習。現在已經有相關的研究工作,包括最近比較火的生成式對抗網絡,以及我們自己提出的對偶學習。
生成式對抗網絡的主要目的是學到一個生成模型,這樣它可以生成很多圖像,這種圖像看起來就像真實的自然圖像一樣。它解決這個問題的思路跟以前的方法不太一樣,它是同時學習兩個神經網絡:一個神經網絡生成圖像,另外一個神經網絡給圖像進行分類,區分真實的圖像和生成的圖像。在生成式對抗網絡裡面,第一個神經網絡也就是生成式神經網絡,它的目的是希望生成的圖像非常像自然界的真實圖像,這樣的話,那後面的第二個網絡,也就是那個分類器沒辦法區分真實世界的圖像和生成的圖像;而第二個神經網絡,也就是分類器,它的目的是希望能夠正確的把生成的圖像也就是假的圖像和真實的自然界圖像能夠區分開。大家可以看到,這兩個神經網絡的目的其實是不一樣的,他們一起進行訓練,就可以得到一個很好的生成式神經網絡。生成式對抗網絡最初提出的時候,主要是對於圖像的生成,現在很多人把他應用到各個不同的問題上,包括自然語言理解,比如說最近我們有一個工作,就是把這種思想應用到機器翻譯裡面,能夠很大幅度的提高機器翻譯的準確度。
針對如何從無標註的數據進行學習,我們組裡面提出了一個新思路,叫做對偶學習。對偶學習的思路和前面生成式對抗學習會非常不一樣。對偶學習的提出是受到一個現象的啟發:我們發現很多人工智慧的任務在結構上有對偶屬性。比如說在機器翻譯裡面,我們把中文翻譯成英文,這是一個任務,但是我們同樣也需要把英文翻譯成中文,這是一個對偶的任務。這種原任務和對偶任務之間,他們的輸入和輸出正好是反著來的。在語音處理裡面,語音識別是把語音轉化成文字,語音合成是把文字轉化成語音,也是互為對偶的兩個任務。在圖像理解裡面,看圖說話,也就是給一張圖生成一句描述性的語句,它的對偶任務是給一句話生成一張圖,這兩個任務一個是從圖像到文本,另外一個是從文本到圖像。在對話系統裡面,回答問題和問題生成也是互為對偶的兩個問題,前者是給定問題生成答案,後者是給定答案生成問題。在搜尋引擎裡面,給定檢索詞返回相關文檔和給定文檔或者廣告返回關鍵詞也是互為對偶的問題:搜尋引擎最主要的任務是針對用戶提交的檢索詞匹配一些文檔,返回最相關的文檔;當廣告商提交一個廣告之後,廣告平臺需要給他推薦一些關健詞使得他的廣告在用戶搜索這些詞能夠展現出來被用戶點擊。
對偶學習試圖把這種結構的對偶屬性應用在機器學習裡。其基本思想比較簡單,我們以機器翻譯為例子來說明。我們想把一個中文句子翻譯成英文,我們可以先用一個中文到英文的翻譯模型,把這個句子翻譯成英文的句子,因為我們沒有英文的標註,所以不知道這個英文的翻譯是好還是壞以及有多好多壞。我們再利用從英文到中文的翻譯模型,把這個英文的句子翻譯成中文的句子,這樣一來,我們就得到了一個新的中文句子。整個過程包含了正向翻譯和反向翻譯互為對偶的兩個步驟。然後我們比較原始中文的句子和後來得到的中文句子,如果兩個翻譯模型都很好的話,這兩個中文的句子應該比較相似,如果兩個模型不好或者有一個模型不好的話,得到的兩個中文句子就不相似。因此我們可以通過這種對偶過程從無標註的數據獲得反饋信息,知道我們的模型工作的好還是不好,進而根據這些反饋信息來訓練更新正向反向模型,從而達到從無標註數據學習的目的。
我們在機器翻譯裡面做了一些實驗,發現通過對偶學習的過程,我們只需要用10%標註的數據(大概100萬英法雙語句對),再加上很多沒有標註的數據,達到用100%標註數據(1200萬英法雙語句對)訓練的模型的準確度。大家回想一下,我們前面有個粗略的估計,一千萬個訓練語料標註的費用差不多2200萬美元,如果我們能把標註的人工費用從2200萬美元降到200萬美元,這會是一個非常好的結果,能夠大大降低公司運營成本提高運營效率。
最近我們在對偶學習的研究上有一些新的進展,把對偶學習這種基本思想應用到其他的問題裡面,像圖像分類、圖像生成,以及對自然語言的情感分析。我們發現這種結構的對偶屬性可以從不同角度幫助機器學習,提高學習算法的準確度。
從無標註的數據進行學習,我們預計在未來三到五年還是非常重要的一個問題,並且對我們實際的應用也會有很大的幫助。很多問題以前是因為受限於沒有標註的數據,沒有辦法用深度學習技術,如果我們能夠從無標註的數據進行學習,那麼很多應用很多問題裡面都可以應用深度學習技術。
挑戰2:大模型不方便在行動裝置上使用
前沿2:降低模型大小
現在常見的模型,像圖像分類裡面,微軟設計的深度殘差網絡,模型大小差不多都在500M以上。自然語言處理的一些模型,例如語言模型(language modeling)隨著詞表的增長而變大,可以有幾G、幾十G的大小,機器翻譯的模型也都是500兆以上。當然500M的大小大家可能覺得沒有多大,一個CPU伺服器很容易就把這個模型給load進去使用。但是大家要注意到,很多時候深度學習的模型需要在一些行動裝置上使用。比如說手機輸入法,還有各種對圖像做變換做處理做藝術效果的app,如果使用深度學習的話效果會非常好,但是這種模型由於它們的size太大,就不太適合在手機上應用。大家可以設想一下,如果一個手機的app需要加載一個500M甚至1G以上的模型恐怕不太容易被用戶接受。
因此當前深度學習面臨的第二個挑戰就是如何把大模型變成小模型,這樣可以在各種行動裝置上使用。因為行動裝置不僅僅是內存或者存儲空間的限制,更多是因為能耗的限制,不允許我們用太大的模型。近兩年來,有一些相應的工作,今天我主要介紹兩種:第一種是針對計算機視覺裡面的CNN模型,也就是卷積神經網絡,做模型壓縮;第二種是我們去年做的,針對一些序列模型或者類似自然語言處理的RNN模型如何做一個更巧妙的算法,使得它模型變小,並且同時精度沒有損失。
對卷積神經網絡而言,近一兩年有一些項目,主要是採用模型壓縮的技術縮減模型的大小。模型壓縮的技術,可以分為四類:
一個是叫剪枝,大家知道,神經網絡主要是由一層一層的節點通過邊連接,每個邊上有些權重。剪枝的意思很簡單,如果我們發現某些邊上的權重很小,這樣的邊可能不重要,這些邊就可以去掉。我們在把大模型訓練完之後,看看哪些邊的權重比較小,把這些邊去掉,然後在保留的邊上重新訓練模型;
模型壓縮的另外一種做法就是通過權值共享。假設相鄰兩層之間是全連接,每層有一千個節點,那麼這兩層之間有一千乘一千也就是一百萬個權值(參數)。我們可以對一百萬個權值做個聚類,看看哪些權值很接近,我們可以用每個類的均值來代替這些屬於這一類的權值,這樣很多邊(如果他們聚在同一類)共享相同的權值。如果我們把一百萬個數聚成一千類,就可以把參數的個數從一百萬降到一千個,這也是一個非常重要的一個壓縮模型大小的技術。
還有一個技術可以認為是權值共享的更進一步,叫量化。深度神經網絡模型的參數都是用的浮點型的數表達,32bit長度的浮點型數。實際上沒必要保留那麼高的精度,我們可以通過量化,比如說就用0到255表達原來32個bit所表達的精度,通過犧牲精度來降低每一個權值所需要佔用的空間。
這種量化的更極致的做法就是第四類的技術,叫二制神經網絡。所謂二制神經網絡,就是所有的權值不用浮點數表達了,就是一個二進位的數,要麼是+1要麼是-1,用二進位的方式來表達,這樣原來一個32 bit權值現在只需要一個bit來表達,從而大大降低這個模型的尺寸。
上面這張圖顯示了多種模型壓縮的技術在不同卷積神經網絡上的結果。我們可以看到,隨著原始網絡大小的不同,得到的壓縮比是不一樣的,特別是VGGNet,一個非常重要的卷積神經網絡,能夠把大小從原來的550M壓縮到11M,並且讓人驚奇的是,壓縮後分類的準確率沒有下降,反而略微有一點提高,這是非常了不起的。
下面簡單提一下我們組是如何對一些序列模型進行壓縮,也就是對循環神經網絡RNN做壓縮,我們提了一種新的循環神經網絡叫做LightRNN,它不是通過模型壓縮的方式降低模型的大小,而是通過設計一種更精巧的算法來達到降低模型大小。
自然語言相關的應用中,模型之所以大,是因為我們需要把每一個詞要做詞嵌入(word embedding),把每一個單詞表達成向量空間的一個向量。詞嵌入的基本思想是,語義相似或相近的詞在向量空間裡面的向量也比較接近,這樣就可以通過向量空間表達詞之間的語義信息或者是相似性。因為通常我們的詞表會很大,比如說在輸入法裡面,可能詞表需要說上百萬。如果我們詞表有上百萬的詞,每個詞如果是用一千維的一個向量來表達,這個大小就是差不多是一百萬乘以一千再乘以4 Byte(用32位的浮點數來表達),詞嵌入向量的總體大小差不多就有4G左右,所以整個RNN模型是非常大的。搜尋引擎的詞表有上千萬的詞,僅僅詞嵌入向量這部分大小就有40G左右,考慮到輸入的詞嵌入和輸出的詞嵌入,整個詞嵌入的大小有80G左右了,這麼大的模型很難加載到GPU上訓練模型和使用,更不用說放在行動裝置上使用。
我們的算法的基本思想是:不是用一個向量來表達一個詞,而是用兩個向量表達一個詞,一個行向量+一個列向量,不同的詞之間共享行或列向量。我們用一個二維的表格來表達整個詞表,假設這個二維的表格有一千行一千列,這個表格可以表達一百萬個詞;這個表格的每一行有一個行向量,每一列有一個列向量,這樣整個二維表格只需要兩千個向量。如果一個詞(January)在第一行第一列的話,它就由行向量X1和列向量Y1來聯合表達。考慮一個有一百萬個詞的詞表,原來需要一百萬個嵌入向量,通過這樣一個二維或者是兩個component的表格詞嵌入,現在我們只需要一千個行向量和一千個列向量來進行表達,這樣大大降低詞嵌入向量模型的大小。
我們在很多公共的數據集上做測試,結果表明我們提出的LightRNN算法極大的減小了模型的尺寸,可以把原來語言模型的大小從4G降到40M左右,當這個模型只有40兆的時候,很容易使得我們在行動裝置或者是GPU上使用。我們的方法使得深度模型在各種能耗比較低或者內存比較小的設備上的使用成為了可能。並且我們還發現,通過這樣一種共享的二維詞表的嵌入,我們得到的循環神經網絡模型的精度並沒有受到很大的影響,實際上LightRNN的精度反而略微有上升,和前面的卷積神經網絡壓縮的結果比較類似。
挑戰3:大計算需要昂貴的物質、時間成本
前沿3:全新的硬體設計、算法設計、系統設計
大計算說起來容易,其實做起來非常不容易,非常不簡單。我們微軟亞洲研究院研究員提出深度殘差網絡,這種網絡如果在ImageNet這樣一個上百萬的數據上進行訓練的話,用四塊現在最先進的GPU卡K80學習訓練時間大概要三周。最近百度做的神經機器翻譯系統,他們用了32塊K40的GPU用了十天做訓練,谷歌的機器翻譯系統用了更多,用了96塊K80的GPU訓練了六天。大家可能都知道AlphaGo, 它也需要非常大量的計算資源。AlphaGo的模型包含一個策略神經網絡,還有一個值網絡,這兩個都是卷積神經網絡。它的策略網絡用了50塊GPU做訓練,訓練了3個周,值網絡也是用了50塊GPU,訓練了一周,因此它整個的訓練過程用了50塊CPU四周時間,差不多一個月。大家可以想一想,如果訓練一個模型就要等一個月,並且我們經常要調各種超參數,一組超參數得到的結果不好,換另外一組超參數,可能要嘗試很多組超參數,如果我們沒有大量的計算資源,一等就是一個月,這從產品的更新換代還有技術創新的角度而言,都不能接受。剛才說了只是AlphaGo訓練的複雜度,其實它的測試,比如說比賽的時候,複雜度也非常高, AlphaGo的單機版和人下棋的時候,每次下棋需要用48塊CPU 8塊GPU,它的分布式版本就用的更多,每次需要用1200塊CPU再加上176塊GPU。大家可以想一想,地球上有幾個公司能承受這麼高昂的代價來做深度學習。
因此我們認為,深度學習所面臨的第三個挑戰是如何設計一些更高級的算法,更快的算法,更有效的算法。手段可能是通過一些全新的硬體設計或者是全新的算法設計,或者是全新的系統設計,使得這種訓練能夠大大的加速。如果我們還是這種訓練動不動就要幾十塊GPU或者幾百塊GPU,要等幾個星期或者是幾個月的話,對工業界和學術界而言都不是好事,我們需要更快速更有效的訓練方法。
挑戰4:如何像人一樣從小樣本進行有效學習?
前沿4:數據+知識,深度學習與知識圖譜、邏輯推理、符號學習相結合
現在的深度學習主要是從大數據進行學習,就是我給你很多標註的數據,使用深度學習算法學習得到一些模型。這種學習方式和人的智能是非常不一樣的,人往往是從小樣本進行學習。人對圖像進行分類,如果人想知道一個圖像是不是蘋果,只需要很少幾個樣本就可以做到準確分類。兩三歲小孩,開始認識世界的時候,他如果想知道什麼樣的動物是狗,我們給他看幾張狗的圖片,並且告訴他狗有什麼特徵,和其他動物像貓或者羊有什麼區別的話,小孩可以很快很準確的識別狗。但是在ImageNet比賽裡,像深度殘差神經網絡,一般來說一個類別大概需要上千張圖片才能進行比較充分的訓練,得到比較準確的結果。還有一個例子就是汽車駕駛,一般來說,通過在駕校的培訓,也就是幾十個小時的學習,幾百公裡的練習,大多數人就可以開車上路了,但是像現在的無人車可能已經行駛了上百萬公裡,還是達不到人的全自動駕駛的水平。原因在於,人經過有限的訓練,結合規則和知識能夠應付各種複雜的路況,但是當前的AI還沒有邏輯思考、聯想和推理的能力,必須靠大數據來覆蓋各種可能的路況,但是各種可能的路況幾乎是無窮的。
前面提到的小孩子認識世界的過程,很多時候,大人可以把一些經驗或者是知識傳授給他們,比如說蘋果是圓形的,有紅色的或者青的蘋果,狗和貓的區別在什麼地方。這種知識很容易通過語言進行傳授,但是對於一個AI或者對於一個深度學習算法而言,如何把這種知識轉化成實際模型的一部分,怎麼把數據和知識結合起來,提高模型的訓練的速度或者是識別的精度,這是一個很複雜的問題。
現在我們組有同事正在做這方面的嘗試和努力,我們希望把深度學習、知識圖譜、邏輯推理、符號學習等等結合起來,希望能夠進一步推動人工智慧的發展,使人工智慧更接近人的智能。
今年的人工智慧國際頂級會議AAAI 2017的最佳論文獎,頒給了一個利用物理或者是一些領域的專業知識來幫助深度神經網絡做無標註數據學習的項目。論文裡的具體例子是上面這張圖裡面一個人扔枕頭的過程,論文想解決的問題是從視頻裡檢測這個枕頭,並且跟蹤這個枕頭的運動軌跡。如果我們沒有一些領域的知識,就需要大量的人工標註的數據,比如說把枕頭標註出來,每幀圖像的哪塊區域是枕頭,它的軌跡是什麼樣子的。實際上因為我們知道,枕頭的運動軌跡應該是拋物線,二次型,結合這種物理知識,我們就不需要標註的數據,能夠把這個枕頭給檢測出來,並且把它的軌跡準確的預測出來。這篇論文之所以獲得了最佳論文獎,也是因為它把知識和數據結合起來,實現了從無標註數據進行學習的可能。
挑戰5:如何從認知性的任務擴展到決策性任務?
前沿5:博弈機器學習
人的智能包含了很多方面,最基本的階段是認知性智能,也就是對整個世界的認知。我們看到一幅圖能知道裡面有什麼,我們聽到一句話知道在說文字。現在對於圖象識別、語音識別,AI已經差不多能達到人類的水平,當然可能是在某些特定的約束條件下,能夠達到人類的水平。但是其實這種認知性的任務,對人類而言都是非常簡單的,比如說一個三五歲的小孩子已經能做得很好了,現在AI所能做的這種事情或者能達到的水平,人其實也很容易做到,只是AI可能在速度上更快,並且規模上去之後成本更低,並且24小時都不需要休息。更有挑戰的問題是,人工智慧能不能做一些人類做不了或者是很難做好的事情。
像圖象識別、語音識別這類認知性的任務,AI之所以做得好,是因為這些任務是靜態的,所謂靜態就是給定輸入,預測結果不會隨著時間改變。但是決策性問題,往往和環境有很複雜的交互,在某些場景裡面,如何做最優決策,這些最優決策往往是動態的,會隨著時間改變。
現在有人嘗試把AI用到金融市場,例如如何用AI技術來分析股票,預測股票漲跌,對股票交易給出建議,甚至是代替人來進行股票交易,這類問題就是動態決策性問題。同樣一支股票同樣的價格,在一周前可能是值得買入,但是一周之後可能就要賣出了,同樣一個事件或者是政治新聞比如說是在總統大選之前發生還是之後發生,對股票市場的影響也完全不一樣。所以決策問題的一個難點就在於時變性。
決策性問題的第二個難點在於各種因素相互影響,牽一髮而動全身。一支股票的漲跌會對其他股票產生影響,一個人的投資決策,特別是大的機構的投資決策,可能會對整個市場產生影響,這就和靜態的認知性任務不一樣的。在靜態認知性任務我們的預測結果不會對問題(例如其他的圖像或者語音)產生任何影響,但是在股票市場,任何一個決定,特別是大的機構的投資策略會對整個市場產生影響,對別的投資者產生影響,對將來會產生影響。無人駕駛某種程度上也是比較類似的,一輛無人車在路上怎麼行駛,是由環境和很多車輛共同決定的,當我們通過AI來控制一輛車的時候,我們需要關注周圍的車輛,因為我們要考慮到周圍的車輛對於當前這個無人車的影響,以及我們無人車(如左轉右轉或者併線)對周圍車輛的影響。
當前深度學習已經在靜態任務裡面取得了很大的成功,如何把這種成功延續和擴展到這種複雜的動態決策問題中,也是當前一個深度學習的挑戰之一。我們認為,一個可能的思路是博弈機器學習。在博弈機器學習裡,通過觀察環境和其他個體的行為,對每個個體構建不同的個性化行為模型,AI就可以三思而後行,選擇一個最優策略,該策略會自適應環境的變化和其他個體的行為的改變。
最後,我們做一個簡單的總結,在我們看來,當前深度學習的前沿(也是面臨的挑戰)有以下幾個方面,一個是如何從大量的無標註的數據進行學習,二是如何得到一些比較小的模型使得深度學習技術能夠在行動裝置和各種場所裡面得到更廣泛的應用,三是如何設計更快更高效的深度學習算法,四是如何把數據和知識結合起來,五是如何把深度學習的成功從一些靜態的任務擴展到複雜的動態決策性任務上去。實際上深度學習還有其他一些前沿研究方向,例如如何自主學習(自主學習超參數、網絡結構等)以及如何實現通用人工智慧等等,限於時間,不能一一介紹。感興趣的知友們可以自行查閱相關論文。
————更新的分割線————
2017.03.10 21:23更新
看到知友@ 霧雨魔理沙 的提問「 你好,請問Dual Network跟Auto Encoder有什麼相似/不同點? 」,秦濤博士剛剛做出了補充回答。
回復較長,請包涵。
簡而言之,Autoencoder的做法和對偶學習很類似。Autoencoder的encoder可以看作對偶學習裡的正向模型,decoder可以看作對偶學習裡的反向模型。在我們看來,對偶學習的思想更廣泛一些(可能大多數做研究的人喜歡拔高自己的工作^_^),autoencoder可以看作對偶學習的一個special case:
1.對偶學習中的兩個任務可以是實際的物理世界的AI任務例如語音識vs語音合成以及中翻英vs英翻中,也可以是虛擬的任務如Autoencoder裡的encoder和decoder。autoencoder學習完成後實際有用的是encoder,這個encoder可以用來降維,它的輸出也可以其他分類器的輸入;而decoder一般在學習完成後一般沒有實際用處。如果兩個task都是物理世界的任務,那麼對偶學習到的兩個模型都是實際用處,例如中翻英的模型和英翻中的模型。
2.對偶學習可以推廣到多於兩個任務,例如中翻英+英翻法+法翻中,圖像轉文本+文本轉語音+語音轉圖像,只要這些任務能夠形成閉環提供反饋,對偶學習就可以應用。
3.對偶學習可以從無標註數據學習也可以從標註數據學習,其基本思想在於聯合概率P(x,y)有兩種計算方式,分別涉及到了正向和反向模型,這樣兩個計算方式的結果應該相等 我們可以利用這個概率等式正則化從標註數據學習的過程,具體如下圖所示,我們把這種做法叫做對偶監督學習 (dual supervised learning)。
4.對偶學習可以用來在訓練過程中提高兩個模型,也可以用在測試過程中。舉個例子,給定一個中文的句子x, 神經機器翻譯中標準的測試是找的一個能最大化概率P(y|x;f)的英文句子y做為x的翻譯。當我們有了正向和反向兩個模型後,我們可以找一個能同時最大化兩個概率, P(y|x;f)和P(x|y;g)P(y)/P(x), 或者這兩個概率的線性組合的英文句子y作為x的翻譯。在這裡,我們只是利用結構對偶屬性改進測試的過程,並沒有影響模型的訓練,我們把這種做法就做對偶測試(dual inference)。
————這裡是回答結束的分割線————
感謝大家的閱讀。
本帳號為微軟亞洲研究院的官方知乎帳號。本帳號立足於計算機領域,特別是人工智慧相關的前沿研究,旨在為人工智慧的相關研究提供範例,從專業的角度促進公眾對人工智慧的理解,並為研究人員提供討論和參與的開放平臺,從而共建計算機領域的未來。
微軟亞洲研究院的每一位專家都是我們的智囊團,你在這個帳號可以閱讀到來自計算機科學領域各個不同方向的專家們的見解。請大家不要吝惜手裡的「邀請」,讓我們在分享中共同進步。
也歡迎大家關注我們的微博和微信帳號,了解更多我們研究。
鄭華濱
今年過節不收斂,收斂就收過擬合!
提幾個可能的發展方向,同時也就是尚待解決的問題:
1.讓深度學習自動調超參。最近看到有人在一個AI群裡推廣自己的一篇論文《Deep Q-Networks for Accelerating the Training of Deep Neural Networks》https://arxiv.org/abs/1606.01467,大致是用強化學習的方法訓練一個控制器來自動控制學習率以及在一個batch中各個類的樣本佔比。雖然它那篇論文問題很大,訓練出來的控制器極其不通用,只能用在它原本的任務上,但是感覺很容易解決掉,這個另說。想像一下,如果能夠訓練出一個通用的控制器,對於各類任務都能夠自動調整超參(或者只在某個子領域比如圖像分類做到通用也好),那我們就再也不用自稱調參狗了,同時也可以解放出更多的時間用於設計模型、驗證架構,想必深度學習的發展步伐會得到極大加速。
2.自動學習網絡架構。其實說起來這個問題也可以歸入自動調超參,但是感覺應該還是有很大的不同。說起來無非就是兩個方面,一是加法二是減法。加法方面可以參考《Net2Net: Accelerating Learning via Knowledge Transfer》https://arxiv.org/abs/1511.05641,這篇是讓CNN自動根據需要自動拓展架構,包括橫向的增加filter和縱向的增加layer。減法方面可以參考各類Network Compression(網絡壓縮)的論文中的所謂Network Pruning(網絡剪枝),比如《Deep Compression - Compressing Deep Neural Networks with Pruning, Trained Quantization and Huffman Coding》http://arxiv.org/abs/1510.00149,雖然這些論文出發點不在於自動學習網絡架構而在於壓縮網絡規模,而且它們往往是在訓練收斂之後才對網絡進行裁剪而非邊訓練邊裁剪,但是感覺只需要再跨一步就可以了。我個人覺得,自動學習網絡架構需要解決的最根本問題就是「應該在什麼時機進行架構變動」以及「應該怎麼變」,第二個問題感覺上述論文算是回答得可以了,但是第一個問題似乎還有很多可以探索的地方。對於第一個問題,似乎強化學習就很適合解決,因為顯然可以把它看成一個控制問題。
3.遷移學習。眾所周知,深度學習的直接訓練依賴大量數據,而transfer和finetune能夠有效利用數據量大的外部任務訓練出來特徵來遷移到數據量小的目標任務上,使得目標任務對於數據量的要求大大減小。現在的問題在於,遷移學習的思想現在大家其實都在用,很多論文中都可以看到finetune的做法,但是對於兩個任務之間需要「多像」才能夠遷移這麼一個問題還沒有一個很好的回答。即使我們不奢求能夠給出一個嚴格的數學理論,至少,如果有人能夠做一個非常系統的對比實驗,總結出一些規律,使得我們有信心說在如何如何這樣一個邊界內的任務都是基本上可以transfer的,那將會是一個很大的進步。這個問題也可以這麼看,如今我們應該有信心說兩個圖像分類任務可以transfer,但是這個邊界太過狹窄,我個人期待的就是能夠有一套理論或者方法論使得這個邊界大大拓展,然後在這個邊界內我們可以像對兩個圖像分類任務一樣自信滿滿地用遷移學習。
4.無監督/半監督學習。像LeCun等大佬其實一直在鼓吹這方面,但似乎還沒有搞出像當年CNN(AlexNet)、最近強化學習(阿法狗)這樣級別的大新聞來。我理解在這個問題上的努力方向應該是確定「何種representation最有用」。具體來說,就是找到一個指標,然後用深度網絡優化這個指標,使得滿足這個指標的data representation能夠具有非常好的特性。再具體一些,下面舉三個實際例子:
autoencoder以重構損失作為指標來學習一個representation。
之前聽一個講座,演講人介紹他的論文《Why Deep Learning Works: A Manifold Disentanglement Perspective》IEEE Xplore Abstract,其中定義了三個指標來描述深度網絡每一層中data representation的「蜷曲程度」,並發現,越高層的數據蜷曲度越低,換言之,越平展。那麼無監督學習是否能夠直接以這個蜷曲度作為損失函數來學習一個representation呢?
這篇論文《Context Encoders: Feature Learning by Inpainting》提出通過預測周邊上下文像素來無監督學習視覺特徵,感覺很像word2vec從一維變成二維。
除了上述的重構損失、蜷曲度、預測上下文精度,還有沒有別的指標學習出來的representation更好呢?個人認為這些問題就是推動無監督/半監督學習進展的關鍵所在。
5.基於外部存儲(external memory)的模型。如果說RNN、LSTM這樣的模型屬於internal memory / long-term memory的話,那麼以神經圖靈機(Neural Turing Machine,http://arxiv.org/abs/1410.5401)、記憶網絡(Memory Network,http://arxiv.org/abs/1410.3916)為代表的模型就應該稱為external memory / really long-term memory了。不過這兩個模型剛出來的時候還太過naive,只能做一些很無聊的task,比如序列複製和排序以及非常簡單的QA,但是現在已經開始看到它們被用到更加實際的問題上面,例如One-shot Learning:《One-shot Learning with Memory-Augmented Neural Networks》,http://arxiv.org/abs/1605.06065。往大了說,如果未來要實現強AI,這種外部存儲的機制肯定是必不可少的。現在的問題在於,神經圖靈機和記憶網絡用的外部存儲雖然比LSTM那樣簡單的一個hidden state向量更進一步,但也其實就是很簡單的一片矩陣,沒有任何結構和層次可言,換言之,就是還不夠複雜。所以我猜想接下來可能external memory會和知識圖譜(Knowledge Graph)結合起來或至少是向知識圖譜類似的做法靠攏,因為知識圖譜更加結構化。
招聘信息:
本公司上海誠招通用智能自動駕駛研發人才,誠邀以下方向的工程師和技術專家一起開展無人駕駛在國內的前沿探索和應用落地:
~駕駛硬體工程師
~駕駛軟體開發工程師
~決策規划算法工程師
~深度學習、計算機視覺、傳感器等其他方向……
我們對該領域的技術大牛求賢若渴,也非常歡迎有一定經驗的研究生過來實習鍛鍊!
期望你學習能力強:動手能力強,對自動駕駛,人工智慧有夢想。
- 只要有一定深度學習基礎,並對自動駕駛有狂熱興趣我們就歡迎
- 當然熟悉linux,樹莓派,python,tensorflow, 模擬器仿真等是需要的
- 熟悉自動駕駛硬體傳感器等。
- 熟悉udacity或熟悉Commaai社區更佳
熟悉了commaai 就可以來面試!https://github.com/commaai
之前如有成果作品或項目更歡迎。
工作地點:上海張江高科;全職兼職實習異地均有;通用智能大舞臺任你施展和挑戰!如感興趣請簡歷投遞微信zdx3578溝通;