SoftMax函数,交叉熵损失函数与熵,对数似然函数
深度学习以及机器学习中都会用到SoftMax函数,交叉熵损失函数与熵,对数似然函数等一些数学方面的知识,此文作为个人学习笔记。
1.softmax函数
(1)定义
多分类问题中,我们可以使用SoftMax函数,对输出的值归一化为概率值,映射到(0,1)区间。
这里假设在进入softmax
函数之前,已经有模型输出C值,其中C是要预测的类别数,模型可以是全连接网络的输出a,其输出个数为C,即输出为a1,a2,...,aC。
所以对每个样本,它属于类别ii的概率为:
经过上式的运算之后,yi被归一化到了[0,1]区间,并且所有类别的yi之和为1.
(2)导数
对softmax函数进行求导,其中aj(j=1,2,..i,...C)是自变量,yi是因变量。实际上所求取的应当是yi对aj的偏导:
所以求偏导分为两种情况:i是否等于j。
这样就得到了softmax函数对于变量的偏导数。这在后续的计算损失函数的偏导时会用到。
2.熵,相对熵与交叉熵
(1)信息量
(2)熵
在某次考试结果公布前,小明的考试结果有多大的不确定度呢?你肯定会说:十有八九不及格!因为根据先验知识,小明及格的概率仅有0.1,90%的可能都是不及格的。怎么来度量这个不确定度?求期望!不错,我们对所有可能结果带来的额外信息量求取均值(期望),其结果就能够衡量出小明考试成绩的不确定度了。
(3)相对熵
(4)交叉熵
注意:
上述最后得到的交叉熵损失函数是基于“p和q都服从0-1分布”而推出来的。而实际在神经网络中,对于某个样本进行分类预测时,预测值和真实值(标签值)都服从0-1分布,如下所述:
回到我们多分类的问题上,真实的类标签可以看作是分布,对某个样本属于哪个类别可以用One-hot的编码方式,是一个维度为C的向量,比如在5个类别的分类中,[0, 1, 0, 0, 0]表示该样本属于第二个类,其概率值为1。我们把真实的类标签分布记为p,该分例子中,当第i个样本的ti=1时表示该样本属于该类别。
同时,分类模型经过softmax函数之后,也是一个概率分布,所以我们把模型的输出的分布记为q,它也是一个维度为C的向量,例如现在q的分布为:[0.1, 0.8, 0.05, 0.05, 0]。
此时用样本真实标签值与预测值的交叉熵就可以作为损失函数了:
对于所有的类别求损失之和:
(5)损失函数求导
上述就是多分类问题中损失函数对于单个输出aj的偏导数,后续进行权重更新时进行反向传播就会用到这个偏导。
3.对数似然函数
机器学习里面,对模型的训练都是对Loss function进行优化,在分类问题中,我们一般使用最大似然估计(Maximum likelihood estimation)来构造损失函数。对于输入的x,其对应的类标签为t,我们的目的是找到使p(t|x)最大的模型f(x),y=f(x)为模型的预测值。
在二分类问题中:
可以看到,多分类问题中,上述通过最大似然估计得到的损失函数与通过交叉熵得到的损失函数相同。
参考:
https://blog.csdn.net/behamcheung/article/details/71911133
https://blog.csdn.net/rtygbwwwerr/article/details/50778098#commentBox
SoftMax函数,交叉熵损失函数与熵,对数似然函数相关推荐
- Softmax函数与交叉熵
Softmax函数 背景与定义 导数 softmax的计算与数值稳定性 Loss function 对数似然函数 交叉熵 Loss function求导 TensorFlow 方法1手动实现不建议使用 ...
- 简单易懂的softmax交叉熵损失函数求导
简单易懂的softmax交叉熵损失函数求导 本博客转自:http://m.blog.csdn.net/qian99/article/details/78046329 来写一个softmax求导的推导过 ...
- 交叉熵损失函数优缺点_【损失函数】常见的损失函数(loss function)总结
阅读大概需要7分钟 跟随小博主,每天进步一丢丢 机器学习算法与自然语言处理出品 @公众号原创专栏作者 yyHaker 单位 | 哈工大SCIR实验室 损失函数用来评价模型的预测值和真实值不一样的程度, ...
- 解释机器学习中的熵、联合熵、条件熵、相对熵和交叉熵
原文地址:https://www.cnblogs.com/kyrieng/p/8694705.html 1.信息熵 (information entropy) 熵 (entropy) 这一词最初来源于 ...
- softmax函数_反向传播之一:softmax函数
最好的学习方法就是把内容给其他人讲明白. 如果你看了我的文章感觉一头雾水,那是因为我还没学透. 我目前的理解是:反向传播是神经网络的精要,没搞明白反向传播,神经网络就还没入门. 我的学习计划是: (1 ...
- 受限玻尔兹曼机(RBM)学习笔记(四)对数似然函数
去年 6 月份写的博文<Yusuke Sugomori 的 C 语言 Deep Learning 程序解读>是囫囵吞枣地读完一个关于 DBN 算法的开源代码后的笔记,当时对其中涉及的算法原 ...
- softmax函数与交叉熵损失函数
本文主要介绍了当前机器学习模型中广泛应用的交叉熵损失函数与softmax激励函数. 这个损失函数主要应用于多分类问题,用于衡量预测值与实际值之间的相似程度. 交叉熵损失函数定义如下: LCE(y^,y ...
- sigmoid函数求导_交叉熵损失函数的求导(Logistic回归)
目录 前言 交叉熵损失函数 交叉熵损失函数的求导 前言 最近有遇到些同学找我讨论sigmoid训练多标签或者用在目标检测中的问题,我想写一些他们的东西,想到以前的博客里躺着这篇文章(2015年读研时机 ...
- 深入理解Pytorch负对数似然函数(torch.nn.NLLLoss)和交叉熵损失函数(torch.nn.CrossEntropyLoss)
在看Pytorch的交叉熵损失函数torch.nn.CrossEntropyLoss官方文档介绍中,给出的表达式如下.不免有点疑惑为何交叉熵损失的表达式是这个样子的 loss ( y , clas ...
最新文章
- Local模式下Spark程序只输出关键信息
- Apache Hadoop 2.4.1 单节点安装
- python123组合数据类型答案_Python组合数据类型
- 运行caffe识别数字的模型mnist
- 【数据结构与算法】之深入解析“不同的二叉搜索树”的求解思路与算法示例
- Hadoop 同步集群时间ntp
- 机器学习常用术语超全汇总
- 深入浅出分析MySQL常用存储引擎
- springboot+vue+element+mybatisplus项目(后端)
- JAVA内存结构解析
- JAVA – 虚函数、抽象函数、抽象类、接口_对比C++
- mysql innodb_large_prefix_那些从MySQL5.6升级到5.7的坑--innodb_large_prefix-阿里云开发者社区...
- Touch Panel调试
- 关于新手入坑vue,页面跳转样式错位刷新又好了的情况
- 布客·ApacheCN 编程/后端/大数据/人工智能学习资源 2020.11
- 微软历史最高市值是多少?
- git原理学习记录:从基本指令到背后原理,实现一个简单的git
- 算法研究之二叉树小球下落
- 【CXY】JAVA基础 之 GUI
- pythonurllib新浪微博_Python代码登录新浪微博并自动发微博