lw2333

lw2333

Keep calm and study.

第三章-線性模型

開篇初衷#

以前看過李沐等人的動手學深度學習,覺得不錯。但不重視總結和實踐,感到愧對如此優質的學習材料。故寫此篇,作學習路上的總結,並希望能給需要的人帶來幫助。
限於篇幅,僅摘要理論部分。

習題解答參見 https://datawhalechina.github.io/d2l-ai-solutions-manual/#/

線性回歸#

模型 y^=wx+b.\hat{y} = \mathbf{w}^\top \mathbf{x} + b. 其中 wRd\mathbf{w} \in \mathbb{R}^d,而 xRd \mathbf{x} \in \mathbb{R}^d 是單個數據樣本的特徵。
對於特徵集合X\mathbf{X}y^=Xw+b{\hat{\mathbf{y}}} = \mathbf{X} \mathbf{w} + b 給出了預測向量。

損失函數採用平方誤差函數

l(i)(w,b)=12(y^(i)y(i))2.l^{(i)}(\mathbf{w}, b) = \frac{1}{2} \left(\hat{y}^{(i)} - y^{(i)}\right)^2.

求和並對樣本數取平均後

L(w,b)=1ni=1nl(i)(w,b)=1ni=1n12(wx(i)+by(i))2.L(\mathbf{w}, b) =\frac{1}{n}\sum_{i=1}^n l^{(i)}(\mathbf{w}, b) =\frac{1}{n} \sum_{i=1}^n \frac{1}{2}\left(\mathbf{w}^\top \mathbf{x}^{(i)} + b - y^{(i)}\right)^2.

故希望找到 w,b=argminw,b L(w,b)\mathbf{w}^*, b^* = \operatorname*{argmin}_{\mathbf{w}, b}\ L(\mathbf{w}, b),解析解為最小化 yXw2\|\mathbf{y} - \mathbf{X}\mathbf{w}\|^2 ,其對 w\mathbf{w} 導數為 0,得

w=(XX)1Xy.\mathbf{w}^* = (\mathbf X^\top \mathbf X)^{-1}\mathbf X^\top \mathbf{y}.

SGD#

對於更一般的問題,採用 gradient descent ,原理是沿梯度減少的方向更新。實際應用中出於計算量考慮,隨機抽取小批量樣本,稱 minibatch stochastic gradient descent 。其更新過程如下:

wwηBiBwl(i)(w,b),bbηBiBbl(i)(w,b).\begin{aligned} \mathbf{w} &\leftarrow \mathbf{w} - \frac{\eta}{|\mathcal{B}|} \sum_{i \in \mathcal{B}} \partial_{\mathbf{w}} l^{(i)}(\mathbf{w}, b),\\ b &\leftarrow b - \frac{\eta}{|\mathcal{B}|} \sum_{i \in \mathcal{B}} \partial_b l^{(i)}(\mathbf{w}, b) . \end{aligned}

在上述線性模型中,具體來說就是

wwηBiBx(i)(wx(i)+by(i)),bbηBiB(wx(i)+by(i)).\begin{aligned} \mathbf{w} &\leftarrow \mathbf{w} - \frac{\eta}{|\mathcal{B}|} \sum_{i \in \mathcal{B}} \mathbf{x}^{(i)} \left(\mathbf{w}^\top \mathbf{x}^{(i)} + b - y^{(i)}\right),\\ b &\leftarrow b - \frac{\eta}{|\mathcal{B}|} \sum_{i \in \mathcal{B}} \left(\mathbf{w}^\top \mathbf{x}^{(i)} + b - y^{(i)}\right). \end{aligned}

最小化均方誤和合理性#

在噪聲為高斯噪聲時,最小化均方誤等價對線性模型的極大似然估計。故最小化均方誤差是合理的。論證如下:

y=wx+b+ϵ,y = \mathbf{w}^\top \mathbf{x} + b + \epsilon, ϵN(0,σ2)\epsilon \sim \mathcal{N}(0, \sigma^2) 時,

P(yx)=12πσ2exp(12σ2(ywxb)2).P(yX)=i=1np(y(i)x(i)).\begin{aligned} P(y \mid \mathbf{x}) &= \frac{1}{\sqrt{2 \pi \sigma^2}} \exp\left(-\frac{1}{2 \sigma^2} (y - \mathbf{w}^\top \mathbf{x} - b)^2\right).\\ P(\mathbf y \mid \mathbf X) &= \prod_{i=1}^{n} p(y^{(i)}|\,\mathbf{x}^{(i)}). \end{aligned}

帶入得

argmin{logP(yX)}=argmin{i=1n12log(2πσ2)+12σ2(y(i)wx(i)b)2}.\begin{aligned} &\text{argmin}\,\{-\log P(\mathbf y \mid \mathbf X)\} \\= &\text{argmin}\,\{\sum_{i=1}^n \frac{1}{2} \log(2 \pi \sigma^2) + \frac{1}{2 \sigma^2} \left(y^{(i)} - \mathbf{w}^\top \mathbf{x}^{(i)} - b\right)^2\}. \end{aligned}

第一項是常數,第二項常系數可忽略。於是可以看到,在噪聲為高斯噪聲時,最小化均方誤等價對線性模型的極大似然估計。


分類問題 - 引#

主要用於解決分類問題。

首先,對於分類問題輸出的編碼,採取獨熱向量編碼 one-hot encoding 。譬如:芙莉蓮,修塔爾克和費倫,用 (1,0,0)(1,0,0) 編碼芙莉蓮,用 (0,1,0)(0,1,0) 編碼修塔爾克,用 (0,0,1)(0,0,1) 編碼費倫。
不用 1,2,3 等自然數編碼是因為:自然數是線性的,而分類問題中這種線性性並不天然存在(譬如我們不能說芙莉蓮相比於費倫和修塔爾克長得更像,而用自然數編碼某種程度上就暗示了這一點)。

其次,對於分類問題的網絡結構,其採取和線性模型類似的單層網絡,不同在於分類問題輸出層是一個向量(而非實數)。稱其為(未規範化的)預測 logit

對單數據而言,矩陣乘法形式是 o=Wx+b\mathbf{o} = \mathbf{W} \mathbf{x} + \mathbf{b} 。其中 W\mathbf{W}b\mathbf{b} 是待學參數。
比如對一個 4 特徵 3 分類的問題,x \mathbf{x} 是一個 4-1 矩陣,W\mathbf{W} 是一個 3-4 矩陣,b\mathbf{b}o\mathbf{o} 都是一個 3-1 矩陣。


可見全連接層開銷巨大。一篇文章指出節省開銷的方法(“其他” )


分類問題 - softmax 回歸#

那麼我們已經有了輸出 o\mathbf{o} ,然而由於 o\mathbf{o} 不滿足概率公理定義,所以我們通過所謂 softmax 操作使其滿足歸一化、校準(calibration)。

y^=softmax(o)y^j=exp(oj)kexp(ok)\begin{aligned} \hat{\mathbf{y}} &= \mathrm{softmax}(\mathbf{o})\\ \hat{y}_j &= \frac{\exp(o_j)}{\sum_k \exp(o_k)} \end{aligned}

於是,這樣的 y^\hat{\mathbf{y}} 就可以當作 “概率預測輸出” 了。從定義式可以看到 softmax 操作保持了大小次序,因此可以通過直接找到最大 ojo_j 來找出最有可能的類別。

我們仍稱 softmax 為線性模型 linear model, 因為其參數部分集中在線性部分。這是很好理解的。

在實際 GPU 計算中會被採取一種叫做矢量化的計算。

XRn×dWRd×qbR1×qiORn×qYRn×qO=XW+bY^=softmax(O)\begin{aligned} &\mathbf{X}\in \mathbb{R}^{n\times d}\quad\mathbf{W}\in \mathbb{R}^{d\times q}\quad \mathbf{b}\in \mathbb{R}^{1\times q}i\\& \mathbf{O}\in \mathbb{R}^{n\times q}\quad \mathbf{Y}\in \mathbb{R}^{n\times q}\\\\ &\mathbf{O}=\mathbf{X}\mathbf{W}+\mathbf{b}\\ &\hat{\mathbf{Y}}=\text{softmax}(\mathbf{O}) \end{aligned}

小批量矢量化加快了 X\mathbf{X}W\mathbf{W} 的矩陣 - 向量乘法。

類似地採取對數似然法,最小化負對數似然。比較不同的是損失函數為

l(y,y^)=j=1qyjlogy^j.l(\mathbf{y}, \hat{\mathbf{y}}) = - \sum_{j=1}^q y_j \log \hat{y}_j.

稱之為交叉熵損失 cross-entropy loss ,是分類問題常用損失函數之一。

分佈 PP 的熵 entropy H[P]=jP(j)logP(j)H[P] = \sum_j - P(j) \log P(j),信息論的基本定理之一指出,為了對從分佈 PP 中隨機抽取的數據進行編碼,我們至少需要 H[P]H[P] 納特 nat 對其進行編碼。

如果我們很容易預測下一個數據,那麼這個數據就很容易壓縮。如果我們不能完全預測每一個事件,那麼我們有時可能會感到 “驚異”。 我們可以把交叉熵想象為 “主觀概率QQ 的觀察者在看到根據概率 PP 生成的數據時的預期驚異”。
P=QP=Q 時,交叉熵達到最低。在這種情況下,從 PPQQ 的交叉熵是 H(P,P)=H(P)H(P, P)= H(P)

