softmax回歸(理論部分解釋)


前面我們已經說了logistic回歸,訓練樣本是5ec89e9cf3712d45b80e93258352ea8fimage(且這里的image是d維,下面模型公式的x是d+1維,其中多出來的一維是截距橫為1,這里的y=±1也可以寫成其他的值,這個無所謂不影響模型,只要是兩類問題就可以),訓練好這個模型中imageimage參數θ以后(或者是imageimage這個模型,這倆是一個模型),然后給入一個新的image,我們就可以根據模型來預測image對應label=1或0的概率了。

前面處理的是兩類問題,我們想把這個兩類問題擴展,即根據訓練好的模型,給入一個新的imageimage,我們就可以根據模型來預測image對應label=1,2,…k等多個值的概率。我們首先也是最重要的部分是確定這個新的模型是什么。對於一個x,新的模型image(j=1,2..k)要加起來等於1.

 

我們假設新模型為:

image……………………………………..……………………………………………………………………(1)

(這里模型中的image是經過前面的image處理后的,每一個image都增加了一維image

其中 \theta_1, \theta_2, \ldots, \theta_k \in \Re^{n+1} 是模型的參數在實現Softmax回歸時,將 \textstyle \theta 用一個 \textstyle k \times(n+1) 的矩陣來表示會很方便,該矩陣是將 \theta_1, \theta_2, \ldots, \theta_k 按行羅列起來得到的,如下所示:


\theta = \begin{bmatrix}
\mbox{---} \theta_1^T \mbox{---} \\
\mbox{---} \theta_2^T \mbox{---} \\
\vdots \\
\mbox{---} \theta_k^T \mbox{---} \\
\end{bmatrix}

這里說一個問題:在logistic回歸中,是兩類問題,我們只用了一個θ,這里我們是不是也可以只用k-1個θk就可以表示所有的模型呢?具體就是我們只需要把image置為0.所以image=1,這樣帶入公式(1)中就可以少使用一個image,我們驗證一下,如果k=2即兩類問題時,這個模型就退化成logistic回歸,我們令θ2=0,那么我們得到:

imageimageimageimageimage  ,得證。所以說我們的
\theta = \begin{bmatrix}
\mbox{---} \theta_1^T \mbox{---} \\
\mbox{---} \theta_2^T \mbox{---} \\
\vdots \\
\mbox{---} \theta_k^T \mbox{---} \\
\end{bmatrix}
參數矩陣確實存在參數冗余,這個問題,下面還會繼續說。

 

接下來我們要做的是求cost function:

我們知道logistic的cost function(不加約束項)為171730576401395,即把每個樣本image帶入其label image對應的模型公式里(image的labelimage是1,就把image代入image,是0就代入image),然后把所有樣本image帶入模型得到的結果相乘再取對數log(對數運算也就是每個樣本image帶入模型得到的結果再相加),取平均。我們這里同樣這樣做,只是因為這里類別計較多,我們使用一個”示性函數‘’來使公式表達整潔:

\textstyle 1\{\cdot\} 是示性函數,其取值規則為:\textstyle 1\{ 值為真的表達式 \textstyle \}=1\textstyle 1\{ 值為假的表達式 \textstyle \}=0

舉例來說,表達式 \textstyle 1\{2+2=4\} 的值為1 ,\textstyle 1\{1+1=5\}的值為 0。

我們的代價函數為(不加約束項):


\begin{align}
J(\theta) = - \frac{1}{m} \left[ \sum_{i=1}^{m} \sum_{j=1}^{k}  1\left\{y^{(i)} = j\right\} \log \frac{e^{\theta_j^T x^{(i)}}}{\sum_{l=1}^k e^{ \theta_l^T x^{(i)} }}\right]
\end{align}

我們知道對logistic回歸模型的cost function 最小化,這里以梯度下降法進行說明:

這里的θ是一個k*(n+1)的矩陣,對應着模型里面的所有參數,我們現在有一個θ參數矩陣值

,那么我們通過梯度下降法得到的新的θ’參數矩陣值是多少呢,怎么求?是這樣的,比如我們更新θ(1,1)這個參數目前對應的值,

首先我們求image對θ(1,1)這一個參數的偏導:

image求導得到的是一個數(即把所有image和目前的θ參數矩陣值帶入左邊這個公式得到的結果即是,而不是還需要θ的第一個元素增加一個增量什么的,因為這里已經對θ(1,1)求導了)。有的地方是按梯度更新的,梯度是一個向量,但梯度也是分別對每一個參數求導得到的數,然后組成的向量。這里這么寫是為了便於理解(在程序中還是以矩陣運算進行的,所以跟這個公式會有出入,但是核心思想是一樣的)。然后新的θ’參數矩陣值的第一個元素θ’(1,1)=θ(1,1)-a。然后利用同樣的方法image得到新的參數矩陣值θ’的其他元素θ’(v,u)。我們得到θ’后,我們按這種方法再次迭代得到新的參數矩陣值θ”…..最后得到使image收斂的模型參數。

 

這時候我們討論一下前面提到的參數冗余問題:

現在我們模型的參數矩陣θ求好了,那么我們有一個樣本image,我們想求下這個樣本對應的label等於各個i(i=1,2…k)的概率即利用image

這時候我們讓矩陣θ的每一行\textstyle \theta_j 都變成 \textstyle \theta_j - \psi(\textstyle j=1, \ldots, k)。那么對任意的j,j∈\textstyle j=1, \ldots, k,有

d8076908fb40b49db821dc410b03700f

也就是說參數矩陣θ的每一行\textstyle \theta_j都減去減去某一個常向量image得到新的參數矩陣θ’,那么這兩個參數矩陣是等價的,即一個樣本image對應的label等於各個i(i=1,2…k)的概率在兩個參數矩陣下是一樣的。這時候我們假設如果參數 \textstyle (\theta_1, \theta_2,\ldots, \theta_k) 是代價函數 \textstyle J(\theta) 的極小值點,那么 \textstyle (\theta_1 - \psi, \theta_2 - \psi,\ldots,
\theta_k - \psi) 同樣也是它的極小值點,其中 \textstyle \psi 可以為任意向量。因此使 \textstyle J(\theta) 最小化的解不是唯一的。(有趣的是,由於 \textstyle J(\theta) 仍然是一個凸函數,如果是只是用梯度下降法的話,不會遇到局部最優解的問題。但是 Hessian 矩陣是奇異的/不可逆的,這會直接導致采用牛頓法優化就遇到數值計算的問題,所以我們還是要尋找在使用梯度下降、牛頓法或其他算法時都可以解決參數冗余所帶來的數值問題的辦法)

這時候我們可以考慮這個image等於某一個\textstyle \theta_j,那么這個\textstyle \theta_j就變成了0向量,這樣新的參數矩陣就少了一組變量,只需要k-1組\textstyle \theta_j,我們就可以構建模型,這樣我們的cost function的優化結果只有唯一解。並且在logistic公式中我們也是這么做的,前面已經證明了。

 

在實際應用中,為了使算法實現更簡單清楚,往往保留所有參數 \textstyle (\theta_1, \theta_2,\ldots, \theta_n),而不任意地將某一參數設置為 0。但此時我們需要對代價函數做一個改動:加入權重衰減。權重衰減可以解決 softmax 回歸的參數冗余所帶來的數值問題。

我們通過添加一個權重衰減項 \textstyle \frac{\lambda}{2} \sum_{i=1}^k \sum_{j=0}^{n} \theta_{ij}^2 來修改代價函數,這個衰減項會懲罰過大的參數值,現在我們的代價函數變為:


\begin{align}
J(\theta) = - \frac{1}{m} \left[ \sum_{i=1}^{m} \sum_{j=1}^{k} 1\left\{y^{(i)} = j\right\} \log \frac{e^{\theta_j^T x^{(i)}}}{\sum_{l=1}^k e^{ \theta_l^T x^{(i)} }}  \right]
              + \frac{\lambda}{2} \sum_{i=1}^k \sum_{j=0}^n \theta_{ij}^2
\end{align}
那為什么加入這個權重衰減項也就是L2正則項后,就可以解決參數冗余所帶來的數值問題?
有了這個權重衰減項以后 (

\textstyle \lambda > 0

),代價函數就變成了嚴格的凸函數,這樣就可以保證得到唯一的解了。 此時的 Hessian矩陣變為可逆矩陣,並且因為

\textstyle J(\theta)

是凸函數,梯度下降法和 L-BFGS 等算法可以保證收斂到全局最優解。

在優化參數每次迭代得到新的θ‘時,與前面的相比,我們這里只要需要改變上面的a,即上面的a還要加上一個數。你要更新θ元素的某個元素θ(v,u),就是把對應的a變成:a加上正則項權重lamuda倍的原參數矩陣對應的元素θ(v,u),從而得到a’,然后更新θ’(v,u)=θ(v,u)-迭代速率α倍的a’。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM