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