人臉識別智慧小程式 | 深度學習基礎 | 01
內容概況
卷積神經網路是深度學習匯中一種非常有代表性的網路結構,所以這裡會先介紹一些深度學習的相關概念。
深度學習發展歷程
人工神經網路的概念其實在50年代已經提出,但是受限於時代,不被重視。
06年Hinton提出,將多層感知機就命名為深度學習。
12年,Hinton的學習Alex設計提出AlexNet,在ImageNet的影象分類比賽中一鳴驚人,從此引爆了深度學習的熱潮。
什麼是人工神經網路?
人工神經網路就是深度學習(06年Hinton說的),然後深度學習是機器學習的一種大類方法,和它同等地位的有類似聚類演算法、支援向量機等。
如上圖,圖中一個一個圓圈就是一個一個神經元,多個神經元按照層次的形式組成神經網路。
神經網路的資料是按照層次結構從左向右流動的,依次可以劃分輸入層、隱藏層、輸出層。
人工神經網路就是一個多層感知器模型。
什麼是感知器?
感知器
- 第一個具有完整演算法描述的神經網路學習演算法
- 任何線性分類或線性迴歸問題都可以使用感知器來解決
分類:預測的結果是離散值。
迴歸:預測的結果是連續值。
感知器可以理解為就是一個神經元!
從多層感知器到人工神經網路
類似上圖這麼劃分,可以把多層感知器劃分成一個一個的單個感知器。
什麼是深度學習?
深度學習:含多隱層和多感知器就是一種深度學習結構。
深度學習其實就是人工神經網路中,有多個隱藏層,多個感知器。
如上圖網路結構,隱藏層足夠多,層數足夠深,那麼就可以歸屬於深度學習。
深度學習中的概念變遷總結
神經元(單層感知器)=》神經網路(多層感知器)=》含多隱層、多神經元的神經網路(深度學習)
前向運算:“怎麼用“?也就是網路結構向前運算的過程。
反向傳播:”怎麼學“?也就是網路結構如何學習引數的過程。(有監督過程)
前向運算
前向計算:計算輸出值的過程
不一定是線性進行運算,這個神經元的運算方式可以自己定義,但是這裡以線性運算作為例子講解。將處理的函式抽象為\(f(),g()\)
注意:\(w_{11},w_{12},...,b_1,b_2,...\)這些的取值都是不一致的(也有可能一樣,但各自是獨立的變數)
然後上圖中的\(w,b\)是需要通過反向傳播來計算的。
反向傳播:神經網路(引數模型)訓練方法
- 解決神經網路的優化問題
- 計算輸出層結果與真實值之間的偏差來進行逐層調節引數(梯度下降 自動)
BP演算法是神經網路引數求解的一種演算法,對於神經網路,引數的求解過程,也被稱為“訓練”。
神經網路的結構一般是人為先定義好,有多少層,每一層的結構具體是什麼作用。但是每一層的具體引數是不知道的,那麼就需要用到BP演算法來幫助求解引數。訓練的過程需要有標籤的資料,所以神經網路也被稱為有監督的演算法。
神經網路=網路結構 + 引數
- 網路結構,人工設計的,規定好網路的層次,以及各層網路的作用,只需要規定好超引數
- 超引數:需要人工給定的引數
- 引數:BP演算法求解
神經網路引數訓練是一個不斷迭代的過程。
上圖給出一個損失函式的例子\(loss(w,b)=min({|wx+b-y|}^2)\) 也就是\(w,b\)這兩個是要優化求解的變數。
導數:在一元函式中,可以理解為是變化率,是切線的斜率;在物理上可以理解為是瞬時速度,或是加速度。
在多元函式(這裡以三維為例子),一個點可以有無數條切線,所以為了描述這些各個方向的斜線的斜率,就有了方向導數的概念。過該點的每個方向的切線都有對應的方向導數。
偏導數:對多元函式進行降維。 比如把二元降維為一元。
理解偏導數對理解梯度下降演算法有重要意義。
梯度:(在多元函式中)函式在A點無數個變化方向中變化最快的那個方向。
上圖,A到B的過程,如果一直都是沿著切線的斜率方向(導數),那麼就是到達B點最快的方式。那麼該過程我們可以看作是一個尋找最小值的過程。
如果是一個非凸的函式,例如右下圖有B,D兩個最低點,如果是從A開始,那麼找到的最低點就是B,如果從C開始,那麼找到的最低點就是D。
梯度下降演算法:沿著導數下降的方法,進行引數更新。
具體形式化公式如上圖所示,
選擇合適的步長/學習率,是引數優化中非常重要的一點。
學習率過大,容易錯過最優解;學習率過小,找到最優解需要很多步驟。
一般一開始的學習率設定會比較大,比如0.01,目的就是為了讓模型快速收斂。伴隨網路迭代的過程,逐步調節學習率,使得學習率逐步的變小,比如1w次迭代後,將學習率調整為0.001,然後再迭代1w次後,再調整學習率為0.0001。
非凸函式(函式中存在多個極值)最優化求解,一直是學術界和工業界非常難的問題。
通過梯度下降演算法,並不能保證求解出來的解是最優的,有可能只是區域性最優。
後面會講解如何儘量保證最優解,這裡不多做討論。
小結
什麼是人工神經網路?
人工神經網路就是深度學習(06年Hinton說的),然後深度學習是機器學習的一種大類方法,和它同等地位的有類似聚類演算法、支援向量機等。
人工神經網路就是一個多層感知器模型。
什麼是感知器?
第一個具有完整演算法描述的神經網路學習方法
任何線性分類或線性迴歸問題都可以用感知器來解決(牛逼!)
感知器可以理解為就是一個神經元!
分類和迴歸的概念
分類:預測的結果是離散值。
迴歸:預測的結果是連續值。
什麼是深度學習?
深度學習:含**多隱層**和**多感知器**就是一種深度學習結構。
深度學習其實就是人工神經網路中,有多個隱藏層,多個感知器。
前向計算和反向傳播(BP演算法)
前向計算:計算輸出值的過程
反向傳播:確定網路引數的過程(一般指權值和偏置),BP演算法是神經網路(引數模型)訓練方法
**BP演算法是神經網路引數求解的一種演算法,對於神經網路,引數的求解過程,也被稱為“訓練”。**
機器學習的訓練過程是指?
使用BP演算法不斷迭代優化引數的過程,就是機器學習的訓練過程。
導數、方向導數、偏導數、梯度
導數:一元,切線的斜率(在一元情況下,導數就是梯度)
方向導數:多元,過A點的切線有無數條,每個方向過A點的斜率叫做方向導數
偏導數:對多元函式進行降維
梯度:多元,過A點無數個方向中變化最快的那個方向
梯度下降演算法、學習率、區域性最優
梯度下降演算法:沿著導數下降的方法,進行引數更新。
選擇合適的步長/學習率,是引數優化中非常重要的一點。
學習率過大,容易錯過最優解;學習率過小,找到最優解需要很多步驟。
非凸函式(函式中存在多個極值)最優化求解,一直是學術界和工業界非常難的問題。
通過梯度下降演算法,並不能保證求解出來的解是最優的,有可能只是區域性最優。