【机器学习】SoftMax多分类---学习笔记
SoftMax---学习笔记
-
- softMax分类函数
-
- 定义:
- softmax分类损失函数
softMax分类函数
首先给一个图,这个图比较清晰地告诉大家softmax是怎么计算的。
(图片来自网络)
定义:
给定以歌n×kn×kn×k矩阵W=(w1,w2,...,wk)W=(w_1,w_2,...,w_k)W=(w1,w2,...,wk),其中,wj∈Rnw_j\\in R^nwj∈Rn为n×1n×1n×1列向量(1≤j≤k1\\leq j\\leq k1≤j≤k),Softmax模型hw:Rn→Rkh_w:R^n →R^khw:Rn→Rk为:
hW(x)=(e<w1,x>∑t=1ke<wt,x>,e<w2,x>∑t=1ke<wt,x>,...,e<wk,x>∑t=1ke<wt,x>)(样本m×k)h_W(x)=(\\frac{e^{<w_1,x>}}{\\sum_{t=1}^{k}e^{<w_t,x>}},\\frac{e^{<w_2,x>}}{\\sum_{t=1}^{k}e^{<w_t,x>}},...,\\frac{e^{<w_k,x>}}{\\sum_{t=1}^{k}e^{<w_t,x>}})_{(样本m×k)}hW(x)=(∑t=1ke<wt,x>e<w1,x>,∑t=1ke<wt,x>e<w2,x>,...,∑t=1ke<wt,x>e<wk,x>)(样本m×k)
样本x1x_1x1的softmax值为:
hW(x1)=(e<w1,x1>∑t=1ke<wt,x1>,e<w2,x1>∑t=1ke<wt,x1>,...,e<wk,x1>∑t=1ke<wt,x1>)(1×k)h_W(x_1)=(\\frac{e^{<w_1,x_1>}}{\\sum_{t=1}^{k}e^{<w_t,x_1>}},\\frac{e^{<w_2,x_1>}}{\\sum_{t=1}^{k}e^{<w_t,x_1>}},...,\\frac{e^{<w_k,x_1>}}{\\sum_{t=1}^{k}e^{<w_t,x_1>}})_{(1×k)}hW(x1)=(∑t=1ke<wt,x1>e<w1,x1>,∑t=1ke<wt,x1>e<w2,x1>,...,∑t=1ke<wt,x1>e<wk,x1>)(1×k)
且可知∑1khw(x1)=1\\sum_1^kh_w(x_1) = 11∑khw(x1)=1
类别数k要小于特征维度n
如果类别数大于特征维度,那么就会出现过多的未知参数需要学习,导致模型过于复杂,难以训练和泛化。因此,通常是将类别数设定为特征维度的一个较小的值,以保证模型的简洁性和可行性。
softmax分类损失函数
交叉熵的理论部分在上一篇文章:Logistic回归
前面提到,在多分类问题中,我们经常使用交叉熵作为损失函数
Loss=−∑tilnyiLoss = -\\sum t_ilny_iLoss=−∑tilnyi
其中tit_iti表示真实值,yiy_iyi表示求出的softmax值。当预测第i个时,可以认为tit_iti=1.此时损失函数变成了Lossi=−lnyiLoss_i=-lny_iLossi=−lnyi
代入yi=hW(xi)y_i=h_W(x_i)yi=hW(xi),求梯度
▽Lossi=yi−1▽Loss_i=y_i-1▽Lossi=yi−1上面的结果表示,我们只需要正向求出yiy_iyi,将结果减1就是反向更新的梯度,导数的计算是不是非常简单!
总结一下: