白話(huà)版,聊聊“深度學(xué)習(xí)”
↑↑↑點(diǎn)擊上方藍(lán)字,回復(fù)資料,10個(gè)G的驚喜
來(lái)源:浪潮服務(wù)器
1956年,達(dá)特茅斯會(huì)議,“人工智能”概念被首次提出。他們夢(mèng)想著用當(dāng)時(shí)剛剛出現(xiàn)的計(jì)算機(jī)來(lái)構(gòu)造復(fù)雜的、擁有與人類(lèi)智慧同樣特性的機(jī)器。
?
發(fā)展至今,人工智能可以劃分為兩類(lèi):弱人工智能和強(qiáng)人工智能。前者讓機(jī)器具備觀察和感知的能力,能做到一定程度的理解和推理;而強(qiáng)人工智能是讓機(jī)器獲得自適應(yīng)能力,解決一些從沒(méi)遇到過(guò)的問(wèn)題。這里的“智能”從何而來(lái)?人工智能又如何取得突破?要從一種實(shí)現(xiàn)人工智能的方法——機(jī)器學(xué)習(xí)說(shuō)起。
白話(huà)版走心解讀:從發(fā)展階段來(lái)看,我們目前還處于弱人工智能階段。幸運(yùn)的是,似乎還不用擔(dān)心人工智能是不是會(huì)把人類(lèi)打趴在地;不幸的是,那些落地的人工智能應(yīng)用已經(jīng)出現(xiàn)了各種弊端和不足。所以我們現(xiàn)在更需要做的,可能不是恐懼機(jī)器會(huì)變成我們,而是如何讓機(jī)器更理解我們。

什么是機(jī)器學(xué)習(xí)?
與傳統(tǒng)的為解決特定任務(wù)、硬編碼的軟件程序不同,機(jī)器學(xué)習(xí)是用大量的數(shù)據(jù)來(lái)“訓(xùn)練”,通過(guò)各種算法從數(shù)據(jù)中學(xué)習(xí)如何完成任務(wù)。
白話(huà)版走心解讀:在人工智能的研究上,“貓”一直是熱門(mén)明星,所以我們就用“識(shí)別貓咪”來(lái)解釋一下機(jī)器學(xué)習(xí)。假設(shè)要構(gòu)建一個(gè)識(shí)別貓的程序:傳統(tǒng)上如果想讓計(jì)算機(jī)識(shí)別,需要輸入一串指令,例如貓長(zhǎng)著毛茸茸的毛、頂著一對(duì)三角形的耳朵等,然后計(jì)算機(jī)根據(jù)這些指令執(zhí)行下去。但如果我們對(duì)程序展示一只老虎的照片,程序可能會(huì)沙雕……

除此外,傳統(tǒng)方式要制定全部所需規(guī)則,而且過(guò)程中必然會(huì)涉及到一些困難的概念,比如對(duì)毛茸茸的定義。因此更好的方式是讓機(jī)器自學(xué)。為計(jì)算機(jī)提供大量貓的照片,隨著實(shí)驗(yàn)增加,系統(tǒng)會(huì)不斷學(xué)習(xí)更新,最終能準(zhǔn)確地判斷出哪些是貓,哪些不是。
這里有三個(gè)重要信息:1. “機(jī)器學(xué)習(xí)”是“模擬、延伸和擴(kuò)展人的智能”的一條路徑,是人工智能的一個(gè)子集;2. “機(jī)器學(xué)習(xí)”要基于大量數(shù)據(jù),也就是說(shuō)它的“智能”是用大量數(shù)據(jù)喂出來(lái)的;(敲黑板!!!這個(gè)后面會(huì)用到)3. 正是因?yàn)橐幚砗A繑?shù)據(jù),所以大數(shù)據(jù)技術(shù)尤為重要,而“機(jī)器學(xué)習(xí)”只是大數(shù)據(jù)技術(shù)上的一個(gè)應(yīng)用。
?
雖然傳統(tǒng)的機(jī)器學(xué)習(xí)算法在指紋識(shí)別、人臉檢測(cè)等領(lǐng)域的應(yīng)用基本達(dá)到了商業(yè)化要求,但“再進(jìn)一步”卻很艱難,直到深度學(xué)習(xí)算法的出現(xiàn)。

