Sigmoid函数与逻辑回归
文章目錄
- (1). Sigmoid函數的由來——伯努利分布的衍生物
- 1.1 為什么會有 sigmoid 函數的出現?
- 1.2 sigmoid 函數推導過程
- 1.3 sigmoid 函數求導
- (2). 邏輯回歸(Logistic Regression)
- 2.1 邏輯回歸算法的最終本質——求決策邊界
- 2.2 邏輯回歸算法中的重要組成部分
(1). Sigmoid函數的由來——伯努利分布的衍生物
1.1 為什么會有 sigmoid 函數的出現?
考慮一個事件X,其發生的概率為p,不發生的概率為1-p,如下表所示:
| 發生概率 | 1 - p | p |
通過上述事件我們能夠得到當事件一定發生(x=1) 和 一定不發生(x=0) 的概率,但很多時候事件不一定是一個非0即1的事件,而是一個連續取值的事件。當x的取值在(0,1)之間時,如x=0.5時,我們就無法判斷該事件是判定為發生還是不發生了。為此,我們期望找到連續變量 x 和發生概率 p 之間的對應關系,使得每一個 xxx 取值都有一個對應的事件發生概率 ppp,根據發生概率 ppp 來推測事件發生還是不發生。例如,當 p=0.8p=0.8p=0.8 時判斷該事件發生,p=0.2p=0.2p=0.2 時判斷該事件不發生。如何尋找這個對應關系呢,sigmoid 函數的求解過程就是在尋找這個對應關系,sigmoid 最終的求解形式就描述連續變量 xxx 和發生概率 ppp 關系:
p=11+e?xp = \frac{1}{1 + e^{-x}} p=1+e?x1?
1.2 sigmoid 函數推導過程
由上一節中的表可以得到,f(x)f(x)f(x) 分布函數可以寫成:
f(x)={1?p;x=0p;x=1f(x) = \left\{ \begin{array}{rcl} 1-p; \qquad x=0 \\ p; \qquad x=1 \end{array} \right. f(x)={1?p;x=0p;x=1?
進一步的我們可這個分段函數寫成一個函數:
f(x)=px?(1?p)1?xf(x) = p^x*(1-p)^{1-x} f(x)=px?(1?p)1?x
接著我們在這個式子上進行推導:
f(x)=elnpx(1?p)1?x=elnpx+ln(1?p)1?x=ex?lnp+(1?x)?ln(1?p)=ex[lnp?ln(1?p)]+ln(1?p)=ex?lnp1?p+ln(1?p)\begin{aligned} f(x) &= e^{lnp^x (1-p)^{1-x}} \\ &= e^{lnp^x + ln(1-p)^{1-x}} \\ &= e^{x·lnp + (1-x)·ln(1-p)} \\ &= e^{x [ lnp - ln(1-p)] + ln(1-p)} \\ &= e^{x·ln\frac{p}{1-p} + ln(1-p)} \end{aligned} f(x)?=elnpx(1?p)1?x=elnpx+ln(1?p)1?x=ex?lnp+(1?x)?ln(1?p)=ex[lnp?ln(1?p)]+ln(1?p)=ex?ln1?pp?+ln(1?p)?
我們找出跟 xxx 變量相關的系數 lnp1?pln\frac{p}{1-p}ln1?pp?,令其等于 η\etaη,反解 η\etaη:
η=lnp1?peη=p1?pp=11+e?η\begin{aligned} \eta &= ln\frac{p}{1-p} \\ e^\eta &=\frac{p}{1-p} \\ p &= \frac{1}{1+e^{-\eta}} \end{aligned} ηeηp?=ln1?pp?=1?pp?=1+e?η1??
最后計算出的形式就是sigmoid函數的函數形式,將 η\etaη 換成 xxx 后就得到了連續變量 xxx 和事件發生概率 ppp 之間的函數關系(至于為什么可以把 η\etaη 換成 xxx 這里我想了很久也沒想通,如果有大佬希望可以指點下)。
1.3 sigmoid 函數求導
在邏輯回歸中,構造函數選用的就是sigmoid函數。我們都知道在機器學習中會不斷通過求解梯度來進行函數的參數更新,那么sigmoid作為目標函數,不可避免的就會涉及到sigmoid的求導,sigmoid函數求導結果如下:
f′(x)=(11+e?x)′=e?x(1+e?x)2=11+e?x?(1?11+e?x)=f(x)?(1?f(x))\begin{aligned} f'(x) &= (\frac{1}{1+e^{-x}})' \\ &= \frac{e^{-x}}{(1+e^{-x})^2} \\ &= \frac{1}{1+e^{-x}}·(1 - \frac{1}{1+e^{-x}}) \\ &= f(x)·(1-f(x)) \end{aligned} f′(x)?=(1+e?x1?)′=(1+e?x)2e?x?=1+e?x1??(1?1+e?x1?)=f(x)?(1?f(x))?
(2). 邏輯回歸(Logistic Regression)
2.1 邏輯回歸算法的最終本質——求決策邊界
邏輯回歸中使用 sigmoid 函數 11+e?w?x\frac{1}{1 + e^{-w·x}}1+e?w?x1? 來預測事件發生的概率,如下圖所示,當縱坐標取值大于0.5時則判斷事件發生(y=1),當縱坐標小于0.5時則判斷事件不發生(y=0)。
我們仔細觀察,整個式子 yyy 的取0還是取1完全取決于 w?xw·xw?x 的取值是>0還是<0,于是我們就可以通過判斷一個樣本點是在直線 z=w?xz=w·xz=w?x 的上半邊還是下半邊來判斷 yyy 的取值了。這樣一來,我們求解的最根本的問題就是求解一條直線 z=w?xz = w·xz=w?x,使得在直線一邊的數據點全為正樣本,另一邊的數據點全為負樣本。因此,邏輯回歸算法算法的本質其實是去求解一個“邊界”,這個邊界不僅能夠保證數據分類的正確性,還能保證所有分類后的數據的 cost 值最小,如下圖所示(這和SVM的最小間隔距離非常相似):
決策邊界由函數:w?X=0w·X = 0w?X=0 來確定,其中參數 www是我們需要學習的參數,因此核心問題就成了求解邊界:
z=w?X=w0+w1?X1+w2?X2+...z = w·X = w_0 + w_1·X_1 + w_2·X_2 + ... z=w?X=w0?+w1??X1?+w2??X2?+...
2.2 邏輯回歸算法中的重要組成部分
對于任何一個算法來說,通常都需要考慮的3個部分:
- 構建基本函數(就是用來預測最終yyy值的函數)
- 構建目標函數(目標函數=損失函數 + 正則項)
- 構建優化方法(也叫優化器optimizer)
邏輯回歸中的基本構造函數
在邏輯回歸算法中,選用的基本函數就是sigmoid函數 hθ(x)=11+e?xh_{\theta}(x) = \frac{1}{1 + e^{-x}}hθ?(x)=1+e?x1?,該函數用于預測輸入 xxx 后標簽 yyy 的概率,注意,這里的 xxx 并非是數據集的原始數據輸入,而是乘以了參數 θ\thetaθ 之后的值,即 x=X?θx = X · \thetax=X?θ,因此邏輯回歸的基本函數為:
hθ(X)=11+e?θXh_{\theta}(X) = \frac{1}{1+e^{-\theta X}} hθ?(X)=1+e?θX1?
邏輯回歸中的損失函數
邏輯回歸的損失函數為:
loss(yi,yi′)=?∑i=1my(i)loghθ(x(i))+(1?y(i))log(1?hθ(x(i))loss(y_i, y_i') = -\sum_{i=1}^my^{(i)}logh_{\theta}(x^{(i)}) + (1 - y^{(i)})log(1-h_{\theta}(x^{(i)}) loss(yi?,yi′?)=?i=1∑m?y(i)loghθ?(x(i))+(1?y(i))log(1?hθ?(x(i))
其中,hθ(X)=11+e?θXh_{\theta}(X) = \frac{1}{1+e^{-\theta X}}hθ?(X)=1+e?θX1?,這個式子可以從兩個思路推導出來:最大似然估計、交叉熵損失函數,下面分別從這兩個方面進行推導。
- 通過極大似然估計來解釋損失函數
首先我們需要知道極大似然估計是什么,舉個例子:假設取球事件為y,取到白球時y=1,概率為p,取到黑球時y=0,概率為1-p。由于是獨立事件,三次拿球兩黑一白的概率可以表示為:P(y=0∣p)P(y=0∣p)P(y=1∣p)=(1?p)(1?p)p=p3?2p2+pP(y = 0 | p)P(y = 0 | p)P(y = 1 | p) = (1 - p)(1 - p)p = p^3 - 2p^2 + pP(y=0∣p)P(y=0∣p)P(y=1∣p)=(1?p)(1?p)p=p3?2p2+p。白球的極大似然估計就是求使得這個概率表達式最大的p值,對上式求導,求此一元二次方程的根得p=1/3或p=1,可知原式在[0, 1/3]區間單調遞增,在[1/3, 1]區間單調遞減。因此,在白球概率范圍[0.2,0.8]內,當p=1/3時表達式取得最大值,取得白球的概率的極大似然估計為1/3(例子引自這里)。通過這個例子可以看到,最大似然估計其實是在給定了若干個事實后(去了三次球兩黑一白),對事件發生的最大可能概率(取到白球的概率)進行估計。
那么在邏輯回歸中,假定每一個數據樣本相互獨立,則取了 mmm 個樣本后,得到的似然函數為根據每一個數據樣本標簽計算出的概率值相乘:
L(θ)=∏i=1mpiyi(1?pi)1?yil(θ)=∑i=1mln[piyi(1?pi)1?yi]L(\theta) = \prod_{i=1}^m p_i^{y_i} (1-p_i)^{1-y_i}\\ l(\theta) = \sum_{i=1}^mln[p_i^{y_i}(1-p_i)^{1-y_i}] L(θ)=i=1∏m?piyi??(1?pi?)1?yi?l(θ)=i=1∑m?ln[piyi??(1?pi?)1?yi?]
式子 L(θ)L(\theta)L(θ) 就等于上面白球例子中的:(1?p)(1?p)p(1 - p)(1 - p)p(1?p)(1?p)p,l(θ)l(\theta)l(θ)是對原式求對數,把累成變為累加,這個式子也叫對數似然估計。我們現在假設 ppp 服從 11+e?θX\frac{1}{1+e^{-\theta X}}1+e?θX1?分布(其實真正的 ppp 并不是等于這個式子的,因為 θ\thetaθ 參數是不準確的,是需要學習的),這樣一來,我們就有了損失函數:
loss(yi,yi′)=?l(θ)=?∑i=1mln[(11+e?θx)yi(11+eθx)1?yi]=?∑i=1my(i)loghθ(x(i))+(1?y(i))log(1?hθ(x(i))\begin{aligned} loss(y_i, y_i') &= -l(\theta) \\ &= -\sum_{i=1}^mln[(\frac{1}{1+e^{-\theta x}})^{y_i} (\frac{1}{1+e^{\theta x}})^{1-y_i} ]\\ &=-\sum_{i=1}^my^{(i)}logh_{\theta}(x^{(i)}) + (1 - y^{(i)})log(1-h_{\theta}(x^{(i)}) \end{aligned} loss(yi?,yi′?)?=?l(θ)=?i=1∑m?ln[(1+e?θx1?)yi?(1+eθx1?)1?yi?]=?i=1∑m?y(i)loghθ?(x(i))+(1?y(i))log(1?hθ?(x(i))?
怎么理解這個式子呢?這樣想,我們按照服從 11+e?θX\frac{1}{1+e^{-\theta X}}1+e?θX1?的分布概率 p′p'p′ 來進行估測的結果并不是真實標簽 yiy_iyi?,而是有偏估計 yi′y_i'yi′?,因為我們的參數 θ\thetaθ 是有偏的。而原本的極大似然估計的本質是,在使用真實的分布概率 ppp 去做預測時,是可以得到正確的預測標簽 yiy_iyi? 的。因此,使用有偏概率 p′p'p′ 去做估計得到結果,就是有偏預測結果 y′y'y′ 和真實標簽數據 yyy 之間的偏差值,也就是損失函數的結果。
- 通過交叉熵來解釋損失函數
損失函數的定義是:如果我們預測類型接近真實類型,則損失函數值非常小;如果預測類型偏離真是類型很多,則損失函數非常大。我們再列出最終的loss函數來看看:
loss(yi,yi′)=?∑i=1my(i)loghθ(x(i))+(1?y(i))log(1?hθ(x(i))loss(y_i, y_i') = -\sum_{i=1}^my^{(i)}logh_{\theta}(x^{(i)}) + (1 - y^{(i)})log(1-h_{\theta}(x^{(i)}) loss(yi?,yi′?)=?i=1∑m?y(i)loghθ?(x(i))+(1?y(i))log(1?hθ?(x(i))
可以發現其實這個函數可以拆成兩個部分(圖片引自這里):
分別代表當樣本的真實標簽 y=1y=1y=1 時,對應的損失函數為:?log(hθ(x))-log(h_{\theta}(x))?log(hθ?(x)),當樣本的真實標簽 y=0y=0y=0 時對應的損失函數為: ?log(1?hθ(x))-log(1-h_{\theta}(x))?log(1?hθ?(x))。如下圖所示(圖片引自這里):
這個圖非常直觀的表示了損失函數與預測準確度的關系,例如當y = 1時,如果 hθ(x)h_{\theta}(x)hθ?(x) 的預測值越接近 1,則得到的損失函數值越小,若預測結果越接近 0,則得到的損失函數值越大。而從上面可以看出,不管是 y=1y=1y=1 還是 y=0y=0y=0 的情況,均使用 ?log-log?log 來進行損失函數的定義,為什么呢?這就涉及到香農熵的問題了,香農信息量用來度量不確定性的大小:一個事件的香農信息量等于0,表示該事件的發生不會給我們提供任何新的信息,例如確定性的事件,發生的概率是1,發生了也不會引起任何驚訝;當不可能事件發生時,香農信息量為無窮大,這表示給我們提供了無窮多的新信息,并且使我們無限的驚訝,而 ?log-log?log 函數恰恰能很好的表達在 xxx 取值接近 1 時函數值接近于 0,反之 xxx 取值接近 0 時函數值接近于無窮大。
邏輯回歸中的優化方法
使用 SGD 隨機梯度下降的方法來優化參數 θ\thetaθ:
θj:=θj+α?loss(yi,yi′)\theta_j: = \theta_j + \alpha·loss(y_i, y_i') θj?:=θj?+α?loss(yi?,yi′?)
總結
以上是生活随笔為你收集整理的Sigmoid函数与逻辑回归的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 被AI人机疯狂单杀?王者荣耀AI“绝悟”
- 下一篇: 多智能体连续行为空间问题求解——MADD