0
本文作者: 谷磊 | 2017-03-10 14:44 |
雷鋒網(wǎng)[AI科技評論]按:本文由雷鋒網(wǎng)編輯根據(jù)劉鐵巖博士在中國人工智能學(xué)會AIDL第二期人工智能前沿講習(xí)班*機器學(xué)習(xí)前沿所作報告《迎接深度學(xué)習(xí)的“大”挑戰(zhàn)》編輯整理而來,發(fā)文前已得到劉鐵巖博士的親自刪減校正。
劉鐵巖
劉鐵巖博士,微軟亞洲研究院首席研究員,領(lǐng)導(dǎo)機器學(xué)習(xí)和人工智能方向的研究工作。同時他也是美國卡內(nèi)基-梅隆大學(xué)(CMU)客座教授、英國諾丁漢大學(xué)榮譽教授、中國科技大學(xué)、中山大學(xué)、南開大學(xué)的博士生導(dǎo)師。劉博士的的先鋒性工作促進了機器學(xué)習(xí)與信息檢索之間的融合,被國際學(xué)術(shù)界公認(rèn)為“排序?qū)W習(xí)”領(lǐng)域的代表人物,他在該領(lǐng)域的學(xué)術(shù)論文已被引用近萬次,并受Springer出版社之邀撰寫了該領(lǐng)域的首部學(xué)術(shù)專著(并成為Springer計算機領(lǐng)域華人作者十大暢銷書之一)。近年來,劉博士在博弈機器學(xué)習(xí)、深度學(xué)習(xí)、分布式機器學(xué)習(xí)等方面也頗有建樹,他的研究工作多次獲得最佳論文獎、最高引用論文獎、研究突破獎;被廣泛應(yīng)用在微軟的產(chǎn)品和在線服務(wù)中、并通過微軟認(rèn)知工具包(CNTK)、微軟分布式機器學(xué)習(xí)工具包(DMTK)、微軟圖引擎(Graph Engine)等項目開源。他曾受邀擔(dān)任了包括SIGIR、WWW、KDD、ICML、NIPS、AAAI、ACL在內(nèi)的頂級國際會議的組委會主席、程序委員會主席、或領(lǐng)域主席;以及包括ACM TOIS、ACM TWEB、Neurocomputing在內(nèi)的國際期刊副主編。他是國際電子電氣工程師學(xué)會(IEEE)院士,美國計算機學(xué)會(ACM)杰出會員,中國計算機學(xué)會(CCF)學(xué)術(shù)工委,中文信息學(xué)會(CIPS)信息檢索專委會副主任。
以下為劉鐵巖博士所做的現(xiàn)場演講的第一部分,主要介紹了近年人工智能所取得的應(yīng)用成果;什么是深度神經(jīng)網(wǎng)絡(luò)以及它所帶來的挑戰(zhàn)等問題。
劉鐵巖:非常榮幸今天有機會和大家分享我們的研究成果。我知道這幾天課程安排得特別滿,一天四場報告,大家有點廢寢忘食的感覺,非常辛苦。希望大家聽了我們的報告,能夠有所收獲。
今天我們跟大家分享的題目是:“迎接深度學(xué)習(xí)的大挑戰(zhàn)”。
為什么要講這個題目呢?深度學(xué)習(xí)這幾年改變了很多行業(yè)的狀態(tài),今天上午張老師應(yīng)該也講了很多關(guān)于神經(jīng)網(wǎng)絡(luò)的話題,包括怎么學(xué)習(xí)深度神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)。今天我會從另一個角度看一看深度學(xué)習(xí)到底有哪些挑戰(zhàn),這些挑戰(zhàn)怎么用學(xué)術(shù)研究的方式加以解決。
在此之前,我準(zhǔn)備了兩張PPT,介紹一下微軟亞洲研究院。
微軟亞洲研究院成立于1998年,有200多名全職的研究人員,和來自于各大高校的實習(xí)生。微軟亞洲研究院雖然隸屬于公司,但是日常運營的形式很像大學(xué),有很多非常有水平的研究員做導(dǎo)師,有非常高質(zhì)量的學(xué)生跟我們做研究。我本人在微軟亞洲研究院負(fù)責(zé)人工智能和機器學(xué)習(xí)的領(lǐng)域,我們有十幾位全職的研究人員從事這方面的研究,如果大家對我們組感興趣或者想進行合作,歡迎和我聯(lián)系。
我們組的研究方向很寬,包括排序?qū)W習(xí)、大規(guī)模機器學(xué)習(xí)、深度學(xué)習(xí)、增強學(xué)習(xí)、機器學(xué)習(xí)理論等等。除了發(fā)表了百余篇論文,被引用萬余次以外,我們還致力于把研究成果分享給同仁,所以在過去幾年間我們主導(dǎo)、或者參與了多個開源項目,比如微軟認(rèn)知工具包(CNTK),微軟分布式機器學(xué)習(xí)工具包(DMTK)、微軟圖引擎(Graph Engine) 等等。如果大家對我們的最新動態(tài)感興趣,關(guān)注我們的公眾號、微博,了解很多新鮮出爐的微軟亞洲研究院的故事。
接下來我們進入今天報告的正題。
我們這次整個AIDL都是關(guān)于人工智能和機器學(xué)習(xí)的,類似的PPT應(yīng)該已經(jīng)出現(xiàn)了很多次,所以關(guān)于什么是人工智能,人工智能曾經(jīng)走過什么道路,這里我不想再重復(fù)。總之,人工智能在過去的60年里,幾起幾落,每一次所謂的人工智能寒冬多半都是因為公眾和政府對人工智能的期望值太高。因此,作為人工智能行業(yè)的參與者,我們有必要提醒公眾、提醒政府、提醒產(chǎn)業(yè),對于人工智能技術(shù)保持冷靜,不要把它過早捧殺。
不過話說回來,回顧過去的十幾年,人工智能確實取得了一些前所未有的成果。接下來我們就來看幾個例子。深度學(xué)習(xí)的成功最早是在類似語音圖像這些領(lǐng)域取得的。
首先,語音識別,因為有了大量的訓(xùn)練數(shù)據(jù),有了Deep Learning的方案,逐步達(dá)到了人類的精度。這張PPT展示的是去年10月份我們微軟研究院對外宣布的一個語音識別方面的突破性進展。
這是歷史上第一次,機器達(dá)到了和人沒有區(qū)別的程度,在個人對話的場景下,取得了非常低的錯誤率(5.9%)。這個模型是用微軟認(rèn)知工具包(CNTK)訓(xùn)練出來的,大家如果對語音的研究有興趣,可以試用一下CNTK,它是語音識別領(lǐng)域被最廣泛使用的深度學(xué)習(xí)工具包。
其次,圖像方面最近也取得了很大的進展、2015年,來自我們微軟亞洲研究院的ResNet技術(shù),在ImageNet competition里取得了冠軍,并且超過了人類的識別精度。像ImageNet這樣包含上千個類別的圖像數(shù)據(jù),識別起來其實還是有難度的。即便是人,看一眼也不一定都能分辨出來。
有研究表明,人類的錯誤率大約是5.1%,而ResNet達(dá)到了將近3.5%的錯誤率。也就是說對于特定領(lǐng)域、特定類別的問題,機器已經(jīng)超過了人的圖像識別能力。這個成功后來又延續(xù)到了圖像分割領(lǐng)域,圖像分割是比圖像識別更復(fù)雜的任務(wù),不僅要告訴大家這張圖像有什么,還要把它圈出來、把邊界找到。2016年微軟亞洲研究院的技術(shù)再次在這個更難的任務(wù)上力拔頭籌、獲得冠軍。
上面提到的人工智能技術(shù)大多已經(jīng)被微軟產(chǎn)業(yè)化,下面給大家放一個視頻,是介紹微軟認(rèn)知服務(wù)的,之前網(wǎng)上幾個很出名的爆款應(yīng)用,比如How old測顏齡,都是基于微軟認(rèn)知服務(wù)開發(fā)出來的。
視頻中展示場景,包括了前面提到的語音識別、圖像識別、文字識別等等。有了微軟認(rèn)知服務(wù),大家如果想做一個創(chuàng)新應(yīng)用,就不需要對深度學(xué)習(xí)有非常深的了解,不需要在云上構(gòu)架一個龐大的服務(wù)器集群來訓(xùn)練模型,只要調(diào)用一下認(rèn)知服務(wù)的API,就可以實現(xiàn)很多神奇的功能。
除了前面提到的語音和圖像以外,在文本理解、機器翻譯等方面,人工智能技術(shù)最近也取得了很大的進展。
微軟有很多與此相關(guān)的產(chǎn)品,比如Skype translator、Microsoft translator,可以同時支持多人、多點語音、多語言的實時同聲傳譯。接下來給大家展示的視頻是關(guān)于Skype translator的,講的是一個外國攝影師和他的中國向?qū)еg的故事。
其實這項技術(shù)早在2012年微軟亞洲研究院主辦的“21世紀(jì)計算大會”上就被展示過。當(dāng)時我們的研究副總裁Rick Rashid用英文做了一個主題演講,大家聽到的是機器自動同聲傳譯出來的中文表達(dá),聽起來就像他真的會講中文一樣。
除了上述認(rèn)知方面的進展,最近人工智能在博弈方面也取得了很大的進步。比如用人工智能來打電子游戲,用人工智能來下圍棋等等。當(dāng)年AlphaGo戰(zhàn)勝李世乭的時候街頭巷尾都在討論。而今master橫掃幾十位人類高手,又掀起了大家對人工智能的新認(rèn)識。
左邊這張圖是關(guān)于用人工智能技術(shù)來玩Atarti game的。當(dāng)使用強化學(xué)習(xí)技術(shù)不斷地嘗試玩這個游戲,一開始機器只會學(xué)到一些基本技能,玩著玩著逐漸發(fā)現(xiàn)一些高級的策略,甚至獲取了超過常人的技巧,比如把小球打到磚塊上面去,通過不斷回彈實現(xiàn)得分。
右邊這張圖是關(guān)于圍棋的。圍棋本身的策略空間非常大,每落一子,棋盤上都有很多不同的選擇,如果再考慮到后手,則對應(yīng)于一個非常龐大的搜索樹。對這個搜索樹進行遍歷是遠(yuǎn)遠(yuǎn)超過目前計算機的計算能力的,所以大家曾一度認(rèn)為在圍棋這件事情上機器很難戰(zhàn)勝人類。但是,最新的人工智能技術(shù)巧妙地回避了遍歷,像人一樣使用了value network來對搜索樹進行有效的剪枝,從而在以高概率保留好棋的前提下,把計算的復(fù)雜度降低到計算機可以承受的范圍內(nèi),并且最終戰(zhàn)勝了人類的世界冠軍。
前面回顧的所有這些人工智能領(lǐng)域的大事件,背后都離不開“深度學(xué)習(xí)”技術(shù)。
深度神經(jīng)網(wǎng)絡(luò)及其優(yōu)化方法簡介
那么什么是深度學(xué)習(xí)呢?雖然早期大家提DeepLearning這個概念的時候,會聯(lián)想到很多不同的模型,但是經(jīng)過多年的演化,目前最主流的深度學(xué)習(xí)模型就是所謂的深層神經(jīng)網(wǎng)絡(luò)。深層神經(jīng)網(wǎng)絡(luò)指的是一個有至少包含兩個隱層的神經(jīng)網(wǎng)絡(luò)。很多實用的深層神經(jīng)網(wǎng)絡(luò)甚至?xí)砂偕锨€隱層。
簡單起見,我們先舉一個有三個隱層的深層神經(jīng)網(wǎng)絡(luò)作為例子。從圖中可以看到,神經(jīng)網(wǎng)絡(luò)包含很多神經(jīng)元,以及它們之間的拓?fù)溥B接。每個神經(jīng)元做的事情非常簡單,就是把上一層所有跟它相連的神經(jīng)元的輸出放在一起,做加權(quán)求和,然后再進行非線性變換(激活函數(shù))。在神經(jīng)元,以及神經(jīng)元之間的連邊上都可以有參數(shù),比如邊權(quán)和偏差等。
那么有了深層神經(jīng)網(wǎng)絡(luò)以后,怎么對它進行學(xué)習(xí)呢?常用的方法叫做經(jīng)驗風(fēng)險最小化,也就是最小化神經(jīng)網(wǎng)絡(luò)在訓(xùn)練集里所有樣本上的損失函數(shù)之和。為了最小化經(jīng)驗風(fēng)險,一個最簡單的方法是梯度下降法。但是,我們知道梯度下降法很容易陷入局部極小點,而且它的隨機版本可能不收斂,需要通過減小學(xué)習(xí)率來控制訓(xùn)練過程的收斂性。為了解決這些問題,人們又提出了很多變種的優(yōu)化算法,比如SVRG等等。
兩種特殊的深度神經(jīng)網(wǎng)絡(luò)
了解了什么是深度神經(jīng)網(wǎng)絡(luò),以及如何對其進行優(yōu)化,我們來介紹兩種特殊的深層神經(jīng)網(wǎng)絡(luò)。
首先是卷積神經(jīng)網(wǎng)絡(luò),之所以稱其為卷積神經(jīng)網(wǎng)絡(luò),是因為它的一些基本單元非常像信號處理里的卷積操作。其實,卷積神經(jīng)網(wǎng)絡(luò)的提出,也有很多仿生學(xué)的背景在里面。咱們回想一下自己做圖像識別的過程:
如果給你一幅很大的圖片,要在里面識別出某個特定的人,比如張三。假定我們的腦子里有張三的形象,但是不知道他到底在圖片的哪個部位,我們會怎么做呢?一個很簡單的方式就是從這張圖像左上角開始掃描,每次掃描都用我們腦子里的模式去匹配一下看有沒有張三,沒有的話往后移動一個位置,再進行下一次掃描。整個圖像掃描過程中,我們對張三識別的模式是沒有改變的,參數(shù)是固定的,只是在空間不斷平移,這其實是所謂卷積神經(jīng)網(wǎng)絡(luò)最基本的思想。
具體來講,卷積神經(jīng)網(wǎng)絡(luò)有三個特點:
一是使用卷積濾波器;
二是參數(shù)共享;
三是通過pooling操作實現(xiàn)平移不變性。
如果我們把卷積操作和Pooling操作級聯(lián)在一起,不斷循環(huán)往復(fù)地構(gòu)建網(wǎng)絡(luò)結(jié)構(gòu),這就會形成深層的卷積神經(jīng)網(wǎng)絡(luò)。給大家看一個例子,LeNet,它在輸入圖像的基礎(chǔ)上,進行了多次卷積和pooling操作,最后在實現(xiàn)有效的信息抽取之后,使用全連接的網(wǎng)絡(luò)對這些信息進行最終的分類。
第二個特殊的深層神經(jīng)網(wǎng)絡(luò)叫做循環(huán)神經(jīng)網(wǎng)絡(luò)。它的提出也和仿生學(xué)有關(guān)。咱們想一下自己是如何讀書看報的。我們一般是從每段文字的第一個字開始,一邊往后看,腦子里一邊利用之前看過的內(nèi)容的記憶,對當(dāng)前看到的文字進行理解。如此循環(huán)往復(fù),最后把整個段落的意義全都弄清楚。循環(huán)神經(jīng)網(wǎng)絡(luò)也做了同樣的事情,它在標(biāo)準(zhǔn)神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)上引用了一個memory unit,用來存儲和之前輸入有關(guān)的信息,以幫助我們更好地理解未來的輸入。
為了更形象地理解循環(huán)神經(jīng)網(wǎng)絡(luò),我們把它展開來看。展開之后這些輸入就帶有時間標(biāo)簽了,比如說這個是你看到的第一個詞X0,接下來看到第二個詞X1,不斷的往下移動。每次看到一個新輸入之后,就會對它做某種處理,產(chǎn)生一些對它的認(rèn)識,并且放到memory里,當(dāng)看到下一個詞的時候,不僅僅針對這個詞本身進行理解,還會參照上一個詞對應(yīng)的memory;這樣不斷地循環(huán)下去,就得到了所謂的循環(huán)神經(jīng)網(wǎng)絡(luò)。循環(huán)神經(jīng)網(wǎng)絡(luò)和卷積神經(jīng)網(wǎng)絡(luò)有點類似,也會在不同階段共享參數(shù)。
理論上,循環(huán)神經(jīng)網(wǎng)絡(luò)可以展開成無限深的網(wǎng)絡(luò),但是這會帶來學(xué)習(xí)的麻煩。實踐中,我們通常進行有限深度的展開,也就是所謂的BPTT技術(shù)。展開之后就可以把它當(dāng)成標(biāo)準(zhǔn)的神經(jīng)網(wǎng)絡(luò)用梯度下降的方法來進行參數(shù)學(xué)習(xí)了。
到此為止,我們做了一個快速的神經(jīng)網(wǎng)絡(luò)簡介:我們介紹了什么是神經(jīng)網(wǎng)絡(luò),兩個特殊的網(wǎng)絡(luò)結(jié)構(gòu),以及如何學(xué)習(xí)它們的參數(shù)。不管是全連接的網(wǎng)絡(luò)、卷積網(wǎng)絡(luò)還是循環(huán)網(wǎng)絡(luò),實際中常常會用到很深的層次,比如成百上千層,那么當(dāng)深度增加的時候,有什么好處,又是否會帶來一些新的挑戰(zhàn)呢?
前面我們提到過神經(jīng)網(wǎng)絡(luò)的universal approximation theorem, 它似乎告訴我們只要有一個隱層,神經(jīng)網(wǎng)絡(luò)已經(jīng)可以具備幾乎無限的表達(dá)能力了。那為什么還要使用那么多的隱層呢?近幾年有很多的理論研究表明,當(dāng)層數(shù)增加時,想要取得同樣的表達(dá)能力,對隱節(jié)點總數(shù)的要求會變小很多,因此也就會帶來更高的學(xué)習(xí)效率和更小的學(xué)習(xí)難度。
反過來看,當(dāng)隱節(jié)點的個數(shù)相同的時候,深層網(wǎng)絡(luò)的表達(dá)能力會比淺層網(wǎng)絡(luò)更強,因此學(xué)習(xí)能力也就更強。當(dāng)然,天下沒有免費的午餐,深層網(wǎng)絡(luò)的好處是有代價的,當(dāng)網(wǎng)絡(luò)很深的時候,用梯度下降來進行學(xué)習(xí)時,常常會遇到一些技術(shù)難題。接下來這張PPT就展示了兩個常見的麻煩。
第一個麻煩是Overfitting,它和表達(dá)能力是一體兩面。當(dāng)你的網(wǎng)絡(luò)有非常強的表達(dá)能力的時候,就更容易過擬合訓(xùn)練數(shù)據(jù),而在未見的測試數(shù)據(jù)上表現(xiàn)變差。
第二個麻煩叫Gradient vanishing,當(dāng)網(wǎng)絡(luò)很深的時候,預(yù)測誤差很難通過梯度有效地傳導(dǎo)到網(wǎng)絡(luò)的底層,從而使得網(wǎng)絡(luò)參數(shù)訓(xùn)練不充分。
為了更好地解釋這種現(xiàn)象,我給大家舉一個例子。這是一個細(xì)長型的深度神經(jīng)網(wǎng)絡(luò)。網(wǎng)絡(luò)參數(shù)包括邊權(quán)w和偏差b。我們以b1這個參數(shù)為例,損失函數(shù)對它求導(dǎo)的結(jié)果如圖所示。在這個連乘式里,sigma‘是激活函數(shù)的導(dǎo)數(shù),每經(jīng)過一個隱層,就會出現(xiàn)一項sigma‘。
這里畫了一個常見的sigmoid function的導(dǎo)數(shù),它的最高點是在輸入為0的時候取得的,最高點取值是0.25,如果你的輸入不是0,其取值會更小。大家知道,當(dāng)我們把一長串很小的數(shù)連乘起來,它的結(jié)果會很快衰減到接近0,而在當(dāng)前的參數(shù)上加上一個幾乎為0 的梯度,對模型是不會有什么改變的,這就解釋了為什么深層網(wǎng)絡(luò)經(jīng)常訓(xùn)練不充分。
為了解決這兩個典型的麻煩,人們提出了一系列的技術(shù)手段。比如:
DropOut/DropConnect,其基本思想是在訓(xùn)練過程中引入一些隨機因素,讓神經(jīng)網(wǎng)絡(luò)模型不會那么狠地擬合到訓(xùn)練集上去。為此,可以在訓(xùn)練過程中隨機刪除一些神經(jīng)元節(jié)點,或者隨機刪除一些連邊。有人證明了,通過DropOut,可以有效降低神經(jīng)網(wǎng)絡(luò)的容量(Rademacher Average),從而避免過擬合,取得更好的泛化能力。
另外一個技術(shù)是Batch Normalization,也可以有效緩解overfitting和Gradient vanishing的問題。它其實是受到早期人們對神經(jīng)網(wǎng)絡(luò)的輸入進行白化處理的啟發(fā)。不同點在于它對深層神經(jīng)網(wǎng)絡(luò)的每一層都進行白化處理,而且是參數(shù)化的白化。也就是在一個mini batch里計算均值和方差,然后對信號進行0均值、標(biāo)準(zhǔn)方差的變換。這樣做的好處是可以去除不同mini batch之間的差異,使得數(shù)據(jù)變得更加統(tǒng)一,提高泛化性能;同時,由于激活函數(shù)的輸入被0均值化,也會提高其導(dǎo)數(shù)的幅度,從某種程度上減緩gradient vanishing的問題。
本文為劉鐵巖博士《迎接深度學(xué)習(xí)的“大”挑戰(zhàn)》主題報告(上),后續(xù)報告敬請持續(xù)關(guān)注雷鋒網(wǎng)[AI科技評論]的報道。
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。