機器學習中的數學筆記(一):微分學與梯度下降法

1.簡介:數學在機器學習中的應用

模型建立與選擇:對工程問題進行抽象和量化
• 涉及數學知識:綜合運用微積分,線性代數,概率
統計以及組合數學的知識
• 例如:
o 各類深度模型中的網絡結構與損失函數
o 支持向量機中的向量空間與度量
模型訓練:
• 優化算法:高效穩定的對各類損失函數求極值
• 涉及數學知識:微積分以及優化理論

機器學習基本流程:

統計/清理數據
微積分/線性代數/概率論/組合數學
優化過程,選擇參數,使損失函數min
觀察數據
選擇模型
訓練調參
應用

2.微分學基本思想和方法

2.1 微分學的核心思想:函數逼近

1.逼近是人類探討複雜問題時經常使用的一種手段,比如:
• 人均GDP:使用常數函數來逼近收入分佈函數
• 平均速度:使用線性函數來逼近實際運動軌跡
• 年化收益率:使用指數函數來逼近收益函數

2.微分學的核心思想:用熟悉且簡單的函數對複雜函數進行局部逼近

3.常用作逼近的簡單函數包括:
• 線性函數:函數的一階導數 y=kx+b
•多項式函數:泰勒級數 y=ax*x+bx+c

2.2 微積分的基礎語言:極限論

2.2.1 極限的表述方式

在這裏插入圖片描述

2.2.2無窮小

在這裏插入圖片描述

2.2.3兩邊夾定理

在這裏插入圖片描述
由兩邊夾定理推導重要極限:
在一個圓中:存在sinx<x<tanx
同時除以x:
得到sinx/x < 1 < sinx/x*1/cosx
得到cosx< sinx/x <1
同時除以cosx:
得到1<=lim sinx/x <=1
得到重要極限:

2.2.4 重要極限

在這裏插入圖片描述

2.3 微分學的基本手法:求導數

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

2.4 從線性逼近到多項式逼近:泰勒級數

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

2.5 從低維到高維:多元函數的梯度

在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述

3.梯度下降法和牛頓法

3.1 隨機梯度下降

在這裏插入圖片描述
在這裏插入圖片描述
梯度下降法:找到梯度爲0的點(極小值點、極大值點鞍點),不論值的大小。

3.2 隨機梯度下降的問題與挑戰

在這裏插入圖片描述
引入:隨機梯度下降法–解決梯度計算
梯度計算由於隨機梯度下降法的引入,我們通常將梯度下降法分爲三種類型:

  1. 批梯度下降法(GD)
    原始的梯度下降法
  2. 隨機梯度下降法(SGD)
    每次梯度計算只使用一個樣本
    • 避免在類似樣本上計算梯度造成的冗餘計算
    • 增加了跳出當前的局部最小值的潛力
    • 缺點:在逐漸縮小學習率的情況下,有與批梯度下降法類似的收斂速度
  3. 小批量隨機梯度下降法(Mini Batch SGD)
    每次梯度計算使用一個小批量樣本
    • 梯度計算比單樣本更加穩定
    • 可以很好的利用現成的高度優化的矩陣運算工具

注意:神經網絡訓練的文獻中經常把 Mini Batch SGD 稱爲 SGD

隨機梯度下降法的困難:學習率的選取

  1. 局部梯度的反方向不一定是函數整體下降的方向
    • 對圖像比較崎嶇的函數,尤其是隧道型曲面,梯度下降表現不佳。
  2. 預定學習率衰減法的問題
    • 學習率衰減法很難根據當前數據進行自適應
  3. 對不同參數採取不同的學習率的問題
    • 在數據有一定稀疏性時,希望對不同特徵採取不同的學習率
  4. 神經網絡訓練中梯度下降法容易被困在鞍點附近的問題
    • 比起局部極小值,鞍點更加可怕

3.3 隨機梯度下降的優化算法選講

爲什麼不用牛頓法?
• 牛頓法要求計算目標函數的二階導數(Hessian matrix),在高維特徵情形下這個矩陣非常巨大,計算和存儲都成問題
• 在使用小批量情形下,牛頓法對於二階導數的估計噪音太大
• 在目標函數非凸時,牛頓法更容易收到鞍點甚至最大值點的吸引動量法(Momentum)(適用於隧道型曲面)

梯度下降法在狹長的隧道型函數上表現不佳,如下圖所示:
• 函數主體緩緩向右方下降
• 在主體方向兩側各有一面高牆,導致垂直於主體方向有更大的梯度
• 梯度下降法會在隧道兩側頻繁震盪。
在這裏插入圖片描述
究竟如何選擇算法呢?
• 動量法與Nesterov的改進方法着重解決目標函數圖像崎嶇的問題
• Adagrad與Adadelta主要解決學習率更新的問題
• Adam集中了前述兩種做法的主要優點目前爲止 Adam 可能是幾種算法中綜合表現最好的

動量法:
在這裏插入圖片描述
Nesterov的改進方法:
在這裏插入圖片描述

==Adagrad ==(自動調整學習率,適用於稀疏數據)
梯度下降法在每一步對每一個參數使用相同的學習率,這種一刀切的做法不能有效的利用每一個數據集自身的特點。
Adagrad 是一種自動調整學習率的方法:
• 隨着模型的訓練,學習率自動衰減
• 對於更新頻繁的參數,採取較小的學習率
• 對於更新不頻繁的參數,採取較大的學習率
在這裏插入圖片描述
在這裏插入圖片描述
注意:Adadelta 的第一個版本也叫做 RMSprop,是Geoff Hinton獨立於 Adadelta提出來的。

Adam:目前最好的算法
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章