Softmax回归是一种用于多分类问题的模型,该模型可以看成是逻辑回归的拓展,因为其使用的损失函数也是cross-entropy loss(交叉熵),但与逻辑回归不同的是,其损失函数是一种多分类形式。
1. 模型
Softmax回归也是一种线性模型,其模型表示: 然后在得到值的基础上,加入softmax函数: 上式中的为中第k列的值。
以上就是softmax回归的模型,实质上是先通过线性模型,将其转变为对于每一类的一个"分数",然后再利用softmax函数将"分数"转变为一个离散分布。
2. 损失函数
在Softmax回归中,选用的是cross-entropy loss(交叉熵),但使用的是其多分类形式: 式子中是通过模型计算关于后的离散分布;代表的真实分布,才用的是one-hot编码形式,即若属于第类,则,其余均为0。可以看出,逻辑回归其实是Softmax回归的一种特殊形式,属于二分类时候的一种形式。
cross-entropy loss(交叉熵)的作用是,用于衡量两个分布之间差距,如上面就是衡量真实的分布与模型计算的,这两个分布间的差距。
3.迭代更新
有了损失函数,接下来就可以通过梯度下降法,来最小化损失函数,从而求得模型的参数。关于的推导,这里使用的是链式法则,关于单个样本的推导: 综上: 上述就是关于单个的的推导,而对于整个样本集与上述类似,只需注意保持运算后的矩阵规模正确即可。下面的代码就是加入正则化后,模型的正向传播与计算导数的过程。
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
总结
Softmax回归就是通过多条直线作为决策边界来划分整个解空间。通过线性函数来计算相应分类的得分,然后利用softmax函数来转换成相应的概率;在损失函数方面使用的是交叉熵损失函数,用来衡量两个分布之间的差距。
网友评论