???Softmax回歸是一種用于多分類問題的模型,該模型可以看成是邏輯回歸的拓展,因?yàn)槠涫褂玫膿p失函數(shù)也是cross-entropy loss(交叉熵),但與邏輯回歸不同的是,其損失函數(shù)是一種多分類形式。
1. 模型
???Softmax回歸也是一種線性模型,其模型表示: 然后在得到
值的基礎(chǔ)上,加入softmax函數(shù):
上式中的
為
中第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(交叉熵),但使用的是其多分類形式: 式子中
是通過模型計(jì)算關(guān)于
后的離散分布;
代表
的真實(shí)分布,才用的是one-hot編碼形式,即若
屬于第
類,則
,其余均為0。可以看出,邏輯回歸其實(shí)是Softmax回歸的一種特殊形式,屬于二分類時(shí)候的一種形式。
???cross-entropy loss(交叉熵)的作用是,用于衡量兩個(gè)分布之間差距,如上面就是衡量真實(shí)的分布與模型計(jì)算的
,這兩個(gè)分布間的差距。
3.迭代更新
???有了損失函數(shù),接下來就可以通過梯度下降法,來最小化損失函數(shù),從而求得模型的參數(shù)。關(guān)于
的推導(dǎo),這里使用的是鏈?zhǔn)椒▌t,關(guān)于單個(gè)樣本
的推導(dǎo):
綜上:
上述就是關(guān)于單個(gè)
的
的推導(dǎo),而對(duì)于整個(gè)樣本集
與上述類似,只需注意保持運(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è)分布之間的差距。