深度學習中的數值計算


  • 本文首發自公眾號:RAIS

前言

本系列文章為 《Deep Learning》 讀書筆記,可以參看原書一起閱讀,效果更佳。

數值計算

機器學習算法需要大量的數字計算,並且這些計算包含有一些迭代擬合的過程,在這個計算過程中,由於計算機的局限,無法完全精確的表示,因此總是存在誤差的,小的誤差經過迭代次數的增多,或者多個誤差的疊加,甚至會使得算法不可用,系統失效。

上溢和下溢

  • 下溢:在現有的精度無法表示那么小的數的時候,接近零的數四舍五入為零時,會發生下溢。
  • 上溢:在現有的精度無法表示那么大的數的時候,數過大被近似為無限大的時候,會發生上溢。

解決辦法:softmax 函數,也稱 歸一化指數函數,是邏輯函數的一種推廣,將任意實數的 K 維向量映射到另外一個 K 維空間內,使得每一個元素都在 (0, 1) 之間。這里的 歸一化 與之前在房價預測中提到的 標准化 不是一個概念(標准化對數據進行某種非線性變換,使其服從某一種分布,歸一化對數值的范圍進行縮放,不改變數據分布的一種線性變換)。

\[softmax(x)_i=\frac{e^{x_i}}{\sum_{j=1}^ne^{x_j}} \]

病態條件(poor conditioning)

這個詞我覺得翻譯不准確,但是大家都喜歡這么叫暫且先這么叫吧。一般來說這個概念針對的是方程組或矩陣,微小的擾動讓方程組的解發生巨大的變化,這樣的方程組稱為病態方程組,他們的系數組成的矩陣叫病態矩陣。

與之相關的還有一個概念叫 條件數:函數相對於輸入的微小變化而變化的程度,可以理解為一種敏感度。計算方法是求矩陣極大和極小特征值之比。

\[\max_{i,j}=|\frac{\lambda_i}{\lambda_j}| \]

基於梯度的優化方法

這個概念要分幾步去理解。對於深度學習算法,往往會定義出很多函數,針對具體的問題,我們往往需要讓某些函數的函數值盡可能的小或大,求最大值極值,我們往往求導(針對多個變量,這里的求導包括求偏導和方向導數),也會求梯度。梯度下降 指的是往梯度方向相反方向移動一個小距離來減小函數值的方法。這里還有極小值、極大值、駐點、最大值、最小值等概念,不再贅述。

雅可比矩陣(Jacobian)

在向量分析中,雅可比矩陣是一階偏導數以一定方式排列成的矩陣,它的重要性是體現了一個可微分方程與給出點的最優線性逼近。

\[J_{i,j}=\frac{\partial}{\partial x_j}f(x)_i \]

海森矩陣(Hessian)

函數有多維輸入時,二維導數有很多,將其合為一個矩陣,就是海森矩陣,等價於梯度的雅可比矩陣。

\[H(f)(x)_{i,j}=\frac{\partial^2}{\partial x_i\partial x_j}f(x)=H(f)(x)_{j,i} \]

一個點在每個方向上的二階導數是不同的,海森的條件數衡量這些二階導數的變化范圍,當海森的條件數變得很差時,梯度下降法也會表現得很差,在 牛頓法 中,我們用海森矩陣指導搜索,來解決上面這個問題。

  • 二階導數測試:一階導數等於 0,二階導數大於零是一個極小值點;一階導數等於 0,二階導數小於零是一個極大值。
  • 僅使用梯度信息的優化算法稱為 一階優化算法,使用海森矩陣的優化算法稱為 二階優化算法

總結

這一部分的內容涉及東西比較多,書中的內容還包括一些推導和解釋,看上文看的不是很清楚的請閱讀原書,那就不是我的筆力所能講清楚的了。

到此本書中關於應用數學相關的內容就結束了,想要放棄了嗎?

  • 本文首發自公眾號:RAIS


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM