神經網路優化演算法

2021-12-30 03:07:25 字數 2160 閱讀 2156

神經網路優化演算法,反向傳播演算法(backpropagation)和梯度下降演算法(gradient decent)調整神經網路中引數的取值。梯度下賤演算法主要用於優化單個引數的取值,而反向傳播演算法給出了乙個高效的方式在所有引數上使用梯度下降演算法,從而使神經網路模型在訓練資料上的損失函式盡可能的小。反向傳播演算法是訓練神經網路的核心演算法,它可以根據定義好的損失函式優化神經網路中的引數的取值,從而使神經網路模型在訓練資料集上的損失函式達到乙個較小值。神經網路模型中引數的優化過程直接決定了模型的質量,是神經網路非常重要的一步。

假設用θ表示神經網路中的引數,j(θ)表示在給定的引數取值下,訓練資料集上損失函式的大小,那麼整個優化過程可以抽象為尋找乙個θ,使得j(θ)最小。因為目前沒有乙個通用的方法可以對任意損失函式直接求解的最佳引數取值,所以實踐中梯度下降演算法是最常用的神經網路優化方法。梯度下降演算法會迭代更新引數θ,不斷沿著梯度的反方向讓引數朝著總損失更小的方向更新。

x軸表示引數θ的取值,y軸表示損失函式j(θ)的值,在引數θ不同時,j(θ)不同。假設當前的引數和損失值對應圖中位置小圓點位置,那麼梯度下降演算法會將引數向x軸左側移動,從而使得小圓點朝著箭頭的方向移動。引數的梯度可以通過求偏導的方式計算,對於引數θ,其梯度為?j(θ)/?θ。有了梯度,還要定義乙個學習率η(learning rate)定義每次更新的幅度。從直觀上理解,可以認為學習率定義的就是每次引數移動的幅度。通過引數的梯度和學習率,引數的新公式為:

假設要通過梯度下降演算法來優化引數x,使得損失函式j(x)=x^2的值盡可能的小。梯度下降演算法的第一步需要隨機產生乙個引數x的初始值,然後通過梯度和學習率來更新x的取值。在這個例子中,引數x的梯度為?j(x)/?x=2x,那麼使用梯度下降演算法每次對引數x的更新公式為。x(n+1)=x(n)-η(學習率)*梯度。

經過五次迭代後,引數x的值變成了0.0512,這個和引數最優值0已經比較接近了。通過這個樣例,可以類推神經網路的優化。

神經網路的優化過程可以分為兩個階段,第乙個階段先通過前向傳播演算法計算得到**值,並將**值和真實值對比得到兩者之間的差距。然後在第二個階段通過反向傳播演算法計算損失函式對每乙個引數的梯度,再根據梯度和學習率使用梯度下降演算法更新每乙個引數。

注意的是梯度下降演算法不能保證被優化的函式達到全域性最優解。

當x在小黑點處時,損失函式的偏導為0,於是引數不會再進一步更新。,由圖可知初始值是影響最優解的重要因素,收到初始值影響可能只能得到區域性最優解而不是全域性最優解。

只有當損失函式為凸函式時,梯度下降演算法才能保證達到全域性最優解。

梯度下降演算法另乙個問題就是計算時間太長。因為要在全部訓練資料上最小化損失,所以損失函式j(θ)是在所有訓練資料上的損失和。這樣在沒一輪迭代中都需要計算在全部訓練資料上的損失函式。在海量訓練資料下,要計算所有訓練資料的損失函式是非常耗時間的。為了加速訓練過程,可以使用隨機梯度下降的演算法(stochastic gradient descent).這個演算法優化的不是在全部訓練資料上的損失函式而是在每一輪迭代中,隨機優化某一條訓練資料上的損失函式 。這樣每一輪引數更新的速度就大大加快了。因為隨機梯度下降演算法每次優化的只是某一條資料上的損失函式,所以它的問題非常明顯:在某一條上的損失函式更新並不代表全部資料上損失函式更小,於是使用隨機梯度下降優化的神經網路甚至可能無法達到區域性最優解。

為了綜合梯度下降和隨機梯度下降演算法的優缺點,在實際應用中一般採用這兩個演算法的折中,每次計算小部分訓練資料的損失函式,這一小部分資料被稱之為乙個batch.通過矩陣計算,每次在乙個batch上優化神經網路的引數並不會比但個資料慢太多。另一方面,每次使用乙個batch可以大大減小收斂所需要的迭代次數,同時可以使收斂結果更加接近梯度下降的結果。

神經網路優化演算法

1.訓練誤差 在訓練資料上表現的誤差 2.泛化誤差 在任意測試資料集上的誤差期望 訓練誤差小於等於泛化誤差。由於無法估計泛化誤差,所以一味降低訓練誤差並不意味著泛化誤差會降低。機器學習模型應該降低泛化誤差。預留驗證集,判斷驗證集在模型中的表現能力 validation set 當訓練資料不夠,不能預...

深度神經網路 優化演算法

好的優化演算法能夠讓神經網路執行的更快。本篇部落格根據吳恩達老師的講解,對幾種優化演算法進行總結。將訓練集分割為小一點子集,使用梯度下降法進行訓練。該過程叫做mini batch梯度下降。設每個子集中有m個樣本 因為考慮到電腦的記憶體設定和使用方式,一般的mini batch的大小m設定為62 51...

神經網路優化

import tensorflow as tf from tensorflow.examples.tutorials.mnist import input data 載入資料集 mnist input data.read data sets mnist data one hot true 每個批次的...