關(guān)于人工智能與深度學(xué)習(xí)的一些分析
發(fā)展至今,人工智能可以劃分為兩類:弱人工智能和強(qiáng)人工智能。前者讓機(jī)器具備觀察和感知的能力,能做到一定程度的理解和推理;而強(qiáng)人工智能是讓機(jī)器獲得自適應(yīng)能力,解決一些從沒(méi)遇到過(guò)的問(wèn)題。這里的“智能”從何而來(lái)?人工智能又如何取得突破?要從一種實(shí)現(xiàn)人工智能的方法——機(jī)器學(xué)習(xí)說(shuō)起。
與傳統(tǒng)的為解決特定任務(wù)、硬編碼的軟件程序不同,機(jī)器學(xué)習(xí)是用大量的數(shù)據(jù)來(lái)“訓(xùn)練”,通過(guò)各種算法從數(shù)據(jù)中學(xué)習(xí)如何完成任務(wù)。
這里有三個(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í)(Deep Learning)屬于機(jī)器學(xué)習(xí)的子類,是目前最熱的機(jī)器學(xué)習(xí)方法,但它并不意味著是機(jī)器學(xué)習(xí)的終點(diǎn)。它的靈感來(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)。機(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ù)依賴。隨著數(shù)據(jù)量的增加,二者的表現(xiàn)有很大區(qū)別。深度學(xué)習(xí)適合處理大數(shù)據(jù),而數(shù)據(jù)量比較小的時(shí)候,用傳統(tǒng)機(jī)器學(xué)習(xí)方法也許更合適。
2. 硬件依賴。深度學(xué)習(xí)十分地依賴于高端的硬件設(shè)施,因?yàn)橛?jì)算量實(shí)在太大。它會(huì)涉及很多矩陣運(yùn)算,因此很多深度學(xué)習(xí)都要求有GPU(專門為矩陣運(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í)是一次性、端到端地解決。
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ī)器。