深度學習閱讀筆記
前言
目前主要有兩種度量模型深度的方式。第一種方式是基於評估架構所需執行的順序指令的數目。假設我們將模型表示為給定輸入后,計算對應輸出的流程圖,則可以將這張流程圖中的最長路徑視為模型的深度。另一種是在深度概率模型中使用的方法,它不是將計算圖的深度視為模型深度,而是將描述概念彼此如何關聯的圖的深度視為模型深度。在這種情況下,計算每個概念表示的計算流程圖的深度可能比概念本身的圖更深。這是因為系統對較簡單概念的理解在給出更復雜概念的信息后可以進一步精細化
目前大多數神經網絡是基於一個稱為整流線性單元(rectified linear unit)的神經單元模型。在 20 世紀 80 年代,神經網絡研究的第二次浪潮在很大程度上是伴隨一個被稱為聯結主義(connectionism)或並行分布處理 ( parallel distributed processing) 潮流而出現的。聯結主義的中心思想是,當網絡將大量簡單的計算單元連接在一起時可以實現智能行為
聯結主義中的幾個關鍵概念在今天的深度學習中仍然是非常重要的
其中一個概念是分布式表示(distributed representation)。其思想是:系統的每一個輸入都應該由多個特征表示,並且每一個特征都應該參與到多個可能輸入的表示。即:可以將某一個具體的輸入對象的各個組成元素抽象為多個特征,然后這多個特征就能夠很好的描述該物體的特點或性質
聯結主義潮流的另一個重要成就是反向傳播在訓練具有內部表示的深度神經網絡中的成功使用以及反向傳播算法的普及
線性代數基礎
轉置
乘積
矩陣乘積擁有的性質
分配律
結合律
矩陣乘積不滿足交換律
兩個相同維數的向量 x 和 y 的 點積(dot product)可看作是矩陣乘積 \(x^{T}y\)
兩個向量的點積滿足交換律
矩陣乘積的轉置
由兩個向量點積的結果是標量,標量轉置是自身,可以得到
單位矩陣(identity matrix): 任意向量和單位矩陣相乘,都不會改變。將保持 n 維向量不變的單位矩陣記作 \(I_{n}\)。形式上,\(I_{n} \in R^{n×n}\)
單位矩陣的結構很簡單:所有沿主對角線的元素都是 1,而所有其他位置的元素都是0
矩陣 \(A\) 的 矩陣逆(matrix inversion)記作 \(A^{−1}\),定義為
等式 \(Ax = b\),求解可得 \(x = A^{-1}b\)
如果 \(A^{-1}\) 存在,那么該方程對於每一個向量 \(b\) 恰好存在一個解。但是,對於方程組而言,對於向量 \(b\) 的某些值,有可能不存在解,或者存在無限多個解。存在多於一個解但是少於無限多個解的情況是不可能發生的。因為如果 \(x,y\) 都是解,那么 \(z = ax + (1-a)y\) 也是一個解
一組向量的 生成子空間(span)是原始向量線性組合后所能抵達的點的集合。確定 \(Ax = b\) 是否有解相當於確定向量 \(b\) 是否在 \(A\) 列向量的生成子空間中。這個特殊的生成子空間被稱為 \(A\) 的 列空間(column space)或者 \(A\) 的 值域(range)
\(n\) 為 \(A\) 列空間維度,\(m\) 為 \(b\) 的維度,使方程對每一點都有解的必要條件是 \(n \ge m\) 。這不是一個充分條件,因為有些列向量可能是冗余的。這種冗余被稱為 線性相關(linear dependence)。如果一組向量中的任意一個向量都不能表示成其他向量的線性組合,那么這組向量稱為 線性無關(linearly independent)。所以,如果一個矩陣的列空間涵蓋整個 \(R^{m}\) ,那么該矩陣必須包含至少一組 \(m\) 個線性無關的向量,其中 \(b \in R^{m}\) 。這是對於任意 \(b\) 的取值都有解的充分必要條件
不存在一個 \(m\) 維向量的集合具有多於 \(m\) 個彼此線性不相關的列向量,但是一個有多於 \(m\) 個列向量的矩陣有可能擁有不止一個大小為 \(m\) 的線性無關向量集
要想使矩陣可逆,需要保證式子 \(Ax = b\) 對於每一個 \(b\) 值至多由一個解。為此,需要確保該矩陣至多有 m 個列向量。否則,該方程會有不止一個解
要想使用 \(x = A^{-1}b\) 求得 \(x\) ,必須保證一個 \(A\) 是一個方陣(square),即 m = n,並且所有列向量都是線性無關的。一個列向量線性相關的方陣被稱為 奇異的(singular)。如果矩陣 \(A\) 不是一個方陣或者是一個奇異的方陣,該方程仍然可能有解。但是不能使用矩陣逆去求解
對於方陣而言,它的左逆和右逆是相等的
在機器學習中,經常使用被稱為 范數(norm)的函數衡量向量大小。形式上,\(L^{p}\) 范數定義如下
其中 \(p \in R, p \ge 1\)
范數是將向量映射到非負值的函數。直觀上來說,向量 \(x\) 的范數衡量從原點到點 \(x\) 的距離。范數是滿足下列性質的任意函數
- \(f(x) = 0 ⇒ x = 0\)
- \(f(x + y) \le f(x) + f(y) ( 三角不等式(triangle inequality))\)
- \(\forall \alpha \in R, f(\alpha x) = |\alpha|f(x)\)
\(L^{2}\) 范數被稱為 歐幾里得范數(Euclidean norm)。它表示從原點出發到向量 \(x\) 確定的點的歐幾里得距離。平方 \(L^{2}\) 范數也經常用來衡量向量的大小,可以簡單地通過點積 \(x^{⊤}x\) 計算
平方 \(L^{2}\) 范數在數學和計算上都比 \(L^{2}\) 范數本身更方便。但是在很多情況下,平方 \(L^{2}\) 范數也可能不受歡迎,因為它在原點附近增長得十分緩慢。在某些機器學習應用中,區分恰好是零的元素和非零但值很小的元素是很重要的。在這些情況下,我們轉而使用在各個位置斜率相同,同時保持簡單的數學形式的函數:\(L^{1}\) 范數
當機器學習問題中零和非零元素之間的差異非常重要時,通常會使用 \(L^{1}\) 范數。每當 \(x\) 中某個元素從 0 增加 \(\epsilon\) ,對應的 \(L^{1}\) 范數也會增加 $\epsilon $
另外一個經常在機器學習中出現的范數是 \(L^{\infty}\) 范數,也被稱為 最大范數(max norm)。這個范數表示向量中具有最大幅值的元素的絕對值
有時候我們可能也希望衡量矩陣的大小。在深度學習中,最常見的做法是使用 Frobenius 范數(Frobenius norm)
兩個向量的 點積(dot product)可以用范數來表示,如
其中,\(\theta\) 為向量 \(x, y\) 之間的夾角
對角矩陣(diagonal matrix)只在主對角線上含有非零元素,其他位置都是零。用 \(diag(v)\) 表示一個對角元素由向量 \(v\) 中元素給定的對角方陣。對角方陣的逆矩陣存在,當且僅當對角元素都是非零值,在這種情況下,\(diag(v)^{−1} = diag([\frac{1}{v1}, . . . , \frac{1}{vn}]^T)\)
不是所有的對角矩陣都是方陣。長方形的矩陣也有可能是對角矩陣。非方陣的對角矩陣沒有逆矩陣,但我們仍然可以高效地計算它們的乘法。對於一個長方形對角矩陣 \(D\) 而言,乘法 \(Dx\) 會涉及到 \(x\) 中每個元素的縮放,如果 \(D\) 是瘦長型矩陣,那么在縮放后的末尾添加一些零;如果 \(D\) 是胖寬型矩陣,那么在縮放后去掉最后一些元素
對稱(symmetric)矩陣是轉置和自己相等的矩陣,即 \(A = A^T\)
單位向量(unit vector)是具有 單位范數(unit norm)的向量,如\(||x||_2 = 1\)
如果 \(x^Ty = 0\),那么向量 \(x\) 和向量 \(y\) 互相 正交(orthogonal)。如果兩個向量都有非零范數,那么這兩個向量之間的夾角是 90 度。在 \(R^n\) 中,至多有 \(n\) 個范數非零向量互相正交。如果這些向量不僅互相正交,並且范數都為 1,那么我們稱它們是 標准正交(orthonormal)
正交矩陣(orthogonal matrix)是指行向量和列向量是分別標准正交的方陣:\(A^TA = AA^T = I\),這意味着 \(A^{-1} = A^T\)
特征分解(eigendecomposition)是使用最廣的矩陣分解之一,即將矩陣分解成一組特征向量和特征值。方陣 \(A\) 的 特征向量(eigenvector)是指與 \(A\) 相乘后相當於對該向量進行縮放(\(Av = λv\))的非零向量 \(v\)。標量 \(λ\) 被稱為這個特征向量對應的 特征值(eigenvalue)
如果 \(v\) 是 \(A\) 的特征向量,那么任何縮放后的向量 \(sv (s \in R,s \ne 0)\) 也是 A 的特征向量。此外,\(sv\) 和 \(v\) 有相同的特征值
假設矩陣 \(A\) 有 \(n\) 個線性無關的特征向量 \({v(1), . . . , v(n)}\),對應着特征值\({λ1, . . . , λn}\)。我們將特征向量連接成一個矩陣,使得每一列是一個特征向量:\(V = [v^{(1)}, . . . , v^{(n)}]\)。 類似地,我們也可以將特征值連接成一個向量 \(λ = [λ_1, . . . , λ_n]^T\)。因此 \(A\) 的 特征分解(eigendecomposition)可以記作
每個實對稱矩陣都可以分解成實特征向量和實特征值
其中, \(Q\) 是 \(A\) 的特征向量組成的正交矩陣,\(Λ\) 是對角矩陣。特征值 \(Λ_{i,i}\) 對應的特征向量是矩陣 \(Q\) 的第i列,記作 \(Q_{:,i}\)
因為 \(Q\) 是正交矩陣,我們可以將 \(A\) 看作沿方向 \(v^{(i)}\) 延展 \(λ_i\) 倍的空間
任意一個實對稱矩陣 A 都有特征分解,但是特征分解可能並不唯一。如果兩個或多個特征向量擁有相同的特征值,那么在由這些特征向量產生的生成子空間中,任意一組正交向量都是該特征值對應的特征向量
矩陣是奇異的當且僅當含有零特征值
所有特征值都是正數的矩陣被稱為 正定(positive definite);所有特征值都是非負數的矩陣被稱為 半正定(positive semidefinite)。同樣地,所有特征值都是負數的矩陣被稱為 負定(negative definite);所有特征值都是非正數的矩陣被稱為 半負定(negative semidefinite)
另一種分解矩陣的方法,被稱為 奇異值分解(singular value decomposition, SVD),將矩陣分解為 奇異向量(singular vector) 和 奇異值(singular value)。每個實數矩陣都有一個奇異值分解,但不一定都有特征分解
奇異值分解將矩陣 \(A\) 分解成三個矩陣的乘積
假設 \(A\) 是一個 m × n 的矩陣,那么 \(U\) 是一個 m × m 的矩陣,\(D\) 是一個 m × n 的矩陣,\(V\) 是一個 n × n 矩陣。矩陣 \(U\) 和 \(V\) 都定義為正交矩陣,而矩陣 \(D\) 定義為對角矩陣,但不一定是方陣
對角矩陣 \(D\) 對角線上的元素被稱為矩陣 \(A\) 的 奇異值(singular value)。矩陣 \(U\) 的列向量被稱為 左奇異向量(left singular vector),矩陣 \(V\) 的列向量被稱 右奇異向量(right singular vector)
\(A\) 的 左奇異向量(left singular vector)是 \(AA^⊤\) 的特征向量。\(A\) 的 右奇異向量(right singular vector)是 \(A^{⊤}A\) 的特征向量。\(A\) 的非零奇異值是 \(A^{⊤}A\) 特征值的平方根,同時也是\(AA^⊤\) 特征值的平方根
跡運算返回的是矩陣對角元素的和
跡運算提供了另一種描述矩陣Frobenius范數的方式
跡運算在轉置運算下是不變的
多個矩陣相乘得到的方陣的跡,和將這些矩陣中的最后一個挪到最前面之后相乘的跡是相同的
標量在跡運算后仍然是它自己:\(a = Tr(a)\)
行列式,記作 det(A),是一個將方陣 A 映射到實數的函數。行列式等於矩陣特征值的乘積。行列式的絕對值可以用來衡量矩陣參與矩陣乘法后空間擴大或者縮小了多少。如果行列式是 0,那么空間至少沿着某一維完全收縮了,使其失去了所有的體積。如果行列式是 1,那么這個轉換保持空間體積不變
主成分分析(principal components analysis, PCA)是一個簡單的機器學習算法,可以通過基礎的線性代數知識推導
在人工智能領域,概率論主要有兩種用途。首先,概率法則告訴我們 AI 系統如何推理,據此我們設計一些算法來計算或者估算由概率論導出的表達式。其次,我們可以用概率和統計從理論上分析我們提出的 AI 系統的行為
幾乎所有的活動都需要一些在不確定性存在的情況下進行推理的能力。不確定性有三種可能的來源
- 被建模系統內在的隨機性
- 不完全觀測。即使是確定的系統,當我們不能觀測到所有驅動系統行為的變量時,該系統也會呈現隨機性
- 不完全建模。當我們使用一些必須舍棄某些觀測信息的模型時,舍棄的信息會導致模型的預測出現不確定性
直接與事件發生的頻率相聯系,被稱為 頻率派概率(frequentist probability);涉及到確定性水平,被稱為 貝葉斯概率(Bayesian probability),如:在醫生診斷病人的例子中,我們用概率來表示一種 信任度(degree of belief),其中 1 表示非常肯定病人患有流感,而 0 表示非常肯定病人沒有流感
概率分布(probability distribution)用來描述隨機變量或一簇隨機變量在每一個可能取到的狀態的可能性大小。描述概率分布的方式取決於隨機變量是離散的還是連續的
離散型變量的概率分布可以用 概率質量函數(probability mass function, PMF)來描述。概率質量函數將隨機變量能夠取得的每個狀態映射到隨機變量取得該狀態的概率
概率質量函數可以同時作用於多個隨機變量。這種多個變量的概率分布被稱為 聯合概率分布(joint probability distribution)。P(x = \(x\), y = \(y\)) 表示 x = \(x\) 和 y = \(y\) 同時發生的概率。我們也可以簡寫為 P(\(x\), \(y\))
當研究的對象是連續型隨機變量時,用 概率密度函數(probability density function, PDF)而不是概率質量函數來描述它的概率分布
概率密度函數 p(x) 並沒有直接對特定的狀態給出概率,相對的,它給出了落在面積為 δx 的無限小的區域內的概率為 p(x)δx
有時候,我們知道了一組變量的聯合概率分布,但想要了解其中一個子集的概率分布。這種定義在子集上的概率分布被稱為 邊緣概率分布(marginal probability distribution),如:已知P(x, y),求P(x)
某個事件在給定其他事件發生時出現的概率叫做條件概率,將給定 x = \(x\),y = \(y\) 發生的條件概率記為 P(y = \(y\) | x = \(x\))
任何多維隨機變量的聯合概率分布,都可以分解成只有一個變量的條件概率相乘的形式
這個規則被稱為概率的 鏈式法則(chain rule)或者 乘法法則(product rule)。舉例
兩個隨機變量 x 和 y,如果它們的概率分布可以表示成兩個因子的乘積形式,並且一個因子只包含 x 另一個因子只包含 y,我們就稱這兩個隨機變量是 相互獨立的(independent)
如果關於 x 和 y 的條件概率分布對於 z 的每一個值都可以寫成乘積的形式,那么這兩個隨機變量 x 和 y 在給定隨機變量 z 時是 條件獨立的(conditionally independent)
函數 f(x) 關於某分布 P(x) 的 期望(expectation)或者 期望值(expectedvalue)是指,當 x 由 P 產生,f 作用於 x 時,f(x) 的平均值
方差(variance)衡量的是當我們對 x 依據它的概率分布進行采樣時,隨機變量 x 的函數值會呈現多大的差異
當方差很小時,f(x) 的值形成的簇比較接近它們的期望值。方差的平方根被稱為 標准差(standard deviation)
協方差(covariance)在某種意義上給出了兩個變量線性相關性的強度以及這些變量的尺度
協方差的絕對值如果很大則意味着變量值變化很大並且它們同時距離各自的均值很遠。如果協方差是正的,那么兩個變量都傾向於同時取得相對較大的值。如果協方差是負的,那么其中一個變量傾向於取得相對較大的值的同時,另一個變量傾向於取得相對較小的值,反之亦然。其他的衡量指標如 相關系數(correlation)將每個變量的貢獻歸一化,為了只衡量變量的相關性而不受各個變量尺度大小的影響
兩個變量如果相互獨立那么它們的協方差為零,如果兩個變量的協方差不為零那么它們一定是相關的。兩個變量如果協方差為零,它們之間一定沒有線性關系。獨立性比零協方差的要求更強,因為獨立性還排除了非線性的關系。兩個變量相互依賴但具有零協方差是可能的
隨機向量 \(x ∈ R^n\) 的 協方差矩陣(covariance matrix)是一個 n × n 的矩陣,並且滿足
協方差矩陣的對角元是方差
最常用的分布就是 正態分布(normal distribution),也稱為 高斯分布(Gaussian distribution)
正態分布的中心峰的 x 坐標由 \(\mu\) 給出,峰的寬度受 \(\sigma\) 控制
在具有相同方差的所有可能的概率分布中,正態分布在實數上具有最大的不確定性。可以認為正態分布是對模型加入的先驗知識量最少的分布
正態分布可以推廣到 \(R^n\) 空間,這種情況下被稱為 多維正態分布(multivariate normal distribution)。它的參數是一個正定對稱矩陣 \(\sum\)
此時,參數 \(\mu\) 仍然表示分布的均值,只不過現在是向量值。參數 \(\sum\) 給出了分布的協方差矩陣
當對很多不同參數下的概率密度函數多次求值時,協方差矩陣並不是一個很高效的參數化分布的方式,因為對概率密度函數求值時需要對 \(\sum\) 求逆。我們可以使用一個 精度矩陣(precision matrix) \(\beta\) 進行替代
通過 Dirac delta 函數(Dirac delta function)\(\delta(x)\) 定義概率密度函數來將望概率分布中的所有質量都集中在一個點上
Dirac delta 函數被定義成在除了 \(x=\mu\) 以外的所有點的值都為 0,但是積分為 1。在 \(x=\mu\) 處具有無限窄也無限高的峰值的概率質量
Dirac 分布經常作為 經驗分布(empirical distribution)的一個組成部分出現
經驗分布將概率密度 \(\frac{1}{m}\) 賦給 m 個點 \(x^{(1)}\), . . . , \(x^{(m)}\) 中的每一個,這些點是給定的數據集或者采樣的集合。只有在定義連續型隨機變量的經驗分布時,Dirac delta 函數才是必要的
一些等式
貝葉斯規則(Bayes' rule)
如果我們對於同一個隨機變量 \(x\) 有兩個單獨的概率分布 \(P(x)\) 和 \(Q(x)\),我們可以使用 KL 散度(Kullback-Leibler (KL) divergence)來衡量這兩個分布的差異
在離散型變量的情況下,KL 散度衡量的是,當我們使用一種被設計成能夠使得概率分布 \(Q\) 產生的消息的長度最小的編碼,發送包含由概率分布 \(P\) 產生的符號的消息時,所需要的額外信息量
KL 散度有很多有用的性質,最重要的是它是非負的。KL 散度為 0 當且僅當 \(P\) 和 \(Q\) 在離散型變量的情況下是相同的分布,或者在連續型變量的情況下是 ‘‘幾乎處處’’ 相同的。因為 KL 散度是非負的並且衡量的是兩個分布之間的差異,它經常被用作分布之間的某種距離。然而,它並不是真的距離因為它不是對稱的:對於某些 \(P\) 和 \(Q\),\(DKL(P||Q) ̸= DKL(Q||P)\)。這種非對稱性意味着選擇 \(DKL(P||Q)\) 還是\(DKL(Q||P)\) 影響很大
交叉熵(cross-entropy)
交叉熵和 KL 散度很像但是缺少左邊一項。針對 Q 最小化交叉熵等價於最小化 KL 散度,因為 Q 並不參與被省略的那一項
一種極具毀滅性的舍入誤差是 下溢(underflow)。當接近零的數被四舍五入為零時發生下溢。許多函數在其參數為零而不是一個很小的正數時才會表現出質的不同。另一個極具破壞力的數值錯誤形式是 上溢(overflow)。當大量級的數被近似為\(\infty\) 或 \(-\infty\) 時發生上溢。進一步的運算通常會導致這些無限值變為非數字。必須對上溢和下溢進行數值穩定的一個例子是 softmax 函數(softmax function)。softmax 函數經常用於預測與 Multinoulli 分布相關聯的概率,定義為
對於 \(softmax(x)\) 的上溢和下溢問題,可以通過計算 \(softmax(z)\) 同時解決,其中 \(z = x - max_i x_i\) 。減去 \(max_i x_i\) 導致 exp 的最大參數為 0,這排除了上溢的可能性。同樣地,分母中至少有一個值為 1 的項,這就排除了因分母下溢而導致被零除的可能性
條件數表征函數相對於輸入的微小變化而變化的快慢程度。輸入被輕微擾動而迅速改變的函數對於科學計算來說可能是有問題的,因為輸入中的舍入誤差可能導致輸出的巨大變化
對於函數 $ f(x) = A^{-1}x $。當 \(A \in R^{n × n}\)具有特征值分解時,其條件數為
這是最大和最小特征值的模之比1。當該數很大時,矩陣求逆對輸入的誤差特別敏感
我們把要最小化或最大化的函數稱為 目標函數(objective function)或 准則(criterion)。當我們對其進行最小化時,我們也把它稱為 代價函數(cost function)、損失函數(loss function)或 誤差函數(error function)
對於 \(y = f(x)\),導數告訴我們如何更改 \(x\) 來略微地改善 \(y\) 。例如,我們知道對於足夠小的 \(\epsilon\) 來說,\(f(x − \epsilon sign(f′(x)))\) 是比 $f(x) $小的。因此我們可以將 \(x\) 往導數的反方向移動一小步來減小 \(f(x)\)。這種技術被稱為 梯度下降(gradient descent)
當 \(f′(x) = 0\),導數無法提供往哪個方向移動的信息。 \(f′(x) = 0\) 的點稱為 臨界點(critical point)或 駐點(stationary point)。一個 局部極小點(local minimum)意味着這個點的 f(x) 小於所有鄰近點,因此不可能通過移動無窮小的步長來減小 \(f(x)\) 。一個 局部極大點(local maximum)意味着這個點的 \(f(x)\) 大於所有鄰近點,因此不可能通過移動無窮小的步長來增大 \(f(x)\)。有些臨界點既不是最小點也不是最大點。這些點被稱為 鞍點(saddle point)。使 f(x) 取得絕對的最小值(相對所有其他值)的點是 全局最小點(global minimum)。函數可能只有一個全局最小點或存在多個全局最小點,還可能存在不是全局最優的局部極小點
有時候,在 x 的所有可能值下最大化或最小化一個函數 f(x) 不是我們所希望的。相反,我們可能希望在 x 的某些集合 S 中找 f(x) 的最大值或最小值。這被稱為 約束優化(constrained optimization)。在約束優化術語中,集合 S 內的點 x 被稱為 可行(feasible)點