关于多分类

我们常见的逻辑回归、SVM等常用于解决二分类问题,对于多分类问题,比如识别手写数字,它就需要10个分类,同样也可以用逻辑回归或SVM,只是需要多个二分类来组成多分类,但这里讨论另外一种方式来解决多分类——softmax。

关于softmax

softmax的函数为

P(i)=exp(θTix)∑Kk=1exp(θTkx)

可以看到它有多个值,所有值加起来刚好等于1,每个输出都映射到了0到1区间,可以看成是概率问题。

θTix为多个输入,训练其实就是为了逼近最佳的θT。

如何多分类

从下图看,神经网络中包含了输入层,然后通过两个特征层处理,最后通过softmax分析器就能得到不同条件下的概率,这里需要分成三个类别,最终会得到y=0、y=1、y=2的概率值。

继续看下面的图,三个输入通过softmax后得到一个数组[0.05 , 0.10 , 0.85],这就是soft的功能。

计算过程直接看下图,其中zLi即为θTix,三个输入的值分别为3、1、-3,ez的值为20、2.7、0.05,再分别除以累加和得到最终的概率值,0.88、0.12、0。

代价函数

对于训练集{(x(1),y(1)),...,(x(m),y(m))},有y(i)∈{1,2,3...,k},总共有k个分类。对于每个输入x都会有对应每个类的概率,即p(y=j|x),从向量角度来看,有,

hθ(x(i))=⎡⎣⎢⎢⎢⎢⎢p(y(i)=1|x(i);θ)p(y(i)=2|x(i);θ)⋮p(y(i)=k|x(i);θ)⎤⎦⎥⎥⎥⎥⎥=1∑kj=1eθTj⋅x(i)⎡⎣⎢⎢⎢⎢⎢eθT1⋅x(i)eθT2⋅x(i)⋮eθTk⋅x(i)⎤⎦⎥⎥⎥⎥⎥

softmax的代价函数定为如下,其中包含了示性函数1{j=y(i)},表示如果第i个样本的类别为j则yij=1。代价函数可看成是最大化似然函数,也即是最小化负对数似然函数。

J(θ)=−1m[∑mi=1∑kj=11{y(i)=j}⋅log(p(y(i)=j|x(i);θ))]

其中,p(y(i)=j|x(i);θ)=exp(θTix)∑Kk=1exp(θTkx)则,

J(θ)=−1m[∑mi=1∑kj=11{y(i)=j}⋅(θTjx(i)−log(∑kl=1eθTl⋅x(i)))]

一般使用梯度下降优化算法来最小化代价函数,而其中会涉及到偏导数,即θj:=θj−αδθjJ(θ),则J(θ)对θj求偏导,得到,

∇J(θ)∇θj=−1m∑mi=1[∇∑kj=11{y(i)=j}θTjx(i)∇θj−∇∑kj=11{y(i)=j}log(∑kl=1eθTl⋅x(i)))∇θj]

=−1m∑mi=1[1{y(i)=j}x(i)−∇∑kj=11{y(i)=j}∑kl=1eθTl⋅x(i)∑kl=1eθTl⋅x(i)∇θj]

=−1m∑mi=1[1{y(i)=j}x(i)−x(i)eθTj⋅x(i)∑kl=1eθTl⋅x(i)]

=−1m∑mi=1x(i)[1{y(i)=j}−p(y(i)=j|x(i);θ)]

得到代价函数对参数权重的梯度就可以优化了。

使用场景

在多分类场景中可以用softmax也可以用多个二分类器组合成多分类,比如多个逻辑分类器或SVM分类器等等。该使用softmax还是组合分类器,主要看分类的类别是否互斥,如果互斥则用softmax,如果不是互斥的则使用组合分类器。

========广告时间========

鄙人的新书《Tomcat内核设计剖析》已经在京东销售了,有需要的朋友可以到 https://item.jd.com/12185360.html 进行预定。感谢各位朋友。

为什么写《Tomcat内核设计剖析》

=========================

欢迎关注:

