softmax函数与交叉熵损失函数

在这里插入图片描述

本文主要介绍了当前机器学习模型中广泛应用的交叉熵损失函数与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=1Nclassesyilog(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) = 1p(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=ke(yt,k)e(yt,k)
其中下标t对应第t个样本,k对应输出层的第k个神经元。softmax函数首先将所有输出层神经元对应的值通过指数函数转换为正值,再通过归一化处理,除以他们的指数函数值之和,以保证所有项对应的值之和为1。

在这里插入图片描述
通过softmax函数构建概率分布再通过交叉熵,我们就构建了交叉熵损失函数。

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

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

相关文章

vue配置git的子模块

在vue的模块需要调用许多公共组件,在公共组件之后会需要不断的更新以及分组做,这时候可以利用git的方式更新组件所在位置 [submodule "src/component/common"] path src/component/common urlgit111.111.111.111:projectname/web-common-…

unity如何让物体与特定物体之间不发生碰撞

unity中我们普遍使用的是碰撞器来实现各个物体的碰撞体积,例如Box collider, Sphere Collider。 在实现游戏的过程中,如果不想要物体与特定物体产生碰撞,或反之,只想让碰撞发生在特定物体之间时,我们就需要配置layer …

jenkins的JAVA简单顺序配置git仓库

后台Java的发布配置 1、从源码管理下载项目内容 2、构建触发器 3 、构建下环境 4、构建后处理

SQLyog连接数据库报错plugin caching_sha2_password could not be loaded

打开cmd:mysql -uroot -p 进入mysql依次执行下面语句 ALTER USER rootlocalhost IDENTIFIED BY password PASSWORD EXPIRE NEVER; #修改加密规则 ALTER USER rootlocalhost IDENTIFIED WITH mysql_native_password BY password; #更新一下用户的密码 FLUSH PRIVI…

unity导入素材时材质丢失素材变成粉红色的解决方法

有很多时候,当我们通过unity asset store或者blender等等外源导入素材时,会出现材质缺失的bug,如下图所示 : 一个很可能的原因,是由于unity本身管线在每个版本的更新过程中,材质的渲染编码发生了改变。由于这种原因引…

Jenkins 部署vue到服务器

链接github名称 2、从源码管理下载 3、更新最新前端模块 4、进行构建和打包

unity用coroutine并发实现暂停执行程序

废话不多说,下面就用一个简单的显示指引案件的例子来展示如何用coroutine来暂停程序的执行 using System.Collections; using System.Collections.Generic; using UnityEngine;public class TextTriggered : MonoBehaviour {public GameObject TextObject;// Start…

P2690 接苹果

———————————————————————— 我用了记忆化,因为它比DP更好理解 ————————————————————————— 资料:百度百科( MIKU,I Love HER ) 来自洛谷:(背包的题解&am…

gitlab使用git sourcetree时候的命令

6. Git连接设置 MacOS 打开MacOS的 terminal.app 工具。 输入 cat ~/.ssh/id_rsa.pub 确认是否有已经存在的证书。 如果提示存在证书,请跳至 第5步。 输入 ssh-keygen -t rsa -C "your.mobile136.com" -b 4096,并回车,提示的输入…

numpy数组提取一定规律的数据

numpy数组的索引也是符合start stop step规律的,因此可以通过索引提取出一系列索引有规律的元素,如下例子: import numpy as np i np.linspace(1,100,100, dtypeint)-1 print(i) i_train i[0:100:10] print(i_train)输出结果如下 : 可以看到通过索引…

在layui中使用 jquery 触发select 的 change事件无效

在layui中使用 jquery 触发select 的 change事件无效 使用layui.use监听select事件 <select lay-filter"demo" lay-verify"required"><script> layui.use([layer, jquery, form], function () { var layer layui.layer, $ layui.j…

Maven添加Oracle驱动及依赖

oracle驱动先去官网下载,下载下来后,需要安装到maven本地仓库,然后再pom中添加依赖. 1下载oracle驱动包 ojdbc6-11.2.0.3.jar 2命令行安装到maven仓库 mvn install:install-file -DgroupIdcom.oracle -DartifactIdojdbc6 -Dversion11.2.0.3.0 -Dpackagingjar -DfileE:\orac…

Unity C# namespace 命名空间的使用

命名空间在多个面对对象的语言中有应用&#xff0c;例如JAVA&#xff0c;C&#xff0c;C#。本文主要记录了在C#中如何调用不同命名空间的public class。 首先对namespace做一个简单的总结。如果说类是对属性和方法的封装&#xff0c;那么命名空间就是对各个类的进一步封装。在…

CRM、用户管理权限

CRM目录结构 from django.shortcuts import HttpResponse,render,redirect from django.conf.urls import url from django.utils.safestring import mark_safe from django.urls import reverse from django.forms import ModelForm from stark.utils.my_page import Paginat…

Spring Boot集成Druid监控

package com.xxxxxxx.framework.datasource.druid;import com.alibaba.druid.support.http.WebStatFilter;import javax.servlet.annotation.WebFilter; import javax.servlet.annotation.WebInitParam;/*** druid过滤器.*/ WebFilter(filterName "druidWebStatFilter&qu…

hexo个人博客搭建

使用gitee托管平台搭配hexo工具搭建个人博客 烨然的个人博客 第一部分 HEXO安装(win10安装过程) 1.安装git 安装后配置环境变量 C:\Program Files\Git\bin C:\Program Files\Git\libexec\git-core 2.安装Node.js 快速下载链接 安装后配置环境变量 环境变量写入C:\Program Files…

GAN生成对抗网络基本概念及基于mnist数据集的代码实现

本文主要总结了GAN(Generative Adversarial Networks) 生成对抗网络的基本原理并通过mnist数据集展示GAN网络的应用。 GAN网络是由两个目标相对立的网络构成的&#xff0c;在所有GAN框架中都至少包含了两个部分&#xff0c;生成模型部分和判别模型部分。生成模型的目标是制造出…

dump查询Java 状态

代码文件 dump.sh #!/usr/bin/env bash### use demo ### # 1)upload dump.sh # 2)dos2unix dump.sh;chmod x dump.sh # 3)usage: # 1. /data/sh/java/dump.sh /tmp/dump /usr/local/java/jdk1.8.0_05 23554 # 2. /data/sh/java/dump.sh /tmp/dump /usr/local/java/jdk1…

jdk、jre、jvm区别与联系

JVM &#xff1a;英文名称&#xff08;Java Virtual Machine&#xff09;&#xff0c;就是我们耳熟能详的 Java 虚拟机。它只认识 xxx.class 这种类型的文件&#xff0c;它能够将 class 文件中的字节码指令进行识别并调用操作系统向上的 API 完成动作。所以说&#xff0c;jvm 是…

autoencoder自编码器原理以及在mnist数据集上的实现

Autoencoder是常见的一种非监督学习的神经网络。它实际由一组相对应的神经网络组成&#xff08;可以是普通的全连接层&#xff0c;或者是卷积层&#xff0c;亦或者是LSTMRNN等等&#xff0c;取决于项目目的&#xff09;&#xff0c;其目的是将输入数据降维成一个低维度的潜在编…