來源:freepik 讀過一些科普文章的人都會知道,所謂的深度學(xué)習(xí)就是一種利用深度人工神經(jīng)網(wǎng)絡(luò)來進(jìn)行自動分類、預(yù)測和學(xué)習(xí)的技術(shù)。因此,深度學(xué)習(xí)就等于深度人工神經(jīng)網(wǎng)絡(luò),如圖1 所示。 圖1 深度人工神經(jīng)網(wǎng)絡(luò)示意圖 圖中黑色的圓圈表示一個人工神經(jīng)元,連線表示人工神經(jīng)突觸。信息從網(wǎng)絡(luò)最左側(cè)的節(jié)點傳入,經(jīng)過中間層節(jié)點的加工,最終由最右側(cè)4 個節(jié)點輸出給外界。神經(jīng)網(wǎng)絡(luò)從左到右排成多少列就稱為有多少層。多少層算深呢?通常情況下,我們認(rèn)為超過三層以上的神經(jīng)網(wǎng)絡(luò)都可以叫作深度神經(jīng)網(wǎng)絡(luò)。而目前人們已經(jīng)可以實現(xiàn)深達(dá)1000 多層的人工神經(jīng)網(wǎng)絡(luò)了。 不過,對深度學(xué)習(xí)的以上認(rèn)識雖然沒有錯誤,但并不全面,我們還需要從深度學(xué)習(xí)與人工智能的關(guān)系及其歷史淵源等多個方面來充分理解什么是深度學(xué)習(xí)。 深度學(xué)習(xí)與人工智能首先,深度學(xué)習(xí)屬于一種特殊的人工智能技術(shù),它與人工智能及機(jī)器學(xué)習(xí)的關(guān)系如圖2 所示。 圖2 人工智能、機(jī)器學(xué)習(xí)、人工神經(jīng)網(wǎng)絡(luò)、深度學(xué)習(xí)之間的關(guān)系 人工智能的覆蓋面非常廣,包括自動推理、聯(lián)想、學(xué)習(xí)等。機(jī)器學(xué)習(xí)則是人工智能的一個重要分支,它在20 世紀(jì)八九十年代才逐漸發(fā)展起來,主要研究如何讓計算機(jī)具有能夠自我學(xué)習(xí)的能力。事實上,機(jī)器學(xué)習(xí)的算法有上千種,包括決策樹算法(decision tree)、支持向量機(jī)(support vector machine,SVM)、遺傳算法(genetic algorithm),等等。 近些年來,基于人工神經(jīng)網(wǎng)絡(luò)的機(jī)器學(xué)習(xí)算法日益盛行起來,逐漸呈現(xiàn)出取代其他機(jī)器學(xué)習(xí)算法的態(tài)勢,這主要是因為人工神經(jīng)網(wǎng)絡(luò)中有一種叫作反向傳播算法的關(guān)鍵性技術(shù)。該算法可以精確地調(diào)整人工神經(jīng)網(wǎng)絡(luò)出現(xiàn)問題的部件,從而快速降低網(wǎng)絡(luò)進(jìn)行分類或預(yù)測的錯誤率,這使得人工神經(jīng)網(wǎng)絡(luò)在諸多機(jī)器學(xué)習(xí)算法中勝出。所以,反向傳播算法是人工神經(jīng)網(wǎng)絡(luò)的核心。 在應(yīng)用層面,與一般的機(jī)器學(xué)習(xí)技術(shù)相比,深度學(xué)習(xí)最大的特色是可以處理各種非結(jié)構(gòu)化數(shù)據(jù)——特指圖像、視頻、文本、音頻,等等。而一般的機(jī)器學(xué)習(xí)更適合處理結(jié)構(gòu)化數(shù)據(jù),即可以用關(guān)系型數(shù)據(jù)庫進(jìn)行存儲、管理和訪問的數(shù)據(jù)。 通過對比深度學(xué)習(xí)與人工智能及一般機(jī)器學(xué)習(xí)技術(shù)之間的區(qū)別和聯(lián)系,我們可以從橫向的、多學(xué)科的角度來理解深度學(xué)習(xí);另外,我們還需要從縱向的、歷史淵源的角度進(jìn)一步了解深度學(xué)習(xí)。 深度學(xué)習(xí)的歷史淵源盡管人工神經(jīng)網(wǎng)絡(luò)的誕生比人工智能還要早上十多年,但是在人工智能的歷史上,人工神經(jīng)網(wǎng)絡(luò)卻一直是一個旁支,它被人們稱為人工智能的“連接學(xué)派”。這一旁支曾經(jīng)迎來過短暫的輝煌,但是真正爆發(fā)還是近些年的事情。 從感知機(jī)到人工神經(jīng)網(wǎng)絡(luò) 人工智能誕生于1956 年的達(dá)特茅斯會議,而人工神經(jīng)網(wǎng)絡(luò)的誕生比人工智能還早,可以追溯到1943 年。當(dāng)時,第一個人工神經(jīng)元被發(fā)明了出來,這就是著名的麥克洛克?皮茨(McCulloch-Pitts)模型。
不過,他們的工作并未引起業(yè)內(nèi)重視,人工神經(jīng)網(wǎng)絡(luò)的研究一直進(jìn)展緩慢。直到1957 年,弗蘭克·羅森布萊特(Frank Rosenblatt)提出了感知機(jī)模型(Perceptron),才點燃了人們探索人工神經(jīng)網(wǎng)絡(luò)的熱情,并使其成為業(yè)界探索人工智能的另類路徑。這種方法并不是直接從功能的角度模擬人類的智能,而是嘗試構(gòu)建一個類似于大腦神經(jīng)網(wǎng)絡(luò)的裝置,然后通過結(jié)構(gòu)模擬的方法來解決問題。
然而,好景不長。1969 年,馬文·閔斯基(Marvin Lee Minsky)與西摩爾·派普特(Seymour Aubrey Papert)在其合著中開宗明義地指出了感知機(jī)模型的局限性:它甚至連極其簡單的XOR(異或)問題都無法解出來,何況更高級的智能呢?所謂XOR 問題就是將輸入的兩個二進(jìn)制串按照每一個位進(jìn)行比較,相同的位就輸出1,否則輸出0。例如,輸入的兩個二進(jìn)制串是1001 和0111,則XOR 就會輸出0001。顯然,XOR 問題是一個基礎(chǔ)、簡單的問題。然而把1001 及0111輸入給感知機(jī)神經(jīng)網(wǎng)絡(luò),無論如何變換參數(shù),如何訓(xùn)練,它都不能輸出正確的答案。就這樣,人工神經(jīng)網(wǎng)絡(luò)被打入了冷宮。礙于馬文·閔斯基在人工智能圈中的地位和聲勢,研究者幾乎不敢再發(fā)表有關(guān)感知機(jī)和神經(jīng)網(wǎng)絡(luò)的文章了,這種局面一直持續(xù)了將近20 年。 歷史的進(jìn)程需要一名拯救者來挽回連接學(xué)派的頹勢,而他就是大名鼎鼎的杰弗里·辛頓(Geoffrey Everest Hinton)。1986 年,辛頓與合作者大力發(fā)展了人工神經(jīng)網(wǎng)絡(luò)的反向傳播算法,從而可以構(gòu)造兩層以上的人工神經(jīng)網(wǎng)絡(luò),并且可以有效地進(jìn)行學(xué)習(xí)與訓(xùn)練。對閔斯基XOR 問題的回應(yīng)就在于深度。兩層以上的神經(jīng)網(wǎng)絡(luò)可以很輕松地解決XOR 問題,從而打破了閔斯基的詰難。 不僅如此,多層人工神經(jīng)網(wǎng)絡(luò)配備上反向傳播算法還能幫助人們解決大量的模式識別和預(yù)測問題。盡管當(dāng)時的精度還有待提高,但是人工神經(jīng)網(wǎng)絡(luò)作為一種通用的算法,在20 世紀(jì)80 年代末到90 年代初曾經(jīng)風(fēng)靡一時,它已經(jīng)演化成為可以與經(jīng)典的人工智能符號學(xué)派和新興的人工智能行為學(xué)派并駕齊驅(qū)的連接學(xué)派。 然而好景不長,人工神經(jīng)網(wǎng)絡(luò)并沒有繼續(xù)沿著深度的方向發(fā)展下去。這一方面是受限于當(dāng)時的計算能力,另一方面則是因為缺乏大規(guī)模高質(zhì)量的訓(xùn)練數(shù)據(jù)。而且,神經(jīng)網(wǎng)絡(luò)本身就是一個黑箱,誰也不敢保證神經(jīng)網(wǎng)絡(luò)在深度這個方向就一定能夠取得更好的結(jié)果和精度。于是,學(xué)術(shù)界的焦點朝向了另一個方向發(fā)展:尋找神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)理論。 到了20 世紀(jì)90 年代末,在兩位俄羅斯裔數(shù)學(xué)家弗拉基米爾·萬普尼克(Vladimir Naumovich Vapnik)和亞歷克塞·澤范蘭杰斯(Alexey Yakovlevich Chervonenkis)的大力推進(jìn)下,統(tǒng)計學(xué)習(xí)理論蓬勃發(fā)展了起來,它不僅奠定了模式識別問題的數(shù)學(xué)基礎(chǔ),而且創(chuàng)造出了支持向量機(jī)這種極其實用簡潔的工具。與傳統(tǒng)神經(jīng)網(wǎng)絡(luò)希望通過加深網(wǎng)絡(luò)來提升精度相反,支持向量機(jī)的解決方案是將數(shù)據(jù)的維度提升,在高維空間中尋找能夠?qū)?shù)據(jù)進(jìn)行精準(zhǔn)劃分的方法,這種方法在數(shù)據(jù)量不是很大的情況下非常奏效。就這樣,支持向量機(jī)成為20 世紀(jì)90 年代到21 世紀(jì)初的寵兒。 然而,真理似乎總是掌握在少數(shù)人手中。在主流學(xué)術(shù)圈關(guān)注支持向量機(jī)的時候,辛頓仍然在默默地堅持著深度網(wǎng)絡(luò)的方向。2006 年,辛頓在《科學(xué)》雜志上發(fā)表了一篇題為《利用神經(jīng)網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)的維度約減》的文章,提出了深度神經(jīng)網(wǎng)絡(luò)(deep neural network,DNN)模型,并指出如果我們能夠?qū)⑸窠?jīng)網(wǎng)絡(luò)的層數(shù)加深,并且精心設(shè)計訓(xùn)練網(wǎng)絡(luò)的方式,那么這樣深層次的神經(jīng)網(wǎng)絡(luò)就會具有超強(qiáng)的表達(dá)能力和學(xué)習(xí)能力。 雖然很多人很早就猜想深度的神經(jīng)網(wǎng)絡(luò)也許能夠大大提高分類的準(zhǔn)確度,但是沒有人真正地嚴(yán)格驗證過這個結(jié)論。原因在于當(dāng)時的硬件水平和數(shù)據(jù)量都遠(yuǎn)遠(yuǎn)無法與深度的神經(jīng)網(wǎng)絡(luò)相匹配,再加上深度網(wǎng)絡(luò)需要特殊的訓(xùn)練技巧,這就阻礙了人們往深度方向去探索。而辛頓始終堅持著深度的夢想,終于在2006 年實現(xiàn)了突破,向世人證明了“深度”的作用。 深度學(xué)習(xí)時代 辛頓有關(guān)深度神經(jīng)網(wǎng)絡(luò)的研究激勵了大量的學(xué)者朝著這個方向前進(jìn)。借助辛頓的深度網(wǎng)絡(luò)模型,人們首先在語音領(lǐng)域取得了突破。微軟的鄧力邀請辛頓加入語音識別的深度神經(jīng)網(wǎng)絡(luò)模型的開發(fā),使識別的準(zhǔn)確度有了大幅度的提升。然而,辛頓并不想止步于此,他需要一個更大的數(shù)據(jù)集來訓(xùn)練超深度的網(wǎng)絡(luò),從而向世人展示深度的神奇威力。然而,這么大規(guī)模的數(shù)據(jù)集到哪里去找呢? 此時,一位華裔女科學(xué)家走上了歷史的舞臺,她就是美國斯坦福大學(xué)的機(jī)器視覺專家李飛飛。2006 年,李飛飛還是一個名不見經(jīng)傳的小人物。然而,她卻懷揣著一個不小的夢想:構(gòu)造一個大規(guī)模的有關(guān)圖像的數(shù)據(jù)庫,她將其命名為ImageNet,以仿效自然語言處理領(lǐng)域中的WordNet,為上千種物體的圖像進(jìn)行標(biāo)注。但是,當(dāng)她寫報告申請經(jīng)費的時候卻遭到了無情的拒絕。然而,李飛飛并未放棄夢想,最終找到了亞馬遜的眾包平臺——“亞馬遜土耳其機(jī)器人”(Amazon Mechanical Turk),借助大量網(wǎng)友的力量構(gòu)造出了ImageNet 這樣一個大規(guī)模、高精度、多標(biāo)簽的圖像數(shù)據(jù)庫。 到了2010 年,ImageNet 已經(jīng)收錄了一百多萬張圖像。如此巨大的數(shù)據(jù)量應(yīng)該能促進(jìn)計算機(jī)視覺領(lǐng)域的大發(fā)展,于是李飛飛開始舉辦每年一次的圖像識別大賽:ImageNet 競賽。正是這樣的競賽為辛頓提供了一個完美的舞臺。那時,他早已準(zhǔn)備好要讓深度神經(jīng)網(wǎng)絡(luò)大顯身手了。2012 年,辛頓和他的兩個學(xué)生阿萊克斯·克里茲維斯基(Alex Krizhevsky)和伊利亞·索特思科瓦(Ilya Sutskever)采用了一個深層次的卷積神經(jīng)網(wǎng)絡(luò)(AlexNet),在ImageNet 競賽的分類任務(wù)中表現(xiàn)突出,技壓群雄,將分類錯誤率從25%降到了17%。其實,卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)也不是新東西,它于20 世紀(jì)80 年代發(fā)展起來,最早用于模仿動物視覺皮層的結(jié)構(gòu)。到了1998 年,這種網(wǎng)絡(luò)被楊·樂昆(Yann LeCun)等人成功應(yīng)用到了手寫數(shù)字的識別上,大獲成功。然而將卷積神經(jīng)網(wǎng)絡(luò)做到8 層,而且不需要任何預(yù)處理就能將圖像分類任務(wù)做到這么好,這還是頭一次。從此,深度神經(jīng)網(wǎng)絡(luò)就成為了ImageNet 競賽的標(biāo)配,從AlexNet 到GoogleNet,人們不斷增加網(wǎng)絡(luò)的深度,識別準(zhǔn)確率直線提升。2012 年以后,深度學(xué)習(xí)開始在學(xué)術(shù)圈流行起來。 巨頭之間的角逐 然而,深度學(xué)習(xí)更大范圍的應(yīng)用和工業(yè)界是分不開的。2011 年,谷歌X 實驗室的杰夫·迪恩(Jeffrey Adgate Dean)和吳恩達(dá)等人采用深度學(xué)習(xí)技術(shù),讓谷歌大腦深度神經(jīng)網(wǎng)絡(luò)觀看了從YouTube 中提取出來的30 萬張圖像,并讓機(jī)器自動進(jìn)行精煉。結(jié)果,谷歌大腦自己學(xué)出了一張“貓”臉,如圖3 所示。這張貓臉具有鮮明的“機(jī)器烙印”。第二天,這張貓臉便出現(xiàn)在了各大網(wǎng)站的頭條位置,深度學(xué)習(xí)開始引起工業(yè)界的關(guān)注。 圖3 谷歌大腦從30 萬張圖像中自學(xué)出來的“貓”臉 在看到深度學(xué)習(xí)技術(shù)的發(fā)展前景后,以谷歌為代表的各大公司開始瘋狂并購人工智能、深度學(xué)習(xí)初創(chuàng)公司和團(tuán)隊。這不僅引發(fā)了人工智能人才的全球爭奪戰(zhàn),也促使更多的人才和創(chuàng)業(yè)公司投入到人工智能大潮之中。 深度學(xué)習(xí)技術(shù)在語音和圖像領(lǐng)域的成功應(yīng)用激發(fā)了人們將該技術(shù)擴(kuò)展到自然語言處理領(lǐng)域的熱情。首先,2013 年谷歌的托馬斯·米科洛夫(Tomas Mikolov)提出了Word2Vec 技術(shù),它可以非常快捷有效地計算單詞的向量表示,這為大規(guī)模使用人工神經(jīng)網(wǎng)絡(luò)技術(shù)處理人類語言奠定了重要的基礎(chǔ)。 2014 年,谷歌開始嘗試?yán)蒙疃鹊难h(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural networks,RNN)來處理各種自然語言任務(wù),包括機(jī)器翻譯、自動對話、情緒識別、閱讀理解等。盡管目前深度學(xué)習(xí)技術(shù)在自然語言類任務(wù)上的表現(xiàn)還無法與圖像類任務(wù)相媲美,但已取得了長足的進(jìn)步。2016 年,谷歌的機(jī)器翻譯技術(shù)取得重大突破,采用了先進(jìn)的深度循環(huán)神經(jīng)網(wǎng)絡(luò)和注意力機(jī)制的機(jī)器翻譯在多種語言上已經(jīng)基本接近人類的水平。 除了在語音、圖像和自然語言處理等傳統(tǒng)任務(wù)上的發(fā)展,科學(xué)家還在不斷地拓寬深度學(xué)習(xí)的應(yīng)用范圍。在與強(qiáng)化學(xué)習(xí)這一古老的機(jī)器學(xué)習(xí)技術(shù)聯(lián)姻后,深度學(xué)習(xí)在計算機(jī)游戲、博弈等領(lǐng)域同樣取得了重大進(jìn)展。2015 年,被谷歌收購的DeepMind 團(tuán)隊研發(fā)了一種“通用人工智能”算法,它可以像人類一樣,通過觀察計算機(jī)游戲的屏幕進(jìn)行自我學(xué)習(xí),利用同一套網(wǎng)絡(luò)架構(gòu)和超參數(shù),從零開始學(xué)習(xí)每一款游戲,并最終打通了300 多款雅達(dá)利游戲,在某些游戲上的表現(xiàn)甚至超越了人類。 2016 年3 月,DeepMind 團(tuán)隊又在博弈領(lǐng)域取得了重大突破。AlphaGo 以4∶1 的大比分戰(zhàn)勝人類圍棋冠軍,讓計算機(jī)圍棋這一領(lǐng)域的發(fā)展提前了至少十年。2017 年10 月,DeepMind 團(tuán)隊創(chuàng)造的AlphaGo 升級版AlphaGo Zero 再一次取得了重大突破,它可以完全從零開始學(xué)習(xí)下圍棋,而無須借鑒任何人類的下棋經(jīng)驗。僅經(jīng)過大約3 天的訓(xùn)練,AlphaGo Zero 就達(dá)到了戰(zhàn)勝李世石的棋力水平;而到了21 天以后,世界上已經(jīng)沒有任何人類或程序可以在圍棋上戰(zhàn)勝它了。AlphaGo的成功不僅標(biāo)志著以深度學(xué)習(xí)技術(shù)為支撐的新一代人工智能技術(shù)的大獲全勝,更暗示著人工智能的全新時代已經(jīng)到來。 我們列出了人工神經(jīng)網(wǎng)絡(luò)以及深度學(xué)習(xí)歷史上的大事件,繪制了一條時間軸,方便讀者查看,如圖4 所示。 圖4 人工神經(jīng)網(wǎng)絡(luò)、深度學(xué)習(xí)大事件 深度學(xué)習(xí)的影響因素影響深度學(xué)習(xí)爆發(fā)的主要因素有3 個,分別是大數(shù)據(jù)、深度網(wǎng)絡(luò)架構(gòu)和GPU。 大數(shù)據(jù) 前面已經(jīng)提到,深度神經(jīng)網(wǎng)絡(luò)并不算新技術(shù),早在20 世紀(jì)八九十年代,人們就提出了加深神經(jīng)網(wǎng)絡(luò)的深度以獲得更高準(zhǔn)確度的設(shè)想,但是由于當(dāng)時硬件發(fā)展速度跟不上,人們很難實現(xiàn)深度的神經(jīng)網(wǎng)絡(luò)。當(dāng)然,更主要的原因是當(dāng)時根本沒有足夠大量的數(shù)據(jù)輸入給深度神經(jīng)網(wǎng)絡(luò),因此自然也就無法發(fā)揮深度的作用。伴隨著網(wǎng)絡(luò)深度的增加,待擬合的參數(shù)自然也會增加,如果沒有與其相匹配的海量數(shù)據(jù)來訓(xùn)練網(wǎng)絡(luò),這些參數(shù)就完全變成了導(dǎo)致網(wǎng)絡(luò)過擬合的垃圾,無法發(fā)揮作用。 然而,到了21 世紀(jì)的第二個十年,一切都不一樣了。有數(shù)據(jù)顯示,2014 年,整個互聯(lián)網(wǎng)上每秒鐘就有60 萬條信息在臉書上分享,2 億封郵件、10 萬條推文被發(fā)送,571 個新網(wǎng)站被建立,1.9E(1018)字節(jié)的數(shù)據(jù)被交換[1]。隨著互聯(lián)網(wǎng)特別是移動互聯(lián)網(wǎng)時代的到來,我們每一個動作都會被網(wǎng)絡(luò)服務(wù)器記錄下來,這些數(shù)據(jù)促使人類一下子進(jìn)入了大數(shù)據(jù)時代。 大數(shù)據(jù)時代的到來為深度神經(jīng)網(wǎng)絡(luò)的大規(guī)模應(yīng)用鋪平了道路,加深網(wǎng)絡(luò)帶來更高精度的設(shè)想終于可以在海量數(shù)據(jù)的基礎(chǔ)上得以驗證。圖1.5 所示的曲線很好地說明了數(shù)據(jù)量的大小對深度神經(jīng)網(wǎng)絡(luò)分類和預(yù)測準(zhǔn)確度的影響。 圖5 機(jī)器學(xué)習(xí)模型的預(yù)測精度隨數(shù)據(jù)量的提升曲線 圖中橫坐標(biāo)表示的是輸入神經(jīng)網(wǎng)絡(luò)模型的數(shù)據(jù)規(guī)模大小,縱坐標(biāo)表示的是模型所能達(dá)到的分類或預(yù)測準(zhǔn)確度。實曲線對應(yīng)的是采用了深度學(xué)習(xí)技術(shù)的神經(jīng)網(wǎng)絡(luò)模型,虛曲線代表的則是未采用深度學(xué)習(xí)技術(shù)的模型(例如SVM算法)。對比這兩條曲線,我們可以清晰地看到,隨著數(shù)據(jù)量的增加,采用了深度學(xué)習(xí)方法的模型可以持續(xù)不斷地提高準(zhǔn)確度,而傳統(tǒng)算法則會很快地遇到精確度方面的瓶頸。 由此可見,大數(shù)據(jù)與深度學(xué)習(xí)技術(shù)的搭配才是促使人工智能突飛猛進(jìn)發(fā)展的關(guān)鍵因素。 深度網(wǎng)絡(luò)架構(gòu) 有人說,如今的深度學(xué)習(xí)革命完全是拜大數(shù)據(jù)所賜,只要擁有海量的數(shù)據(jù),隨便調(diào)試一個深度學(xué)習(xí)模型,就可以獲得很好的預(yù)測結(jié)果。這種認(rèn)識是非常片面的,雖然大部分深度學(xué)習(xí)技術(shù)早在20 世紀(jì)八九十年代就發(fā)展了起來,但是當(dāng)面對一個具體問題時,應(yīng)該采用什么樣的網(wǎng)絡(luò)架構(gòu),如何選取超參數(shù),如何訓(xùn)練這個網(wǎng)絡(luò),仍然是影響學(xué)習(xí)效率和解決問題的重要因素。 所謂的深度網(wǎng)絡(luò)架構(gòu),就是整個網(wǎng)絡(luò)體系的構(gòu)建方式和拓?fù)溥B接結(jié)構(gòu),目前主要分為3 種:前饋神經(jīng)網(wǎng)絡(luò)、卷積神經(jīng)網(wǎng)絡(luò)和循環(huán)神經(jīng)網(wǎng)絡(luò)。 1. 前饋神經(jīng)網(wǎng)絡(luò) 前饋神經(jīng)網(wǎng)絡(luò)也叫全連接網(wǎng)絡(luò)(fully connected neural network)。在這種結(jié)構(gòu)中,所有的節(jié)點都可以分為一層一層的,每個節(jié)點只跟它的相鄰層節(jié)點而且是全部節(jié)點相連(也就是全連接的)。這些層一般分為輸入層(例如圖1.1 中最左側(cè)的一列節(jié)點)、輸出層(圖1.1 中最右側(cè)的4 個節(jié)點)以及介于二者之間的隱含層[2]。這種前饋神經(jīng)網(wǎng)絡(luò)是目前應(yīng)用最多的一類神經(jīng)網(wǎng)絡(luò)。 2. 卷積神經(jīng)網(wǎng)絡(luò) 另外一種常見的網(wǎng)絡(luò)架構(gòu)就是卷積神經(jīng)網(wǎng)絡(luò),它一般用于對數(shù)字圖像進(jìn)行處理,其架構(gòu)通常如圖6 所示。 圖6 卷積神經(jīng)網(wǎng)絡(luò)架構(gòu)示意圖 圖中每一個立方體都是一系列規(guī)則排列的人工神經(jīng)元集合。每個神經(jīng)元到上一層次的連接稱為卷積核,它們都是一種局域的小窗口。圖中的小錐形可以理解為從高層的某一個神經(jīng)元到低層多個神經(jīng)元之間的連接。這個小錐形在立方體上逐像素的平移就構(gòu)成了兩層次之間的所有連接。到了最后兩層,小立方體被壓縮成了一個一維的向量,這就與普通的前饋神經(jīng)網(wǎng)絡(luò)沒有任何區(qū)別了。 CNN 這種特殊的架構(gòu)可以很好地應(yīng)用于圖像處理,它可以使原始的圖像即使在經(jīng)歷過平移、縮放等變換之后仍然具有很高的識別準(zhǔn)確性。正是因為具有這樣特殊的架構(gòu),CNN 才成功應(yīng)用于計算機(jī)視覺、圖像識別、圖像生成,甚至AI 下圍棋、AI 打游戲等廣闊的領(lǐng)域。 3. 循環(huán)神經(jīng)網(wǎng)絡(luò) 還有一種常見的網(wǎng)絡(luò)架構(gòu),就是被廣泛應(yīng)用于自然語言處理任務(wù)中的循環(huán)神經(jīng)網(wǎng)絡(luò),如圖7 所示。 圖7 循環(huán)神經(jīng)網(wǎng)絡(luò)架構(gòu)示意圖 圖的左側(cè)為輸入節(jié)點,右側(cè)為輸出節(jié)點,中間的隱含層節(jié)點互相連接??梢钥吹?,這種網(wǎng)絡(luò)與普通的三層前饋神經(jīng)網(wǎng)絡(luò)非常相似,只不過隱含層彼此之間還具有大量的連接。 RNN 這種特殊架構(gòu)使得網(wǎng)絡(luò)當(dāng)前的運(yùn)行不僅跟當(dāng)前的輸入數(shù)據(jù)有關(guān),而且還與之前的數(shù)據(jù)有關(guān)。因此,這種網(wǎng)絡(luò)特別適合處理諸如語言、音樂、股票曲線等序列類型的數(shù)據(jù)。整個網(wǎng)絡(luò)的循環(huán)結(jié)構(gòu)可以很好地應(yīng)付輸入序列之中存在的長程記憶性和周期性。 4. 更多的新型網(wǎng)絡(luò)架構(gòu) 最近幾年,研究人員提出了越來越多的新型網(wǎng)絡(luò)架構(gòu)類型,從而使深度學(xué)習(xí)的性能得到了大幅提升。在此,我們僅舉兩個例子進(jìn)行說明。 第一個例子來源于機(jī)器翻譯。人們發(fā)現(xiàn),如果將兩個RNN 在時間步上串聯(lián),就能以相當(dāng)可觀的精度完成機(jī)器翻譯任務(wù)。在這樣的架構(gòu)中,第一個RNN 被看作編碼器,它的任務(wù)是將輸入的源語言編碼成RNN 的隱含層節(jié)點狀態(tài);第二個RNN 被看作解碼器,它可以將編碼器的隱含狀態(tài)解碼成翻譯的目標(biāo)語言,整體架構(gòu)如圖8 所示。 圖8 機(jī)器翻譯的編碼器—解碼器架構(gòu)(EOS 表示句子結(jié)束,SOS 表示句子起始) 圖中,左側(cè)的方塊表示一個時刻的編碼器,它是一個多層的RNN 網(wǎng)絡(luò);右側(cè)的方塊表示一個時刻的解碼器,它也是一個多層的RNN 網(wǎng)絡(luò)。從左到右表示時間上從前到后。開始的時候,編碼器運(yùn)作,它一步步地讀入待翻譯的源語言;到了源語言句子結(jié)束的時候(讀入EOS),解碼器開始工作,它一步步地輸出翻譯的目標(biāo)語言,并將每一次預(yù)測的單詞輸入給下一時刻的解碼器,從而輸出整個句子。 另一個例子是可微分計算機(jī)(或稱為神經(jīng)圖靈機(jī)),它是谷歌DeepMind 的研究人員提出的一種融合了神經(jīng)網(wǎng)絡(luò)和馮·諾依曼體系式計算機(jī)的計算架構(gòu),它既可以模仿計算機(jī)的工作,又可以通過訓(xùn)練的方式進(jìn)行學(xué)習(xí),如圖9 所示。 圖9 可微分計算機(jī)的架構(gòu)示意圖(圖片來源:Graves A, et al. Hybrid Com 在這種架構(gòu)中,整個網(wǎng)絡(luò)由控制器(a)、讀寫頭(b)、存儲器(c),以及存儲器運(yùn)作中的臨時連接(d)構(gòu)成。在控制器中,從輸入到輸出的映射由一個RNN 網(wǎng)絡(luò)相連,它調(diào)控著讀寫頭,會產(chǎn)生一組權(quán)重,用于從存儲器部分讀取或者寫入數(shù)據(jù)。存儲器就像我們計算機(jī)中的內(nèi)存,它也可以被看作一組規(guī)則排列的神經(jīng)元。 這種裝置可以用于復(fù)雜的推理、閱讀理解等高級計算任務(wù),因為它不僅僅是一個神經(jīng)網(wǎng)絡(luò),還結(jié)合了馮·諾依曼式體系架構(gòu),在問題求解、自然語言處理等任務(wù)上的能力已經(jīng)超越了RNN。 5. 訓(xùn)練方式如何影響深層網(wǎng)絡(luò) 除了架構(gòu)會影響深度網(wǎng)絡(luò)的表現(xiàn)以外,訓(xùn)練的方式也會對結(jié)果產(chǎn)生很大的影響。 有兩篇文章可以說明訓(xùn)練方式的重要性。第一篇文章是約書亞·本吉奧(Yoshua Bengio)的 《課程學(xué)習(xí)》(“Curriculum Learning”)[3],該文指出當(dāng)我們用數(shù)據(jù)訓(xùn)練人工神經(jīng)網(wǎng)絡(luò)時,不同的順序會對網(wǎng)絡(luò)學(xué)習(xí)速度的快慢和最終的表現(xiàn)性能產(chǎn)生重要的影響。我們?nèi)绻葘⑸倭刻囟?biāo)簽的數(shù)據(jù)輸入網(wǎng)絡(luò),然后再拿剩下的數(shù)據(jù)去訓(xùn)練它,就會比一股腦兒地把所有標(biāo)簽的數(shù)據(jù)都輸入給它要更加有效,從而提高網(wǎng)絡(luò)的“學(xué)習(xí)”能力。這就像人類學(xué)習(xí)一樣,我們有步驟地學(xué)習(xí)會比一股腦兒地記下所有的知識更好。該學(xué)習(xí)方式將幫助機(jī)器學(xué)習(xí)吸取人類學(xué)習(xí)的優(yōu)點,提升機(jī)器的學(xué)習(xí)效果,協(xié)助其跳出局部極優(yōu),獲得更好的泛化能力。 第二篇文章是《在深度神經(jīng)網(wǎng)絡(luò)中特征是如何變成可遷移的》(“How Transferable areFeatures in Deep Neural Network?”)[4],該文詳細(xì)地比較了不同的訓(xùn)練方式如何影響網(wǎng)絡(luò)的學(xué)習(xí)效率。有了更有效的學(xué)習(xí),我們就可以通過遷移學(xué)習(xí)(參見第6 章)將訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)遷移到新的小數(shù)據(jù)集中,從而得到很好的表現(xiàn)。 AlphaGo 的復(fù)雜訓(xùn)練流程也向我們展示了訓(xùn)練方式和訓(xùn)練路徑對于一個深度學(xué)習(xí)系統(tǒng)的重要性。首先,AlphaGo 團(tuán)隊根據(jù)人類的下棋經(jīng)驗快速訓(xùn)練了一個小的網(wǎng)絡(luò)——快速走棋網(wǎng)絡(luò),在此基礎(chǔ)上,再根據(jù)人類下棋的棋譜訓(xùn)練一個大的網(wǎng)絡(luò)——監(jiān)督學(xué)習(xí)走棋網(wǎng)絡(luò);其次,又在這個網(wǎng)絡(luò)的基礎(chǔ)上,讓AlphaGo 通過自己和自己對抗下棋得到一個強(qiáng)化學(xué)習(xí)走棋網(wǎng)絡(luò);最后,在此基礎(chǔ)上得到價值網(wǎng)絡(luò)。整個訓(xùn)練流程非常復(fù)雜卻又十分精巧,包含了無數(shù)訓(xùn)練技巧。 GPU 影響深度學(xué)習(xí)性能的最后一個因素就是GPU 了。GPU 就是圖形處理單元(graphics processing unit),和CPU 一樣,都是做計算的基本單元,只不過GPU 是鑲嵌在顯卡上的,而CPU 則是鑲嵌在主機(jī)主板上的。 我們知道,深度神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程需要耗費大量的計算時間。如果沒有GPU 的加速,我們就不可能在可接受的時間內(nèi)訓(xùn)練好一個深度的神經(jīng)網(wǎng)絡(luò)。那為什么GPU 可以幫助深度神經(jīng)網(wǎng)絡(luò)加速呢?原因就在于GPU 非常擅長大規(guī)模的張量運(yùn)算,并且可以為這種運(yùn)算加速,對包含多個數(shù)值的張量運(yùn)算所需要的平均時間遠(yuǎn)遠(yuǎn)低于對每個數(shù)字運(yùn)算的時間。 原來,GPU 是在大規(guī)模3D 計算機(jī)游戲這個龐大市場的刺激下發(fā)明的。我們知道,3D 圖像的渲染需要進(jìn)行大規(guī)模的矩陣運(yùn)算。GPU 的出現(xiàn)可以讓這種運(yùn)算并行化,從而讓計算機(jī)圖形渲染畫面異常地流暢和光滑。 無巧不成書,后來人們認(rèn)識到,GPU 這種對矩陣運(yùn)算的并行性可以幫助我們快速實現(xiàn)對神經(jīng)網(wǎng)絡(luò)的訓(xùn)練,因為訓(xùn)練的運(yùn)算過程可以全部轉(zhuǎn)化成高階矩陣(一般稱為張量)的運(yùn)算過程,而這正是GPU 所擅長的。 因此,大數(shù)據(jù)、深度網(wǎng)絡(luò)架構(gòu)和GPU 這三駕馬車湊齊了以后,我們就可以踏上深度學(xué)習(xí)的康莊大道了。 深度學(xué)習(xí)為什么如此成功深度學(xué)習(xí)為什么如此成功?要回答這個問題,就要了解深度學(xué)習(xí)的本質(zhì)特色,那就是對所學(xué)特征的“表達(dá)能力”(representation)。 換句話說,深度學(xué)習(xí)重要的本領(lǐng)在于它可以從海量的數(shù)據(jù)中自動學(xué)習(xí),抽取數(shù)據(jù)中的特征。 特征學(xué)習(xí) 深度神經(jīng)網(wǎng)絡(luò)的一個特性是會把不同的信息表達(dá)到不同層次的網(wǎng)絡(luò)單元(權(quán)重)之中,并且這一提煉過程完全不需要手工干預(yù),全憑機(jī)器學(xué)習(xí)過程自動完成,這就是我們常說的特征學(xué)習(xí)(representation learning)。深度學(xué)習(xí)的本質(zhì)就是這種自動提取特征的功能。 例如,CNN 在做圖像識別的時候,可以自動提煉出數(shù)字圖像中的低尺度和高尺度特征。如圖10 所示,低層(離輸入端比較近)的神經(jīng)元可以提取圖像中的邊緣、棱角等小尺度信息;中間層單元可以提取數(shù)據(jù)中更高一層的尺度信息;而到了更高層,它就可以提取圖像中大尺度信息(例如整張人臉)的特征。 圖10 使用深層CNN 提取圖像中不同尺度的信息 事實上,從原始數(shù)據(jù)中提煉出最基本的特征一直是困擾科學(xué)家的一大難題。例如要實現(xiàn)人臉識別,早期的方法是需要手工從原始圖像中提取出邊緣、棱角等基礎(chǔ)性信息,然后將這些信息傳遞給一個普通的神經(jīng)網(wǎng)絡(luò)做分類。但是,這一過程相當(dāng)費時費力,并且和領(lǐng)域知識高度相關(guān),因此,手工特征提取成為了整個流程的瓶頸。 如今,基于深度學(xué)習(xí)的算法可以將特征提取的過程自動學(xué)習(xí)出來。我們只需要將包含人臉的原始圖像數(shù)據(jù)輸入網(wǎng)絡(luò),它通過反復(fù)的有監(jiān)督學(xué)習(xí)就可以一點一點地在各個層面將重要的特征學(xué)出來,這無疑大大解放了生產(chǎn)力。 遷移學(xué)習(xí) 除此之外,深度神經(jīng)網(wǎng)絡(luò)的另一個重要特性就在于特征提取之后的遷移學(xué)習(xí)(transfer learning)。我們可以像做腦外科手術(shù)一樣把一個訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)切開,然后再把它拼合到另一個神經(jīng)網(wǎng)絡(luò)上。正如我們剛才所說的,神經(jīng)網(wǎng)絡(luò)可以在各個層編碼表示數(shù)據(jù)中不同尺度的特征。 也就是說,前幾層神經(jīng)網(wǎng)絡(luò)就好像一個特征提取器,作用就是提煉特征,而后面部分的網(wǎng)絡(luò)會根據(jù)這些特征進(jìn)行分類或者預(yù)測。 于是,當(dāng)把神經(jīng)網(wǎng)絡(luò)組合拼接之后,我們就可以用前面部分的神經(jīng)網(wǎng)絡(luò)進(jìn)行特征提取,再將這個特征提取器與后面的網(wǎng)絡(luò)進(jìn)行拼接,去解決另一個完全不同的問題,這就叫遷移學(xué)習(xí)。 例如,我們可以組合CNN 和RNN 兩種神經(jīng)網(wǎng)絡(luò),從而得到一個全新的看圖說話網(wǎng)絡(luò),如圖11 所示。 圖11 將CNN 和RNN 進(jìn)行遷移、拼接 在這個實驗中,我們首先訓(xùn)練一個CNN,讓它能夠?qū)D像進(jìn)行準(zhǔn)確分類。之后,我們將前面一半網(wǎng)絡(luò)(矩形框中的部分)切下來,作為一個特征提取器。然后,我們在它的后面連接上一個RNN(這個網(wǎng)絡(luò)可以事先訓(xùn)練好,使它可以生成自然語言)。最后,只要對拼接起來的新網(wǎng)絡(luò)稍加訓(xùn)練,就可以讓它完成看圖說話的任務(wù)了。 這就是深度神經(jīng)網(wǎng)絡(luò)之所以如此深受歡迎的重要原因。有了特征提取和遷移學(xué)習(xí),我們就能夠?qū)崿F(xiàn)各種端到端(end to end)式的學(xué)習(xí),也就是說可以直接輸入原始數(shù)據(jù),讓深度網(wǎng)絡(luò)輸出最終的結(jié)果。所有的中間處理環(huán)節(jié),我們都不需要關(guān)心,整個網(wǎng)絡(luò)會自動學(xué)習(xí)到一種最優(yōu)的模式,從而使模型可以精確地輸出預(yù)測值。 這種端到端的機(jī)器學(xué)習(xí)方式有一個迷人之處:它可以通過不斷吸收大量數(shù)據(jù)而表現(xiàn)得越來越專業(yè),甚至在訓(xùn)練神經(jīng)網(wǎng)絡(luò)的過程中不需要所解決問題的領(lǐng)域知識。于是,端到端的深度學(xué)習(xí)給大量的初創(chuàng)公司快速占領(lǐng)市場提供了足夠豐富的機(jī)會。這或許是大家看好并投身深度學(xué)習(xí)的一個原因。 總結(jié)本文對深度學(xué)習(xí)進(jìn)行了簡明扼要的介紹。首先,從深度學(xué)習(xí)與其他學(xué)科的關(guān)系、歷史淵源這兩個層面介紹了什么是深度學(xué)習(xí)。其次,討論了導(dǎo)致深度學(xué)習(xí)爆發(fā)的三大本質(zhì)因素:大數(shù)據(jù)、深度網(wǎng)絡(luò)架構(gòu)以及GPU。在這三大因素中,我們著重強(qiáng)調(diào)了深度網(wǎng)絡(luò)架構(gòu)的重要性,將流行的網(wǎng)絡(luò)架構(gòu)分成了前饋神經(jīng)網(wǎng)絡(luò)、卷積神經(jīng)網(wǎng)絡(luò)和循環(huán)神經(jīng)網(wǎng)絡(luò)三大類。最后,討論了深度學(xué)習(xí)取得成功的原因:一是深度神經(jīng)網(wǎng)絡(luò)可以自動學(xué)習(xí)表征,避免了大量的人工工作,使得端到端的機(jī)器學(xué)習(xí)成為了可能;二是我們可以對深度神經(jīng)網(wǎng)絡(luò)實施類似于腦外科手術(shù)一樣的遷移和拼接,這不僅實現(xiàn)了利用小數(shù)據(jù)完成高精度的機(jī)器學(xué)習(xí),也讓我們的網(wǎng)絡(luò)能夠像軟件模塊一樣進(jìn)行拼接和組裝,這無疑會對深度學(xué)習(xí)以及人工智能技術(shù)的應(yīng)用與普及產(chǎn)生深刻的影響。 ——本文內(nèi)容來源《深度學(xué)習(xí)原理與PyTorch實戰(zhàn)》,由國內(nèi)領(lǐng)先人工智能研究團(tuán)體集智俱樂部著作。 這是一本系統(tǒng)介紹深度學(xué)習(xí)及開源框架PyTorch的入門書,它通過豐富的案例和清晰的講解,帶你找到良好的深度學(xué)習(xí)修煉路線,直達(dá)獲得最佳學(xué)習(xí)狀態(tài),而不必像隨機(jī)梯度下降般迂回繞路。 通過閱讀本書,可以輕松入門深度學(xué)習(xí),學(xué)會構(gòu)造一個圖像識別器,生成逼真的圖畫,讓機(jī)器理解單詞與文本,讓機(jī)器作曲,教會機(jī)器玩游戲,還可以實現(xiàn)一個簡單的機(jī)器翻譯系統(tǒng)。 全書注重實戰(zhàn),每章圍繞一個有意思的實戰(zhàn)案例展開,不僅循序漸進(jìn)地講解了PyTorch的基本使用、神經(jīng)網(wǎng)絡(luò)的搭建、卷積神經(jīng)網(wǎng)絡(luò)和循環(huán)神經(jīng)網(wǎng)絡(luò)的實現(xiàn),而且全面深入地介紹了計算機(jī)視覺、自然語言處理、遷移學(xué)習(xí),以及最新的對抗學(xué)習(xí)和深度強(qiáng)化學(xué)習(xí)等前沿技術(shù)。 |
|
來自: 東西二王 > 《前沿技術(shù)》