《機器學習》神經網路演算法分析

2021-09-12 07:32:56 字數 2013 閱讀 9557

神經網路的前向傳播

不得不承認,假設函式的格式很大程度上決定了我們所獲得影象的樣式,對於線性回歸是與樣本資料盡可能重合的那條直線,而在邏輯回歸中就是所謂的決策邊界。

我們觀察邏輯回歸中的sigmoid函式

不難發現對於theta*x這一項的存在,若是只輸入單一的一次特徵值,你只能得到一條為直線的決策邊界。

但神經網路的出現,恰恰解決了這個問題,使得得到非線性邊界變得十分方便。

由於神經網路用於處理分類問題,最後的輸出結果,一般是乙個0~1的值(單一分類)或者是乙個向量(多種分類)。如下是乙個樣本特徵下的h_θ_x的處理結果。

在matlab中通過** [value,index]=max(a) 可以讀出每列元素的最大值和對應索引(索引值代表樣本型別)。

代價函式

對於多元分類,因為最後的輸出結果是乙個向量而非邏輯單元中的乙個結果。

所以對於乙個k元分類,代價函式在訓練集的乙個樣本中要累計k個單元的全部誤差。所以代價函式如下:

i=1開始是因為正則化不涉及偏置單元係數。

反向傳播

在實現梯度下降演算法中,需要對代價函式進行求導操作

我們通過反向傳播演算法實現對於每個θ係數的求導。

步驟如下:

如上圖所示,對於乙個4層神經網路,經過一次正向傳播後,我們將最後得到的結果與實際值做差,作為反向傳播的新的輸入量。(反向傳播就是正向傳播的映象過程。)

δ(4)作為新的輸入變數進過一次原權重不變的向量相乘過程

還要再進行一次運算才能得到新的δ(3)

因為

為了便於計算

傳播終止於δ(2),因為δ可以理解為是乙個與實際結果的偏差值,而作為第一層輸入的是特徵值,並沒有偏差。

導數與δ關係如下

以下是實現梯度計算的**思路

最後兩項中j=0 不新增正則項。

θ初始化問題

又因為所以每列的θ值最終都相同。

**實現

**實現-反向傳播

第三層輸出單元為k,則y的結果亦對應乙個k元向量 ,y是乙個k x m的矩陣,y=

我們求出δ(3)向量,亦是乙個k x m的矩陣。

因為θ(2)的大小為 (p+1)x k,因此θδ大小為(p+1)x m,且a(2)大小也為(p+1)x m

delta應減去首行

delta大小為p x m

我們利用for迴圈 每次取出乙個樣本值。設取出的第乙個樣本值為

利用for迴圈對這個θ(2)矩陣不斷累加。可得所求d

機器學習 神經網路演算法 一

1.背景 1.1 以人腦中的神經網路為啟發,歷史上出現過很多不同版本 1.2 最著名的演算法是1980年的 backpropagation 2.多層向前神經網路 multilayer feed forward neural network 2.1 backpropagation被使用在多層向前神經網...

機器學習 神經網路

神經網路中最基本的成分是 神經元 模型,在生物神經網路中,每個神經元與其他神經元相連,當他 興奮 時,就會向相連的神經元傳送化學物質,從而改變這些神經元類的電位 如果某神經元的電位超過乙個 閾值 那麼他就會被啟用。將上述描述當成乙個數學模型 m p神經元模型,神經元接收來自n個神經元傳遞過來的輸入訊...

機器學習 神經網路

序列模型屬於通用模型的一種,因為很常見,所以這裡單獨列出來進行介紹,這種模型各層之間是依次順序的線性關係,在第k層合第k 1層之間可以加上各種元素來構造神經網路這些元素可以通過乙個列表來制定,然後作為引數傳遞給序列模型來生成相應的模型。01 keras model sequential.py fro...