[深度学习基础] 2. 线性分类器
本文將以 softmax 線性分類器為例, 討論數(shù)據(jù)驅(qū)動(dòng)過(guò)程的各組成部分.?同時(shí)本章是后文非線性分類器和深度學(xué)習(xí)的鋪墊.
1 訓(xùn)練數(shù)據(jù)
給定由 m 張圖像組成的訓(xùn)練集, 每個(gè)圖像的標(biāo)記是 K 個(gè)不同類中的一個(gè),
其中, i 用于對(duì)訓(xùn)練實(shí)例進(jìn)行索引: x^(i) 是第 i 張圖像展成列向量之后的結(jié)果. n 是每個(gè)向量的維數(shù), 若圖像的大小是 1024 × 768 × 3, 則 n = 1024 ×?768 × 32 = 359296. y^(i) 是 x^(i) 對(duì)應(yīng)的標(biāo)記.
2 假設(shè)函數(shù)
在給定訓(xùn)練集后, 我們將從訓(xùn)練集中學(xué)到一個(gè)映射 h, 稱為假設(shè) (hypothesis), 使得 h(x) 給出了 x 屬于某個(gè)類的信心或分?jǐn)?shù), 從而能進(jìn)一步對(duì) y?做預(yù)測(cè), 見(jiàn)下圖. 對(duì)于不同的分類模型, h 有不同的函數(shù)形式.
2.1?線性分類模型的假設(shè)函數(shù)
在線性分類模型中, 假設(shè)函數(shù) (hypothesis) h 采用的是一種最簡(jiǎn)單的線性映射
W, b 是函數(shù)的參數(shù), W 通常叫做權(quán)值 (weights), b 通常叫做偏置向量 (bias?vector).
我們的目標(biāo)是設(shè)置 W, b 使得我們計(jì)算的分?jǐn)?shù)匹配真實(shí)值 (ground truth),?這個(gè)過(guò)程稱作學(xué)習(xí)參數(shù) W, ?b. 一旦學(xué)習(xí)過(guò)程結(jié)束, 我們可以丟棄訓(xùn)練集, 通過(guò)參數(shù) W, b 即可做預(yù)測(cè).
2.2?對(duì)假設(shè)函數(shù)的理解
公式3, 4可以看作是同時(shí)有 K 個(gè)分類器進(jìn)行計(jì)算
? ?
其中 d 用于對(duì) W 中各元素索引. w_d^T x + b_d 計(jì)算的是 x 屬于第 d 個(gè)類的信心或分?jǐn)?shù).
另外一種理解方式是將 w_d^T ?x 看作是一種相似度的度量, 每個(gè) w_d 代表了每個(gè)類的一個(gè)原型 (prototype). 預(yù)測(cè)的過(guò)程是將 x 與各個(gè)類的原型相比較, 找到一個(gè)與 ?x 最相似的類.
2.3 Softmax 分類器的假設(shè)函數(shù)
Softmax 分類器是一種線性分類器, 它對(duì)于 s = h(x ) = Wx + b 計(jì)算得到的各類的分?jǐn)?shù)有概率上的理解
其中稱為 softmax 函數(shù).
3 損失函數(shù)
在給定假設(shè)函數(shù) h 后, 我們可以計(jì)算對(duì)于每個(gè)數(shù)據(jù) x^(i) 得到的對(duì)各個(gè)類的分?jǐn)?shù). 我們需要一個(gè)能通過(guò)比較假設(shè)函數(shù)得到的分?jǐn)?shù)與數(shù)據(jù)真實(shí)值 y^(i)?相符 (或不相符) 程度的度量, 通過(guò)這個(gè)度量來(lái)定量的表示當(dāng)前參數(shù)的好壞.?損失函數(shù) (loss function) 計(jì)算的是不相符的程度, 即當(dāng)損失函數(shù)高的時(shí)候當(dāng)前參數(shù) W, b 表現(xiàn)很差, 當(dāng)損失函數(shù)低的時(shí)候當(dāng)前參數(shù) W, b 表現(xiàn)很好.
3.1?交叉熵?fù)p失
通過(guò)最大似然估計(jì) (maximum likelihood estimate) 可以得到 softmax?分類器的損失函數(shù).
??
其中,?稱為交叉熵?fù)p失 (hinge loss). 在后文, 為了敘述方便, 將err(W, b; x^(i) , y^(i) )記做 err^(i) .
3.2?正則化
在上一子節(jié)我們知道了對(duì) softmax 來(lái)說(shuō), 好的 (W, b) 使得
達(dá)到最小值. 但是根據(jù)式3.21計(jì)算得到的 (W, b) 并不唯一. 假設(shè) (W? ,b?) 是最優(yōu)解, 那么給 W? 和 b? 中所有元素都加一個(gè)常數(shù) c, c > 0 得到的結(jié)果也是式3.21的最優(yōu)值.
為了解決這個(gè)問(wèn)題, 我們將對(duì) (W, b) 的取值設(shè)定一些偏好, 這個(gè)偏好的設(shè)定通過(guò)在損失函數(shù)中添加正則項(xiàng) (regularization)Ω(W ) 來(lái)實(shí)現(xiàn). 最常用的正則項(xiàng)利用 l_2 范數(shù) (norm)(對(duì)應(yīng)于矩陣是 l_F 范數(shù))
l_2 正則化傾向于小而且分散的權(quán)值, 因此分類器傾向于考慮 x 的全部維度同時(shí)每個(gè)維度對(duì)輸出的影響較小, 而不是只考慮 x 的幾個(gè)維度同時(shí)這幾個(gè)維度對(duì)輸出有很大影響. 這樣的正則化有助于提高泛化 (generalization) 能力.
這樣, 完整的損失函數(shù)變成
其中, λ 是一個(gè)數(shù)字, 用于調(diào)節(jié)正則化對(duì)損失函數(shù)的影響, 1/2是為了隨后的數(shù)學(xué)計(jì)算方便一些.
4 優(yōu)化?
我們的目的是找到 (W, b), 最小化損失函數(shù)
這是個(gè)無(wú)約束的優(yōu)化問(wèn)題.
4.1?梯度下降
當(dāng)訓(xùn)練集給定后, 損失函數(shù) J 只是參數(shù) (W, b) 的函數(shù). 通常 (W, b)維數(shù)很高, 我們很難可視化 (W, ?b) 與 J 的關(guān)系. 但是, 通過(guò)選取參數(shù)空間的某兩個(gè)方向 (θ_0 , θ_1 ), 做出 J 的值沿著 (θ_0 , θ_1 ) 方向變化的曲線, 即計(jì)算J(W + c_0 θ_0 + c_1 θ_1 , b) 隨 (c_0 , c_1 ) 的變化, 其中 (W, b) 是隨機(jī)給定的初始點(diǎn),?對(duì) b 的可視化方法也是一樣的. 根據(jù)曲線, 我們?nèi)匀豢梢缘玫揭恍┲庇^上的理解, 見(jiàn)下圖.
直接找到最佳的參數(shù) (W, b) 通常是很難的 (尤其在神經(jīng)網(wǎng)絡(luò)中, J(W, b)是非凸函數(shù)). 因此, 我們的策略是開(kāi)始時(shí)隨機(jī)選定一組參數(shù) (W, b), 之后迭代地修正 (W, b) 使得 J(W, b) 越來(lái)越小. 對(duì)應(yīng)于圖3.2, 開(kāi)始時(shí)隨機(jī)位于 J 曲線上的某一點(diǎn), 之后每次朝著到達(dá)谷底最快的方向前進(jìn)一步.
將 W 展成列向量并與 ?b 拼接成一個(gè)大的列向量? θ, ?θ 的維度是 K × n +?K. 因此, 優(yōu)化問(wèn)題可以寫(xiě)成
這仍然是個(gè)無(wú)約束的優(yōu)化問(wèn)題.
在每一步, 我們要找到一個(gè)方向 ∥?v ∥ = 1, 使得 J 在這個(gè)方向下降最快,?然后朝著這個(gè)方向前進(jìn) η > 0 大小. 優(yōu)化變成帶約束的優(yōu)化問(wèn)題
當(dāng) η 很小時(shí), J 可以用泰勒展開(kāi)近似:
因此, 最佳的方向 v 是梯度 ?J( θ)?的反方向.
η 的選擇對(duì)優(yōu)化的收斂有決定性的影響. η 過(guò)小時(shí)收斂過(guò)慢, η 過(guò)大時(shí)收斂過(guò)程會(huì)很不穩(wěn)定. 我們希望 η 在開(kāi)始時(shí)大一些以更快收斂, 而在之后變小使得不會(huì)錯(cuò)過(guò)最優(yōu)值. 可以取 η = α∥?J (θ) ||?達(dá)到. 開(kāi)始時(shí) ∥?J( θ)∥較大, 在收斂時(shí)∥?J( θ)∥ = 0.?更新規(guī)則是
式3.36就是梯度下降 (gradient descent, GD), α 是學(xué)習(xí)速率 (learning rate).?
用 (W, b) 表示的梯度下降規(guī)則是
注意式3.37, 3.38是同時(shí)對(duì) (W, b) 進(jìn)行更新, 而不是先更新 W , 再更新 b.
4.2?隨機(jī)梯度下降
在更新規(guī)則式3.37, 3.38中, 每更新一次, 需要把所有的訓(xùn)練集看過(guò)一遍,?因此它也稱為批量梯度下降 (batch gradient descent). 當(dāng) m 很大時(shí), 例如在?ImageNet 中 m 是百萬(wàn)級(jí)別, 這樣的更新就顯得效率很低.
如果利用 ?J 的無(wú)偏估計(jì)來(lái)替代 ?J, 這樣每更新一次只需要一個(gè)訓(xùn)練實(shí)例
這種更新規(guī)則為隨機(jī)梯度下降 (stochastic gradient descent, SGD). SGD 通常比 GD 更快地收斂. 在神經(jīng)網(wǎng)絡(luò)這樣的非凸優(yōu)化中, 存在著多個(gè)局部最優(yōu)點(diǎn), GD 找到的局部最優(yōu)點(diǎn)取決于參數(shù)初始化時(shí)所在的位置. 而在 SGD 中,?由于在更新過(guò)程中存在噪聲, 噪聲可能使參數(shù)跳到另一個(gè)比當(dāng)前局部最優(yōu)更好的局部最優(yōu). SGD 也可以跟蹤數(shù)據(jù)分布的變化.?
在實(shí)際中, GD 和 SGD 都較少用到, GD 每更新一個(gè)需要看到 m 個(gè)訓(xùn)練數(shù)據(jù), SGD 每更新一次需要看到 1 個(gè)數(shù)據(jù). 小批量梯度下降 (mini-batch?gradient descent) 介于兩者之間, 每更新一次需要看到 m ′ 個(gè)數(shù)據(jù), m ′ 被稱為批量 (batches). 小批量梯度下降繼承了 SGD 的優(yōu)點(diǎn), 同時(shí)可以利用高效的向量化代碼優(yōu)化的技巧, 因此在涉及大數(shù)據(jù)優(yōu)化時(shí)經(jīng)常被用到. 由于批量大小是一個(gè)在 1 和 m 之間的人為指定超參數(shù), 因此在下文的計(jì)算中, m 即可以代表訓(xùn)練數(shù)據(jù)大小, 也可以代表批量大小.
4.3 softmax 優(yōu)化規(guī)則
利用微積分, 很容易計(jì)算對(duì)于交叉熵?fù)p失對(duì)參數(shù)的導(dǎo)數(shù).
因此
? ? ? ? ? ? ? ? ?
將上面兩式合并寫(xiě)成向量形式
其中 e_y^(i) 是個(gè) K 維向量, 在 y^(i) 的位置為 1, 其余位置為 0.
利用鏈?zhǔn)角髮?dǎo)法則可得
之后利用式3.37, 3.38就可以對(duì) W, b 進(jìn)行更新.
總之, softmax 的完整訓(xùn)練過(guò)程可用算法1表示.
5 預(yù)測(cè)和評(píng)估
讓分類模型在一組從未在訓(xùn)練集中出現(xiàn)過(guò)的圖像組成的測(cè)試集上做預(yù)測(cè), 通過(guò)比較預(yù)測(cè)的標(biāo)記和測(cè)試集真實(shí)的標(biāo)記來(lái)評(píng)價(jià)這個(gè)模型的好壞. 我們希望一個(gè)好的分類模型會(huì)有很多的預(yù)測(cè)標(biāo)記和真實(shí)標(biāo)記相一致.
5.1?預(yù)測(cè)
對(duì)于一個(gè)未知輸入數(shù)據(jù)x , 分類模型的預(yù)測(cè)是
即找到線性分類器輸出分?jǐn)?shù)最大的那項(xiàng)對(duì)應(yīng)的類作為 x 的標(biāo)記.
5.2?評(píng)估
給定測(cè)試集
對(duì)每個(gè) x^(i) , 根據(jù)式3.50計(jì)算模型的預(yù)測(cè)值 ?^(i) . 用準(zhǔn)確率
表示分類器的性能. 其中 1{·} 是指示函數(shù),
若分類器將全部測(cè)試樣本分對(duì), 則 Acc = 1, 其余情況下 Acc < 1.
總結(jié)
以上是生活随笔為你收集整理的[深度学习基础] 2. 线性分类器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: [深度学习基础] 4. 卷积神经网络
- 下一篇: [深度学习基础] 1. 图像识别问题的挑