深度學習 神經網路的學習(rush peng)

2021-10-09 22:25:49 字數 3688 閱讀 5291

(二)損失函式

(三)數值微分

這裡所說的「學習」是指從訓練資料中自動獲取最優權重引數的過程。為了使神經網路能進行學習,將匯入損失函式這一指標。而學習的目的就是以該損失函式為基準,找出能使它的值達到最小的權重引數。

比如手寫數字 5 的識別

先從影象中提取特徵量,然後再用機器學習中的 svm 、knn 等分類器進行學習。

計算機視覺中,常用的特徵向量包括:sift. surf.hog 等

連特徵量的選擇也不需要人為的選擇了

深度學習是一種端到端的學習,機器學習極力的避免人為的介入,而神經網路或者深度學習,比以往的機器學習方法更避免人為的介入。

損失函式衡量的是:當前的神經網路和和訓練資料,在多大程度上不一致。

損失函式可以使用任意的函式,但一般用均方誤差交叉熵誤差

以手寫數字識別為例:

y =

[0.1

,0.05

,0.6

,0.0

,0.05

,0.1

,0.0

,0.1

,0.0

,0.0

] t =[0

,0,1

,0,0

,0,0

,0,0,0]

def

mean_squared_error

(y, t)

:return

0.5* np.

sum(

(y-t)**2

)

注意:

這個其實比上邊更簡單,因為使用 one-hot 的表示方法,只有正確的標籤是1,其他的都是0,所以,其他的不用乘,t(k)也始終等於 1 ,就是- ln(正確標籤的概率)

原則上來講:計算損失函式時必須將所有的訓練資料作為物件。也就是說,如果訓練資料有100個的話,我們就要把這100個損失函式的總和作為學習的指標。

前邊的例子都是針對單個資料的損失函式,如果要求所有訓練資料的損失函式的中和,以交叉熵為例,公式如下:

看著複雜,其實就是加起來除以總數求平均。

但是如果遇到大資料,資料量會有幾百萬、幾千萬之多,這種情況下以全部資料為物件計算損失函式是不現實的。因此,我們從全部資料中選出一部分,作為全部資料的「近似」。神經網路的學習也是從訓練資料中選出一批資料(稱為mini-batch,小批量),然後對每個mini-batch進行學習。

很多人要問,為什麼要引入損失函式?而不是直接把準確率作為指標?

在神經網路的學習中,尋找最優引數(權重和偏置)時,要尋找使損失函式的值盡可能小的引數。為了找到使損失函式的值盡可能小的地方,需要計算引數的導數(確切地講是梯度),然後以這個導數為指引,逐步更新引數的值

比如從100筆訓練資料中,訓練出來了32筆,那麼準確率就是32%,你輕微的調節引數,算出來的也還是32筆,所以準確率還是32%,它的值也不會像32.0123 … %這樣連續變化,而是變為33 %、34 %這樣的不連續的、離散的值。這樣就沒辦法求導數了。

同樣的道理,為什麼我們選擇啟用函式,使用 sigmoid 函式,而不是階躍函式。

導數就是某個瞬間的變化量。

偏導數是有兩個向量。其中的乙個就是偏導數。

梯度的本意是乙個向量(向量),表示某一函式在該點處的方向導數沿著該方向取得最大值,即函式在該點處沿著該方向(此梯度的方向)變化最快,變化率最大(為該梯度的模)。

梯度就是把全部變數的偏導彙總二層的向量,稱為梯度:

例如:下面是 f(x0 +x1)=x0

2 + x1

2 的梯度圖。

機器學習的主要任務是在學習時尋找最優引數。即損失函式取得最小值時候的引數。

函式的極小值點稱為鞍點,但是當函式很複雜並且呈扁平狀的時候,學習會陷入 「區域性最優解」,無法前進的停滯期。

梯度法的叫法,嚴格來說有兩種:

下面使用數學的方式來表示梯度法:

注意:像學習率這樣的引數稱為超引數。這是一種和神經網路的引數(權重和偏置)性質不同的引數。相對於神經網路的權重引數是通過訓練資料和學習演算法自動獲得的,學習率這樣的超引數則是人工設定的。一般來說,超引數需要嘗試多個值,以便找到一種可以使學習順利進行的設定。

神經網路需要合適的權重和偏置,調整權重和偏置以便擬合訓練資料的過程稱為」學習「

第一步( mini-batch )

從訓練資料中隨機選出一部分資料,這部分資料稱為mini-batch。我們

的目標是減小mini-batch的損失函式的值。

第二步(計算梯度)

為了減小mini-batch的損失函式的值,需要求出各個權重引數的梯度。梯度表示損失函式的值減小最多的方向。

第三步(更新引數)

將權重引數沿梯度方向進行微小更新。

第四步(重複)

重複步驟1、步驟2、步驟3。

因為這裡使用的資料是隨機選擇的mini batch資料,所以又稱為隨機梯度下降法(stochastic gradient descent)。「隨機」指的是「隨機選擇的」的意思,因此,隨機梯度下降法是「對隨機選擇的資料進行的梯度下降法」。深度學習的很多框架中,隨機梯度下降法一般由乙個名為sgd的函式來實現。sgd**於隨機梯度下降法的英文名稱的首字母。

為了防止過擬合,就要在定期評價神經網路的泛化能力,就必須使用不包含在訓練資料裡的資料,定期對訓練資料和測試資料記錄識別精度,這樣每經過乙個 epoch,就會記錄訓練資料和測試資料的識別精度。

epock[i:pok 新紀元,新時代],是乙個單位,乙個epoch表示學習中所有訓練資料均被使用過一次的更新次數,比如:。比如,對於10000筆訓練資料,用大小為100 筆資料的mini-batch進行學習時,重複隨機梯度下降法100次,所有的訓練資料就都被「看過」了。此時,100次就是乙個epoch

機器學習,深度學習,神經網路,深度神經網路

先來說一下這幾者之間的關係 人工智慧包含機器學習,機器學習包含深度學習 是其中比較重要的分支 深度學習源自於人工神經網路的研究,但是並不完全等於傳統神經網路。所以深度學習可以說是在傳統神經網路基礎上的公升級。神經網路一般有輸入層 隱藏層 輸出層,一般來說隱藏層大於2的神經網路就叫做深度神經網路,深度...

深度學習 深度神經網路

神經網路是由乙個個神經元相互連線並按層次排列構成的,深度神經網路是有任意層的神經網路,這裡的深度是指層次的多,而不是神經元數量的多。有任意層,那麼就要有乙個迴圈來負責遍歷每一層進行計算。所以深度神經網路的計算形式,就必須要適應這個迴圈結構。我們先來說說神經元吧 對於多神經元神經網路,其實也是一樣的。...

神經網路深度學習 學習小記

一 sigmod function出現的必要性 為什麼不直接用stage function?在feedback時,假如說我們現在用的是stage function,直接用樓梯式的跳躍函式,我們每次做很小的引數改動時。如果說這個之前這個引數使函式值落在0 1 改變的那一塊區域,即便我們做的change...