微積分、線性代數、機率論,這裏有份超詳細的ML數學路線圖

大學時期學的數學如今可能派上用場了,機器學習背後的原理涉及許多數學知識。深刻挖掘一下,你會發現,線性代數、微積分和機率論等都和機器學習背後的算法息息相關。
 
機器學習算法背後的數學知識你瞭解嗎?在構建模型的過程當中,若是想超越其基準性能,那麼熟悉基本細節可能會大有幫助,尤爲是在想要打破 SOTA 性能時,尤爲如此。
機器學習背後的原理每每涉及高等數學。例如,隨機梯度降低算法創建在多變量微積分和機率論的基礎上。所以掌握基礎的數學理論對於理解機器學習模型很重要。但若是你是沒有數學基礎的初學者,這裏有一份學習路線圖,帶你從零開始深刻理解神經網絡的數學原理。
大多數機器學習都創建在三種數學理論的基礎上:線性代數、微積分和機率論,其中機率論的理論又基於線性代數和微積分
微積分
微積分包括函數的微分和積分。神經網絡本質上是一個可微函數,所以微積分是訓練神經網絡的基本工具。
首先,函數的導數定義以下
在極限定理中,這也是點 x 處切線的斜率。下圖說明了這個概念:
 
將函數的導數可視化。
微分能夠用來優化函數:導數在局部極大值和極小值處爲零。(也有例外,例如:f(x) = x³,x=0),導數爲零的點稱爲臨界點。臨界點是最小值仍是最大值能夠經過查看二階導數來肯定:
求導存在一些基本法則,其中最重要的多是鏈式求導法則:
上式告訴咱們如何計算複合函數的導數。
微分和積分互爲逆運算,這是由於:
它適用於任何可積函數 f(x)。函數的積分也能夠看做是曲線下的有符號面積。例如:
由於當函數是負的時候,這裏的面積也有一個負號:
 
在 -π到π的區間內,正弦函數曲線下的有符號面積。
推薦一些比較好的學習資源,麻省理工學院的單變量微積分課程和 Gilbert Strang 的教科書。
  • MIT 課程連接:https://www.youtube.com/playlist?list=PL590CCC2BC5AF3BC1
  • 教科書連接:https://ocw.mit.edu/resources/res-18-001-calculus-online-textbook-spring-2005/textbook/
 
線性代數
神經網絡本質上是函數,它是用微積分工具訓練的。然而,又涉及線性代數,如矩陣乘法。線性代數是一門涉及機器學習許多方面的龐大學科,所以這將是一個重要的部分。
向量空間
爲了更好地理解線性代數,建議從向量空間開始。首先介紹一個特例,把平面上的每一個點看做一個元組:
這些本質上是從零指向(x₁,x2)的向量。向量之間能夠相加,向量也可與標量相乘:
這是向量空間的原型模型。通常來講,若是能夠將向量相加並將向量與實數相乘,那麼這組向量 V 就是實數上的向量空間,那麼如下屬性成立:
這些保證了向量能夠相加和縮放。當考慮向量空間時,若是你在內心把它們建模爲 R^2 會頗有幫助。
範數空間
若是你很瞭解向量空間,下一步就是理解怎樣測量向量的大小。在默認狀況下,向量空間自己並無提供這樣的工具。但咱們有:
 
這是一種特殊的範數,一般,若是存在函數,則向量空間 V 是範數的:
 
範數爲:
但這是一個簡單而基本的概念,有不少範數存在,但最重要的是 p 範數家族:
當 p=2 時,咱們獲得上述特例以及最高範數。
有時,例如對於 p = 2,範數來自所謂的內積,即雙線性函數。
所以:
 
具備內積的向量空間稱爲內積空間。經典的是歐幾里得積。
每個內積均可以變成一個範數。
當兩個向量的內積爲零時,這兩個向量彼此正交。
基正交 / 正交基
雖然向量空間是無窮的(在本文的例子中),你能夠找到一個有限的向量集,用來表示空間中的全部向量。例如,在平面上,咱們有:
其中 e1,e2 函數以下
這是基和正交基的一個特例。通常來講,基(basis)是向量的最小集合:
它們的線性組合跨越了向量空間:
任何向量空間都存在一個基(它可能不是一個有限集,但這裏沒必要關心)。毫無疑問,在討論線性空間時,基大大簡化了問題。
當基中的向量相互正交時,咱們稱之爲正交基(orthogonal basis)。若是每一個正交向量的範數在正交基礎上均爲 1,則咱們說它是正交的。
線性變換
與向量空間很是相關的是線性變換(linear transformation)。若是你以前瞭解神經網絡,就應該知道其基本的構建基塊是如下形式的層:
 
其中,A 爲矩陣,b 和 x 爲向量,σ爲 sigmoid 函數(或是其餘激活函數)。Ax 是線性變換的一部分,則函數:
是向量空間 V 和 W 之間的線性變換
對於 V 中的全部 x、y 值都成立,並且都是實數。
矩陣及其運算
矩陣最重要的運算是矩陣乘積。一般,矩陣 A、B 以及乘積 AB 表示爲:
下圖演示了計算過程:
 
