1. 程式人生 > 其它 >人臉識別智慧小程式 | 深度學習基礎 | 01

人臉識別智慧小程式 | 深度學習基礎 | 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點無數個方向中變化最快的那個方向

梯度下降演算法、學習率、區域性最優

梯度下降演算法:沿著導數下降的方法,進行引數更新。 

選擇合適的步長/學習率,是引數優化中非常重要的一點。
學習率過大,容易錯過最優解;學習率過小,找到最優解需要很多步驟。

非凸函式(函式中存在多個極值)最優化求解,一直是學術界和工業界非常難的問題。
通過梯度下降演算法,並不能保證求解出來的解是最優的,有可能只是區域性最優。