回歸(三):Softmax回歸

回歸(三)

Softmax回歸

二分類到多分類問題

在Logistic回歸中,我們處理的是二分類的問題。我們假定事件y=1?的對數(shù)幾率滿足線性模型,得到y=1?的概率函數(shù)滿足sigmoid函數(shù)的形式。在使用模型預(yù)測的時候,如果求出y=1?的概率大于0.5,就預(yù)測y=1?;否則就預(yù)測y=0?。即:

ln\ odds(y=1) = ln\frac{p}{1-p} = \theta^Tx \Rightarrow p = \frac{1}{1+e^{-\theta^Tx}}

y = \begin{cases}1\quad p>0.5\\ 0\quad otherwise \end{cases}

如果碰到多分類問題呢?先以三分類為例;假設(shè)有三個類別1, 2, 3,那么我們就可以做三次logistic回歸,假定有n個特征值,我們可以定義:

z_1 = \theta_{11}x_1 + \theta_{12}x_2 + \theta_{12}x_3 + ...+\theta_{1n}x_n

z_2 = \theta_{21}x_1 + \theta_{22}x_2 + \theta_{22}x_3 + ...+\theta_{2n}x_n?

z_3 = \theta_{31}x_1 + \theta_{32}x_2 + \theta_{32}x_3 + ...+\theta_{3n}x_n

那么y = 1,2,3的概率分別為:

p(y = 1) = \frac{1}{1+e^{-z_1}}?

p(y = 2) = \frac{1}{1+e^{-z_2}}?

p(y = 3) = \frac{1}{1+e^{-z_3}}

這就做了三次logistic回歸。然后比較三者的概率大小。那么是否能夠直接使用某種方法,通過一次回歸就得到屬于每個類別的概率呢?

假設(shè)現(xiàn)在我們已經(jīng)求出了y = 1,2,3的概率,分別為p_1, p_2, p_3。那么p_1, p_2, p_3一定滿足:

  • (1)p_i的越大,則事件y=i的可能性越大
  • (2)\sum p_i = 1

顯然,z_1, z_2, z_3是滿足條件(1)的,要讓概率和為零,只需要對z_1, z_2, z_3做一個歸一化操作。最簡單的就是p_i = \frac{z_i}{\sum z_i},但是這種處理雖然簡單也易于理解,但是在之后的一些處理如求導(dǎo)的操作中比較麻煩。

使用softmax回歸處理多分類問題

數(shù)學(xué)可以得到,ln(e^x+e^y)可以用來近似地表示max(x, y),通常這么做是因?yàn)?img class="math-inline" src="https://math.jianshu.com/math?formula=ln(e%5Ex%20%2B%20e%5Ey)" alt="ln(e^x + e^y)" mathimg="1">相對于max(x, y)更容易求偏導(dǎo)和微分。這里我們對上面的歸一化做一些修改,不再是簡單地除以所有z_i的和,我們對z_i重新賦予含義:

z_1 = \frac{exp(\theta^T_1x)}{\sum_{k=1}^3 exp(\theta_k^T x)}?

z_2 = \frac{exp(\theta^T_2x)}{\sum_{k=1}^3 exp(\theta_k^T x)}?

z_3 = \frac{exp(\theta^T_3x)}{\sum_{k=1}^3 exp(\theta_k^T x)}

拓展到K分類的問題,第k類的參數(shù)為\vec \theta_k,組成二維矩陣\theta_{k\times n}。那么:

p(c = k|x; \theta) = \frac{exp(\theta^T_k x)}{\sum_{l=1}^Kexp(\theta^T_lx)}, k = 1,2,3, ...,K

同樣可以計算似然函數(shù),對數(shù)似然和求隨機(jī)梯度:

似然函數(shù):L(\theta) = \prod_{i=1}^m \prod_{k=1}^Kp(c=k|x^{(i)};\theta)^{y_k^{(i)}} = \prod_{i=1}^m \prod_{k=1}^K\left( \frac{exp(\theta^T_kx^{(i)})}{\sum_{l=1}^K exp(\theta_l^T x^{(i)})} \right)^{y^{(i)}_k}?

對數(shù)似然:J_m(\theta) = ln L(\theta) = \sum_{i=1}^m\sum_{k=1}^K y^{(i)}_k\centerdot\left( \theta^T_kx^{(i)} - ln\sum^K_{l=1}exp(\theta^T_lx^{(i)}) \right)\\ J(\theta) = \sum_{k=1}^K y_k\centerdot\left( \theta^T_kx - ln\sum^K_{l=1}exp(\theta^T_lx) \right)

隨機(jī)梯度:\frac{\partial J(\theta)}{\partial \theta_k} = (y_k - p(y_k|x;\theta))\centerdot x

公式中的y_k?采用one-hot編碼,對于訓(xùn)練數(shù)據(jù)如果y = k?,則有:

y_i = \begin{cases} 1\quad i=k\\ 0 \quad otherwise \end{cases}

這樣,使用模型預(yù)測時得到的K維列向量中,每一個維度的數(shù)值就可以表征屬于對應(yīng)類別的概率。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容