> 文章列表 > 【机器学习】SoftMax多分类---学习笔记

【机器学习】SoftMax多分类---学习笔记

【机器学习】SoftMax多分类---学习笔记

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^nwjRnn×1n×1n×1列向量(1≤j≤k1\\leq j\\leq k1jk),Softmax模型hw:Rn→Rkh_w:R^n →R^khw:RnRk为:
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) = 11khw(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-1Lossi=yi1上面的结果表示,我们只需要正向求出yiy_iyi,将结果减1就是反向更新的梯度,导数的计算是不是非常简单!

总结一下:

【机器学习】SoftMax多分类---学习笔记

【机器学习】SoftMax多分类---学习笔记 【机器学习】SoftMax多分类---学习笔记