softmax 的導數#

l(y,y^)=j=1qyjlogexp(oj)k=1qexp(ok)=j=1qyjlogk=1qexp(ok)j=1qyjoj=logk=1qexp(ok)j=1qyjoj.\begin{aligned} l(\mathbf{y}, \hat{\mathbf{y}}) &= - \sum_{j=1}^q y_j \log \frac{\exp(o_j)}{\sum_{k=1}^q \exp(o_k)} \\ &= \sum_{j=1}^q y_j \log \sum_{k=1}^q \exp(o_k) - \sum_{j=1}^q y_j o_j\\ &= \log \sum_{k=1}^q \exp(o_k) - \sum_{j=1}^q y_j o_j. \end{aligned}
ojl(y,y^)=exp(oj)k=1qexp(ok)yj=softmax(o)jyj.\partial_{o_j} l(\mathbf{y}, \hat{\mathbf{y}}) = \frac{\exp(o_j)}{\sum_{k=1}^q \exp(o_k)} - y_j = \mathrm{softmax}(\mathbf{o})_j - y_j.

其他#

  • 層概念介紹
    • 輸入維度(輸入數) feature dimensionality 為 d,輸出維度為 1。由於模型重點在於發生計算的地方,故計算層數時通常考慮輸出層而不考慮輸入層。可以將線性回歸模型視為僅由單個人工神經元組成的神經網絡,或稱為單層神經網絡。
    • 對於線性回歸,每個輸入都與每個輸出相連,稱其為全連接層 fully-connected layer 或稠密層 dense layer
  • 一些生物學基礎,挺有趣的,但是略去。摘錄一下發現的好玩的英語單詞。
    樹突(dendrites,輸入終端)
    細胞核(nucleus,CPU)
    軸突(axon,輸出線)
    軸突端子(axon terminal,輸出端子)
    突觸(synapse
  • 提及關於全連接層開銷節省的文章,有空看一下,更新一篇博客出來 x
    https://openreview.net/pdf?id=rcQdycl0zyk
    BEYOND FULLY-CONNECTED LAYERS WITH QUATERNIONS: PARAMETERIZATION OF HYPERCOMPLEX MULTIPLICATIONS WITH 1/n PARAMETERS
  • 社會科學家邓肯・盧斯於 1959 年在選擇模型(choice model)的理論基礎上發明了 softmax 函數

習題摘要#

什麼時候(使用解析解)可能比使用隨機梯度下降更好?這種方法何時會失效?

  • 答:當數據集較小時,解析解可能比隨機梯度下降更好。然而,在大型數據集上,計算解析解可能會非常耗時,或者存在多個局部最小的情況。此外,當矩陣 XX\mathbf X^\top \mathbf X 不可逆時,解析解不存在。在這種情況下,需要使用正則化或數值優化方法。(注:w=(XX)1Xy.\mathbf{w}^* = (\mathbf X^\top \mathbf X)^{-1}\mathbf X^\top \mathbf{y}.

假定控制附加噪聲 ϵ\epsilon 的噪聲模型是指數分佈,也就是說,p(ϵ)=12exp(ϵ)p(\epsilon) = \frac{1}{2} \exp(-|\epsilon|) 時,模型 logP(yX)-\log P(\mathbf y \mid \mathbf X) 下的負對數似然的解析解是不存在的,而用 SGD 在駐點附近梯度不會平滑地趨向於零,而是存在突變。

  • 解決方案是
    • 使用平滑的損失函數,可使用 MSE、Smooth L1 損失函數等。
    • 調整學習率,逐漸減小學習率,使得在駐點附近的參數更新更加穩定
    • 使用動量法或自適應學習率優化算法

如果我們將權重初始化為零,會發生什麼。算法仍然有效嗎?

  • 如果將權重初始化為零,那麼每個神經元的輸出都是相同的,這意味著每個神經元學到的參數也是相同的。(為什麼?)因此,每個神經元都會更新相同的參數,最終導致所有神經元學到相同的特徵。因此,權重初始化為零會使算法失效。這樣就失去了神經網絡的優勢,即可以學到不同特徵的能力。

  • 邏輯回歸和神經網絡有不同的權重初始化方法。對於邏輯回歸,可以將權重初始化為零,因為這是一個線性模型,梯度下降算法仍然可以更新它們。然而,對於神經網絡來說,將權重初始化為零可能會導致對稱性問題,並阻止隱藏單元學習不同的特徵。因此,最好使用隨機或其他方法來初始化神經網絡的權重。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。