入門學(xué)習(xí)深度學(xué)習(xí)之前,有必要先了解一下深度學(xué)習(xí)的工作原理。著名程序猿小哥 Radu Raicea 特意為入門學(xué)習(xí)者寫了一篇文章,利用一個(gè)票價(jià)預(yù)測(cè)工具的例子解釋深度學(xué)習(xí)的工作原理,不需要有多高深的數(shù)學(xué)知識(shí),人人都能看懂。
當(dāng)前,人工智能和機(jī)器學(xué)習(xí)應(yīng)該是最火爆的話題了,你估計(jì)經(jīng)常聽到有很多程序猿朋友說要去學(xué) AI,很多公司宣布要應(yīng)用AI技術(shù),可是很多人其實(shí)并沒有完全理解人工智能和機(jī)器學(xué)習(xí)。因此 Radu Raicea 覺得在解釋深度學(xué)習(xí)原理之前,我們有必要了解幾個(gè)基本術(shù)語,就當(dāng)一個(gè)入門小測(cè)驗(yàn)好了:
你知道啥是機(jī)器學(xué)習(xí)嗎?
機(jī)器學(xué)習(xí)指機(jī)器能夠?qū)W習(xí)利用大數(shù)據(jù)集學(xué)習(xí)而不是硬編碼規(guī)則,它是人工智能的核心,是使計(jì)算機(jī)具有智能的根本途徑,主要使用歸納、綜合而不是演繹。
機(jī)器學(xué)習(xí)能讓電腦自我學(xué)習(xí),這種學(xué)習(xí)類型得益于現(xiàn)代計(jì)算機(jī)強(qiáng)大的處理能力,可以輕易地處理大數(shù)據(jù)集。
你知道啥是監(jiān)督學(xué)習(xí)嗎?
監(jiān)督學(xué)習(xí)應(yīng)用了包含輸入值和期望輸出值的標(biāo)記數(shù)據(jù)集。
當(dāng)用監(jiān)督學(xué)習(xí)訓(xùn)練AI的時(shí)候,我們需要給它輸入值,并告訴它期望輸出值。如果AI生成的輸出值有誤,它會(huì)調(diào)整自身計(jì)算。這個(gè)過程會(huì)隨著數(shù)據(jù)集的更新而不斷迭代,直到AI不再犯錯(cuò)。
監(jiān)督學(xué)習(xí)的一個(gè)典型應(yīng)用就是天氣預(yù)報(bào)AI應(yīng)用。AI利用歷史數(shù)據(jù)學(xué)習(xí)如何預(yù)測(cè)天氣。訓(xùn)練數(shù)據(jù)包括輸入值(氣壓、濕度、風(fēng)速等)和輸出值(溫度等)。
你知道啥是無監(jiān)督學(xué)習(xí)嗎?
無監(jiān)督學(xué)習(xí)就是使用沒有具體結(jié)構(gòu)的數(shù)據(jù)集。
當(dāng)使用無監(jiān)督學(xué)習(xí)方法訓(xùn)練AI時(shí),需要讓AI對(duì)數(shù)據(jù)進(jìn)行分類。
無監(jiān)督學(xué)習(xí)的一個(gè)應(yīng)用例子就是為電商網(wǎng)站預(yù)測(cè)消費(fèi)行為。AI沒有利用標(biāo)記過的輸入值和輸出值數(shù)據(jù)集,相反它會(huì)對(duì)輸入數(shù)據(jù)自己分類,從而能讓網(wǎng)站知道顧客最喜歡買什么東西。
為啥要講這兩個(gè)概念呢?
因?yàn)楸O(jiān)督學(xué)習(xí)和無監(jiān)督學(xué)習(xí)正是深度學(xué)習(xí)中的兩種學(xué)習(xí)方法。
祝賀你通過入門小測(cè)驗(yàn),現(xiàn)在我們開啟深度學(xué)習(xí)的大門。
深度學(xué)習(xí)的概念源于人工神經(jīng)網(wǎng)絡(luò)的研究,是機(jī)器學(xué)習(xí)研究中的一個(gè)新的領(lǐng)域,目的是建立、模擬人腦進(jìn)行分析學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò),它模仿人腦的機(jī)制來解釋數(shù)據(jù),例如圖像,聲音和文本。
作為一種機(jī)器學(xué)習(xí)方法,深度學(xué)習(xí)能讓我們用給定的輸入值訓(xùn)練AI預(yù)測(cè)輸出值。監(jiān)督學(xué)習(xí)和無監(jiān)督學(xué)習(xí)都能用來訓(xùn)練AI。
我們來看看 Radu Raicea 怎樣用制作一個(gè)票價(jià)預(yù)測(cè)小工具的例子解釋深度學(xué)習(xí)的工作原理,然后用監(jiān)督式學(xué)習(xí)的方法訓(xùn)練它。
首先我們希望這個(gè)票價(jià)預(yù)測(cè)工具能用以下輸入值預(yù)測(cè)票價(jià)(在這里先不考慮往返機(jī)票):
出發(fā)機(jī)場(chǎng)
到達(dá)機(jī)場(chǎng)
出發(fā)時(shí)間
航線
神經(jīng)網(wǎng)絡(luò)
我們來看看AI的大腦——神經(jīng)網(wǎng)絡(luò)。 和動(dòng)物一樣,這個(gè)票價(jià)預(yù)測(cè)AI的大腦也有神經(jīng)元。下圖中的圓圈代表神經(jīng)元,它們相互連接:
神經(jīng)元被分為三種不同的層級(jí):
輸入層(input layer)
隱藏層(可能有多個(gè))(hidden layer)
輸出層(output layer)
輸入層接收輸入數(shù)據(jù)。在我們的票價(jià)預(yù)測(cè)AI中,輸入層有4個(gè)神經(jīng)元:出發(fā)機(jī)場(chǎng),到達(dá)機(jī)場(chǎng),出發(fā)日期和航線。輸入層收到這些信息后會(huì)傳遞給第一個(gè)隱藏層。
隱藏層會(huì)對(duì)輸入數(shù)據(jù)進(jìn)行數(shù)學(xué)運(yùn)算。如何決定隱藏層的數(shù)量、以及每層神經(jīng)元的數(shù)量仍是構(gòu)建神經(jīng)網(wǎng)絡(luò)的挑戰(zhàn)。
深度學(xué)習(xí)中的“深度”倆字指的就是神經(jīng)元中有不止一個(gè)隱藏層。
最后,輸出層會(huì)返回輸出數(shù)據(jù),在這個(gè)例子中,就是AI預(yù)測(cè)出票價(jià)。
所以,這個(gè)AI工具到底是怎么計(jì)算出預(yù)測(cè)票價(jià)的呢?
當(dāng)然是靠神奇的深度學(xué)習(xí)。
神經(jīng)元之間的每個(gè)連接都和權(quán)重(weight)緊密相關(guān),它決定了輸入值的重要性。初始權(quán)重是隨機(jī)設(shè)置的。 當(dāng)預(yù)測(cè)某個(gè)航班的機(jī)票價(jià)格時(shí),出發(fā)日期是最重要的因素之一,因此,出發(fā)日期神經(jīng)元之間的連接會(huì)有很大的權(quán)重。
每個(gè)神經(jīng)元都有一個(gè)激活函數(shù)。如果沒有一定的數(shù)學(xué)知識(shí),很難理解這些函數(shù)。不過,這篇文章面向入門者的,所以這里不再講解深?yuàn)W的數(shù)學(xué)知識(shí)。
簡(jiǎn)單來說,這些函數(shù)的目標(biāo)之一就是將神經(jīng)元的輸出值“標(biāo)準(zhǔn)化”。
一旦一組輸入數(shù)據(jù)通過神經(jīng)網(wǎng)絡(luò)的所有層級(jí),AI會(huì)通過輸出層返回輸出值。
這不難理解,對(duì)吧?
訓(xùn)練神經(jīng)網(wǎng)絡(luò)
深度學(xué)習(xí)中最難的部分就是訓(xùn)練AI,為什么?
你需要大數(shù)據(jù)集。
你需要有滿足訓(xùn)練所需的強(qiáng)大的計(jì)算能力。
拿我們要做的票價(jià)預(yù)測(cè)AI來說,我們需要有歷史機(jī)票價(jià)格的數(shù)據(jù)。而且因?yàn)闄C(jī)場(chǎng)和出發(fā)日期的組合有很多種可能,因此這個(gè)票價(jià)列表信息會(huì)非常龐大。
要訓(xùn)練AI,我們需要為它提供來自數(shù)據(jù)集中的輸入值,然后將AI的輸出值與數(shù)據(jù)集的輸出值相比較。由于AI還沒有接受訓(xùn)練,因此輸出值會(huì)有很多錯(cuò)誤。
一旦將整個(gè)數(shù)據(jù)集中的所有數(shù)據(jù)輸入完成,我們可以創(chuàng)建一個(gè)函數(shù),為我們展示AI的輸出值與真正的輸出值差距有多大。這個(gè)函數(shù)就叫做“代價(jià)函數(shù)”(Cost Function)。
理想狀態(tài)下,我們希望代價(jià)函數(shù)為零,但是只有AI的輸出值和數(shù)據(jù)集的輸出值一樣的時(shí)候,才代表達(dá)到了這個(gè)狀態(tài)。
那問題來了,怎樣降低代價(jià)函數(shù)?
我們上文中提到了“權(quán)重”這個(gè)東東,還記得嗎?在減少代價(jià)函數(shù)的操作中,權(quán)重起著至關(guān)重要的作用。改變神經(jīng)元間的權(quán)重可以調(diào)整代價(jià)函數(shù),我們可以隨機(jī)改變它們直到代價(jià)函數(shù)接近0,但這種方法效率很低。
在這種情況下,一種叫做梯度下降(Gradient Descent)的神器隆重出場(chǎng)。
梯度下降是一種尋找函數(shù)最小值的方法,我們要找到機(jī)票價(jià)格模型中代價(jià)函數(shù)的最小值,就要靠梯度下降。
梯度下降的工作原理是在數(shù)據(jù)集的每次迭代后,以很小的增量改變權(quán)重。通過計(jì)算確定權(quán)重代價(jià)函數(shù)的導(dǎo)數(shù)(或梯度),我們就能發(fā)現(xiàn)朝哪個(gè)方向可以找到最小值。
要想將代價(jià)函數(shù)最小化,我們需要多次迭代數(shù)據(jù)集,這就是為什么剛才說需要有強(qiáng)大的計(jì)算能力。
利用梯度下降更新權(quán)重可以自動(dòng)完成,這就是深度學(xué)習(xí)的魔力所在!等我們訓(xùn)練完機(jī)票價(jià)格預(yù)測(cè)AI工具后,我們就可以用它來預(yù)測(cè)未來的機(jī)票價(jià)格了!
哦對(duì)了,神經(jīng)網(wǎng)絡(luò)也有很多類型,不同的AI使用的神經(jīng)網(wǎng)絡(luò)也不同,比如計(jì)算機(jī)視覺技術(shù)采用的是卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks),自然語言處理用的是循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Networks)。
最后對(duì)深度學(xué)習(xí)做個(gè)總結(jié):
深度學(xué)習(xí)需要神經(jīng)網(wǎng)絡(luò)模仿動(dòng)物的智力。
一個(gè)神經(jīng)網(wǎng)絡(luò)中有三種神經(jīng)元層,即輸入層、隱藏層(可有多個(gè)層級(jí))和輸出層。
神經(jīng)元之間的連接與權(quán)重有關(guān),它決定了輸入值的重要性。
將激活函數(shù)應(yīng)用到數(shù)據(jù)中,可以使神經(jīng)元的輸出值“標(biāo)準(zhǔn)化”。
要訓(xùn)練神經(jīng)網(wǎng)絡(luò),你需要一個(gè)大數(shù)據(jù)集。
迭代數(shù)據(jù)集和將AI輸出與數(shù)據(jù)集輸出進(jìn)行對(duì)比,將產(chǎn)生一個(gè)代價(jià)函數(shù),顯示AI的輸出與真實(shí)輸出之間的差異。
數(shù)據(jù)集的每一次迭代后,神經(jīng)元之間的權(quán)重會(huì)通過梯度下降的方式,降低代價(jià)函數(shù)的值。
評(píng)論
查看更多