文章目錄
- 1. 前言
- 2. Logistic Regression模型
-
- 2.1 公式
- 2.2 Sigmoid函數
- 2.3 Logistic Regression模型的損失函數
- 2.3 Logistic Regression模型的梯度下降
-
- 2.3.1 sigmoid函數的求導形式
- 2.3.2 LR函數的求導
1. 前言
在之前已經簡單闡述了“線性回歸”模型,具體的介紹位址為:https://blog.csdn.net/qq_30232405/article/details/104153928
這種簡單的線性回歸在拟合複雜模型的時候,會出現拟合能力不足的情況。
例如下圖已經存在的資料:
- 橫坐标表示:tumor size(惡性良性腫瘤大小),用 x x x表示。
-
橫坐标:malignant(惡行惡性良性腫瘤),可以用如下公式表示:
h θ ( x ) = θ T x h_\theta(x) = \theta^{\mathrm{T}}x hθ(x)=θTx
圖中有兩條拟合線:
- 粉紅色直線:當圖中沒有最右異常點的時候,可以用線性回歸進行拟合
- 藍色直線:當圖中有最右異常點時,用直線拟合的。
如果一開始設定了 h θ ( x ) h_\theta(x) hθ(x)大于0.5時,預設類别為1(惡性惡性良性腫瘤),少于0.5時類别為0(良性惡性良性腫瘤),則粉紅色的直線對應的曲線恰好可以有效區分兩種類别。但是藍色直線對應的 x x x坐标則向左偏移,這時候會把惡性良性腫瘤錯誤預測為0。
為了能夠得到更有效的模型,則需要logistic regression(LR)模型來解決這個問題。
2. Logistic Regression模型
2.1 公式
首先展示LR模型的公式:
h θ ( x ) = g ( θ T x ) g ( θ T x ) = 1 1 + e − θ T x h_\theta(x) = g(\theta^{\mathrm{T}}x) \\ g(\theta^{\mathrm{T}}x)= \frac{1}{1+e^{-\theta^{\mathrm{T}}x}} hθ(x)=g(θTx)g(θTx)=1+e−θTx1
可以看到,LR模型在普通的線性回歸中增加了函數 g g g,如果把 z = θ T x z=\theta^{\mathrm{T}}x z=θTx,可以把 g g g公式化簡為:
g ( z ) = 1 1 + e − z g(z)= \frac{1}{1+e^{-z}} g(z)=1+e−z1
這個公式就是典型的sigmoid函數,也可以稱為是logistic函數。
2.2 Sigmoid函數
現在觀察一下sigmoid函數的圖像形狀:
- 當 z z z趨向于infinity時, g ( z ) g(z) g(z)接近于1
- 當 z z z趨向于infinitesimal時, g ( z ) g(z) g(z)接近于0
用上面“預測惡性良性腫瘤是否為惡性”的例子,不難看出 h θ ( x ) h_\theta(x) hθ(x)的輸出值就代表惡性良性腫瘤是否為惡性的機率。
例如:當 h θ ( x ) = 0.7 h_\theta(x)=0.7 hθ(x)=0.7,也就是說該惡性良性腫瘤有70%的機率會是惡性惡性良性腫瘤。是以,如果給定 x x x和 θ \theta θ的值,預測 y y y的機率可以表示為:
h θ ( x ) = P ( y ∣ x ; θ ) h_\theta(x)=P(y|x;\theta) hθ(x)=P(y∣x;θ)
對于兩分類來說,這種函數兩個性質:
- P ( y = 0 ∣ x ; θ ) + P ( y = 1 ∣ x ; θ ) = 1 P(y=0|x;\theta)+P(y=1|x;\theta)=1 P(y=0∣x;θ)+P(y=1∣x;θ)=1
- P ( y = 0 ∣ x ; θ ) = 1 − P ( y = 1 ∣ x ; θ ) P(y=0|x;\theta)=1-P(y=1|x;\theta) P(y=0∣x;θ)=1−P(y=1∣x;θ)
2.3 Logistic Regression模型的損失函數
回歸一下,之前的線性回歸模型的損失函數為:
J ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta)=\frac{1}{2m}\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})^2 J(θ)=2m1i=1∑m(hθ(x(i))−y(i))2
也可以用另外的符号來表示:
C o s t ( h θ ( x ) , y ) = J ( θ ) Cost(h_\theta(x), y)=J(\theta) Cost(hθ(x),y)=J(θ)
如果我們把線性回歸的損失函數 J ( θ ) J(\theta) J(θ)以圖像的形式畫出來:
可以看到這個函數是凸函數,可以求出全局最優點。
而如果把 h θ ( x ) h_\theta(x) hθ(x)換成LR模型的函數,同時畫出其 J ( θ ) J(\theta) J(θ)的圖像
這時候函數是非凸函數,存在很多的局部最優點。是以需要像一個新的損失函數,它應該具有兩個基本的性質:
- 能夠代表預測函數和正确類别之間的距離。
- 最好函數是一個凸函數,具有全局最優點。
是以研究者找到了一個比較适合的損失函數:
C o s t ( h θ ( x ) , y ) = { − l o g ( h θ ( x ) ) i f y = 1 − l o g ( 1 − h θ ( x ) ) i f y = 0 Cost(h_\theta(x), y)=\left\{ \begin{aligned} -log(h_\theta(x)) ~~ if~y=1 \\ -log(1-h_\theta(x)) ~~ if~y=0\\ \end{aligned} \right. Cost(hθ(x),y)={−log(hθ(x)) if y=1−log(1−hθ(x)) if y=0
為什麼要引入這樣的損失函數呢,接下來可以用對應的圖像進行解釋。
- 當 y = 1 y=1 y=1時,其損失函數圖像為: 由于真實标簽為1,當 h θ ( x ) h_\theta(x) hθ(x)接近于1時,說明此時函數的預測與真實标簽是一緻的,那麼損失函數的值就接近于0。如果要進行參數更新,這時候由于損失函數接近0,參數幾乎不用更新。當 h θ ( x ) h_\theta(x) hθ(x)接近于0時,說明此時函數的預測與真實标簽是不一緻的,這會導緻損失函數的值增大,需要更快的更新參數。
- 當 y = 0 y=0 y=0時,其損失函數圖像為: 其性質說明和上面的圖像一緻,這就不詳細說明了。
2.3 Logistic Regression模型的梯度下降
首先對上面的LR公式進行合并:
J ( θ ) = C o s t ( h θ ( x ( i ) ) , y ( i ) ) = − 1 m ∑ i = 1 m y ( i ) l o g ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) l o g ( 1 − h θ ( x ( i ) ) ) J(\theta) =Cost(h_\theta(x^{(i)}), y^{(i)})= -\frac{1}{m} \sum_{i=1}^{m} y^{(i)} log(h_\theta(x^{(i)})) +(1-y^{(i)} )log(1-h_\theta(x^{(i)} )) J(θ)=Cost(hθ(x(i)),y(i))=−m1i=1∑my(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))
-
當 y ( i ) = 1 y^{(i)}=1 y(i)=1時,則會變成:
J ( θ ) = − 1 m ∑ i = 1 m y ( i ) l o g ( h θ ( x ( i ) ) ) J(\theta)= -\frac{1}{m} \sum_{i=1}^{m} y^{(i)} log(h_\theta(x^{(i)})) J(θ)=−m1i=1∑my(i)log(hθ(x(i)))
-
當 y ( i ) = 0 y^{(i)}=0 y(i)=0時,則會變成:
J ( θ ) = − 1 m ∑ i = 1 m ( 1 − y ( i ) ) l o g ( 1 − h θ ( x ( i ) ) ) J(\theta)= -\frac{1}{m} \sum_{i=1}^{m} (1-y^{(i)} )log(1-h_\theta(x^{(i)} )) J(θ)=−m1i=1∑m(1−y(i))log(1−hθ(x(i)))
利用梯度下降法,如果要求出最優參數 θ \theta θ,則需要最小化 J ( θ ) J(\theta) J(θ),同時更新參數:
θ j : = θ j − α ∂ J ( θ ) ∂ θ j \theta_j:=\theta_j- \alpha \frac{\partial J(\theta)}{\partial \theta_j} θj:=θj−α∂θj∂J(θ)
要對上面這個偏導數求解,首先要知道sigmoid函數求導後的形式。
2.3.1 sigmoid函數的求導形式
∂ g ( z ) ∂ z = ∂ ∂ z 1 1 + e − z = e − z ( 1 + e − z ) 2 = 1 1 + e − z − 1 ( 1 + e − z ) 2 = g ( z ) ( 1 − g ( z ) ) \frac{\partial g(z)}{\partial z} = \frac{\partial }{\partial z} \frac{1}{1+e^{-z}} =\frac{e^{-z}}{(1+e^{-z})^2} = \frac{1}{1+e^{-z}} - \frac{1}{(1+e^{-z})^2} =g(z)(1-g(z)) ∂z∂g(z)=∂z∂1+e−z1=(1+e−z)2e−z=1+e−z1−(1+e−z)21=g(z)(1−g(z))
可以看到sigmoid函數的求導形式有一個很特别的地方:它的求導形式都可以用原函數表示。最後得到公式:
g ( z ) ′ = g ( z ) ( 1 − g ( z ) ) g(z)^{'}=g(z)(1-g(z)) g(z)′=g(z)(1−g(z))
如果對 g ( θ T x ) g(\theta^{\mathrm{T}}x) g(θTx)求導,其過程差不多,但是會多出一個 x j ( i ) x^{(i)}_j xj(i)相乘:
∂ g ( θ T x ) ∂ θ j = g ( θ T x ) ( 1 − g ( θ T x ) ) x j ( i ) \frac{\partial g(\theta^{\mathrm{T}}x)}{\partial \theta_j}=g(\theta^{\mathrm{T}}x)(1-g(\theta^{\mathrm{T}}x))x^{(i)}_j ∂θj∂g(θTx)=g(θTx)(1−g(θTx))xj(i)
- 要注意的是 θ \theta θ和 x x x都是一個向量形式
2.3.2 LR函數的求導
有了上述sigmoid函數的求導形式作為背景,我們可以化簡 ∂ J ( θ ) ∂ θ j \frac{\partial J(\theta)}{\partial \theta_j} ∂θj∂J(θ)。在損失函數 J ( θ ) J(\theta) J(θ)中, θ \theta θ和 x x x都是一個向量形式,也就是:
θ = [ θ 0 , θ 1 , . . . , θ n ] x = [ x 0 , x 1 , . . . , x n ] \theta=[\theta_0,\theta_1,...,\theta_n] \\ x=[x_0,x_1,...,x_n] θ=[θ0,θ1,...,θn]x=[x0,x1,...,xn]
當我們僅僅針對 θ j \theta_j θj進行求導的時候:
∂ J ( θ ) ∂ θ j = − 1 m ∑ i m y ( i ) h θ ( x ( i ) ) ∂ h θ ( x ( i ) ) ∂ θ j − 1 − y ( i ) 1 − h θ ( x ( i ) ) ∂ h θ ( x ( i ) ) ∂ θ j = − 1 m ∑ i m y ( i ) g ( θ T x ) ∂ g ( θ T x ) ∂ θ j − 1 − y ( i ) 1 − g ( θ T x ) ∂ g ( θ T x ) ∂ θ j \frac{\partial J(\theta)}{\partial \theta_j} = -\frac{1}{m} \sum_i^{m} \frac{y^{(i)}}{h_\theta(x^{(i)})} \frac{\partial h_\theta(x^{(i)})}{\partial \theta_j} - \frac{1-y^{(i)}}{1-h_\theta(x^{(i)})} \frac{\partial h_\theta(x^{(i)})}{\partial \theta_j} \\ = -\frac{1}{m} \sum_i^{m} \frac{y^{(i)}}{g(\theta^{\mathrm{T}}x)} \frac{\partial g(\theta^{\mathrm{T}}x)}{\partial \theta_j} - \frac{1-y^{(i)}}{1-g(\theta^{\mathrm{T}}x)} \frac{\partial g(\theta^{\mathrm{T}}x)}{\partial \theta_j} ∂θj∂J(θ)=−m1i∑mhθ(x(i))y(i)∂θj∂hθ(x(i))−1−hθ(x(i))1−y(i)∂θj∂hθ(x(i))=−m1i∑mg(θTx)y(i)∂θj∂g(θTx)−1−g(θTx)1−y(i)∂θj∂g(θTx)
可以看到上面需要利用sigmoid函數的求導方法:
∂ J ( θ ) ∂ θ j = − 1 m ∑ i m y ( i ) g ( θ T x ) g ( θ T x ) ( 1 − g ( θ T x ) ) x j ( i ) − 1 − y ( i ) 1 − g ( θ T x ) g ( θ T x ) ( 1 − g ( θ T x ) ) x j ( i ) = − 1 m ∑ i m y ( i ) ( 1 − g ( θ T x ) ) x j ( i ) − ( 1 − y ( i ) ) g ( θ T x ) x j ( i ) = 1 m ∑ i m ( g ( θ T x ) − y ( i ) ) x j ( i ) = 1 m ∑ i m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) \frac{\partial J(\theta)}{\partial \theta_j} = -\frac{1}{m} \sum_i^{m} \frac{y^{(i)}}{g(\theta^{\mathrm{T}}x)} g(\theta^{\mathrm{T}}x)(1-g(\theta^{\mathrm{T}}x))x^{(i)}_j - \frac{1-y^{(i)}}{1-g(\theta^{\mathrm{T}}x)} g(\theta^{\mathrm{T}}x)(1-g(\theta^{\mathrm{T}}x))x^{(i)}_j \\ =-\frac{1}{m} \sum_i^{m} y^{(i)} (1-g(\theta^{\mathrm{T}}x))x^{(i)}_j - (1-y^{(i)})g(\theta^{\mathrm{T}}x)x^{(i)}_j \\ =\frac{1}{m} \sum_i^{m}(g(\theta^{\mathrm{T}}x) - y^{(i)})x^{(i)}_j \\ =\frac{1}{m} \sum_i^{m}(h_\theta(x^{(i)}) - y^{(i)})x^{(i)}_j ∂θj∂J(θ)=−m1i∑mg(θTx)y(i)g(θTx)(1−g(θTx))xj(i)−1−g(θTx)1−y(i)g(θTx)(1−g(θTx))xj(i)=−m1i∑my(i)(1−g(θTx))xj(i)−(1−y(i))g(θTx)xj(i)=m1i∑m(g(θTx)−y(i))xj(i)=m1i∑m(hθ(x(i))−y(i))xj(i)
至此,LR的損失函數的求導形式已經結束,這裡面主要用到了sigmoid函數的求導,推導起來其實是比較簡單的。最後寫出梯度下降的更新公式:
θ j : = θ j − α 1 m ∑ i m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) \theta_j:=\theta_j- \alpha \frac{1}{m} \sum_i^{m}(h_\theta(x^{(i)}) - y^{(i)})x^{(i)}_j θj:=θj−αm1i∑m(hθ(x(i))−y(i))xj(i)
對比一下線性回歸的梯度下降公式:
θ j : = θ j − α 1 m ∑ i = 1 m ( h θ ( x j ( i ) ) − y ( i ) ) x j ( i ) \theta_j := \theta_j - \alpha \frac{1}{m} \sum^{m}_{i=1} (h_{\theta}(x^{(i)}_j) - y^{(i)}) x^{(i)}_j θj:=θj−αm1i=1∑m(hθ(xj(i))−y(i))xj(i)
發現他們兩個的公式高度統一,佩服以前的研究工作者能夠想出這麼完美的損失函數。