从Softmax回归到Logistic回归
Softmax回归是Logistic回归在多分类问题上的推广,是有监督的。
回归的假设函数(hypothesis function)为,我们将训练模型参数
,使其能够最小化代价函数:
在Softmax回归中,我们解决的是多分类问题,类标y可以取k个不同的值。对于给定的测试输入x,我们想用假设函数针对每一个类别j估算出概率值。也就是说,我们想估计x的每一种分类结果的概率。因此,我们的假设函数将要输出一个k维的向量(向量元素的和为1)来表示这k个估计的概率值。具体地说,我们的假设函数
形式如下:
其中,
,···,
是模型参数。
这一项对概率分布进行归一化,使得所有的概率之和为1。
为了方便起见,我们同样使用符号来表示全部的模型参数。在实现softmax回归时,将
用一个
的矩阵来表示会很方便,该矩阵是将
,
,···,
按行罗列起来得到的,如下表示:
代价函数
现在介绍softmax回归算法的代价函数。在下面的公式中,是示性函数,其取值规则为:1{值为真的表达式}=1,1{值为假的表达式}=0。代价函数为:
上述公式是logistic回归代价函数的推广。可以看到,softmax代价函数与logistic代价函数在形式上非常类似,只是在softmax代价函数中对类标记的k个可能值进行了累加。注意在softmax回归中将x分类为类别j的概率为:
对于的最小化问题,目前还没有闭式解决。因此,我们使用迭代的优化算法(例如梯度下降法,或L-BFGS)。经过求导,我们得到梯度公式如下:
有了上述偏导数公式后,我们就可以将它带入到梯度下降法等算法中,来最小化。在实现softmax回归算法时,我们通常会使用上述代价函数的一个改进版本。具体来说,就是和权重衰减(weight decay)一起使用。我们接下来介绍使用它的动机和细节。
softmax回归有一个不寻常的特点:它有一个“冗余”的参数集。为了便于阐述这一特点,假设我们从参数向量中减去了向量
,这时,每一个
都变成了
。此时假设函数变成了
也就是说,从中减去
完全不影响假设函数的预测结果。这表明前面的softmax回归模型中存在冗余的参数。更正式一点来说,softmax模型被过度参数化了。对于任意一个用于拟合数据的假设函数 ,可以求出多组参数值,这些参数得到的是完全相同的假设函数
。
进一步而言,如果参数是代价函数
的极小值点,那么
同样也是它的极小值点,其中
可以为任意向量。因此使
最小化的解不是唯一的。(有趣的是,由于
仍然是一个凸函数,因此梯度下降时不会遇到局部最优解的问题。但是Hessian矩阵是奇异的/不可逆的,这会导致采用牛顿法优化就遇到数值计算的问题。)
注意,当时,我们总是可以将
替换为
(即替换为全零向量),并且这种变换不会影响假设函数。因此我们可以去掉参数向量
(或者其他
中的任意一个)而不影响假设函数的表达能力。实际上,与其优化全部的
个参数
(其中
),我们可以令
,只优化剩余的
个参数,这样算法依然能够正常工作。
在实际应用中,为了使算法实现更简单清楚,往往保留所有参数,而不任意地将某一参数设置为0。但此时我们需要对代价函数做一个改动:加入权重衰减。权重衰减可以解决softmax回归的参数冗余所带来的数值问题。
权重衰减
我们通过添加一个权重衰减项
来修改代价函数,这个衰减项会惩罚过大的参数值,现在我们的代价函数变为:
有了这个权重衰减项以后,代价函数就变成了严格的凸函数,这样就可以保证得到唯一的解了。此时的Hessian矩阵变为可逆矩阵,并且因为
是凸函数,梯度下降法和L-BFGS等算法可以保证收敛到全局最优解。
通过最小化,我们就能实现一个可用的softmax回归模型。
Softmax回归和Logistic回归的关系
当类别数时,softmax回归退化为logistic回归,这表明softmax回归是logistic回归的一般形式。具体地说,当
时,softmax回归的假设函数为
利用softmax回归参数冗余的特点,我们令,并且从两个参数向量都减去向量
,得到
因此,用来表示
,我们会发现softmax回归器预测其中一个类别的概率为
,另一个类别的概率为
,这与logistic回归是一致的。
Softmax回归 vs. k个二元分类器
如果你在开发一个音乐分类的应用,需要对k种类型的音乐进行识别,那么是选择使用 softmax 分类器呢,还是使用 logistic 回归算法建立 k 个独立的二元分类器呢?
这一选择取决于你的类别之间是否互斥,例如,如果你有四个类别的音乐,分别为:古典音乐、乡村音乐、摇滚乐和爵士乐,那么你可以假设每个训练样本只会被打上一个标签(即:一首歌只能属于这四种音乐类型的其中一种),此时你应该使用类别数 k = 4 的softmax回归。(如果在你的数据集中,有的歌曲不属于以上四类的其中任何一类,那么你可以添加一个“其他类”,并将类别数 k 设为5。)
如果你的四个类别如下:人声音乐、舞曲、影视原声、流行歌曲,那么这些类别之间并不是互斥的。例如:一首歌曲可以来源于影视原声,同时也包含人声 。这种情况下,使用4个二分类的 logistic 回归分类器更为合适。这样,对于每个新的音乐作品 ,我们的算法可以分别判断它是否属于各个类别。
现在我们来看一个计算视觉领域的例子,你的任务是将图像分到三个不同类别中。(i) 假设这三个类别分别是:室内场景、户外城区场景、户外荒野场景。你会使用sofmax回归还是 3个logistic 回归分类器呢? (ii) 现在假设这三个类别分别是室内场景、黑白图片、包含人物的图片,你又会选择 softmax 回归还是多个 logistic 回归分类器呢?
在第一个例子中,三个类别是互斥的,因此更适于选择softmax回归分类器 。而在第二个例子中,建立三个独立的 logistic回归分类器更加合适。
参考资料
http://ufldl.stanford.edu/wiki/index.php/UFLDL_Tutorial
转载于:https://www.cnblogs.com/Peyton-Li/p/7612517.html
从Softmax回归到Logistic回归相关推荐
- 再谈probit回归和logistic回归
再谈probit回归和logistic回归 看到有网友留言关于probit回归的问题,这一篇文章再谈一下probit和logistic的关系. probit回归和logistic回归几乎可以用于相同的 ...
- 拓端tecdat|R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险
最近我们被客户要求撰写关于冠心病风险的研究报告,包括一些图形和统计输出. 相关视频:R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险 逻辑回归Logistic模型原理和R语言分类预测冠 ...
- php-ml 逻辑回归,TensorFlow ML cookbook 第三章6-8节 套索和岭回归、弹性网络回归and Logistic回归...
问题导读: 1.如何实现套索和岭回归? 2.如何实现弹性网络回归? 3.如何实施Logistic回归? 4.如何理解将线性回归转化为二元分类? 上一篇:TensorFlow ML cookbook 第 ...
- 神经网络logistic回归模型,logistic回归的基本理论
神经网络挖掘模型与logistic回归挖掘模型的不同点有哪些? 逻辑回归有点像线性回归,但是它是当因变量不是数字时使用.比如说因变量是布尔变量(如是/否响应),这时候就需要逻辑回归.它称为回归,但实际 ...
- Softmax回归——logistic回归模型在多分类问题上的推广
Softmax回归 Contents [hide] 1 简介 2 代价函数 3 Softmax回归模型参数化的特点 4 权重衰减 5 Softmax回归与Logistic 回归的关系 6 Softma ...
- 深度学习系列--1.入坑模型: 线性回归,logistic 回归,softmax分类器
惭愧啊,读研的时候学得正是模式识别:当看着书本上都是公式推导.博士师兄们也都在公式推导研究新算法的时候,排斥心理到了顶点,从此弃疗. 工作三年,重新捡起,因为更关注实际操作,所以选择了<pyth ...
- 机器学习-监督学习-logistic回归,softMax回归
本篇博文来总结一下回归模型里面两个非常重要的模型. logistic回归 softMAX回归 Logistic回归 logistics回归虽然有"回归"两字但是却是分类模型,并且是 ...
- logistic回归和softmax回归
logistic回归 在 logistic 回归中,我们的训练集由 个已标记的样本构成:.由于 logistic 回归是针对二分类问题的,因此类标记 . 假设函数(hypothesis functi ...
- 对线性回归,logistic回归和一般回归的认识
作为一个机器学习初学者,认识有限,表述也多有错误,望大家多多批评指正. 1 摘要 本报告是在学习斯坦福大学机器学习课程前四节加上配套的讲义后的总结与认识.前四节主要讲述了回归问题,回归属于有监督学习中 ...
最新文章
- C# 实现对接电信交费易自动缴费 续(winio/winring0 自动填密码)
- 计算机禁用了网络怎么qtyong,如何禁用Qpushqt按钮?
- js便签笔记(9)——解读jquery源码时记录的一些知识点
- python wx窗口无法关闭_菜鸟学Python,双手奉上老司机给上路新手总结的Python实战问题…...
- JAVA笔记13__创建线程/线程休眠/等待线程终止/线程中断/守护线程
- HDU 1964 Pipes
- 深入学习Mybatis框架(二)- 进阶
- spring学习(35):c名称空间注入
- 中国科学院计算机网络信息中心怀柔分中心,计算机网络信息中心怀柔分中心(二期)建设项目荣获2018年度“北京市安装工程优质奖”...
- 【7集iCore3基础视频】7-4 iCore3连接示意图
- rufus安装linux到硬盘,怎么用rufus安装 kail linux 安装到u盘
- 如果北京的房价下跌,到底能跌多少?
- ADC芯片——AD7705最详细讲解(STM32)
- IDEA中单词拼写错误
- JAVA输入任意一个数,判断是否是回文数
- win7任务计划提示”该任务映像已损坏或已篡改“
- 电脑最大支持的内存是多少
- 创业失败后的他们,是怎么找工作的?
- 【算法学习】四 二分法查找(折半法或者折半查找)
- pfamscan 的使用_OmicShare
热门文章
- 东方终焉组审核页可做引导页
- VBA如何打开html文件6,VBA程序中如何自动打开网页
- RabbitMQ入门学习系列(五) Exchange的Direct类型
- 错误Unable to find manifest signing certificate in the certificat...
- ASP.NET中获取URL重写前的原始地址
- 淘宝API开发系列--开篇概述
- Google Analytics异步代码-创建虚拟浏览量跟踪
- NET CMS 大全
- 为facebook添加html/iframe页面 Create A Facebook Landing Page (Static HTML / iFrame)
- 宿主机挂载虚拟机磁盘文件guestmount