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