2
本文作者: 宗仁 | 2016-09-09 21:46 |
9月9日,2016湖南人工智能論壇在長(zhǎng)沙舉辦,大會(huì)期間,來自國(guó)內(nèi)外的許多頂級(jí)專家在會(huì)上給我們做了報(bào)告,下面是雷鋒網(wǎng)根據(jù)微軟亞洲研究院劉鐵巖教授的現(xiàn)場(chǎng)精華整理,全部?jī)?nèi)容已經(jīng)經(jīng)由劉教授確認(rèn)。
在人工智能高歌猛進(jìn),人們期待深度學(xué)習(xí)無往不勝之時(shí),作為人工智能學(xué)者,我們必須保持冷靜,分析深度學(xué)習(xí)技術(shù)的短板,開展針對(duì)性研究將其克服,從而助力人工智能的長(zhǎng)期繁榮。事實(shí)上,今天深度學(xué)習(xí)成功的主要因素:超大規(guī)模訓(xùn)練數(shù)據(jù)、復(fù)雜的深層模型、分布式并行訓(xùn)練,也正是影響其進(jìn)一步發(fā)展的障礙。首先,取得大量有標(biāo)簽訓(xùn)練數(shù)據(jù)需要付出巨大代價(jià),不是每個(gè)領(lǐng)域都能滿足這個(gè)條件;其次,深層模型很難優(yōu)化,超大模型會(huì)突破計(jì)算機(jī)容量;再次,同步并行效率低下、異步并行受通信延時(shí)影響收斂緩慢。在本報(bào)告中,我將會(huì)介紹微軟研究院的最新成果,展示如何通過“對(duì)偶通信博弈技術(shù)”有效利用無標(biāo)簽訓(xùn)練數(shù)據(jù)、如何利用“殘差學(xué)習(xí)技術(shù)”解決深層神經(jīng)網(wǎng)絡(luò)的優(yōu)化問題、如何借助“二維映射技術(shù)”縮小模型規(guī)模、以及如何使用“高階泰勒補(bǔ)償技術(shù)”解決通信延時(shí)問題。這些前沿技術(shù)將會(huì)陸續(xù)通過微軟的開源項(xiàng)目CNTK和DMTK分享給業(yè)界,以期和大家一起推動(dòng)人工智能技術(shù)的進(jìn)一步發(fā)展。
劉鐵巖博士,微軟亞洲研究院首席研究員,美國(guó)卡內(nèi)基梅隆大學(xué)(CMU)客座教授。劉博士的研究興趣包括:人工智能、機(jī)器學(xué)習(xí)、信息檢索、數(shù)據(jù)挖掘等。他的先鋒性工作促進(jìn)了機(jī)器學(xué)習(xí)與信息檢索之間的融合,被國(guó)際學(xué)術(shù)界公認(rèn)為“排序?qū)W習(xí)”領(lǐng)域的代表人物,他在該領(lǐng)域的學(xué)術(shù)論文已被引用近萬(wàn)次。近年來,劉博士在博弈機(jī)器學(xué)習(xí)、深度學(xué)習(xí)、分布式機(jī)器學(xué)習(xí)等方面也頗有建樹,他的研究工作多次獲得最佳論文獎(jiǎng)、最高引用論文獎(jiǎng)、研究突破獎(jiǎng),并被廣泛應(yīng)用在微軟的產(chǎn)品和在線服務(wù)中。他是國(guó)際電子電氣工程師學(xué)會(huì)(IEEE)、美國(guó)計(jì)算機(jī)學(xué)會(huì)(ACM)和中國(guó)計(jì)算機(jī)學(xué)會(huì)(CCF)的高級(jí)會(huì)員,中國(guó)計(jì)算機(jī)學(xué)會(huì)的杰出演講者和學(xué)術(shù)工委。
在我的報(bào)告開始之前,先介紹一下我所供職的單位:微軟研究院,它是微軟公司在全球設(shè)立的基礎(chǔ)研究機(jī)構(gòu),它在全球有六個(gè)分院。位于北京的微軟亞洲研究院成立于1998年,到現(xiàn)在已經(jīng)有十八個(gè)年頭,這十八年里,微軟亞洲研究院在頂級(jí)國(guó)際會(huì)議和期刊上發(fā)表了近5000篇論文,其中包括50篇最佳論文,為微軟產(chǎn)品提供了400項(xiàng)技術(shù)。微軟亞洲研究院非常像一所大學(xué),有近200余名世界頂尖的計(jì)算機(jī)科學(xué)家,以及來自各個(gè)高校的三四百名長(zhǎng)期的實(shí)習(xí)生。
人工智能在最近取得了令人矚目的成果,微軟在這個(gè)過程中也做了很多的貢獻(xiàn),比如在語(yǔ)音識(shí)別方面的突破,就起源于2006年微軟的研究員和Geoff Hinton一起從事的研究。這幾年人工智能領(lǐng)域在人臉識(shí)別、圖像識(shí)別、自然語(yǔ)言處理、人際對(duì)弈都取得了甚至超過人類水平的研究成果,非常喜人。
說到這幾年取得的成果,就不得不提到深度學(xué)習(xí)技術(shù),深度學(xué)習(xí)技術(shù)概念很寬,但最主流的算法就是深度神經(jīng)網(wǎng)絡(luò),這張圖展示了深度神經(jīng)網(wǎng)絡(luò)的基本結(jié)構(gòu)。圖里的圓圈代表是一個(gè)神經(jīng)元,每一個(gè)神經(jīng)元會(huì)對(duì)它的輸入做一個(gè)線性加權(quán)求和,在進(jìn)行一個(gè)非線性變換。經(jīng)過多層的變換,深度神經(jīng)網(wǎng)絡(luò)可以模擬非常復(fù)雜的非線性分類界面。
除了最基本的全連接網(wǎng)絡(luò),最近深度神經(jīng)網(wǎng)絡(luò)有很多新的變種,比如說卷積神經(jīng)網(wǎng)絡(luò),這是為圖像識(shí)別發(fā)明新的網(wǎng)絡(luò)結(jié)構(gòu),循環(huán)神經(jīng)網(wǎng)絡(luò)主要為自然語(yǔ)言流式數(shù)據(jù)發(fā)明的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。
不管是標(biāo)準(zhǔn)多層神經(jīng)網(wǎng)絡(luò)、卷積神經(jīng)網(wǎng)絡(luò),還是循環(huán)神經(jīng)網(wǎng)絡(luò),其學(xué)習(xí)過程都非常的簡(jiǎn)單和一致。首先會(huì)有一個(gè)訓(xùn)練集,我們用w表示深度神經(jīng)網(wǎng)絡(luò)里面的參數(shù),用f來表示神經(jīng)網(wǎng)絡(luò)模型。
L稱為損失函數(shù),深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)的訓(xùn)練其實(shí)通過在訓(xùn)練集上最小化損失函數(shù)而求得的,就是我們通常所說的經(jīng)驗(yàn)風(fēng)險(xiǎn)最小化。為了實(shí)現(xiàn)這個(gè)目標(biāo),人們使用的優(yōu)化技術(shù)也非常的簡(jiǎn)單,就是大家上大一的時(shí)候就會(huì)學(xué)到梯度下降法:對(duì)損失函數(shù)求一個(gè)梯度,然后把模型向梯度下降最快的方向做一個(gè)更新,這種方法在神經(jīng)網(wǎng)絡(luò)領(lǐng)域也被稱為反向傳播。
到此為止我就給大家用了一兩張PPT做了非??焖俚闹v座,什么是深度神經(jīng)網(wǎng)絡(luò),它有哪些變種。
接下來我們來看看神經(jīng)網(wǎng)絡(luò)背后深層次的東西。當(dāng)深度神經(jīng)網(wǎng)絡(luò)帶來了人工智能很大的飛躍,外行們討論的都是人工智能對(duì)人類會(huì)不會(huì)產(chǎn)生威脅?而內(nèi)行看到的則是深度神經(jīng)網(wǎng)絡(luò)有什么技術(shù)優(yōu)勢(shì)、往前發(fā)展還有什么樣子的短版?
前面提到,無論深度神經(jīng)網(wǎng)絡(luò)長(zhǎng)什么樣子,其實(shí)就是一種經(jīng)驗(yàn)風(fēng)險(xiǎn)最小化。這里,X是樣本,Y是標(biāo)簽,所以X和Y加起來就是神經(jīng)網(wǎng)絡(luò)的訓(xùn)練數(shù)據(jù),F(xiàn)用來表示神經(jīng)網(wǎng)絡(luò)模型,L是損失函數(shù)。神經(jīng)網(wǎng)絡(luò)的訓(xùn)練就是在整個(gè)神經(jīng)網(wǎng)絡(luò)的函數(shù)空間里面去找一個(gè)最優(yōu)模型,從而最好地?cái)M合訓(xùn)練數(shù)據(jù)。其實(shí)不僅神經(jīng)網(wǎng)絡(luò)在做這件事,歷史上那么多的分類模型,都在做的類似的事情。
為什么到今天神經(jīng)網(wǎng)絡(luò)可以取得傳統(tǒng)模型無法取得的成功呢?其實(shí)有三個(gè)理由:
一是要感謝我們這個(gè)大數(shù)據(jù)的時(shí)代,我們?nèi)缃裼兄八从械拇笥?xùn)練數(shù)據(jù),可以充分訓(xùn)練復(fù)雜的模型。
二是深度神經(jīng)網(wǎng)絡(luò)和前面提到的模型相比,具有更強(qiáng)的表達(dá)能力。大家知道在神經(jīng)網(wǎng)絡(luò)領(lǐng)域有一個(gè)universal approximation theorem,講的是帶有隱層的神經(jīng)網(wǎng)絡(luò)可以逼近任意的連續(xù)函數(shù)。從這個(gè)意義上講,即便我們選一個(gè)非常復(fù)雜的問題,用深度神經(jīng)網(wǎng)絡(luò)也可以逼近它的分類界面。
有了大數(shù)據(jù),又有了復(fù)雜模型,那怎么訓(xùn)練呢?就需要非常強(qiáng)大的計(jì)算資源,就是可能要用上百臺(tái)、上千臺(tái)的計(jì)算機(jī)來共同訓(xùn)練一個(gè)深度神經(jīng)網(wǎng)絡(luò)??偨Y(jié)一下啊,大數(shù)據(jù)、復(fù)雜模型、運(yùn)算集群能力其實(shí)共同支撐了今天深度神經(jīng)網(wǎng)絡(luò)的巨大成功。
但是世界上沒有免費(fèi)的午餐,這三方面恰洽也是深度神經(jīng)網(wǎng)絡(luò)向前進(jìn)一步發(fā)展的瓶頸所在。
第一個(gè)方面,其實(shí)大規(guī)模的數(shù)據(jù)不是那么容易取得的,尤其在某些領(lǐng)域,比如說醫(yī)學(xué)領(lǐng)域,有些疑難雜癥這世界上一共就一百個(gè)樣本,如何去產(chǎn)生成千上萬(wàn)的大數(shù)據(jù)?
第二個(gè)方面深度神經(jīng)網(wǎng)絡(luò)非常難以優(yōu)化,目前人們?yōu)榇税l(fā)明了很多黑科技。我們經(jīng)常遇到這種情況,即便有一個(gè)組織宣布他有非常好的深度模型并且把算法進(jìn)行了開源,但是我們當(dāng)下載到自己的環(huán)境里,用自己的數(shù)據(jù)做訓(xùn)練的時(shí)候,往往得不到那么好的結(jié)果。另外,有的時(shí)候很大的模型容量會(huì)超過計(jì)算機(jī)的限制,目前我們經(jīng)常用GPU來訓(xùn)練深度神經(jīng)網(wǎng)絡(luò),但是GPU的內(nèi)存很小,一般就是幾十個(gè)G,很多大的神經(jīng)網(wǎng)絡(luò)的規(guī)模會(huì)超過這個(gè)容量。
第三個(gè)方面,即便神經(jīng)網(wǎng)絡(luò)模型可以塞到GPU里,但是當(dāng)數(shù)據(jù)夠大的時(shí)候,用單機(jī)進(jìn)行訓(xùn)練可能要花費(fèi)非常多的時(shí)間,也許幾百年也訓(xùn)練不出一個(gè)模型來。為此,我們需要用一個(gè)集群來做分布式的訓(xùn)練,聽起來很簡(jiǎn)單,好像是系統(tǒng)領(lǐng)域成熟的問題,但是我們關(guān)心的不是簡(jiǎn)單地把模型訓(xùn)練分發(fā)到多個(gè)機(jī)器上,而是要保證精度不發(fā)生損失,我們希望在加速的同時(shí),還有很好的判別或者是分類能力,這件事情一點(diǎn)都不簡(jiǎn)單。
前面提到了很多情況下,不是那么容易獲得大數(shù)據(jù),當(dāng)沒有大的訓(xùn)練數(shù)據(jù)時(shí)候該怎么辦?通常獲得有標(biāo)簽數(shù)據(jù)很難,但是獲得無標(biāo)簽數(shù)據(jù)會(huì)相對(duì)榮國(guó)。比如現(xiàn)在ImageNet比賽的數(shù)據(jù)通常是1000類,每類1000幅圖像;但是我們?nèi)绻盟阉饕鎭硭阉鲌D像,可以獲得比這多得多的數(shù)據(jù)。 關(guān)鍵的問題是如何給這些無標(biāo)簽數(shù)據(jù)打上一個(gè)標(biāo)簽。常用的方法是標(biāo)簽傳播,就是利用樣本的相似性,給無標(biāo)簽數(shù)據(jù)賦予一個(gè)偽標(biāo)簽。另一種情況是,我們有類別信息,但是沒有樣本。最近有一個(gè)很有趣的工作叫GAN: generative adversarial nets,它利用一個(gè)生成器和一個(gè)判別器的博弈,最終能根據(jù)標(biāo)簽自動(dòng)產(chǎn)生屬于這個(gè)類別的數(shù)據(jù)。
有了這個(gè)技術(shù),我們就不用去采集數(shù)據(jù),而是自動(dòng)地淵源不斷輸出那些圖像。
這兩種工作是對(duì)稱的,一個(gè)工作處理的是有樣本但無標(biāo)簽,另一個(gè)工作處理的是有標(biāo)簽但無樣本。那么能不能使它們兩個(gè)對(duì)接在一起?這是我們今年在NIPS上發(fā)的一篇論文,稱為對(duì)偶通信博弈,可以把前面兩項(xiàng)技術(shù)完美結(jié)合在一起。
首先從任何一個(gè)無標(biāo)簽的樣本出發(fā),可以預(yù)測(cè)標(biāo)簽,然后基于這個(gè)標(biāo)簽又可以用生成技術(shù)生成一個(gè)新樣本出來,這個(gè)過程我們可以獲得很多反饋信息,比如標(biāo)簽的分布、生成樣本和原樣本的相似度等。這個(gè)過程也可以從標(biāo)簽出發(fā),也能形成一個(gè)閉環(huán)。有了這個(gè)技術(shù),我們就可以自己產(chǎn)生訓(xùn)練數(shù)據(jù)。我們把這個(gè)技術(shù)應(yīng)用到了機(jī)器翻譯上,取得了非常好的結(jié)果。大家知道機(jī)器翻譯這幾年有突飛猛進(jìn)的進(jìn)展,得益于大量雙語(yǔ)語(yǔ)料的存在,如果只有很少的數(shù)據(jù)能做什么呢?
這張圖上面最上面條形圖對(duì)應(yīng)的是用百分之百的雙語(yǔ)語(yǔ)料訓(xùn)練的結(jié)果,最底下一行是使用傳統(tǒng)的深度學(xué)習(xí)技術(shù)只用5%的雙語(yǔ)語(yǔ)料的結(jié)果。綠色的這一條也只是使用了5%的有標(biāo)數(shù)據(jù),但是使用了對(duì)偶通信博弈來自動(dòng)生成更多的訓(xùn)練數(shù)據(jù),它可以很快逼近使用全部雙語(yǔ)語(yǔ)料的精度。當(dāng)然,這里機(jī)器翻譯只是一個(gè)例子,同樣的方法可以解決很多其他的應(yīng)用問題。
深度學(xué)習(xí)的網(wǎng)絡(luò)很復(fù)雜,訓(xùn)練其實(shí)不容易,那么到底有哪些不容易?
一個(gè)典型的挑戰(zhàn)叫做梯度消減,深度神經(jīng)網(wǎng)絡(luò)是從輸出層的損失函數(shù)不斷向下傳播,用預(yù)測(cè)誤差來更改神經(jīng)網(wǎng)絡(luò)的參數(shù),所謂梯度消減指的是當(dāng)網(wǎng)絡(luò)很深的時(shí)候,輸出層的損失很難有效反饋到底層,所以底層神經(jīng)參數(shù)不能得到有效的更新。我們舉個(gè)簡(jiǎn)單的例子,這是一個(gè)簡(jiǎn)化的深度神經(jīng)網(wǎng)絡(luò),每一層只有一個(gè)隱節(jié)點(diǎn),但是有很多層次,C是損失函數(shù),反向傳播無非就是對(duì)損失函數(shù)求一個(gè)偏導(dǎo),求到每一個(gè)層的參數(shù)上面去,這個(gè)偏導(dǎo)長(zhǎng)什么樣子,大家回去做一點(diǎn)演算的話就可以得到這個(gè)式子。這里sigma’對(duì)應(yīng)于非線性激活函數(shù)的導(dǎo)數(shù),它的最大值也不過是0.25,如果一個(gè)網(wǎng)絡(luò)很深,每一層對(duì)應(yīng)的激活函數(shù)的導(dǎo)數(shù)會(huì)被連乘,一連串很小的量連乘會(huì)是什么結(jié)果呢,就是很快趨近于0,這就是梯度消減的起因。為了解決這個(gè)問題,人們提出在原有的神經(jīng)網(wǎng)絡(luò)基礎(chǔ)上增加了一條由門電路控制的線性通路。
我們做回傳的時(shí)候,線性通路可以把預(yù)測(cè)誤差有效傳遞到底的參數(shù)上,而不會(huì)有那么強(qiáng)的梯度消減問題。但是,這兩個(gè)工作使用的門電路,有的時(shí)候會(huì)通,有的時(shí)候會(huì)斷,還是會(huì)帶來一定的損失。我們研究院的同事提出在神經(jīng)網(wǎng)絡(luò)不同層次之間加一個(gè)直接的線性通路,不受任何的限制,永遠(yuǎn)是通的,經(jīng)過這樣的一個(gè)改造之后,對(duì)于解決梯度消減問題效果更好,并且可以讓我們很輕易訓(xùn)練出成千上萬(wàn)層的網(wǎng)絡(luò),其中152層的殘差網(wǎng)絡(luò)參加了去年的比賽,并且取得了五個(gè)項(xiàng)目的冠軍,獲得了全世界的矚目。
大家看看這個(gè)152層的網(wǎng)絡(luò)有多深。
其實(shí),不僅深會(huì)帶來麻煩,網(wǎng)絡(luò)大也是件麻煩事。這個(gè)數(shù)據(jù)集是在網(wǎng)絡(luò)搜索領(lǐng)域常用的數(shù)學(xué)極,它包含十幾億的網(wǎng)頁(yè),詞表大小大概1000萬(wàn)。如果基于這樣數(shù)據(jù)去設(shè)計(jì)一個(gè)神經(jīng)網(wǎng)絡(luò),因?yàn)檩敵鰧邮窃~表那么大,輸入層也是詞表那么大,網(wǎng)絡(luò)大小是非??捎^的,其參數(shù)個(gè)數(shù)會(huì)超過200億,存儲(chǔ)的量會(huì)超過200G,這樣是網(wǎng)絡(luò)是沒法塞到GPU的內(nèi)存里的。即便可以塞進(jìn)去,訓(xùn)練這么大的網(wǎng)絡(luò)也需要花很長(zhǎng)的時(shí)間,粗略的計(jì)算告訴我們,用主流GPU來訓(xùn)練,大約需要180年。
今年我們的研究組提出新的技術(shù),就叫做參數(shù)維度壓縮技術(shù),可以有效解決詞表過大的問題。因?yàn)樵~表決定了輸出的結(jié)點(diǎn)數(shù)和輸入的結(jié)點(diǎn)數(shù),我們工作的核心所在就是提出了詞表的二維向量表達(dá)。
每一個(gè)詞不是用一個(gè)節(jié)點(diǎn)表示,而是用兩個(gè)節(jié)點(diǎn)去表示,不同的詞會(huì)共享節(jié)點(diǎn)。如果用二維的表格來表述所有的詞條,原來10000個(gè)詞,只需要200個(gè)元素就可以了。通過二維詞表的構(gòu)造大大解決了內(nèi)存的空間,但是到底該怎么生成這些二維的詞表?
哪些詞要共享節(jié)點(diǎn),哪些詞不需要共享節(jié)點(diǎn),其實(shí)這是一個(gè)最優(yōu)的二分圖匹配問題,我們可以循環(huán)地求解二分圖匹配,從而獲得合理的二維詞表。相應(yīng)地,我們把傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)也做了改進(jìn),提出的二維循環(huán)神經(jīng)網(wǎng)絡(luò)。
這個(gè)網(wǎng)絡(luò)大大縮小了網(wǎng)絡(luò)儲(chǔ)存的內(nèi)存需求,像我剛才提到有200億個(gè)參數(shù)的網(wǎng)絡(luò),用了這個(gè)技術(shù)以后,儲(chǔ)存量降低了三個(gè)數(shù)量級(jí),運(yùn)算量降低了四個(gè)數(shù)量級(jí),這還不是最神奇的,我們使用了二維共享表之后,精度也得到了提高,這主要是因?yàn)閭鹘y(tǒng)的神經(jīng)網(wǎng)絡(luò)輸入結(jié)點(diǎn)是互相獨(dú)立的,但是我們沒有做這樣的假設(shè),我們是用了最優(yōu)二分圖的匹配來找到了詞與詞之間的語(yǔ)義相似性,因此提高了網(wǎng)絡(luò)的精度。
大家想象一下,如果真的有一個(gè)非常大的網(wǎng)絡(luò),有很多數(shù)據(jù)要跑,一臺(tái)機(jī)器要一兩百年才能完成訓(xùn)練。那就不得不使用多臺(tái)機(jī)器進(jìn)行并行訓(xùn)練。在并行的訓(xùn)練當(dāng)中最簡(jiǎn)單的范式就是同步的并行。
比如說每一臺(tái)機(jī)器做一個(gè)局部運(yùn)算,然后機(jī)器互相之間互相同步一下學(xué)到的東西。但是這一百臺(tái)機(jī)器可能運(yùn)算的速度有很大差別,做同步的更新,這一百臺(tái)機(jī)器就需要互相等待,最后運(yùn)算的效率是由最慢的機(jī)器決定的。
結(jié)果是,使用了100臺(tái)機(jī)器,可能由于互相等待,最終只實(shí)現(xiàn)了三五倍的加速比,得不償失。為了解決這個(gè)問題,最近學(xué)者們開始研究異步并行。
就是機(jī)器之間不互相等待,這樣雖然速度有所提高,但是會(huì)出現(xiàn)所謂延時(shí)通信的額問題。也就是,當(dāng)一臺(tái)機(jī)器根據(jù)當(dāng)前模型,得到模型更新,想要推送回全局模型的時(shí)候,全局模型很可能已經(jīng)被其他機(jī)器更新了好幾次了,導(dǎo)致它推送上的更新過時(shí)了,把這個(gè)過時(shí)的更新加到全局模型上,可能會(huì)導(dǎo)致出乎意料的結(jié)果。有學(xué)者做過分析,這種延時(shí),或?qū)е聦W(xué)習(xí)的收斂速度變慢,最終也是影響加速比。
為了解決這個(gè)問題,我們需要弄清楚這個(gè)過時(shí)的更新到底會(huì)帶來什么影響。其實(shí),這個(gè)舊的更新和新的更新之間的差別可以用泰勒展開來進(jìn)行刻畫,傳統(tǒng)的異步并行相當(dāng)于只利用了泰勒展開的零階項(xiàng),那么,我們是不是可以用更多的高階項(xiàng)去補(bǔ)償這種延時(shí)呢?如果把所有高階項(xiàng)都用上,確實(shí)可以把通訊延遲完全解決掉,但是其運(yùn)算復(fù)雜度也會(huì)增加,所以這中間有一個(gè)平衡的問題。我們做了一個(gè)簡(jiǎn)單的嘗試,就是在零階項(xiàng)的基礎(chǔ)上,多保留了一階項(xiàng)。但是,即便這種簡(jiǎn)單的操作,也需要我們計(jì)算原損失函數(shù)的二階導(dǎo)數(shù)(就是所謂海森陣),其復(fù)雜度是相當(dāng)高的,可能得不償失。我們的貢獻(xiàn)在于證明了一個(gè)重要的定理,當(dāng)損失函數(shù)具有對(duì)數(shù)似然的形式的時(shí)候,這個(gè)二階導(dǎo)數(shù)可以用一階導(dǎo)數(shù)的簡(jiǎn)單變換,實(shí)現(xiàn)無偏估計(jì)。而神經(jīng)網(wǎng)絡(luò)里常用的交叉熵?fù)p失函數(shù),正是一種對(duì)數(shù)似然的形式,因此我們的技術(shù)可以很好地應(yīng)用到深度神經(jīng)網(wǎng)絡(luò)里面。
前面我講到了很多微軟在深度學(xué)習(xí)方面的前沿技術(shù),這些技術(shù)將會(huì)陸續(xù)通過我們的開源項(xiàng)目分享給業(yè)界。其中一個(gè)開源項(xiàng)目叫CNTK,微軟深度學(xué)習(xí)工具包,還有一個(gè)叫DMTK,微軟分布式機(jī)器學(xué)習(xí)工具包。希望對(duì)這方面感興趣的同事可以嘗試一下我們的工具包,希望對(duì)你們的研究有一個(gè)推動(dòng)作用。
最后,讓我們討論一下我們的未來研究方向,我們希望創(chuàng)造一個(gè)能夠自動(dòng)創(chuàng)造人工智能的人工智能。今天人工智能雖然有很多成功的例子,但是絕大部分依靠人為編寫的程序。最近這幾年,學(xué)者們?cè)谒伎?,有沒有可能不需要人為控制深度學(xué)習(xí)的過程,而是由機(jī)器自己來優(yōu)化自己呢?比如說DeepMind今年發(fā)了一個(gè)論文,叫l(wèi)earning to learn by gradient descent by gradient descent,就是用循環(huán)神經(jīng)網(wǎng)絡(luò)取代人為定義的梯度下降方法。再比如,我們前面提到的對(duì)偶通信博弈,就是機(jī)器自己搜集和產(chǎn)生訓(xùn)練數(shù)據(jù)。還有一些人在用機(jī)器學(xué)習(xí)的方法自動(dòng)來調(diào)深度神經(jīng)網(wǎng)絡(luò)的超參數(shù),比如學(xué)習(xí)率。隨著這些研究的開展,我們可以想象有一天機(jī)器學(xué)習(xí)工具可以針對(duì)給出的任務(wù)去自動(dòng)搜索數(shù)據(jù)、選擇數(shù)據(jù)、處理數(shù)據(jù),自動(dòng)根據(jù)你所給的目標(biāo)去生成模型優(yōu)化的方法,自動(dòng)調(diào)整超參數(shù),自動(dòng)把訓(xùn)練部署到多個(gè)機(jī)器上進(jìn)行分布式訓(xùn)練,如果真的有這樣一天,將是對(duì)所有機(jī)器學(xué)習(xí)使用者的一種解放,我們不需要那些掌握黑科技的巨頭,每個(gè)人都可以享受機(jī)器學(xué)習(xí)技術(shù)給大家?guī)淼募t利!讓貌似高深復(fù)雜的機(jī)器學(xué)習(xí)技術(shù),真正飛入尋常百姓家!
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。