理解深度學(xué)習(xí)
1、現(xiàn)狀:
深度學(xué)習(xí)現(xiàn)在非常熱,各種會議都要和這個沾點(diǎn)邊。百度大腦,谷歌大腦計(jì)劃搞的都是這個。在一些領(lǐng)域取得了非常不錯的效果,如圖片識別,語音識別,在安全領(lǐng)域甚至還有識別加密的協(xié)議等。如圖片,語音領(lǐng)域?qū)嶒?yàn)室準(zhǔn)確率都超過了90%。
2、深度學(xué)習(xí)的本質(zhì)
一個典型的機(jī)器學(xué)習(xí)樣例如上,從開始的通過傳感器(例如CMOS)來獲得數(shù)據(jù)。然后經(jīng)過預(yù)處理、特征提取、特征選擇,再到推理、預(yù)測或者識別。***一個部分,也就是機(jī)器學(xué)習(xí)的部分,絕大部分的工作是在這方面做的,也存在很多的paper和研究。
而中間的三部分,概括起來就是特征表達(dá)。良好的特征表達(dá),對最終算法的準(zhǔn)確性起了非常關(guān)鍵的作用,而且系統(tǒng)主要的計(jì)算和測試工作都耗在這一大部分。但,這塊實(shí)際中一般都是人工完成的??咳斯ぬ崛√卣鳌?/p>
然而,手工地選取特征是一件非常費(fèi)力、啟發(fā)式(需要專業(yè)知識)的方法,能不能選取好很大程度上靠經(jīng)驗(yàn)和運(yùn)氣,而且它的調(diào)節(jié)需要大量的時間。既然手工選取特征不太好,那么能不能自動地學(xué)習(xí)一些特征呢?答案是能!Deep Learning就是用來干這個事情的,看它的一個別名UnsupervisedFeature Learning,就可以顧名思義了,Unsupervised的意思就是不要人參與特征的選取過程。
深度學(xué)習(xí)的實(shí)質(zhì),是通過構(gòu)建具有很多隱層的機(jī)器學(xué)習(xí)模型和海量的訓(xùn)練數(shù)據(jù),來學(xué)習(xí)更有用的特征,從而最終提升分類或預(yù)測的準(zhǔn)確性。因此,“深度模型”是手段,“特征學(xué)習(xí)”是目的。區(qū)別于傳統(tǒng)的淺層學(xué)習(xí),深度學(xué)習(xí)的不同在于:1)強(qiáng)調(diào)了模型結(jié)構(gòu)的深度,通常有5層、6層,甚至10多層的隱層節(jié)點(diǎn);2)明確突出了特征學(xué)習(xí)的重要性,也就是說,通過逐層特征變換,將樣本在原空間的特征表示變換到一個新特征空間,從而使分類或預(yù)測更加容易。與人工規(guī)則構(gòu)造特征的方法相比,利用大數(shù)據(jù)來學(xué)習(xí)特征,更能夠刻畫數(shù)據(jù)的豐富內(nèi)在信息。
3、深度學(xué)習(xí)和傳統(tǒng)神經(jīng)網(wǎng)絡(luò)的關(guān)系
Deep learning本身算是machine learning的一個分支,簡單可以理解為neural network的發(fā)展。大約二三十年前,neural network曾經(jīng)是ML領(lǐng)域特別火熱的一個方向,但是后來確慢慢淡出了,原因包括以下幾個方面:
1)比較容易過擬合,參數(shù)比較難tune,而且需要不少trick;
2)訓(xùn)練速度比較慢,在層次比較少(小于等于3)的情況下效果并不比其它方法更優(yōu);
所以中間有大約20多年的時間,神經(jīng)網(wǎng)絡(luò)被關(guān)注很少,這段時間基本上是SVM和boosting算法的天下。但是,一個癡心的老先生Hinton,他堅(jiān)持了下來,并最終(和其它人一起B(yǎng)engio、Yann.lecun等)提成了一個實(shí)際可行的deep learning框架。
4、Deep learning與傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)之間有相同的地方也有很多不同。
二者的相同在于deep learning采用了神經(jīng)網(wǎng)絡(luò)相似的分層結(jié)構(gòu),系統(tǒng)由包括輸入層、隱層(多層)、輸出層組成的多層網(wǎng)絡(luò),只有相鄰層節(jié)點(diǎn)之間有連接,同一層以及跨層節(jié)點(diǎn)之間相互無連接,每一層可以看作是一個logistic regression模型;這種分層結(jié)構(gòu),是比較接近人類大腦的結(jié)構(gòu)的。
而為了克服神經(jīng)網(wǎng)絡(luò)訓(xùn)練中的問題,DL采用了與神經(jīng)網(wǎng)絡(luò)很不同的訓(xùn)練機(jī)制。傳統(tǒng)神經(jīng)網(wǎng)絡(luò)中,采用的是back propagation的方式進(jìn)行,簡單來講就是采用迭代的算法來訓(xùn)練整個網(wǎng)絡(luò),隨機(jī)設(shè)定初值,計(jì)算當(dāng)前網(wǎng)絡(luò)的輸出,然后根據(jù)當(dāng)前輸出和label之間的差去改變前面各層的參數(shù),直到收斂(整體是一個梯度下降法)。而deep learning整體上是一個layer-wise的訓(xùn)練機(jī)制。這樣做的原因是因?yàn)椋绻捎胋ack propagation的機(jī)制,對于一個deep network(7層以上),殘差傳播到最前面的層已經(jīng)變得太小,出現(xiàn)所謂的gradient diffusion(梯度擴(kuò)散)。
5、總結(jié)
深度學(xué)習(xí)是關(guān)于自動學(xué)習(xí)要建模的數(shù)據(jù)的潛在(隱含)分布的多層(復(fù)雜)表達(dá)的算法。換句話來說,深度學(xué)習(xí)算法自動的提取分類需要的低層次或者高層次特征。高層次特征,一是指該特征可以分級(層次)地依賴其他特征,例如:對于機(jī)器視覺,深度學(xué)習(xí)算法從原始圖像去學(xué)習(xí)得到它的一個低層次表達(dá),例如邊緣檢測器,小波濾波器等,然后在這些低層次表達(dá)的基礎(chǔ)上再建立表達(dá),例如這些低層次表達(dá)的線性或者非線性組合,然后重復(fù)這個過程,***得到一個高層次的表達(dá)。
Deep learning能夠得到更好地表示數(shù)據(jù)的feature,同時由于模型的層次、參數(shù)很多,capacity足夠,因此,模型有能力表示大規(guī)模數(shù)據(jù),所以對于圖像、語音這種特征不明顯(需要手工設(shè)計(jì)且很多沒有直觀物理含義)的問題,能夠在大規(guī)模訓(xùn)練數(shù)據(jù)上取得更好的效果。此外,從模式識別特征和分類器的角度,deep learning框架將feature和分類器結(jié)合到一個框架中,用數(shù)據(jù)去學(xué)習(xí)feature,在使用中減少了手工設(shè)計(jì)feature的巨大工作量(這是目前工業(yè)界工程師付出努力最多的方面),因此,不僅僅效果可以更好,而且,使用起來也有很多方便之處,因此,是十分值得關(guān)注的一套框架,每個做ML的人都應(yīng)該關(guān)注了解一下。
當(dāng)然,deep learning本身也不是***的,也不是解決世間任何ML問題的利器,不應(yīng)該被放大到一個無所不能的程度。
【本文為51CTO專欄作者“大數(shù)據(jù)和云計(jì)算”的原創(chuàng)稿件,轉(zhuǎn)載請通過微信公眾號獲取聯(lián)系和授權(quán)】