2
雷鋒網(wǎng) AI 科技評論按:「Deep Learning」這本書是機器學(xué)習(xí)領(lǐng)域的重磅書籍,三位作者分別是機器學(xué)習(xí)界名人、GAN的提出者、谷歌大腦研究科學(xué)家 Ian Goodfellow,神經(jīng)網(wǎng)絡(luò)領(lǐng)域創(chuàng)始三位創(chuàng)始人之一的蒙特利爾大學(xué)教授 Yoshua Bengio(也是 Ian Goodfellow的老師)、同在蒙特利爾大學(xué)的神經(jīng)網(wǎng)絡(luò)與數(shù)據(jù)挖掘教授 Aaron Courville。只看作者陣容就知道這本書肯定能夠從深度學(xué)習(xí)的基礎(chǔ)知識和原理一直講到最新的方法,而且在技術(shù)的應(yīng)用方面也有許多具體介紹。這本書面向的對象也不僅是學(xué)習(xí)相關(guān)專業(yè)的高校學(xué)生,還能夠為研究人員和業(yè)界的技術(shù)人員提供穩(wěn)妥的指導(dǎo)意見、提供解決問題的新鮮思路。
面對著這樣一本內(nèi)容精彩的好書,不管你有沒有入手開始閱讀,雷鋒網(wǎng) AI 研習(xí)社都希望借此給大家提供一個共同討論、共同提高的機會。所以我們請來了曾在百度和阿里工作過的資深算法工程師王奇文與大家一起分享他的讀書感受。
分享人:王奇文,資深算法工程師,曾在百度和阿里工作,先后做過推薦系統(tǒng)、分布式、數(shù)據(jù)挖掘、用戶建模、聊天機器人?!八惴飞?,砥礪前行”。
「Deep learning」讀書分享(一) —— 第一章 前言 Introduction
大家好,這次給大家講的是「Deep learning」這本比較有名的書。內(nèi)容比較多,一共20章、600多頁。我們一步一步來,先講第一章前言。這一部分主要是深度學(xué)習(xí)的一些基本介紹、一些發(fā)展歷史??梢钥匆幌逻@個封面,一幅漂亮的風(fēng)景畫,紐約中央公園遍地盛開的杜鵑花,仔細(xì)看有點不太正常,對了,這就計算機生成的,確切的說,是Google deepmind團(tuán)隊的杰作——夢幻公園。下面有個鏈接就是麻省理工的書籍的開源地址。第二個地址就是北大的張志華團(tuán)隊貢獻(xiàn)的中文版,鏈接大家也可以自己去github上找。
關(guān)于我,我是11年碩士畢業(yè),在BAT里面工作了有六年多,是一個普通的工程師,也沒有多高的水平。我之前一直做數(shù)據(jù)挖掘、機器學(xué)習(xí)、大數(shù)據(jù)這一塊,去年接觸到深度學(xué)習(xí),比較感興趣,轉(zhuǎn)崗到阿里云,做過半年的聊天機器人。所以也是一個新手、一個菜鳥,然后實戰(zhàn)經(jīng)驗也不是很多,能力也一般。這次分享不會保證會講的很好,但是我會盡力。
為什么要做這個分享?第一個是希望學(xué)習(xí),第二個的話是希望借這個分享給我自己施加壓力,因為我本身是在學(xué)習(xí)上也是有些惰性的(這本書打印版買了大半年,啃不動)。第三,這本書其實量挺大的,有600多頁,單憑我一個人的力量可能還不夠,所以希望有更多的人加入進(jìn)來,一起分享。
另外再著重強調(diào)一點,現(xiàn)在是互聯(lián)網(wǎng)時代,信息泛濫,我們見到的各種資訊浩如煙海,看起來很多,但很容易碎片化,東一榔頭西一棒子,不成體系,導(dǎo)致消化不良。所以,真想的學(xué)好一門技術(shù),最好還是要啃磚頭,這種方式是最笨,但是最扎實的。有個簡單的方法,可以驗證一門技術(shù)的掌握程度,那就是看多少書??械臅蕉?,基礎(chǔ)就越扎實,視野就越廣。
先給大家介紹一張珍藏已久的圖,我把這張圖放在了自己的Github主頁上,時刻提醒自己,注意學(xué)習(xí)方法。這個圖說的是學(xué)習(xí)一門新技術(shù),從剛開始接觸了解,到大概一周后,不同的傳遞方式下,知識的留存率分別是多少。
先看第一種:聽講,也就是大家現(xiàn)在的狀態(tài),你們聽,我講。這個留存率大概只有5%,就是說你今天聽完以后,到下周我講了什么你可能只記住5%,可能只是幾個概念“深度學(xué)習(xí)”,或者是我放了幾張圖片、放了一個gif比較好玩,或者說了一句比較有意思的話,你可能只記住這些,這個留存率才5%;如果你們聽完后,再接著看書、看其他的視頻資料、看別人演示,那么這個留存率充其量只到30%;再到下面主動學(xué)習(xí)這一部分呢,如果你學(xué)完之后跟別人討論,就是50%;然后再動手去寫代碼的話,那就75%。最后也就是我現(xiàn)在處的位置90%,這一步,老實說,挺難的(從讀書,查資料,消化理解,到做ppt,平均每個章節(jié)花費我4-8小時,甚至更多時間)。就如果大家真的想學(xué)深度學(xué)習(xí),建議自己嘗試著給別人講,當(dāng)然最好能夠加入進(jìn)來,一起分享(贈人玫瑰,手留余香)。(笑)
(注:另一個維度,艾賓浩斯遺忘曲線顯示接觸信息后,20min、1h會急劇下降到58%,一周后25%,感覺過高,細(xì)節(jié)大家可以去查查)
這個圖右邊是本書的結(jié)構(gòu)圖。這本書跟其他書還不太一樣,剛開始就給出一張圖,總體的描述一下每個章節(jié)是什么內(nèi)容,章節(jié)和章節(jié)之間的關(guān)系,這個非常好,有利于我們形成全局觀。
圖里面主要分成三部分,第一部分是數(shù)學(xué)基礎(chǔ),涉及一些數(shù)學(xué)基礎(chǔ)和概念,還有機器學(xué)習(xí)基礎(chǔ)。數(shù)學(xué)涉及線性代數(shù)、概率論、信息論、數(shù)值分析,還有少量的最優(yōu)化。
第二部分是深度學(xué)習(xí)基本算法。這個算法主要是幾種典型的神經(jīng)網(wǎng)絡(luò),從DFN,也就是深度前饋網(wǎng)絡(luò),開始,接下來分別演化到了怎么用正則、怎么優(yōu)化。還有下面一部分的CNN,它是前饋網(wǎng)絡(luò)的一種擴(kuò)展,其實,RNN也是前饋網(wǎng)絡(luò)衍生出來的,當(dāng)然CNN是絕對正宗的前饋網(wǎng)絡(luò)。接下來是實踐的方法論,就是作者平時總結(jié)出來的一些實踐經(jīng)驗。
三部分就是更加深層次的內(nèi)容,涉及線性因子模型,編碼器。這一部分非常重要,關(guān)系到Hinton的RBF,還有多個RBF堆疊形成的鼎鼎有名的DBN。接下來有表示學(xué)習(xí)、蒙特卡洛方法、結(jié)構(gòu)概率模型、深度生成模型,也就是最近老出現(xiàn)的,那個叫GAN的,生成對抗網(wǎng)絡(luò),很厲害的樣子。
右上角是這個章節(jié)的目錄。實際上書上的內(nèi)容不多,我會加入自己的一些解釋,把書的結(jié)構(gòu)做一下調(diào)整,相當(dāng)于是重構(gòu),這樣大家理解起來更方便,這也算是一個本地化的過程。
新結(jié)構(gòu)是這樣的,第一,介紹下什么是深度學(xué)習(xí);第二,跟機器學(xué)習(xí)什么關(guān)系;第三,神經(jīng)網(wǎng)絡(luò)的歷史;第四,深度學(xué)習(xí)為什么現(xiàn)在這么火;第五,深度學(xué)習(xí)能做什么。總體思路就是,只提一些感性的認(rèn)識,而不會去講具體的細(xì)節(jié)。如果大家想進(jìn)一步了解,請?zhí)嵖磿?,學(xué)知識不要偷懶,不要偷懶,不要偷懶(今天偷的懶,明天會加倍償還,這個時代在加劇懲罰不學(xué)習(xí)的人)。
什么是深度學(xué)習(xí)?書里面提到一句話“AI系統(tǒng)必須具備從原始數(shù)據(jù)提取模式的能力”,這個能力指的是機器學(xué)習(xí)。算法的性能在很大程度上是依賴于數(shù)據(jù)表示的,也就是“表示學(xué)習(xí)”,這是ML里的一大方向。
傳統(tǒng)的機器學(xué)習(xí)是怎么做的呢?主要是依賴于人工提取的特征,比如,常用的方式有SIFT,還有HoG、Harr小波等等,都是人工經(jīng)驗總結(jié)出來的。這幾個特征挺強大,霸占了圖像處理幾十年,但問題是,擴(kuò)展起來很不方便。深度學(xué)習(xí)跟傳統(tǒng)機器學(xué)習(xí)相比,最明顯的區(qū)別就是,把這些人工提取的過程都自動化。
回過頭來想想,什么是深度學(xué)習(xí)?這是我的理解,黃色字體的標(biāo)記的部分,來源于傳統(tǒng)的神經(jīng)網(wǎng)絡(luò),也就是聯(lián)結(jié)主義(機器學(xué)習(xí),它有很多方法,其中有聯(lián)結(jié)主義),傳統(tǒng)神經(jīng)網(wǎng)絡(luò)就是屬于聯(lián)結(jié)主義,深度學(xué)習(xí)是傳統(tǒng)神經(jīng)網(wǎng)絡(luò)方法的擴(kuò)展,它是一種延伸,不同的是,用了深度結(jié)構(gòu),多個簡單的概念逐層抽象,構(gòu)建復(fù)雜的概念,同時自動發(fā)現(xiàn)、提取分布式特征,注意,有個分布式。最后學(xué)到一個好的模型。深度學(xué)習(xí)這個概念是Geoffery Hinton 2006年首次提出的。
深度學(xué)習(xí)的兩個重要特點,第一個是特征自動提取,傳統(tǒng)信息學(xué)習(xí)里面那一套非常復(fù)雜的特征工程都不用了;第二,逐層抽象,主要通過深度結(jié)構(gòu)來實現(xiàn)。
這個圖說的是什么是表示學(xué)習(xí),不同的表示學(xué)習(xí)會有什么樣的表現(xiàn)。
圖中就是兩個分類,這個圓形的和倒三角的,分別對應(yīng)兩種類別。如果采用簡單的線性模型,顯然是分不開的。但是只要經(jīng)過某種變換后,比如從笛卡爾坐標(biāo)系變到極坐標(biāo)系,畫一條垂直的直線就輕輕松松的分開了。所以說,數(shù)據(jù)集的表示方法不同,問題的難易程度也不同。
這張圖說的是,深度學(xué)習(xí)是怎么通過深度結(jié)構(gòu)解決問題的。底層的是一些像素,這里是三個像素,只取了三種顏色。當(dāng)然這張圖有點誤導(dǎo),看起來好像就只用這三種顏色,就能完成圖像分類;實際上不是的。底層對應(yīng)的是整張圖片,一層一層,由下往上,這是一個層級抽象的過程;第二層是根據(jù)底層像素連接起來組成一些線段,或者是復(fù)雜一點的邊緣,再到上面一層,形成局部的輪廓,就是一個角或者一些輪廓線。再往上層抽象,是變成了物體的一部分、或者整體,最后,就能看到近似是一個人了。
這個過程說的是,深度學(xué)習(xí)是通過一些深度結(jié)構(gòu)進(jìn)行逐層抽象,變相的把問題一步一步地簡化。
既然是深度學(xué)習(xí),那么首先就要問一句,到底什么是深度,怎么定義這個深度?
先看右邊這張圖,這是一個計算圖,也就是一個DAG圖,描述一個計算任務(wù)的前后經(jīng)過。實際上這個任務(wù)是傳統(tǒng)機器學(xué)習(xí)里面的一種方法,叫邏輯回歸,比如說,輸入了一個樣本,有兩個特征X1、X2,分別乘以里面的權(quán)重W1、W2,乘起來,再累加求和,然后套一個sigmoid激勵函數(shù),本質(zhì)上就是一個變換。這個簡單的計算過程,可以用左邊的圖描述出來,這只是一種描述方法;右邊也是另一種描述方法。區(qū)別是,右邊是邏輯概念意義上的概念,而左邊是計算步驟上的描述。
左邊的描述方式,網(wǎng)絡(luò)的深度是3,注意,第一層不算。右邊這個描述方式,只有1層。書里面說了,這兩種概念描述都是對的,就看你喜歡哪一種。通常情況下,我們是以右邊這種為基準(zhǔn)。按照邏輯概念劃分時,又可以繼續(xù)細(xì)分,標(biāo)準(zhǔn)就是要不要包含輸入層。
看這張圖,這個是input,就是傳統(tǒng)網(wǎng)絡(luò),一提到神經(jīng)網(wǎng)絡(luò),基本都會提到這樣的結(jié)構(gòu),一個輸入,再加上隱含層,再加上一個輸出層。隱含層可以有多層。這個輸入,有的地方不算層級,有的算,通常情況下是輸入是不算的,這個就算是一個兩層的網(wǎng)絡(luò)
這塊就說一下深度學(xué)習(xí)跟機器學(xué)習(xí)之間有什么關(guān)系。深度學(xué)習(xí)源于機器學(xué)習(xí),但是高于機器學(xué)習(xí)。圖里第二個是機器學(xué)習(xí),DL是AI的一大分支,AI 還有其他的方法,這個只是其中的一個分支而已。
跟傳統(tǒng)神經(jīng)網(wǎng)絡(luò)相比,深度學(xué)習(xí)的深度體現(xiàn)在復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu)上。那么怎樣才叫復(fù)雜呢,一般在4到5層以上,因為傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)是在2到3層,比如BP網(wǎng)絡(luò),兩到三層,超過的話就不好訓(xùn)練,也訓(xùn)練不出來,所以基本上只到4到5層左右,不會有太多。
這個是一張韋恩圖,描述的各個概念之間的一些邏輯關(guān)系。這個就看的相對直觀一些,最下面的紅框里是機器學(xué)習(xí),然后里面有一個流派叫表示學(xué)習(xí),表示學(xué)習(xí)里面又有一個深度學(xué)習(xí),就這么個層層嵌套的關(guān)系。
然后這張圖描述的是不同的學(xué)習(xí)方法,區(qū)別體現(xiàn)在組成結(jié)構(gòu)上。最左邊是一個規(guī)則系統(tǒng),希望通過一些邏輯推理去模擬學(xué)習(xí)的過程,這是最早的一版,人為設(shè)計的一個程序,輸入數(shù)據(jù),根據(jù)一定的規(guī)則,得到一個輸出。它比較簡單,中間實際上就兩個過程。
接著到下一步傳統(tǒng)的機器學(xué)習(xí),有什么區(qū)別呢,在上面它有一個特征映射。
然后再到表示學(xué)習(xí)。表示學(xué)習(xí)的方法里面分成兩部分,左邊一個,還有右邊一個。左邊一個跟之前相比的話,在特征工程上會花了不少精力,特征工程非常復(fù)雜,依賴經(jīng)驗,人力投入大。深度學(xué)習(xí)是表示學(xué)習(xí)中的一種,在它的基礎(chǔ)上做了一些優(yōu)化,也算是一個變革,區(qū)別是在于多了這一部分:自動提取特征。
這是幾種歷史上的不同的學(xué)習(xí)模型在基本的流程上面的差別。
這一部分講下神經(jīng)網(wǎng)絡(luò)的發(fā)展歷史。一言以蔽之,神經(jīng)網(wǎng)絡(luò)命途多舛,先后經(jīng)歷了三次浪潮,也叫三起兩落(鄧爺爺三起三落)。這個第三落現(xiàn)在還不清楚,有人可能會問,深度學(xué)習(xí)這么火,怎么可能衰落?這個真不一定,前兩次浪潮之巔上,大家也是這么想的。第一次是在40年到60年左右,起源于控制論,主要是基于那些規(guī)則的方法來做??刂普摃r代,誕生了第一個人工神經(jīng)元。神經(jīng)元看著挺像現(xiàn)在的樣子,但就一個神經(jīng)元,沒有什么層級結(jié)構(gòu),就是多個輸入得到一個輸出,要求和、再sigmoid,產(chǎn)生一個輸出,就是個神經(jīng)元而已。注意,當(dāng)時,神經(jīng)元里面的權(quán)重是人工設(shè)置的。后來Hebb學(xué)習(xí)法則指出權(quán)重是可以學(xué)習(xí)出來的。于是感知器降臨,跟之前的神經(jīng)元相比,除了有多層結(jié)構(gòu),還有權(quán)重從人工設(shè)置變成了自動化。感知器的網(wǎng)絡(luò)結(jié)構(gòu)一般2到3層,也就是傳統(tǒng)的前饋網(wǎng)絡(luò)。不過,感知器誕生沒多久,麻省理工的AI 實驗室創(chuàng)始人Marvin Minsky就發(fā)現(xiàn)了這種結(jié)構(gòu)的要害,專門寫了一本書叫「Perceptron」,直指感知器的兩個核心問題,第一個就是連簡單的非線性問題都解決不了,第二,非線性問題理論上可以通過多層網(wǎng)絡(luò)解決,但是難以訓(xùn)練(在當(dāng)時基本不可能)。這個非線性問題就是就是數(shù)字邏輯里的異或門。他在書里提到,異或門是神經(jīng)網(wǎng)絡(luò)的命門。果然,由于這兩個問題直指感知器要害,再加上Marvin Minsky強大的影響力,許多研究者紛紛棄城而逃,放棄神經(jīng)網(wǎng)絡(luò)這個方向,直接導(dǎo)致了第一次寒冬。這個寒冬持續(xù)時間很長,長達(dá)二三十年。
第二次是在86年左右,聯(lián)結(jié)主義時代。1974年,反向傳播算法第一次提出,但由于是寒冬,并沒有受人重視,直到1986年,Hinton重新發(fā)明了BP算法,效果還不錯,于是迎來了第二次興起,大家又開始研究神經(jīng)網(wǎng)絡(luò)。緊接著,又出來一個新的模型,也就是Vpnik的支持向量機(PGM也誕生了。這名字看起來很奇怪,為什么帶個“機”字?因為經(jīng)常帶“機”的神經(jīng)網(wǎng)絡(luò)太火,加這個字是為了更好的發(fā)表)。跟近似黑盒的BP相比,SVM理論證明非常漂亮,更要命的是,支持向量機是全局最優(yōu)解,而神經(jīng)網(wǎng)絡(luò)它是局部最優(yōu),于是,BP被SVM打趴了(也算是SVM的復(fù)仇吧),神經(jīng)網(wǎng)絡(luò)進(jìn)入第二次寒冬了。
第三次是2006年,Hinton 坐了十多年冷板凳,潛心研究神經(jīng)網(wǎng)絡(luò),終于提出了自編碼和RBM,網(wǎng)絡(luò)初始權(quán)重不再隨機,而是有了更高的起點,再結(jié)合pre-training和fine-tune,解決了多層神經(jīng)網(wǎng)絡(luò)的訓(xùn)練問題,同時提出了深度學(xué)習(xí)這個概念,標(biāo)記著深度學(xué)習(xí)的正式誕生(Hinton是當(dāng)之無愧的祖師爺)。這股熱潮一直持續(xù)至到現(xiàn)在,大火到現(xiàn)在已經(jīng)燒了十幾年,越來越旺,甚至要滅掉機器學(xué)習(xí)了。什么時候會熄滅?這個真說不清楚。。。。
這部分歷史書里面也有簡單介紹,看這張圖,大概是分成三個階段。我找了一些別的資料,讓大家看得更加直觀一些。
底圖的是神經(jīng)網(wǎng)絡(luò)的一個電腦模擬圖,不同網(wǎng)絡(luò)連接起來,看起來就是很復(fù)雜很復(fù)雜。但是,再復(fù)雜也是有簡單的神經(jīng)元組成。這是一個神經(jīng)元,生物上一些術(shù)語,這些概念大家也都清楚。核心部分就在于神經(jīng)元在突觸之間傳遞信息,從一個神經(jīng)元到另外一個神經(jīng)元。兩個神經(jīng)元之間有電位差,超過一定閾值時,就釋放化學(xué)信號,神經(jīng)遞質(zhì)。信息傳遞的過程,從一個神經(jīng)元到另外一個神經(jīng)元。
能不能用數(shù)學(xué)模型去模擬這個過程?這個是進(jìn)一步的簡化,就是三個神經(jīng)元刺激傳達(dá)到一個神經(jīng)元,累加,電位差發(fā)生變化之后,然后出來兩種結(jié)果,一種是興奮,一種是抑制,它是兩種狀態(tài)。再往下看是信息的接收與傳遞過程,大家可以看一下。
接下來就到了數(shù)學(xué)模型,模擬的就是神經(jīng)元的結(jié)構(gòu)。橢圓形的這一部分就是一個神經(jīng)元,然后它跟上面有N個連接,每個連接的強度不同,對應(yīng)于神經(jīng)元的粗細(xì);也就是這里面的W1j到Wij的權(quán)重,然后再做一個累加求和,再加激勵函數(shù)處理,之后卡一個閾值,然后決定是不是要輸出。
這是數(shù)學(xué)模型上最根本的模擬,然后變過來就是這樣一個公式。
現(xiàn)在看一下他一些歷史。這張圖比書里面那張圖更加詳細(xì)。
這三次熱潮,第一次是在58年,感知器誕生,這是第一次興起;第二次BP網(wǎng)絡(luò)誕生;第三次就是CNN和DBN的誕生,分別是Yann LeCun和Hinton兩個人提出來,就導(dǎo)致了第三次興起。它在網(wǎng)絡(luò)結(jié)構(gòu)上的差別,第一個是單個神經(jīng)元、到單層的神經(jīng)網(wǎng)絡(luò),中間還有一個BP,BP過程加上了2到3層,會比這個更加復(fù)雜一些,最后到深度學(xué)習(xí),他的層數(shù)是很多的,遠(yuǎn)不止前面的2到3層。
從這張圖上面我們可以對應(yīng)到具體每個時期是哪個人。第一部分是基于一些邏輯推理的方法,最開始的一個神經(jīng)元誕生是他們兩個人提出來的,MP模型(注意這不是multilayer perceptron,而是兩個人名的簡稱,叫M-P更準(zhǔn)確),可以解決與或非問題,控制論流行下的電子大腦時代。再到57年左右是感知器誕生,MLP,它跟之前的區(qū)別是有多個神經(jīng)元,W1和W2的權(quán)重是可以自動訓(xùn)練的(基于Hebb學(xué)習(xí)法則)。這里有個問題,叫異或,這就異或門,也就是異或運算,邏輯運算的一種,類似的有與或非,而異或是難以用線性模型解決的。這個異或門就是神經(jīng)網(wǎng)絡(luò)的命門。圖上面靠左的人就是Marvin Minsky,他寫的書就直接導(dǎo)致了第一次寒冬。
然后是多層的感知機,也就是用了最開始的那個BP神經(jīng)網(wǎng)絡(luò)。這是在74年左右,就是BP神經(jīng)網(wǎng)絡(luò)誕生。那個時候美國和蘇聯(lián)撤走了神經(jīng)網(wǎng)絡(luò)相關(guān)研究經(jīng)費,好多雜志甚至都不接收神經(jīng)網(wǎng)絡(luò)的論文,所以BP網(wǎng)絡(luò)誕生的時候是沒有什么影響力。
接下來是Hinton,他把BP重新設(shè)計了下。然后,接下來是支持向量機誕生,剛才提到一個它是全局最優(yōu)解,解決問題比BP看起來更加漂亮,所以到這個時候就第二次寒冬來了。就圖上這個過程,跟剛才總體的經(jīng)過是一樣的。
這是幾個階段,第一個是單層網(wǎng)絡(luò),第二個兩層,第三個多層。這三層網(wǎng)絡(luò)在激活函數(shù)、異或問題和復(fù)雜問題上有所不同。像單層網(wǎng)絡(luò)因為只有兩種狀態(tài),一種激活或者抑制,所以是一個符號函數(shù),函數(shù)值是1或者-1,異或函數(shù)解決不了,復(fù)雜問題也解決不了。
到了兩層網(wǎng)絡(luò)的時候,它的結(jié)構(gòu)比之前復(fù)雜了,激活函數(shù)變了,不再是符號函數(shù),中間是sigmoid。這個時候異或問題可以解決,但是復(fù)雜問題解決不了。到了多層網(wǎng)絡(luò),也就是現(xiàn)在的深度學(xué)習(xí),激活函數(shù)主要是ReLU,比之前的sigmoid要簡單,異或問題可以解決,復(fù)雜問題也可以解決。
所以現(xiàn)在深度學(xué)習(xí)模型中的激活函數(shù)主要是ReLU,而不是之前sigmoid。其實很早之前,大概是八九十年代,ReLU就已經(jīng)出現(xiàn)了,只是當(dāng)時人們選神經(jīng)網(wǎng)絡(luò)激勵函數(shù)時,有一種偏執(zhí)的迷信,sigmoid這樣的激勵函數(shù),處處可導(dǎo)、連續(xù)、數(shù)學(xué)模型也漂亮,而ReLU很顯然在零這個點是一個突變,是有問題的,不可導(dǎo),所以看起來不漂亮。盡管它出來比較早,但是不怎么用它,直到后來,然后在深度學(xué)習(xí)里面經(jīng)過多次的訓(xùn)練之后發(fā)現(xiàn)它的效果比sigmoid要好得多,因為sigmoid存在一個大問題,飽和,往正無窮或者負(fù)無窮這兩個方向看,函數(shù)值趨近于1或者-1,沒什么反應(yīng)了,就只對就在0附近的值敏感,對非常大的或者非常小的點,淡定的很,不予理睬。這就是飽和問題。實際上,代價函數(shù)的梯度必須足夠大,而且具有足夠的預(yù)測性,指引學(xué)習(xí)方向,而飽和函數(shù)破壞了這一目標(biāo)。sigmoid在小數(shù)據(jù)上表現(xiàn)較好,但是大數(shù)據(jù)集不佳,ReLU則由于提升系統(tǒng)識別性能和仿生的本質(zhì)(神經(jīng)元信號原理),在大數(shù)據(jù)集情形大顯神威,重要性甚至超過隱含層權(quán)重。
剛才是網(wǎng)絡(luò)結(jié)構(gòu)上變化,這個是在晶體管,就是在計算能力,還有數(shù)據(jù)、算法這三個因素,就直接導(dǎo)致深度學(xué)習(xí)的興起。
第一個因素計算能力。計算能力主要是硬件層的,單層神經(jīng)網(wǎng)絡(luò)是在晶體管時代的,數(shù)據(jù)量也比較少,學(xué)習(xí)算法就是基本的一些簡單的推理;到了兩層神經(jīng)網(wǎng)絡(luò),主要是用CPU來算,它的數(shù)據(jù)量大概是一千到一萬,數(shù)據(jù)量是急劇增長的,算法主要用的BP。到了多層網(wǎng)絡(luò)時候是主要通過集群或者GPU,甚至到現(xiàn)在還有更高級的TPU,數(shù)據(jù)量也是急劇的膨脹。它的訓(xùn)練方法跟BP相比有不同,這里面用的Pre-training,還有drop-out,主要防止過擬合的。
這三種不同階段,它的網(wǎng)絡(luò)結(jié)構(gòu)、它的計算能力、數(shù)據(jù)量算法都是不同的。
這個說一下現(xiàn)在深度學(xué)習(xí)里面比較厲害的大神,Hinton絕對是這個領(lǐng)域的祖師爺;Yann LeCun主要在CNN上面貢獻(xiàn)非常多;Bengio主要是在RNN這一塊。這里面還提到一個人是Jordan,最近好像加入阿里了吧,右邊這個女的是專門研究概率圖的(跟支持向量機一起興起)。還有吳恩達(dá),主要這四個人(不一定準(zhǔn)確,只是四王天王叫起來比較順口,O(∩_∩)O哈哈~)。
隨著深度學(xué)習(xí)的大紅大紫,工業(yè)界一直在想辦法爭奪人才,把報得上名字的大神都找了個遍,圖上這些大神一個一個的也落水了,到工業(yè)界去研究了,只有這個Bengio還一直處于中立狀態(tài),不過最近的消息好像他也加入了工業(yè)界。本書的作者是 Ian Goodfellow,GAN的發(fā)明人,Bengio是他的老師。
還有大神們的眾多門生,相繼發(fā)明了word2vec和fasttext,李飛飛及高徒andrej karpathy。。。
關(guān)系錯綜復(fù)雜,但數(shù)來數(shù)去也就那么幾個人,“近親繁殖”現(xiàn)象嚴(yán)重。
這一部分是簡單介紹一下前饋網(wǎng)絡(luò)的一些基本結(jié)構(gòu)。它每一種網(wǎng)絡(luò)實際上是模擬某一個復(fù)雜的函數(shù),它的目標(biāo)是要學(xué)習(xí)每一層連接里面那個權(quán)重。權(quán)重達(dá)到了一個比較好的狀態(tài),就相當(dāng)于這個函數(shù)已經(jīng)達(dá)到了一個比較好的近似。書里面強調(diào)了一點:神經(jīng)網(wǎng)絡(luò)并不是目的,它不是為了完美的模擬大腦,而只是實現(xiàn)一種統(tǒng)計的泛化,類似于一種函數(shù)的近似機。因為人腦是非常復(fù)雜的,現(xiàn)在的網(wǎng)絡(luò)結(jié)構(gòu)遠(yuǎn)遠(yuǎn)達(dá)不到人腦的這種狀態(tài)。
知名的網(wǎng)絡(luò)結(jié)構(gòu)主要兩種,第一種是前饋,也就是說信息從一層一層往下流動,一路向前不回頭(不算誤差反向傳播)。以CNN為例;第二種是反饋,就把上一次訓(xùn)練的狀態(tài)留下來,作為本次的一個輸入,它是前饋的一種擴(kuò)展,特點是訓(xùn)練時會把上一次訓(xùn)練結(jié)果拿過來用,再決定下一步的訓(xùn)練。典型例子就是RNN,一邊走一邊回眸一笑,繼續(xù)往前走。
深度學(xué)習(xí)之所以興起有三個因素:海量的數(shù)據(jù)、計算能力、算法的突破。算法里面主要有幾個RBM、BP,這是優(yōu)化版的BP,還有一些訓(xùn)練方法pre-train,加上一些激活函數(shù)的變化。
這個圖說的是數(shù)據(jù)。最開始的機器學(xué)習(xí)經(jīng)常提到的Iris數(shù)據(jù)集,量級才在這個地方很??;后來到MNIST,量級在10的4次方左右;然后到ImageNet,到最后越來越大,就是說現(xiàn)在深度學(xué)習(xí)面臨的問題會比之前復(fù)雜的多,數(shù)據(jù)也復(fù)雜得多。
這個是MNIST的一個示例。Hinton給它的一個形容是機器學(xué)習(xí)界的果蠅,就像生物實驗里面動不動研究一些遺傳實驗,犧牲了無數(shù)的果蠅。CNN里面也會經(jīng)常拿它做練手,這是CNN里面入門的一個helloword(前饋神經(jīng)網(wǎng)絡(luò)的helloworld是異或問題)。
這個是,隨著硬件性能的提升,模型的復(fù)雜度也越來越高。這個模型的復(fù)雜度就類似于大腦的復(fù)雜度,像果蠅的大腦其實相對于哺乳動物來說,沒有那么復(fù)雜。所以大腦越復(fù)雜,它的連接的數(shù)目就越多。果蠅它的量級就比較小,但哺乳動物會比較高,當(dāng)然人是最高的,也有可能有比人更高級的生物,只是我們不知道而已(比如普羅米修斯?)。
現(xiàn)在隨著時間推移的話,神經(jīng)網(wǎng)絡(luò)也就會不斷的升級,基本上是每隔2.4年就會翻一倍。即便是現(xiàn)在最強的神經(jīng)網(wǎng)絡(luò),他的計算能力還比不上一只青蛙。(據(jù)說百度大腦達(dá)到2-3歲嬰兒的水平)
接下來就是神經(jīng)網(wǎng)絡(luò)能做什么,它現(xiàn)在的應(yīng)用面已經(jīng)非常廣了,主要分為圖像、語音、文字、游戲、無人駕駛等等,大家也都聽的很多了。
圖像領(lǐng)域的,比如給一張圖像,讓機器識別圖像里面的內(nèi)容,比如人、自行車、石頭等等,每個結(jié)果都給出一定的置信度。圖像領(lǐng)域是深度學(xué)習(xí)威力最大的領(lǐng)域,傳統(tǒng)方法基本都敗北,翻天覆地。語音其次,NLP最難,NLU不好解,尚在改變過程中。
再比如好玩一點的,國民老公和“先定一個小目標(biāo)一個億”王健林,能夠根據(jù)圖片識別出來是哪個人。還有明星的,經(jīng)過整容以后臉都長的一個樣,但是機器識別就能辨別出來,比如這是王珞丹和白百合。
這里著重提一下圖像領(lǐng)域的應(yīng)用進(jìn)展。這是最開始的一版深度學(xué)習(xí)用于貓狗識別的例子,這個地方是一個多分類。
還有AlphaGo,和用CNN實現(xiàn)的玩游戲Flappy Bird。
圖像識別的發(fā)展歷史。沿著時間順序從右往左,2010年以來識別錯誤率是逐步下降的,在2012年左右有非常大的下降。它的原因是谷歌首次使用了深度學(xué)習(xí)(CNN),直接導(dǎo)致了接近10個點的下降。到了2014年也是谷歌的新一版的CNN,把錯誤率降到了6.7%。再到2015年微軟的殘差網(wǎng)絡(luò),錯誤率降到了3.57%。從數(shù)字上看好像沒多大差別,但一方面越往上提升的空間越小,難度越大;第二個,里面有一個標(biāo)志性的里程碑,人的錯誤率是5.1%,而這個時候機器是3.57%,已經(jīng)超過了,所以這是里程碑式的事件。里面用的數(shù)據(jù)集是李飛飛的開源數(shù)據(jù)集 ImageNet,在2016年的 ImageNet比賽里面中國團(tuán)隊就拿下了全部冠軍,今年又拿下了一些冠軍。在圖像識別領(lǐng)域提升的空間不大了,所以今年以后這個比賽已經(jīng)停止了,或許是已經(jīng)沒啥提升的空間了。
這是一些超級網(wǎng)絡(luò)的圖示,最早的是8層網(wǎng)絡(luò),到了19層,再到22層,已經(jīng)眼花繚亂看不清了。這個PPT是來自臺大的李宏毅,大家可以找一下。
我今天的分享就到這里,謝謝!
(完)
雷鋒網(wǎng) AI 科技評論整理,感謝嘉賓分享以及對文本的校對和補充!
雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。