本文主要介绍了当前机器学习模型中广泛应用的交叉熵损失函数与softmax激励函数。

这个损失函数主要应用于多分类问题,用于衡量预测值与实际值之间的相似程度。

交叉熵损失函数定义如下: LCE(y^,y∗)=−∑i=1Nclassesyi∗log(yi^)L_{CE}(\hat{y}, y^*) = - \sum_{i=1}^{Nclasses} y_i^*log(\hat{y_i})LCE​(y^​,y∗)=−i=1∑Nclasses​yi∗​log(yi​^​)

其中 y^\hat{y}y^​ 为预测向量,y∗y^*y∗为真实标签向量。在多分类问题机器学习中,y∗y^*y∗ 一般使用独热编码。例如,在一个三分类问题中, y∗y^*y∗向量的维度就是三维,对应属于某一类则该位为1,其余位为0。第一类对应的真实标签向量即为[1,0,0]T[1, 0, 0]^T[1,0,0]T,第二类对应的真实标签向量为[0,1,0][0,1,0][0,1,0] 等等以此类推。

很显然,对于这个损失函数而言,取到最小值的时候就是当求和部分取得最大值,即预测向量与标签向量相似度最大时,其乘积也最大。以下图为例,例如该类真实标签为Class2,当向量y^\hat{y}y^​的第二项趋向于于1,此时损失函数取得最小值,我们也保证了预测值与真实值之间的误差最小了。


很显然,这里我们有两个问题,其一是为什么要使用预测值的log函数值与真实的标签相乘而不直接使用两者原始值相乘。其原因在于,由于我们的概率范围总是在0-1之间,直接获取乘积往往会使得不同的损失之间的差别不大,不利于我们进一步通过这个误差来优化我们的模型。

第二个问题是,如何保证预测向量满足概率分布。我们都知道标签向量y∗y^*y∗ 由于使用了独热编码,因此他永远满足概率分布即∑p(x)=1\sum p(x) = 1∑p(x)=1,但是我们的预测向量 y^\hat{y}y^​ 却不一定。这里就要用到我们的softmax激励函数了。简单的来说,softmax函数就帮助我们将一个随机数值的向量,转化为了一个所有值在0-1之间,且和为1的向量,以满足概率分布关系。softmax函数的定义如下: yt,k=e(yt,k)∑ke(yt,k)y_{t,k} = \frac{e^{(y_{t,k})}}{\sum_ke^{(y_{t,k})}}yt,k​=∑k​e(yt,k​)e(yt,k​)​
其中下标t对应第t个样本,k对应输出层的第k个神经元。softmax函数首先将所有输出层神经元对应的值通过指数函数转换为正值,再通过归一化处理,除以他们的指数函数值之和,以保证所有项对应的值之和为1。


通过softmax函数构建概率分布再通过交叉熵,我们就构建了交叉熵损失函数。

softmax函数与交叉熵损失函数相关推荐

  1. SoftMax函数,交叉熵损失函数与熵,对数似然函数

    深度学习以及机器学习中都会用到SoftMax函数,交叉熵损失函数与熵,对数似然函数等一些数学方面的知识,此文作为个人学习笔记. 1.softmax函数 (1)定义 多分类问题中,我们可以使用SoftM ...

  2. 二分类交叉熵损失函数python_【深度学习基础】第二课:softmax分类器和交叉熵损失函数...

    [深度学习基础]系列博客为学习Coursera上吴恩达深度学习课程所做的课程笔记. 本文为原创文章,未经本人允许,禁止转载.转载请注明出处. 1.线性分类 如果我们使用一个线性分类器去进行图像分类该怎 ...

  3. Softmax函数与交叉熵

    Softmax函数 背景与定义 导数 softmax的计算与数值稳定性 Loss function 对数似然函数 交叉熵 Loss function求导 TensorFlow 方法1手动实现不建议使用 ...

  4. Softmax函数+信息熵+交叉熵

    信息熵 https://blog.csdn.net/hearthougan/article/details/76192381 https://blog.csdn.net/Hearthougan/art ...

  5. python交叉熵损失函数实现_Softmax和交叉熵的深度解析和Python实现

    原标题:Softmax和交叉熵的深度解析和Python实现 作者 | PARAS DAHAL 译者 | zzq [导读]如果你稍微了解一点深度学习的知识或者看过深度学习的在线课程,你就一定知道最基础的 ...

  6. pytorch_lesson10 二分类交叉熵损失函数及调用+多分类交叉熵损失函数及调用

    注:仅仅是学习记录笔记,搬运了学习课程的ppt内容,本意不是抄袭!望大家不要误解!纯属学习记录笔记!!!!!! 文章目录 一.机器学习中的优化思想 二.回归:误差平方和SSE 三.二分类交叉熵损失函数 ...

  7. 深度学习中softmax交叉熵损失函数的理解

    1. softmax层的作用 通过神经网络解决多分类问题时,最常用的一种方式就是在最后一层设置n个输出节点,无论在浅层神经网络还是在CNN中都是如此,比如,在AlexNet中最后的输出层有1000个节 ...

  8. sigmoid函数求导_交叉熵损失函数的求导(Logistic回归)

    目录 前言 交叉熵损失函数 交叉熵损失函数的求导 前言 最近有遇到些同学找我讨论sigmoid训练多标签或者用在目标检测中的问题,我想写一些他们的东西,想到以前的博客里躺着这篇文章(2015年读研时机 ...

  9. 简单易懂的softmax交叉熵损失函数求导

    简单易懂的softmax交叉熵损失函数求导 本博客转自:http://m.blog.csdn.net/qian99/article/details/78046329 来写一个softmax求导的推导过 ...

最新文章

  1. FrostSullivan:2012年中国数据库安全审计与防护产品市场分析
  2. 你不是在拯救世界就是在拯救世界的路上
  3. JS / 闭包的理解
  4. SAP WebClient UI view controller所有可用的属性列表
  5. 100. Same Tree
  6. Oracle --DML、DDL、DCL
  7. java.util.HashMap
  8. svn 同步 linux,linux SVN 中 配置钩子 实现 线上项目同步
  9. 快速排序的python实现
  10. Java中的package、import、import static
  11. ibm java虚拟机_IBM java VM 最新版的java虚拟机下载及安装的一点说明
  12. 达观数据推出智能审单机器人,全面提升航运物流效率
  13. gbk与gb2312的区别是什么?
  14. Python报错:IndentationError: unindent does not match any outer indentation level问题的解决办法及原因
  15. 天翼网关 ddns设置_UCloud物理云网关百G级集群设计实践
  16. pymysql:Mysql拒绝从远程访问的解决办法
  17. 22条经典心灵鸡汤集锦
  18. Excel-VBA:文本转换数字
  19. html5 jq点赞功能,jQuery实现简单的点赞效果
  20. Unirech阿里云国际站轻量应用服务器简介

热门文章

  1. 【C++grammar】代理构造、不可变对象、静态成员
  2. setmonth_日期setMonth()方法以及JavaScript中的示例
  3. 编写一个程序,实现将存放在AX和DX中的32位数据循环右移二进制数的4位。(DX存放高字节内容,AX存放低字节内容)
  4. Java——List集合特有的功能
  5. Java——匿名内部类实现线程的两种方式
  6. windows系统下的云服务器部署tomcat
  7. Linux中最常见命令总结
  8. BZOJ3884上帝与集合的正确用法-欧拉函数
  9. 623. 在二叉树中增加一行
  10. gcc编译器的整个工作过程