Softmax回归原理简介
2016-03-09 13:43
295 查看
DeepLearning tutorial(1)Softmax回归原理简介+代码详解
@author:wepon
@blog:/article/1327451.html
本文介绍Softmax回归算法,特别是详细解读其代码实现,基于python theano,代码来自:Classifying MNIST digits using Logistic
Regression,参考UFLDL。
Softmax回归其实就相当于多类别情况下的逻辑回归,对比如下:
逻辑回归的假设函数(hypothesis):
整个逻辑回归模型的参数就是theta,h(*)是sigmoid函数,输出在0~1之间,一般作为二分类算法。对于具体的问题,找出最合适的theta便是最重要的步骤,这是最优化问题,一般通过定义代价函数,然后最小化代价函数来求解,逻辑回归的代价函数为:
最小化J(theta),一般采用梯度下降算法,迭代计算梯度并更新theta。
Softmax的假设函数:
逻辑回归里将-theta*x作为sigmoid函数的输入,得到的是0或者1,两个类别。而softmax有有k个类别,并且将-theta*x作为指数的系数,所以就有e^(-theta_1*x)至e^( -theta_k*x)共k项,然后除以它们的累加和,这样做就实现了归一化,使得输出的k个数的和为1,而每一个数就代表那个类别出现的概率。因此:softmax的假设函数输出的是一个k维列向量,每一个维度的数就代表那个类别出现的概率。
Softmax的代价函数:
本质上跟逻辑回归是一样的,采用NLL,如果加上权重衰减项(正则化项),则为:
最小化代价函数,同样可以采用简单而有效的梯度下降,需要提到的是,在程序实现中,我们一般采用批量随机梯度下降,即MSGD,minibatch Stochastic Gradient Descent,简单来说,就是每遍历完一个batch的样本才计算梯度和更新参数,一个batch一般有几十到几百的单个样本。PS:随机梯度下降则是一个样本更新一次。
@author:wepon
@blog:/article/1327451.html
本文介绍Softmax回归算法,特别是详细解读其代码实现,基于python theano,代码来自:Classifying MNIST digits using Logistic
Regression,参考UFLDL。
一、Softmax回归简介
关于算法的详细教程本文没必要多说,可以参考UFLDL。下面只简单地总结一下,以便更好地理解代码。Softmax回归其实就相当于多类别情况下的逻辑回归,对比如下:
逻辑回归的假设函数(hypothesis):
整个逻辑回归模型的参数就是theta,h(*)是sigmoid函数,输出在0~1之间,一般作为二分类算法。对于具体的问题,找出最合适的theta便是最重要的步骤,这是最优化问题,一般通过定义代价函数,然后最小化代价函数来求解,逻辑回归的代价函数为:
最小化J(theta),一般采用梯度下降算法,迭代计算梯度并更新theta。
Softmax的假设函数:
逻辑回归里将-theta*x作为sigmoid函数的输入,得到的是0或者1,两个类别。而softmax有有k个类别,并且将-theta*x作为指数的系数,所以就有e^(-theta_1*x)至e^( -theta_k*x)共k项,然后除以它们的累加和,这样做就实现了归一化,使得输出的k个数的和为1,而每一个数就代表那个类别出现的概率。因此:softmax的假设函数输出的是一个k维列向量,每一个维度的数就代表那个类别出现的概率。
Softmax的代价函数:
本质上跟逻辑回归是一样的,采用NLL,如果加上权重衰减项(正则化项),则为:
最小化代价函数,同样可以采用简单而有效的梯度下降,需要提到的是,在程序实现中,我们一般采用批量随机梯度下降,即MSGD,minibatch Stochastic Gradient Descent,简单来说,就是每遍历完一个batch的样本才计算梯度和更新参数,一个batch一般有几十到几百的单个样本。PS:随机梯度下降则是一个样本更新一次。
相关文章推荐
- java笔试题(二)
- C++:<sstream>头文件的应用
- 有向无环中的单源最短路径问题
- FIS3学习笔录三
- andriod Spinner
- win7 wifi热点设置
- 程序员思维修炼 --- 读书笔记(二)
- Linux安装ElasticSearch-2.2.0-分词器插件(Mmseg)
- SmartClient新建组件实例
- Cramtool之工具搭建和处理1000genomes中的.cram文件
- vowpal_wabbit安装和使用总结
- 跟着项目学javaweb(std):3(走进后台)
- python创建任意大小的文件
- ViewPager+Fragment 常使用懒加载
- 启动tomcat报,这个怎么弄啊,我这包不冲突
- 转:MFC 的程序中GetAt()的理解
- 亲手用模块化方式写一个jquery QQ表情插件。
- 想做的事情
- 关于C:\WINDOWS\system32\drivers\etc\hosts 文件有什么作用
- 随笔