矩陣乘法是線性變換的組合。若是你想了解更多,這裏有一篇很棒的文章: https://towardsdatascience.com/why-is-linear-algebra-taught-so-badly-5c215710ca2c
決定因素
行列式是線性代數中最具挑戰性的概念之一。要了解這一律念,請觀看下面的視頻。
 
 
總而言之,矩陣的行列式描述了在相應的線性變換下,對象的體積是如何縮放的。若是變換改變方向,行列式的符號爲負。
特徵值、特徵向量和矩陣分解
標準的線性代數課程一般以特徵值 / 特徵向量和一些特殊的矩陣分解(如奇異值分解)結束。假設咱們有一個矩陣 A,而且若是有一個向量 x(稱爲特徵向量),那麼λ就是矩陣 A 的特徵值:
換句話說,由 A 表示的線性變換對向量 x 進行一個λ縮放,這個概念在線性代數中起着重要做用(實際上在普遍使用線性代數的每一個領域都是如此)。
你須要熟悉矩陣分解,從計算的角度來看,對角矩陣是最好的選擇,若是一個線性變換有一個對角矩陣,那麼計算它在任意向量上的值是很簡單的。
 
大多數特殊形式的目的是將矩陣 A 分解爲矩陣乘積,矩陣分解後最好有一個是對角矩陣。奇異值分解(SVD),是指有一個特殊的矩陣 U 和一個對角矩陣Σ,使得:
U 和 V 是酉矩陣,是一個特殊的矩陣族。奇異值分解(SVD)也被用來進行主成分分析,這是最簡單和最著名的降維方法之一。
線性代數有許多教授方法,本文列出的學習路徑是受 Sheldon Axler 教材《Linear Algebra Done Right》的啓發。對於在線講座,MIT 的網絡公開課值得推薦。
  • Sheldon Axler 的教材地址:http://linear.axler.net/
  • MIT 的網絡公開課地址:https://www.youtube.com/playlist?list=PL49CF3715CB9EF31D
多變量運算
多變量運算中將線性代數和微積分結合在一塊兒,爲訓練神經網絡的主要工具奠基了基礎。從數學上講,神經網絡只是多個變量的函數(儘管變量數量可達數百萬)。
與單變量運算類似,兩個重點是微分和積分。假設存在映射:
將向量映射到實數。在二維(即 n=2)的狀況下,能夠將其圖象想象爲一個曲面(因爲人類生活在三維世界,所以很難將具備兩個以上變量的函數可視化)。
 
兩變量的函數圖像。
多變量微分
在單變量中,導數是切線的斜率。那麼在此應該如何定義切線呢?表面上的一個點處不僅有一條切線,而是多條。這些切線中有兩條特殊的切線:分別爲平行於 x-z 平面的切線和平行於 y-z 平面的切線。
這兩條切線的斜率由偏導數決定,以下:
這些特殊方向的切線橫跨切平面。
 
切平面。
梯度
另外一個特殊的方向是梯度方向:
 
 
梯度始終指向增長最快的方向,所以沿這個方向前進一小步,高度上的增長相對於其餘方向是最大的。這就是梯度降低的基本思想,它是讓函數最大化的算法。其步驟以下:
  1. 計算當前位置 x_0 處的梯度。
  2. 在梯度方向上走一小步便可到達點 x_1(步長稱爲學習率)。
  3. 返回步驟 1,重複該過程,直至收斂爲止。
 
固然,這種算法也存在一些缺陷,多年來這些缺陷也獲得了一些改善。基於現代梯度降低的優化器採用了許多技巧,例如自適應步長、動量等。
在實踐中計算梯度是一件很困難的事,函數常常由其餘函數的組成部分構成。例如,線性層:
其中 A 是矩陣,b 和 x 是矢量,σ是 sigmoid 函數(固然還有其餘激活函數)。如何計算梯度?
寫成以下的矢量 - 標量函數:
g 的梯度由矩陣定義,該矩陣的第 k 行是第 k 個份量的梯度
該矩陣被稱爲 g 的總導數。在該例中
包含兩個函數
定義中用到了單變量 sigmoid 份量。將函數進一步分解爲從 n 維向量空間映射到實數空間的 m 個函數:
 
其中:
若是計算總導數,則會看到:
 
這是多元函數的鏈式規則,具備通用性。沒有它就沒有簡單的方法來計算神經網絡的梯度。而神經網絡是許多函數的組合。
高階導數
與單變量的狀況相似,梯度和導數在肯定空間中的給定點是局部極小值仍是極大值方面(或者二者都不是)也起做用。
舉一個具體的例子,訓練神經網絡等效於最小化參數訓練數據上的損失函數。這就是找到最佳參數配置 w 的目的:
 
其中:
 