什么是深度學(xué)習(xí)?
深度學(xué)習(xí)(Deep Learning)屬于機(jī)器學(xué)習(xí)的子類(lèi),是目前最熱的機(jī)器學(xué)習(xí)方法,但它并不意味著是機(jī)器學(xué)習(xí)的終點(diǎn)。它的靈感來(lái)源于人類(lèi)大腦的工作方式,是利用深度神經(jīng)網(wǎng)絡(luò)來(lái)解決特征表達(dá)的一種學(xué)習(xí)過(guò)程。深度神經(jīng)網(wǎng)絡(luò)本身并非是一個(gè)全新概念,可理解為包含多個(gè)隱含層的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。
白話(huà)版走心解讀:我們來(lái)看看深度學(xué)習(xí)是如何工作的。以人臉識(shí)別為栗子。如果是傳統(tǒng)機(jī)器學(xué)習(xí),首先要確定相應(yīng)的“面部特征”作為機(jī)器學(xué)習(xí)的特征(眼睛、鼻子等等),以此來(lái)對(duì)對(duì)象進(jìn)行分類(lèi)識(shí)別。而深度學(xué)習(xí)能自動(dòng)找出這個(gè)分類(lèi)問(wèn)題所需要的重要特征。它是如何做到的?讓機(jī)器深度學(xué)習(xí),總共分三步:1. 確定出哪些邊和角跟識(shí)別出人臉關(guān)系最大;2. 根據(jù)上一步找出的很多小元素(邊、角等)構(gòu)建層級(jí)網(wǎng)絡(luò),找出它們之間的各種組合;3. 在構(gòu)建層級(jí)網(wǎng)絡(luò)之后,就可以確定哪些組合可以識(shí)別人臉。來(lái)個(gè)示意。?

第一步,輸入的是Raw Data,就是原始數(shù)據(jù),這個(gè)機(jī)器是沒(méi)法理解的。于是,深度學(xué)習(xí)首先盡可能找到與這個(gè)頭像相關(guān)的各種邊,這些邊就是底層的特征(Low-level features);然后下一步,對(duì)這些底層特征進(jìn)行組合,就可以看到鼻子、眼睛、耳朵等,它們是中間層特征(Mid-level features);最后,對(duì)鼻子、眼睛等進(jìn)行組合,就可以組成各種各樣的頭像,也就是高層特征(High-level features)。這個(gè)時(shí)候,它就可以識(shí)別出各種人的頭像了。

機(jī)器學(xué)習(xí)和深度學(xué)習(xí)有哪些維度的不同?
機(jī)器學(xué)習(xí)是一種實(shí)現(xiàn)人工智能的方法,深度學(xué)習(xí)是一種實(shí)現(xiàn)機(jī)器學(xué)習(xí)的技術(shù)。一個(gè)同心圓就可以展現(xiàn)出它們的關(guān)系。

具體不同大致有以下幾點(diǎn)。
?
1. 數(shù)據(jù)依賴(lài)。隨著數(shù)據(jù)量的增加,二者的表現(xiàn)有很大區(qū)別。深度學(xué)習(xí)適合處理大數(shù)據(jù),而數(shù)據(jù)量比較小的時(shí)候,用傳統(tǒng)機(jī)器學(xué)習(xí)方法也許更合適。

2. 硬件依賴(lài)。深度學(xué)習(xí)十分地依賴(lài)于高端的硬件設(shè)施,因?yàn)橛?jì)算量實(shí)在太大。它會(huì)涉及很多矩陣運(yùn)算,因此很多深度學(xué)習(xí)都要求有GPU(專(zhuān)門(mén)為矩陣運(yùn)算而設(shè)計(jì)的)參與運(yùn)算。
?
3. 特征工程。簡(jiǎn)單講就是在訓(xùn)練一個(gè)模型的時(shí)候,需要首先確定哪些特征。在機(jī)器學(xué)習(xí)方法中,幾乎所有特征都需要人為確認(rèn)后,再進(jìn)行手工特征編碼。而深度學(xué)習(xí)試圖自己從數(shù)據(jù)中學(xué)習(xí)特征。
?
4. 解決問(wèn)題的方式。(重點(diǎn)!)解決問(wèn)題時(shí),機(jī)器學(xué)習(xí)通常先把問(wèn)題分成幾塊,一個(gè)個(gè)地解決好之后,再重新組合。但是深度學(xué)習(xí)是一次性、端到端地解決。
白話(huà)版走心解讀:舉個(gè)栗子。