softmax的多分类的更多相关文章

  1. softmax与多分类

    sotfmax 函数在机器学习和深度学习中有着广泛的应用, 主要用于多分类问题. softmax 函数 1. 定义 假定数组V,那么第i个元素的softmax值为 也就是该元素的指数 除以 所有元素的 ...

  2. Softmax回归(Softmax Regression, K分类问题)

    Softmax回归:K分类问题, 2分类的logistic回归的推广.其概率表示为: 对于一般训练集:                     系统参数为:      Softmax回归与Logist ...

  3. softmax实现cifar10分类

    将cifar10改成单一通道后,套用前面的softmax分类,分类率40%左右,想哭... .caret, .dropup > .btn > .caret { border-top-col ...

  4. 《动手学深度学习》系列笔记—— 1.2 Softmax回归与分类模型

    目录 softmax的基本概念 交叉熵损失函数 模型训练和预测 获取Fashion-MNIST训练集和读取数据 get dataset softmax从零开始的实现 获取训练集数据和测试集数据 模型参 ...

  5. 《转》Logistic回归 多分类问题的推广算法--Softmax回归

    转自http://ufldl.stanford.edu/wiki/index.php/Softmax%E5%9B%9E%E5%BD%92 简介 在本节中,我们介绍Softmax回归模型,该模型是log ...

  6. Softmax回归——logistic回归模型在多分类问题上的推广

    Softmax回归 Contents [hide] 1 简介 2 代价函数 3 Softmax回归模型参数化的特点 4 权重衰减 5 Softmax回归与Logistic 回归的关系 6 Softma ...

  7. 逻辑回归,多分类推广算法softmax回归中

    转自http://ufldl.stanford.edu/wiki/index.php/Softmax%E5%9B%9E%E5%BD%92 简介 在本节中,我们介绍Softmax回归模型,该模型是log ...

  8. Softmax回归

    Reference: http://ufldl.stanford.edu/wiki/index.php/Softmax_regression http://deeplearning.net/tutor ...

  9. Softmax回归(Softmax Regression)

    转载请注明出处:http://www.cnblogs.com/BYRans/ 多分类问题 在一个多分类问题中,因变量y有k个取值,即.例如在邮件分类问题中,我们要把邮件分为垃圾邮件.个人邮件.工作邮件 ...

随机推荐

  1. 20145314郑凯杰《信息安全系统设计基础》第6周学习总结 part A

    第4章 处理器体系结构 part 1 本部分对改章节的知识点进行总结: 一个处理器支持的指令和指令的字节级编码称为它的指令集体系结构(ISA). 不同的出路器有不同的ISA. ISA模型看上去应该是顺 ...

  2. 20144303石宇森 《Java程序设计》第2周学习总结

    ---恢复内容开始--- 20144303 <Java程序设计>第2周学习总结 教材学习内容总结 一.类型: 1.Java可以区分为基本类型和类类型.类类型也称作参考类型. 2.Java中 ...

  3. Ubuntu 12.10 用wubi安装到硬盘中

    wubi安装的优势: ubuntu可以像安装软件一样方便的安装.删除,不影响物理机的原有系统 这种方式安装的ubuntu不用担心功能会有所缺失,ubuntu所有的功能都在 和安装了双系统一样,没有什么 ...

  4. c#的逆向工程-IL指令集

    一些 IL 语言解释:  跳转指令集合 Public field Static     Beq     如果两个值相等,则将控制转移到目标指令. Public field Static     Beq ...

  5. tyvj 1027 木瓜地 简单模拟

    P1027 木瓜地 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 USACO OCT09 4TH 描述 Bessie不小心游荡出Farmer John的田地 ...

  6. RabbitMQ :常用命令与图形管理及用户权限

    RabbitMQ 安装 安装 RabbitMQ 前要先安装 Erlang,可以去 Erlang 官网下载,接着去 RabbitMQ 官网下载安装包,解压缩即可 Mac 用户可以通过 HomeBrew ...

  7. javascript深入浅出

    第一章 数据类型 1,六种数据类型:原始类型(number,string,boolean,null,undefined) + object对象(Function Array Date) 2,隐式转换: ...

  8. 这真是奇葩的js题目

    url:http://javascript-puzzlers.herokuapp.com/ 有兴趣的可以一看,算是比较偏门自我感觉

  9. OpenGL全景视频

    全景视频其实在实现上和一般的视频播放基本差不多,解码可以用ffmpeg,只是对解码后的图片在绘制的时候要绘制在一个球上(我这里是球,好像有说有的格式要绘制在四面体上的,美做深入研究),而不是画在一个表 ...

  10. 【Error】local variable 'xxx' referenced before assignment

    此种错误涉及到变量的作用域,即全局变量和局部变量的操作. 总结如下: 内部函数,不修改全局变量可以访问全局变量 内部函数,修改同名全局变量,则python会认为它是一个局部变量 在内部函数修改同名全局 ...