分別是神經網絡和損失函數。
對於 n 個變量的通用可微分矢量 - 標量函數,存在 n^2 個二階導數。造成 Hessian 矩陣。
在多變量的狀況下,Hessian 的行列式充當二階導數的角色。相似地,它還能夠用來判斷臨界點(即全部導數均爲零的狀況)是最小值、最大值、鞍點中的哪種。
關於多元微積分有不少很棒的在線課程。課程地址:
  • https://www.youtube.com/playlist?list=PLSQl0a2vh4HC5feHa6Rc5c0wbRTx56nF7,
  • https://www.youtube.com/playlist?list=PL4C4C8A7D06566F38。
 
如今咱們準備開始最後一個主題:機率論!
機率論
機率論是將機率數學化的學科,它是全部科學領域的理論基礎。
假設擲硬幣,有 50%的機率(或 0.5 的機率)爲正面。重複實驗 10 次後,獲得多少個正面?若是你回答了 5,你就錯了。正面機率爲 0.5 並不能保證每兩次投擲都有一面是正面。相反,這意味着若是你重複實驗 n 次,其中 n 是一個很是大的數字,那麼正面的數量將很是接近 n/2。
爲了更好的掌握機率論,推薦一篇文章:https://towardsdatascience.com/the-mathematical-foundations-of-probability-beb8d8426651
除了基礎知識以外,你還須要瞭解一些高階知識,首先是指望值和熵。
指望值
假設你和朋友玩遊戲。你擲一個經典的六邊形骰子,若是結果是 1 或 2,你將贏得 300 美圓。不然,你就輸 200 美圓。若是你玩這個遊戲的時間夠長,你每輪的平均收入是多少?你應該玩這個遊戲嗎?
那麼,你有 1/3 的機率贏 300 美圓,2/3 的機率輸 200 美圓。也就是說,若是 X 是編碼擲骰子結果的隨機變量,那麼:
一般來講,當用於離散型隨機變量時,指望值定義以下:
當用於實值連續型隨機變量時,定義以下
 
在機器學習中,訓練神經網絡所用的損失函數在某種程度上是指望值。
大數定律
人們經常錯誤地把某些現象歸因於大數定律。例如,那些連輸的賭徒相信,根據大數定律,他們很快就會贏。這是徹底錯誤的。讓咱們看看這究竟是什麼。假如:
 
是表明同一實驗中獨立重複的隨機變量 (例如,擲骰子或扔硬幣)。
本質上,大數定律指出:
 
 
從長遠來看,結果平均值等於指望值。
給出的一種解釋是,若是一個隨機事件重複了不少次,則單個結果可能可有可無。所以,若是你在賭場玩一個指望值爲負的遊戲,那麼偶爾也會贏。但大數定律意味着你會賠錢。
此外,隨機梯度降低中 LLN 很重要。
信息論
讓咱們玩個遊戲。玩家心理想着 1-1024 的任意數字,而後你來猜。你能夠問問題,但你的目標是使用盡量少的問題。你須要多少問題?
若是你玩得很聰明,則可使用二分搜索方法處理問題。首先你可能會問:這個數字在 1 和 512 之間嗎?這樣一來,搜索空間就減小了一半。使用此策略,你能夠在
 
 
問題中找出答案。
可是若是在選數字時沒有使用均勻分佈呢?例如,能夠用泊松分佈。
 
泊松分佈的機率質量函數。圖源:https://en.wikipedia.org/wiki/Poisson_distribution
使用泊松分佈可能須要較少的問題,由於分佈每每集中在特定的點上(這取決於參數)。
在極端狀況下,當分佈集中在一個數字上時,你不須要任何問題來猜它。通常來講,問題的數量取決於分佈所攜帶的信息。均勻分佈包含的信息量最少,而奇異分佈是純信息。
熵是一種量化的方法。當用於離散隨機變量時,定義以下:
 
當用於連續實值變量,定義以下:
 
若是你之前使用過度類模型,可能會遇到交叉熵損失,定義以下:
 
 
其中 P 是真實值(集中到單個類的分佈),而 P^ 表示類預測。這衡量了預測與實際狀況相比有多少信息。當預測相匹配時,交叉熵損失爲零。
另外一個經常使用量是 Kullback-Leibler 散度(KL 散度),定義爲:
其中 P 和 Q 是兩個機率分佈。這本質上是交叉熵減去熵,熵能夠被認爲是對兩個分佈的不一樣程度的量化。例如,在訓練生成式對抗網絡時,這是頗有用的。最小化 KL 散度能夠保證兩個分佈是類似的。
在這裏推薦兩本書:
  • Pattern Recognition and Machine Learning by Christopher Bishop
  • The Elements of Statistical Learning by Trevor Hastie, Robert Tibshirani, and Jerome Friedman
 
基於此,咱們回顧了理解神經網絡所必需的數學知識。可是要真正理解神經網絡是如何工做的,你還必須學習一些優化和數理統計。這些科目創建在數學的基礎之上,在這就不進行介紹了。
相關文章
相關標籤/搜索