softmax回归

之前讲了一下逻辑回归,主要是用于二分类的。对于多分类的问题,我们可以用softmax回归。逻辑回归使用的是sigmoid函数,将wx+b的值映射到(0, 1)的区间,输出的结果为样本标签等于1的概率值;而softmax回归采用的是softmax函数,将wx+b的值映射到[0, 1]的区间,输出的结果为一个向量,向量里的值为样本属于每个标签的概率值.

我们先来看一下softmax函数,它将非标准化的输入z_j,j=1,2,3,...,k, 归一化为概率分布,所以\sum_{j}^{K}\delta _j=1。指数函数将z_j的值映射到(0, +\infty )\sum_{k=1}^{K}e^{z_k}为归一化常数。

softmax建模使用的分布是分类分布,当仅有两种类别时就是伯努利分布,也就是logistic所使用的分布。

下面我们来看一下softmax回归。

为了对应输出的结果为一个向量,需要对样本的标签值要进行one-hot编码。例如,现在有三类样本,分别为红,绿和蓝。假设样本x的标签为红,进行one-hot编码以后该样本的标签就为[1,0,0],一个长度等于类别数目,只有该样本所对应的标签为1,其他类别标签都为0的向量.

假设函数h_\theta {(x)}

 \theta _1,\theta _2,\theta _3,...,\theta _k为模型参数,一共有k个类别。其中每一\textstyle \theta_j为一个向量,表示的类别等于 j 时的每个特征分量的权重。

对数损失函数 :

1_{y_i=j}为指示函数,当样本的标签等于要计算的标签时为1,否则为0。

采用梯度下降法跟新参数,对参数求偏导

                                                                     p(y_i=j|x_i;\theta )=log\frac{exp^{(\theta _j^Tx_i)}}{\sum_{t=1}^{K}exp^{(\theta _t^Tx_i)}} 

 

这时,softmax回归在求解参数时最小化的解不止一个。 假设我们从参数向量 \textstyle \theta_j 中减去了向量 \textstyle \psi,这时,每一个 \textstyle \theta_j 都变成了 \textstyle \theta_j - \psi(\textstyle j=1, \ldots, k)。此时假设函数变成了以下的式子:                                                  

从上面的推导,我们可以看到推导出的结果和原来参数\textstyle \theta_j未减去\textstyle \psi的结果是相等的(见红方框)。换句话说,从\theta _j中减去\textstyle \psi完全不影响假设函数的预测结果。这表明此时的softmax回归模型中存在冗余的参数。更正式一点来说,softmax模型被过度参数化了。对于任意一个用于拟合数据的假设函数,可以求出多组参数值,这些参数得到的是完全相同的假设函数。

进一步而言,如果参数(\theta _1,\theta _2,\theta _3,...,\theta _k)是损失函数的极小值,那么(\theta _1-\varphi ,\theta _2-\varphi,\theta _3-\varphi,...,\theta _k-\varphi)同样也是它的极小值点,其中\varphi可以是任意向量。因此是损失函数最小化的解不是唯一的。感觉这个和SVM里面的函数间隔很像,函数间隔可以对参数成比例的变化,但是得到的超平面并没有变。(有趣的是,由于损失函数仍然是一个凸函数,因此梯度下降时不会遇到局部最优解的问题。但是Hessian矩阵是不可逆的,这会直接导致采用牛顿优化就遇到数值计算的问题)

为了解决这个问题,可以添加权重衰减项\frac{\lambda }{2}\sum_{i=1}^{k}\sum_{j=0}^{n}\theta_{ij}^2来约束参数, n为样本的维度,k为样本的类别数,感觉这个就是L2正则化,所以还可以防止过拟合。加了权重衰减项以后的对数损失函数为:

                                              L(\theta )=-\sum_{i=1}^{l}\sum_{j=1}^{k}\left ( 1_{y_{i}=j}log\frac{exp(\theta _j^Tx_i)}{\sum_{t=1}^{k}exp(\theta _t^Tx_i)} \right )+\frac{\lambda }{2}\sum_{i=1}^{k}\sum_{j=0}^{n}\theta_{ij}^2

这个时候损失函数为严格的凸函数,可以保证收敛到全局的最优解。 

对参数求偏导:

                                                          \bigtriangledown _{\theta _j}L(\theta )=\sum_{i=1}^{l}(x_i(1_{y_i=j}-p(y_i=j|x_i;\theta )))+\lambda \theta _j

然后使用梯度下降法迭代求解参数。

其实在做多分类是也可以使用oneVSall方法,建立多个独立的逻辑回归模型。但这两中方法在使用场景下有些许区别。

softmax回归:适用于样本的标签互斥的情况。比如,样本的标签为,房子,小车和自行车,这三类之间是没有关系的。样本只能是属于其中一个标签。

逻辑回归:使用于样本的标签有重叠的情况。比如:外套,大衣和毛衣,一件衣服可以即属于大衣,由属于外套。这个时候就需要三个独立的逻辑回归模型。

参考链接:http://ufldl.stanford.edu/wiki/index.php/Softmax%E5%9B%9E%E5%BD%92 

                  https://en.wikipedia.org/wiki/Softmax_function

                  http://www.cnblogs.com/maybe2030/p/5678387.html#_label1

  • 5
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值