我們?cè)O(shè)定任務(wù)是識(shí)別出圖片上有哪些物體,并找出它們的位置。機(jī)器學(xué)習(xí)的做法是把問(wèn)題分兩步:發(fā)現(xiàn)物體和識(shí)別物體。但深度學(xué)習(xí)不同,它可以直接把對(duì)應(yīng)物體識(shí)別出來(lái),同時(shí)還能標(biāo)明對(duì)應(yīng)物體名字。這個(gè)好處就是,實(shí)時(shí)性。
5. 運(yùn)行時(shí)間。深度學(xué)習(xí)需要花大量時(shí)間來(lái)訓(xùn)練,因?yàn)橛刑鄥?shù)要去學(xué)習(xí)。機(jī)器學(xué)習(xí)一般幾秒鐘最多幾小時(shí)就可以訓(xùn)練好。但深度學(xué)習(xí)訓(xùn)練出的模型優(yōu)勢(shì)就在于,在預(yù)測(cè)任務(wù)上運(yùn)行非常快。也是剛剛提到的實(shí)時(shí)物體檢測(cè)。
?

深度學(xué)習(xí)前加個(gè)“分布式”,又是怎么回事?
面對(duì)越來(lái)越復(fù)雜的任務(wù),數(shù)據(jù)和深度學(xué)習(xí)模型的規(guī)模都變得日益龐大。當(dāng)訓(xùn)練數(shù)據(jù)詞表增大到成百上千萬(wàn)時(shí),如果不做任何剪枝處理,深度學(xué)習(xí)模型可能會(huì)擁有上百億、甚至是幾千億個(gè)參數(shù)。
為了提高深度學(xué)習(xí)模型的訓(xùn)練效率,分布式訓(xùn)練出現(xiàn)了——即同時(shí)利用多個(gè)工作節(jié)點(diǎn),分布式地、高效地訓(xùn)練出性能優(yōu)良的神經(jīng)網(wǎng)絡(luò)模型。
?
目前主要有兩種并行化/分布式訓(xùn)練方法:數(shù)據(jù)并行化和模型并行化。
數(shù)據(jù)并行化里,不同的機(jī)器有同一個(gè)模型的多個(gè)副本,每個(gè)機(jī)器分配到數(shù)據(jù)的一部分,然后將所有機(jī)器的計(jì)算結(jié)果按照某種方式合并;模型并行化里,分布式系統(tǒng)中的不同機(jī)器負(fù)責(zé)單個(gè)網(wǎng)絡(luò)模型的不同部分。比如,神經(jīng)網(wǎng)絡(luò)模型的不同網(wǎng)絡(luò)層被分配到不同機(jī)器。
白話(huà)版走心解讀:“并行化”顧名思義,就是一起并肩工作。酷暑正當(dāng),我們就用制作棒冰舉栗子。先說(shuō)數(shù)據(jù)并行化。工廠A要在一天內(nèi)做50000支棒冰,為了更高效完成,這個(gè)任務(wù)被分給了100個(gè)車(chē)間,當(dāng)然開(kāi)工前需要大家進(jìn)行培訓(xùn),確保每個(gè)人都了解了棒冰的制作過(guò)程。這里的“車(chē)間”就是機(jī)器,“50000支”就是數(shù)據(jù),“培訓(xùn)資料”就是模型。
同理,模型并行化就是這樣。同樣是50000支棒冰,但其中10000支生產(chǎn)簡(jiǎn)單,其余40000支工藝復(fù)雜。于是車(chē)間里兩位師傅分別扛起了這兩部分任務(wù),分頭進(jìn)行。“50000支”就是數(shù)據(jù),“師傅”就是GPU,生產(chǎn)工藝就是“模型”,不同工藝就相當(dāng)于不同的網(wǎng)絡(luò)層。
推薦閱讀
(點(diǎn)擊標(biāo)題可跳轉(zhuǎn)閱讀)
機(jī)器學(xué)習(xí)基礎(chǔ):奇異值分解(SVD)
老鐵,三連支持一下,好嗎?↓↓↓
