Softmax回歸

???Softmax回歸是一種用于多分類問題的模型,該模型可以看成是邏輯回歸的拓展,因?yàn)槠涫褂玫膿p失函數(shù)也是cross-entropy loss(交叉熵),但與邏輯回歸不同的是,其損失函數(shù)是一種多分類形式。

1. 模型

???Softmax回歸也是一種線性模型,其模型表示:h_\theta(X) = \theta X^T \: (\theta \in R^{c \times n}, x \in R^{m \times n}) 然后在得到h_\theta(X)值的基礎(chǔ)上,加入softmax函數(shù)\sigma(z)_j = {e^{z_j} \over \sum _{k=1} ^{K} {e^{z_k}}} \quad ,(j = 1, \cdots,c) 上式中的z_kh_\theta(X)中第k列的值。
???以上就是softmax回歸的模型,實(shí)質(zhì)上是先通過線性模型,將其轉(zhuǎn)變?yōu)閷?duì)于每一類的一個(gè)"分?jǐn)?shù)",然后再利用softmax函數(shù)"分?jǐn)?shù)"轉(zhuǎn)變?yōu)橐粋€(gè)離散分布。

2. 損失函數(shù)

???在Softmax回歸中,選用的是cross-entropy loss(交叉熵),但使用的是其多分類形式:L(\theta) = - \sum _{i = 1} ^{C} {y_i log(p_i)} 式子中p=(p_1, p_2, \cdots, p_c)是通過模型計(jì)算關(guān)于x后的離散分布;y=(y_1, y_2, \cdots, y_c)代表x的真實(shí)分布,才用的是one-hot編碼形式,即若x屬于第j類,則y_j = 1,其余均為0。可以看出,邏輯回歸其實(shí)是Softmax回歸的一種特殊形式,屬于二分類時(shí)候的一種形式。
???cross-entropy loss(交叉熵)的作用是,用于衡量兩個(gè)分布之間差距,如上面就是衡量真實(shí)的分布y與模型計(jì)算的p,這兩個(gè)分布間的差距。

3.迭代更新

???有了損失函數(shù),接下來就可以通過梯度下降法,來最小化損失函數(shù),從而求得模型的參數(shù)\theta。關(guān)于\partial L \over \ \partial \theta的推導(dǎo),這里使用的是鏈?zhǔn)椒▌t,關(guān)于單個(gè)樣本x的推導(dǎo):\begin{aligned} p_k = {e^{f_k} \over \sum_j {e^{f_j}}} &, L = -log(p_y) \\ {\partial L \over \partial f_y} & = p_y - 1 \quad (x對(duì)應(yīng)的分類)\\ {\partial L \over \partial f_k} & = p_k \quad (x對(duì)應(yīng)的分類) \end{aligned} 綜上:\begin{aligned} {\partial L \over \partial f} & = p - [0, \cdots, 1, \cdots, 0]^T \\ f & = \theta x^T \\ {\partial f \over \partial \theta} & = x \\ {\partial L \over \partial \theta} & = {\partial L \over \partial f} {\partial f \over \partial \theta} = (p - [0, \cdots, 1, \cdots, 0]^T) \times x \end{aligned} 上述就是關(guān)于單個(gè)x\partial L \over \ \partial \theta的推導(dǎo),而對(duì)于整個(gè)樣本集X與上述類似,只需注意保持運(yùn)算后的矩陣規(guī)模正確即可。下面的代碼就是加入正則化后,模型的正向傳播與計(jì)算導(dǎo)數(shù)的過程。

    N, D = X.shape

    scores = np.dot(X, W)
    e = np.exp(scores)
    prob = e / np.sum(e, axis=1, keepdims=True)
    loss = np.mean( -1 * np.log(prob[range(N), y]) ) + 0.5 * reg * np.sum(W ** 2)

    mask = np.zeros_like(scores)
    mask[range(N), y] = 1
    df = prob - mask
    dW = np.dot(X.T, df)
    dW /= N
    dW += reg * W

總結(jié)

???Softmax回歸就是通過多條直線作為決策邊界來劃分整個(gè)解空間。通過線性函數(shù)來計(jì)算相應(yīng)分類的得分,然后利用softmax函數(shù)來轉(zhuǎn)換成相應(yīng)的概率;在損失函數(shù)方面使用的是交叉熵?fù)p失函數(shù),用來衡量兩個(gè)分布之間的差距。

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

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