softmax logistic loss详解

softmax函数–softmax layer

softmax用于多分类过程中,它将多个神经元的输出,映射到(0,1)区间内,可以看成概率来理解,从而来进行多分类!

假设我们有一个数组z=(z1,z2,...zm),则其softmax函数定义如下:

σi(z)=exp(zi)mj=1exp(zj),i=1,2..,m

也就是softmax是个函数映射,将 z=(z1,z2,...zm)映射到 (σ1,σ2,...σm).
其中, σi=1.

如下图,可以更清楚地表明。



在logistic回归中,假设zi=wTix+bi是第i个类别的线性预测结果,带入softmax中就可以得到oi=σi(z)可以解释成观察得到的数据x属于类别i的概率,或者称为似然(Likehood)。

logistic regression

Logistic Regression 的目标函数是根据最大似然原则来建立的,假设数据x所对应的类别为 y,则根据x我们刚才的计算最大似然就是要最大化oy的值

通常是使用 negative log-likelihood 而不是likelihood,也就是说最小化log(oy)的值,这两者结果在数学上是等价的。即minlog(oy)<=>max oy

后面这个操作就是 caffe 文档里说的 Multinomial Logistic Loss,具体写出来是这个样子:

l(y,o)=log(oy)

从上面可以看出,计算似然损失,其实是和label一起的。这也是情理之中的,既然我们知道label是某一个,自然我们我希望对应的预测概率尽可能大一点。这就归结于上面的log损失。

softmax logistic loss

softmax logistic loss就是将softmax与上述的log损失结合到一起,只要把oy的定义展开即可。

l^(y,z)=log(ezymj=1ezj)

其实label(这里指y)的作用就是指定了softmax的序号,也就是告诉是哪一些最小化。

反向传播

反向传播,要求根据loss更新weights,需要计算loss对于weight的偏导数。
我们参考了网上的一个例子,来简单介绍一下如何计算偏导。



a4=ez4ez4+ez5+ez6a5=ez5ez4+ez5+ez6a6=ez6ez4+ez5+ez6

好了,我们的重头戏来了,怎么根据求梯度,然后利用梯度下降方法更新梯度!

要使用梯度下降,肯定需要一个损失函数,这里我们使用交叉熵作为我们的损失函数,为什么使用交叉熵损失函数,不是这篇文章重点,后面有时间会单独写一下为什么要用到交叉熵函数(这里我们默认选取它作为损失函数)
交叉熵函数形式如下:


这里写图片描述

其中y代表我们的真实值,a代表我们softmax求出的值。i代表的是输出结点的标号!在上面例子,i就可以取值为4,5,6三个结点(当然我这里只是为了简单,真实应用中可能有很多结点)

现在看起来是不是感觉复杂了,居然还有累和,然后还要求导,每一个a都是softmax之后的形式!

但是实际上不是这样的,我们往往在真实中,如果只预测一个结果,那么在目标中只有一个结点的值为1,比如我认为在该状态下,我想要输出的是第四个动作(第四个结点),那么训练数据的输出就是a4 = 1,a5=0,a6=0,哎呀,这太好了,除了一个为1,其它都是0,那么所谓的求和符合,就是一个幌子,我可以去掉啦!
交叉熵函数形式如下:


这里写图片描述

这就回到了我们的softmax logistic loss,其实发现交叉熵损失与softmax logistic loss在输出只有一个类的时候等价。

参数的形式在该例子中,总共分为w41,w42,w43,w51,w52,w53,w61,w62,w63.这些,那么比如我要求出w41,w42,w43的偏导,就需要将Loss函数求偏导传到结点4,然后再利用链式法则继续求导即可,举个例子此时求w41的偏导为:




w51…..w63等参数的偏导同理可以求出,那么我们的关键就在于Loss函数对于结点4,5,6的偏导怎么求,如下:

这里分为俩种情况:


这里写图片描述

j=i对应例子里就是如下图所示:

比如我选定了j为4,那么就是说我现在求导传到4结点这!


这里写图片描述


这里写图片描述


这里写图片描述

这里对应我的例子图如下,我这时对的是j不等于i,往前传:


这里写图片描述


这里写图片描述

参考文献

  • Softmax vs. Softmax-Loss: Numerical Stability
  • Caffe中Loss Layer原理的简单梳理
  • Softmax 函数的特点和作用是什么?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/258707.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

poj3254 Corn Fields

Description Farmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ M ≤ 12; 1 ≤ N ≤ 12) square parcels. He wants to grow some yummy corn for the cows on a number of squares. Regrettably, some of the squares are infertile and ca…

Android获取程序路径 (/data/data/appname)

Android获取文件夹路径 /data/data/ http://www.2cto.com/kf/201301/186614.html String printTxtPath getApplicationContext().getPackageResourcePath() "/files/" fileName;> /data/app/com.example.fileoperation-2.apk/files/printMenu.txt String print…

javascript做极简时钟特效,再简单没思路你也做不出来

点击查看时钟特效极简主义&#xff0c;程序员javascript打造极简时钟特效对于javascript特效的学习&#xff0c;重要的是逻辑思路&#xff0c;所以这个时钟特效不是很华丽&#xff0c;但是功能都展现出来了&#xff0c;而学习javascript并不是单纯的扣代码&#xff0c;很多人都…

ubuntu中怎么打开python_如何在Linux Ubuntu 16.04下安装及打开PyCharm

下载安装 PyCharm下载好的文件的名称可能是 ‘pycharm-community-2017.2.3.tar.gz’首先打开终端&#xff0c;然后通过下面的命令进入下载文件所在的文件夹&#xff1a;cd ~/Downloads或者如果文件夹是中文cd ~/下载然后&#xff0c;通过运行下面的命令找到你下载的文件的名字&…

图像极坐标变换及在OCR中的应用

极坐标变换定义 我们知道在二维坐标系中&#xff0c;有直角坐标系&#xff0c;也有极坐标系&#xff0c;二者的转换关系是&#xff1a; 如下图&#xff1a; 如图&#xff0c;直角坐标系的圆心与极坐标系的圆心一一对应&#xff0c;且圆弧BA可以通过极坐标变换到极坐标系ρr的…

Light OJ 1406 Assassin`s Creed 减少国家DP+支撑点甚至通缩+最小路径覆盖

标题来源&#xff1a;Light OJ 1406 Assassins Creed 意甲冠军&#xff1a;向图 派出最少的人经过全部的城市 而且每一个人不能走别人走过的地方 思路&#xff1a;最少的的人能够走全然图 明显是最小路径覆盖问题 这里可能有环 所以要缩点 可是看例子又发现 一个强连通分量可能…

bootstrap-表单控件——单选按钮水平排列

1.运行效果如图所示2.实现代码如下<!DOCTYPE html> <html> <head><meta charset"utf-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><title>表单控件——单选按钮水平排列</title><!-- 最…

python中memoryerror_解决python报错MemoryError

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里技术人对外发布原创技术内容的最大平台&…

MongoDB使用小结:一些常用操作分享

MongoDB使用小结&#xff1a;一些常用操作分享 本文整理了一年多以来我常用的MongoDB操作&#xff0c;涉及mongo-shell、pymongo&#xff0c;既有运维层面也有应用层面&#xff0c;内容有浅有深&#xff0c;这也就是我从零到熟练的历程。 MongoDB的使用之前也分享过一篇&#x…

【论文阅读】Illuminating Pedestrians via Simultaneous Detection Segmentation

论文来源 ICCV2017arXiv reportgithub代码(caffe-matlab) 本文的主要问题是行人检测。作者探讨了如何将语义分割应用在行人检测上&#xff0c;提高检测率&#xff0c;同时也不损坏检测效率。作者提出了一种语义融合网络&#xff08;segmentation infusion networks&#xff0…

跨域获取json电商数据

url:http://www.darlingbank.com/cutpage/index.php/promote/edit/getfun/json/源碼&#xff1a; <ul class"cf" dataurl"http://www.paipai.com/sinclude/xml/tjw/tjw2014/tjw4/tjw179255804475.js" commlen"4" commsta"1" commtp…

Python ORM框架之 Peewee入门

之前在学Django时&#xff0c;发现它的模型层非常好用&#xff0c;把对数据库的操作映射成对类、对象的操作&#xff0c;避免了我们直接写在Web项目中SQL语句&#xff0c;当时想&#xff0c;如果这个模型层可以独立出来使用就好了&#xff0c;那我们平台操作数据库也可以这么玩…

天联高级版客户端_金万维天联高级版服务器安装配置全流程以及客户端登录流程...

今天下午&#xff0c;有一个使用千江软件的用户&#xff0c;他想实现千江软件的异地访问&#xff0c;经过他朋友也是金万维天联高级版的客户的介绍&#xff0c;推荐我们帮他安装天联高级版&#xff0c;从而实现千江软件的异地访问&#xff0c;千江软件本地访问界面如下&#xf…

[C#]async和await刨根问底

上一篇随笔留下了几个问题没能解决&#xff1a; 调用IAsyncStateMachine.MoveNext方法的线程何时发起的&#xff1f; lambda的执行为何先于MoveNext方法&#xff1f; 后执行的MoveNext方法做了些什么事情&#xff1f; 那么今天就来尝试解决它们吧~PS: 本文中部分代码来自上一篇…

模仿QQ截图片

两个picturebox,一个放图片完整代码如下using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Data.OleDb; using System.Xml; namespace T…

/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.15' not found错误的解决

转载自&#xff1a;http://www.cnblogs.com/weinyzhou/p/4983306.html 升级cmake时&#xff0c;提示“Error when bootstrapping CMake:Problem while running initial CMake”&#xff0c;第二次运行./bootstrap时&#xff0c;直接的给出了错误原因&#xff1a; [rootloc…

Spring中Bean的定义继承

以下内容引用自http://wiki.jikexueyuan.com/project/spring/bean-definition-inheritance.html&#xff1a; Bean定义继承 bean定义可以包含很多的配置信息&#xff0c;包括构造函数的参数&#xff0c;属性值&#xff0c;容器的具体信息例如初始化方法&#xff0c;静态工厂方法…

python实时连接oracle_Python连接Oracle

Python连接Oracle当前环境&#xff1a;Linux Centos 71. 下载安装包cx_Oracle由于我本地Python版本是2.7,所以选择是2.7版本wget https://pypi.python.org/packages/e1/18/00987c6a9af9568ee87d1fcba877407684a3f1b87515e5eb82d5d5acb9ff/cx_Oracle-6.0rc1-py27-1.x86_64.rpm#m…

C语言字符串函数大全

转载自http://www.360doc.com/content/08/0723/22/26860_1462024.shtml# C语言字符串函数大全 函数名: stpcpy 功能: 拷贝一个字符串到另一个 用法: char *stpcpy(char *destin, char *source); 程序例: #include<stdio.h> #include<string.h> int main(void) { ch…

Makefile中 -I -L -l区别

转载自&#xff1a;http://blog.csdn.net/davion_zhang/article/details/41805641 我们用gcc编译程序时&#xff0c;可能会用到“-I”&#xff08;大写i&#xff09;&#xff0c;“-L”&#xff08;大写l&#xff09;&#xff0c;“-l”&#xff08;小写l&#xff09;等参数&am…