爲什麼logistic regression要使用sigmoid函數

轉自:JUN’S TECH BLOG
http://leijun00.github.io/2014/08/logistic-regression/

我們知道,線性迴歸模型輸出的是一個連續值,如果我們要輸出的不是連續值,該怎麼做呢?假設我們的輸出只有 1 和 -1.
邏輯迴歸模型形式上是把線性迴歸模型做一個變換,讓其輸出是一個 0 到 1 之間的數,假設我們的變換叫做 g(z)g(z),然後在變換後的結果上定義一個決策函數,如果:

y=1ifg(z)>0.5
y=1ifg(z)>0.5
y=−1ifg(z)<0.5
y=−1ifg(z)<0.5
其中 zz 就是我們前面講到的線性模型:

z=wTx
z=wTx
而變換採用了邏輯變換,也叫 sigmoidsigmoid 變換,其形式爲:

g(z)=11+e−z
g(z)=11+e−z
通過上面幾個式子進行一個簡單的推導,我們的決策函數變爲:

y=1ifz=wTx>0
y=1ifz=wTx>0
y=−1ifz=wTx<0
y=−1ifz=wTx<0
最後我們的邏輯迴歸模型就變成:

hw(x)=gw(x)=11+e−wTx
hw(x)=gw(x)=11+e−wTx
我們看看 sigmoid 函數有什麼特點,從下面的圖形可以看出,這個函數是個連續光滑函數,定義域是 (−∞,∞)(−∞,∞),值域是 [0,1][0,1],在 0 附近函數的區分度很高(yy的值變化比較明顯),越往兩邊,函數的區分度就越低(yy的值變化越來越不明顯).

並且這個函數處處可導,其導數爲:

g′=(11+e−z)′=e−z(1+e−z)2=g(z)⋅(1−g(z))
g′=(11+e−z)′=e−z(1+e−z)2=g(z)⋅(1−g(z))
其導數可以由自己本身表示.

而且:

g(−z)=11+ez=1−g(z)
g(−z)=11+ez=1−g(z)
z=0,e0=1,g(z)=1/2
z=0,e0=1,g(z)=1/2
z→∞,e−∞→0,g(z)=1
z→∞,e−∞→0,g(z)=1
z→−∞,e∞→∞,g(z)=0
z→−∞,e∞→∞,g(z)=0
爲什麼sigmoidsigmoid函數比別的非線性函數有吸引力呢? 做sigmoidsigmoid變換的目的是把(−∞,∞)(−∞,∞)的取值範圍(用xx表示)映射到 (0,1)(0,1) 範圍內(用yy表示): h=y(x)h=y(x),爲此我們應該選擇什麼樣的 hh 呢,hh 變換可以理解成對 xx 的一種編碼,當然hh最好是雙射,意味着可以從yy反解碼得到xx.理論上滿足雙射的hh可以有無窮多種,該怎麼選擇呢? 實際上雙射是不可能的,因爲觀測 yy 時不可避免的要引入誤差,即 y=h(x)+εy=h(x)+ε,其中 εε 爲誤差,在有誤差的情況下,xx和yy就不是一一映射了.任何從 yy 反解碼得到 xx 都是不可能的,所以問題來了:有沒有一種映射hh,在有誤差的情況下做到最優? 通俗的講,就是尋找一個映射hh,在有觀測誤差εε的情況下,最優的保持輸入信號xx的信息,用信息學的語言描述就是xx與yy之間的互信息最大,而 I(x,y)=H(y)−H(y∥x)=H(y)−H(ε)I(x,y)=H(y)−H(y∥x)=H(y)−H(ε) .x,yx,y的互信息由兩項決定 H(y)=H(h(x))H(y)=H(h(x)) 和 H(ε)H(ε),而其中第二項完全由誤差決定,我們控制不了.第一項 H(y)H(y)是由映射hh決定的,H(y)H(y)越大越好,所以問題又變成: 給定取值範圍(0,1)(0,1),熵 H(y)H(y)什麼時候最大? 答案就是yy服從均勻分佈時熵最大.因此,能把xx映射成一個均勻分佈的映射hh是最優的.當知道xx的概率密度爲f(x)f(x)時,怎麼樣的變換能把 xx 變成均勻分佈呢? 還記得遇到多這樣的面試題嗎: 如何用(0,1)(0,1)的均勻分佈生成任意的其他概率分佈? 答案是用一種叫 inverse cumulative distribution function 的變換方法.而這裏的問題正好和麪試題相反,我們要從任意分佈生成均勻分佈.答案就是f(x)f(x)的累積分佈函數F(x)F(x)就是最優的hh.想象一下正態分佈的概率密度函數,是一個倒置的鐘形函數,而它的累積分佈函數是不是和 sigmoidsigmoid 函數長得很像? 而現實中我們遇到的倒置鐘形分佈的信號又比比皆是.

注意: 對概率密度不是倒置鐘形的信號,sigmoidsigmoid變換不一定是最優的.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章