昨天爲你們推薦了幾本入門深度學習的必看書籍,錯過的朋友請戳這裏。網絡
在入門學習深度學習以前,有必要先了解一下深度學習的工做原理。著名程序猿小哥 Radu Raicea 特地爲入門學習者寫了一篇文章,利用一個票價預測工具的例子解釋深度學習的工做原理,不須要有多高深的數學知識,人人都能看懂。機器學習
當前,人工智能和機器學習應該是最火爆的話題了,你估計常常聽到有不少程序猿朋友說要去學 AI,不少公司宣佈要應用AI技術,但是不少人其實並無徹底理解人工智能和機器學習。所以 Radu Raicea 以爲在解釋深度學習原理以前,咱們有必要了解幾個基本術語,就當一個入門小測驗好了:函數
你知道啥是機器學習嗎?工具
機器學習指機器可以學習利用大數據集學習而不是硬編碼規則,它是人工智能的核心,是使計算機具備智能的根本途徑,主要使用概括、綜合而不是演繹。post
機器學習能讓電腦自我學習,這種學習類型得益於現代計算機強大的處理能力,能夠輕易地處理大數據集。學習
你知道啥是監督學習嗎?大數據
監督學習應用了包含輸入值和指望輸出值的標記數據集。網站
當用監督學習訓練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)。
瞭解深度學習的工做原理只是學習深度學習的第一步,我以爲接下來能夠先看吳恩達在coursera上開設的深度學習課程 。
集智再補充一些資源,咱們曾整理了一批機器學習、深度學習的網絡資源,少年請拿去:戳這裏
深度學習須要神經網絡模仿動物的智力。
一個神經網絡中有三種神經元層,即輸入層、隱藏層(可有多個層級)和輸出層。
神經元之間的鏈接與權重有關,它決定了輸入值的重要性。
將激活函數應用到數據中,可使神經元的輸出值「標準化」。
要訓練神經網絡,你須要一個大數據集。
迭代數據集和將AI輸出與數據集輸出進行對比,將產生一個代價函數,顯示AI的輸出與真實輸出之間的差別。
數據集的每一次迭代後,神經元之間的權重會經過梯度降低的方式,下降代價函數的值。
深度學習的工做原理,這下理解了吧,那就快入坑學習吧!
可是若是懼怕本身基礎很差,學習AI技能感到吃力,怎麼破?不要緊!!
這多是正點遇上AI這班車的最好機會,不要錯過哦。