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