如果大家有過高數的學習經曆,就一定對梯度有過一定的學習。接下來,人郵君帶着大家簡單複習一下梯度的概念和意義。
梯度(gradient) 的概念在空間的每一個點都可以确定無限多個方向,一個多元函數在某個點也必然有無限多個方向。因此,導數在這無限多個方向導數中最大的一個(它直接反映了函數在這個點的變化率的數量級)等于多少?它是沿什麼方向達到的?描述這個最大方向導數及其所沿方向的矢量,就是我們所說的梯度。
梯度是場論裡的一個基本概念。所謂“場”, 它表示空間區域上某種物理量的一種分布。從數學上看,這種分布常常表示為 2 上的一種數值函數或向量函數。能表示為數值函數u=u (x,y,z) 的場,稱為數量場,如溫度場、密度場等。
梯度的本意是一個向量(矢量), 表示某一函數在該點處的方向導數沿着該方向取得最大值,即函數在該點處沿着該方向(此梯度的方向)變化最快,變化率最大(為該梯度的模)。
梯度是雅可比矩陣的一種特殊形式,當m=1時函數的雅可比矩陣就是梯度,這個概念原是為場論設定的,任何場都可以用來理解梯度,後來被引用到數學中用來指明函數在指定點的變量率最快的方向和大小,是一種變化效率的數字抽象。
舉一個降維的例子,在修建一個通向山頂的纜車時,纜車的路線怎麼修建效率最高呢?從山頂到山底一條直線中間可能有山峰阻攔,一昧的修高山頂的到達站不僅不安全還會增加施工效率,在調整修建纜車的角度時的角度變化率就是梯度,角度太低了通不到山頂這個梯度方向角度就是零,方向導數就也是零。
參考資料:[圖文]方向梯度與導數 - 百度文庫
梯度的物理及數學意義我們可以理解物理中梯度是一個用來做用空間中純量場的一個數學運算,可以用來了解純量場随空間的變化。而數學中單從梯度的下降算法而言能夠幫我們找到函數的極小值點。
梯度的使用(之一):梯度下降類比之前的修纜車的概念,從山頂向山底修纜車就是一個梯度下降的基本過程。修建梯度的山峰就是一個可微分的函數。目标是最有效率的修建到山底的纜車上車點(函數的最小值)最快修建的方式就是找到當前位置最陡峭的方向,沿着此方向向下探索,對應到函數中,就是找到給定點的梯度 ,沿着梯度相反的方向,就能讓函數值下降的最快!因為梯度的方向就是函數之變化最快的方向。在《百面機器學習》中進行很詳細的介紹。
梯度下降算法,圖源《深度學習原理與實踐》
這種算法在機器學習中,優化問題的目标函數通常可以表示成:
經典的梯度下降法采用所有訓練數據的平均損失來近似目标函數,即
因此經典的梯度下降法在每次對模型參數進行更新時,需要遍曆所有的訓練數據。當M很大時,需要很大的計算量,耗費很長的計算時間,在實際應用中基本不可行。
為了解決該問題,随機梯度下降法,用單個樣本的損失來近似平均損失,即
因此,随機梯度下降法用單個訓練數據即可對模型參數進行一次更新,大大加快了收斂速率。該方法也非常适用于數據源源不斷到來的在線更新場景。
為了降低随機梯度的方差,從而使得叠代算法更加穩定,也為了充分利用高度優化的矩陣運算操作,在實際應用中我們會同時處理若幹訓練數據,該方法被稱為小批量梯度下降法(Mini- Batch Gradient Descent)。假設需要同時處理m個訓練數據
則目标函數及其梯度為
對于小批量梯度下降法的使用,有以下三點需要注意的地方。
(1)如何選取參數m?在不同的應用中,最優的m通常會不一樣需要通過調參選取。一般m取2的幂次時能充分利用矩陣運算操作,所以可以在2的幂次中挑選最優的取值,例32、64、128、256等。
(2)如何挑選m個訓練數據?為了避免數據的特定順序給算法收斂帶來的影響,一般會在每次遍曆訓練數據之前,先對所有的數據進行随機排序,然後在每次叠代時按順序挑選m個訓練數據直至遍曆完所有的數據。
(3) 如何選取學習速率a? 為了加快收斂速率,同時提高求解精度,通常會采用衰減學習速率的方案:一開始算法采用較大的學習速率,當誤差曲線進入平台期後,減小學習速率做更精細的調整。最優的學習速率方案也通常需要調參才能得到。
綜上,通常采用小批量梯度下降法解決訓練數據量過大的問題。每次更新模型參數時,隻需要處理m個訓練數據即可,其中m是一個遠小于總數據量M的常數,這樣能夠大大加快訓練過程。
以上就是梯度的基本概念,和一個基于梯度的實際優化的算法案例。梯度的理解對于機器學習尤其深度學習來說是至關重要的。更多梯度詳解的書籍可以參閱花書《深度學習》中的第七章。
深度學習(異步圖書出品)
及《百面機器學習》中的第七章部分。
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!