Logistic Regression 之基础知识准备
?0. 前言
??這學(xué)期 Pattern Recognition 課程的 project 之一是手寫(xiě)數(shù)字識(shí)別,之二是做一個(gè)網(wǎng)站驗(yàn)證碼的識(shí)別(鴨梨不小哇)。面包要一口一口吃,先嘗試把模式識(shí)別的經(jīng)典問(wèn)題——手寫(xiě)數(shù)字識(shí)別做出來(lái)吧。這系列博客參考 deep learning tutorial ,記錄下用以下三種方法的實(shí)現(xiàn)過(guò)程:
??目的在于一方面從理論上幫自己理順?biāo)悸?#xff0c;另一方面作為課程最后一課 presentation 的材料。這三種方法從易到難,準(zhǔn)確率也由低到高,我們先從簡(jiǎn)單的入手。
1. Binomial logistic regression model
??盡管線性分類器方法足夠簡(jiǎn)單并且使用廣泛,但是線性模型對(duì)于輸出的 y 沒(méi)有界限,y 可以取任意大或者任意小(負(fù)數(shù))的值,對(duì)于某些問(wèn)題來(lái)說(shuō)不夠 adequate, 比如我們想得到 0 到 1 之間的 probability 輸出,這時(shí)候就要用到比 linear regression 更加強(qiáng)大的 logistic regression 了。
?y = w ? x??直覺(jué)上,一個(gè)線性模型的輸出值 y 越大,這個(gè)事件 P(Y=1|x) 發(fā)生的概率就越大。 另一方面,我們可以用事件的幾率(odds)來(lái)表示事件發(fā)生與不發(fā)生的比值,假設(shè)發(fā)生的概率是 p ,那么發(fā)生的幾率(odds)是 p/(1-p) , odds 的值域是 0 到正無(wú)窮,幾率越大,發(fā)生的可能性越大。將我們的直覺(jué)與幾率聯(lián)系起來(lái)的就是下面這個(gè)(log odds)或者是 logit 函數(shù) (有點(diǎn)牽強(qiáng) - -!):
??進(jìn)而可以求出概率 p 關(guān)于 w 點(diǎn)乘 x 的表示:
??(注:為什么要寫(xiě)出中間一步呢?看到第三部分的你就明白啦!)
??這就是傳說(shuō)中的 sigmoid function 了,以 w 點(diǎn)乘 x 為自變量,函數(shù)圖像如下:
(注:從圖中可以看到 wx 越大,p 值越高,在線性分類器中,一般 wx = 0 是分界面,對(duì)應(yīng)了 logistic regression 中 p = 0.5)
2. Parameter Estimation
??Logsitic regression 輸出的是分到每一類的概率,參數(shù)估計(jì)的方法自然就是最大似然估計(jì) (MLE) 咯。對(duì)于訓(xùn)練樣本來(lái)說(shuō),假設(shè)每個(gè)樣本是獨(dú)立的,輸出(標(biāo)簽)為 y = {0, 1},樣本的似然函數(shù)就是將所有訓(xùn)練樣本 label 對(duì)應(yīng)的輸出節(jié)點(diǎn)上的概率相乘, 令 p = P(Y=1|x) ,如果 y = 1, 概率就是 p, 如果 y = 0, 概率就是 1 - p ,(好吧,我是個(gè)羅嗦的家伙), ?將這兩種情況合二為一,得到似然函數(shù):
??嗯?有連乘,用對(duì)數(shù)化為累加, balabala 一通算下來(lái),就得到了對(duì)數(shù)似然函數(shù)為
??應(yīng)用梯度下降法或者是擬牛頓法對(duì) L(w) 求極大值,就可以得到 w 的估計(jì)值了。
3. Softmax regression
??這一小節(jié)旨在弄清 softmax regression 和 logistic regression 的聯(lián)系,更多細(xì)節(jié)請(qǐng)參考 Andrew Ng 的英文資料,需要快速瀏覽也可以看看中文翻譯版本,或者 wiki 一下。
??logistic regression 在多類上的推廣又叫 softmax regression, 在數(shù)字手寫(xiě)識(shí)別中,我們要識(shí)別的是十個(gè)類別,每次從輸入層輸入 28×28 個(gè)像素,輸出層就可以得到本次輸入可能為 0, 1, 2… 的概率。得花點(diǎn)時(shí)間畫(huà)個(gè)簡(jiǎn)易版本的,看起來(lái)更直觀:
??OK, 左邊是輸入層,輸入的 x 通過(guò)中間的黑線 w (包含了 bias 項(xiàng))作用下,得到 w.x, 到達(dá)右邊節(jié)點(diǎn), 右邊節(jié)點(diǎn)通過(guò)紅色的函數(shù)將這個(gè)值映射成一個(gè)概率,預(yù)測(cè)值就是輸入概率最大的節(jié)點(diǎn),這里可能的值是 {0, 1, 2}。在 softmax regression 中,輸入的樣本屬于第 j 類的概率可以寫(xiě)成:
??(注:對(duì)比第一部分提到過(guò)的中間一步,有什么不同?) ??
? ? ?注意到,這個(gè)回歸的參數(shù)向量減去一個(gè)常數(shù)向量,會(huì)有什么結(jié)果:
??沒(méi)有變化!這說(shuō)明如果某一個(gè)向量是代價(jià)函數(shù)的極小值點(diǎn),那么這個(gè)向量在減去一個(gè)任意的常數(shù)向量也是極小值點(diǎn),這是因?yàn)?softmax 模型被過(guò)度參數(shù)化了。(題外話:回想一下在線性模型中,同時(shí)將 w 和 b 擴(kuò)大兩倍,模型的分界線沒(méi)有變化,但是模型的輸出可信度卻增大了兩倍,而在訓(xùn)練迭代中, w 和 b 絕對(duì)值越來(lái)越大,所以 SVM 中就有了函數(shù)距離和幾何距離的概念)
??既然模型被過(guò)度參數(shù)化了,我們就事先確定一個(gè)參數(shù),比如將 w1 替換成全零向量,將 w1.x = 0 帶入 binomial softmax regression ,得到了我們最開(kāi)始的二項(xiàng) logistic regression (可以動(dòng)手算一算), 用圖就可以表示為
??(注:虛線表示為 0 的權(quán)重,在第一張圖中沒(méi)有畫(huà)出來(lái),可以看到 logistic regression 就是 softmax regression 的一種特殊情況)
??在實(shí)際應(yīng)用中,為了使算法實(shí)現(xiàn)更簡(jiǎn)單清楚,往往保留所有參數(shù),而不任意地將某一參數(shù)設(shè)置為 0。我們可以對(duì)代價(jià)函數(shù)做一個(gè)改動(dòng):加入權(quán)重衰減 (weight decay)。 權(quán)重衰減可以解決 softmax 回歸的參數(shù)冗余所帶來(lái)的數(shù)值問(wèn)題。并且此時(shí)代價(jià)函數(shù)變成了嚴(yán)格的凸函數(shù), Hessian矩陣變?yōu)榭赡婢仃?#xff0c;保證有唯一的解。(感覺(jué)與線性分類器里限制 ||w|| 或者設(shè)置某一個(gè) w 為全零向量一樣起到了減參的作用,但是這個(gè)計(jì)算起來(lái)簡(jiǎn)單清晰,可以用高斯分布的 MAP 來(lái)推導(dǎo),其結(jié)果是將 w 軟性地限制在超球空間,有一點(diǎn) “soft” 的味道,個(gè)人理解^ ^)
??加入權(quán)重衰減后的代價(jià)函數(shù)是:
??等號(hào)右邊第一項(xiàng)是訓(xùn)練樣本 label 對(duì)應(yīng)的輸出節(jié)點(diǎn)上的概率的負(fù)對(duì)數(shù),第二項(xiàng)是 weight decay ,可以使用梯度下降法和 L-BFGS 等算法可以保證收斂到全局最優(yōu)解。總結(jié)起來(lái),logistic regression 是 softmax regression 的一種特殊形式,前者是二類問(wèn)題,后者是多類問(wèn)題,前者的非線性函數(shù)的唯一確定的 sigmoid function (默認(rèn) label 為 0 的權(quán)重為全零向量的推導(dǎo)結(jié)果), 后者是 softmax, 有時(shí)候我們并不特意把它們區(qū)分開(kāi)來(lái)。
? ? ? 好,基礎(chǔ)知識(shí)準(zhǔn)備完畢,下面我們就要在數(shù)字手寫(xiě)識(shí)別項(xiàng)目里面實(shí)戰(zhàn)一下了。(^_^)
??
參考資料:
[1] 統(tǒng)計(jì)學(xué)習(xí)方法, 李航 著
[2]?http://deeplearning.stanford.edu/wiki/index.php/UFLDL_Tutorial??
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/daniel-D/archive/2013/05/30/3109276.html
總結(jié)
以上是生活随笔為你收集整理的Logistic Regression 之基础知识准备的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 实现跨域cookie共享(转载)
- 下一篇: HTML去掉列表前面的符号!