UFLDL 08 Softmax Regression
2016-05-04 09:36
190 查看
所谓softmax regression 是在logistic regression基础上的升级版。
logistics是二分类,而softmax可以多分类。
(参见http://blog.csdn.net/bea_tree/article/details/50432411#t6)
logistic regression的函数是
他的名字虽然是回归,但是功能却是分类,原因是,原有数据回归的曲线是logistic的曲线,他们的值要么接近1 要么接近0。
另外他们的目标函数是利用概率相乘得到的最大似然估计:
为了好计算一般取对数,L最大时就拟合好了。
这里的利用梯度下降法得到的迭代公式与线性回归的迭代公式是一样的,好巧。还有其他算法(perceptron learning algorithm)的迭代形式也是这样。
文中的代价函数是处理之后的,直接求最小值就行了
softmax的思想是分别得到多分类的概率,其公式如下:
好好理解下上式:
可以看成这是k个式子组成的矩阵形式。属于一组x会得到k个类别的概率。
既然我们对每个类别的概率已经做了假设
那么可以仿照最大似然的思想来得到下面的代价函数
如果输入x对应的类别是j,那么对应的概率就是
。
将所有的m个x的概率相乘就是最大似然函数,求log(乘积变相加)然后加负号之后求最小值就相当于求最大似然的最大值。
上面的代价函数就是这个意思。
其梯度的迭代公式如下
文中的理解更加严密些:
将概率公式中的参数直接减去一个向量ψ\psi得到概率公式依然没有变
也就是说得到的最优化结果直接减去这个向量之后的结果依然是满足条件的最优解,换句话说,最优解有无数个。也就是hessian矩阵是奇异的(singular/non-invertible),使用牛顿法就不好用了。
按照上面的理解我们可以将其中一类的参数全都设为0,这样就不会产生冗余了,但是实际中我们并不这然做,而是加了规则相,不过这里不叫做规则化而叫作Weight Decay。
由于后面一项一定会大于零,那么Hessian 矩阵就不会是不可逆了,这样就变成了严格的凸函数,各类求解方法就可以用了。也可以直接的理解为,所有的参数有两个一个新的约束或者优化方向,因此最优解只有一个。迭代公式如下:
答案是如果这k中分类时相互排斥的我们就选择softmax,但是如果是相互有叠加的部分就不行了,比如在 男人,女人,小孩,小女孩 这样的分类就没法用softmax了
logistics是二分类,而softmax可以多分类。
1 logistic regression
学习softmax regression之前 我们先回归一下 logistic regression的相关知识。(参见http://blog.csdn.net/bea_tree/article/details/50432411#t6)
logistic regression的函数是
他的名字虽然是回归,但是功能却是分类,原因是,原有数据回归的曲线是logistic的曲线,他们的值要么接近1 要么接近0。
另外他们的目标函数是利用概率相乘得到的最大似然估计:
为了好计算一般取对数,L最大时就拟合好了。
这里的利用梯度下降法得到的迭代公式与线性回归的迭代公式是一样的,好巧。还有其他算法(perceptron learning algorithm)的迭代形式也是这样。
文中的代价函数是处理之后的,直接求最小值就行了
2 softmax regression
上面可以看到logistic的公式主要的思想是用的概率,当y等于0时得到的是等于0的概率,y=1时得到的是等于1的概率。softmax的思想是分别得到多分类的概率,其公式如下:
好好理解下上式:
可以看成这是k个式子组成的矩阵形式。属于一组x会得到k个类别的概率。
既然我们对每个类别的概率已经做了假设
那么可以仿照最大似然的思想来得到下面的代价函数
如果输入x对应的类别是j,那么对应的概率就是
。
将所有的m个x的概率相乘就是最大似然函数,求log(乘积变相加)然后加负号之后求最小值就相当于求最大似然的最大值。
上面的代价函数就是这个意思。
其梯度的迭代公式如下
3 softmax 的参数特性
知道了它的基本原理之后,我们思考一个问题,如果我们知道前k-1个分类的概率,那么第k个的概率还需要知道么?显然 是没有必要的,这可以理解为softmax参数冗余性overparameterized 的直接理解(博主的理解,慎信)。文中的理解更加严密些:
将概率公式中的参数直接减去一个向量ψ\psi得到概率公式依然没有变
也就是说得到的最优化结果直接减去这个向量之后的结果依然是满足条件的最优解,换句话说,最优解有无数个。也就是hessian矩阵是奇异的(singular/non-invertible),使用牛顿法就不好用了。
按照上面的理解我们可以将其中一类的参数全都设为0,这样就不会产生冗余了,但是实际中我们并不这然做,而是加了规则相,不过这里不叫做规则化而叫作Weight Decay。
4 weight decay
加入惩罚项之后的样子由于后面一项一定会大于零,那么Hessian 矩阵就不会是不可逆了,这样就变成了严格的凸函数,各类求解方法就可以用了。也可以直接的理解为,所有的参数有两个一个新的约束或者优化方向,因此最优解只有一个。迭代公式如下:
5 softmax VS. Binary Classifiers
当有k种分类时我们是选择softmax呢还是选择k个二分类呢?答案是如果这k中分类时相互排斥的我们就选择softmax,但是如果是相互有叠加的部分就不行了,比如在 男人,女人,小孩,小女孩 这样的分类就没法用softmax了
相关文章推荐
- 数据库总结
- WebView 基本设置
- C#开发微信门户及应用(37)--微信公众号标签管理功能
- 设计模式(九): 从醋溜土豆丝和清炒苦瓜中来学习"模板方法模式"(Template Method Pattern)
- 卡普的21个NP完全问题-问题描述
- AES算法学习总结
- stm32之DMA彻底研究
- Toast消息提示和Notification通知
- UVA 12937 字典树
- 面试题45:圆圈中最后剩下的数字(约瑟夫环问题)
- juce 中的ReferenceCountedObjectPtr
- maven update 以后报错。
- Java各种排序算法分析
- android:contentDescription 的用途
- HTML5 Canvas绘制五星红旗
- Magento 1.8 Development CookBook 目录
- Android开发中,那些让你相见恨晚的方法、类或接口
- 自己写了一个RPC框架
- Android 5.X新特性之RecyclerView基本解析及无限复用
- Android数据存储(一)----SharedPreferences详解