机器学习入门教学——损失函数(交叉熵法)

 1、前言

  • 我们在训练神经网络时,最常用到的方法就是梯度下降法。在了解梯度下降法前,我们需要了解什么是损失(代价)函数。所谓求的梯度,就是损失函数的梯度。
  • 如果不知道什么是梯度下降的,可以看一下这篇文章:机器学习入门教学——梯度下降、梯度上升_恣睢s的博客-CSDN博客
  • 损失函数其实就是神经网络里的标准和期望的标准相差多少的定量表达。(现有模型与期望模型的质量差距)
  • 损失函数越小,现有模型就越逼近期望模型,现有模型的精度也就越高。
  • 【注】损失函数和代价函数可以看作是两个概念不同的名字,但代表的函数和作用完全一样,通常可以互相替换使用,没有实质区别。
  • 损失函数该如何设计呢?这里有三种方法:最小二乘法、极大似然估计法、交叉熵法。
    • 机器学习入门教学——损失函数(最小二乘法)
    • 机器学习入门教学——损失函数(极大似然估计法)
    • 机器学习入门教学——损失函数(交叉熵法)

2、交叉熵法

  • 交叉熵法是先把模型换成熵(数值),然后再用熵去比较不同模型之间的差异。
  • 在了解交叉熵之前,我们先了解以下几个概念。
2.1、信息量
2.1.1、定义
  • 信息的作用是消除事件的不确定性,信息量就是信息能消除事件不确定性的程度。
  • 例如:
    • 掷骰子猜点数时,告诉你一个消息再猜点数。下面三条消息消除不确定性的程度是逐渐增大的,其消息量也是逐渐增大的。
  • 我们分别来看上面三条消息发生的概率:
    • 骰子的点数大于0:P=1
    • 骰子的点数大于3:P=1/2
    • 骰子的点数是5:P=1/6
    • 我们会发现这些消息发生的概率是逐渐减小的。
  • 所以,信息量的大小与信息发生的概率成反比。概率越大,信息量越小;概率越小,信息量越大。
  • 设信息描述的事件为x,其发生的概率为P(x),则信息量的公式为:
    •    (具体怎么来的就不阐述了),单位为:比特bit
2.1.2、计算
  • 假设,我们现在要给计算机输入一个十六位的数据。在输入数据之前,这16位数据都可以取0或1,这个数据的概率就是。当输入这个数据后,这个数据是已知的了,它的概率就变成了1。那这个数据的信息量是多少呢?
    • 这个数据的信息量为16比特。
  2.2、信息熵
2.2.1、定义
  • 信息量是衡量某个具体的事件,而信息熵是衡量整个系统中的所有事件,即一个系统从原来的不确定到确定难度有多大。
  • 信息熵也称为熵,可以表示为所有信息量的期望。所以,信息熵的公式为:
    • ,单位为:比特
  • 熵代表了随机变量的不确定性(即混乱程度)。熵越大,代表随机变量的不确定性越大。当变量可取值的种类一定时,其取每种值的概率分布越平均,其熵值越大。
2.2.2、计算
  • 假设我们要预测一场球赛的输赢,求它的信息熵。已知法国队赢球的概率是99%,中国队赢球的概率是1%。
    • 法国队赢球的信息量为:
    • 中国对赢球的信息量为:
    • 信息熵为:
2.3、相对熵(KL散度)
  • 比较两个模型,就可以把两个模型的的熵计算出来,再直接比较它们的熵。但是期望模型是未知的,无法直接求熵。那就不得不提到相对熵了。
  • 如果对于同一个随机变量X,有两个单独的概率分布P(X)和Q(X),则我们可以使用KL散度来衡量这两个概率分布之间的差异
  • 例如:下面有两个模型的概率分布。
    • 以下就是它们相对熵的计算公式:
      • ,其中P在前,表示以P系统为基准去考虑P和Q相差多少。
      • 【注】以P或以Q为基准性质是不同的。
      • 其实就是P、Q系统中对应事件的信息量的差值,再求整体期望。
      • 如果Q和P相等,那相对熵就为0。简单来说,就是Q要达到和P一样的分布的话,还差了多少信息量。
    • 观察发现,,P作为基准时熵是不变的,只需要考虑前面一部分。
    • 而前面一部分就是交叉熵了,
2.4、交叉熵
  • 我们已经知道,KL散度 = 交叉熵 - 信息熵
  • 交叉熵的公式表示为:
  • 由结论可知,KL散度一定是大于等于0的。所以交叉熵是一定大于等于信息量,并且大于0的。(不用深究原因)
  • 这时如果要让Q的概率模型和P的概率模型非常接近的话,就要找到交叉熵的最小值。也就是说交叉熵本身就可以作为损失函数。
2.5、运用
  • 既然已经知道了交叉熵可以作为损失函数,那么交叉熵中的一些变量在神经网络中应该用什么进行替换呢?
  • 我们还是用之前判断图片是不是猫的例子。
  • 首先,中的n代表输入图片的数量。
  • 因为P为基准,也就是被比较的模型,所以P是理想模型。而Q是比较的模型,也就是现有模型。那么其中的就应该是是猫和不是猫的概率,就应该是是猫和不是猫的概率。
  • 转换之后就是:
    • 这个公式和极大似然估计作为损失函数的公式是一样的。

3、交叉熵法和极大似然估计法的区别

  • 虽然两者在形式上是相同的,但是在物理层面还是有很大区别的。
  • 极大似然估计中引入log是为了把连乘换做连加,底数为几是无所谓的;而交叉熵中log以2为底是定义中给出的,是固定的,它代表最后计算出来的单位是比特。
  • 极大似然估计法本来是求最大值,只是为了适应损失函数才加了个负号改成求最小值;而交叉熵的负号是定义中给出的。

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

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

相关文章

百度APP iOS端包体积50M优化实践(六)无用方法清理

一、前言 百度APP包体积经过一期优化,如无用资源清理,无用类下线,Xcode编译相关优化,体积已经有了明显的减少。但是优化后APP包体积在iPhone11上仍有350M的空间占用。与此同时百度APP作为百度的旗舰APP,业务迭代非常多…

mysq 主从同步错误之 Error_code 1032 handler error HA_ERR_KEY_NOT_FOUND

错误说明: MySQL主从同步的1032错误,一般是指要更改的数据不存在,SQL_THREAD提取的日志无法应用故报错,造成同步失败 (Update、Delete、Insert一条已经delete的数据)。 1032的错误本身对数据一致性没什么影…

基于SSM的四六级报名与成绩查询系统的设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

【2】贪心算法-综述

前言 从前,有一个很穷的人救了一条蛇的命,蛇为了报答他的救命之 恩,于是就让这个人提出要求,满足他的愿望。这个人一开始只要求简 单的衣食,蛇都满足了他的愿望,后来慢慢地贪欲升起,要求做官&am…

selenium+python实现基本自动化测试

安装selenium 打开命令控制符输入:pip install -U selenium 火狐浏览器安装firebug:www.firebug.com,调试所有网站语言,调试功能 Selenium IDE 是嵌入到Firefox 浏览器中的一个插件,实现简单的浏览器操 作的录制与回…

屏幕分辨率dpi解析(adb 调试查看)

authordaisy.skye的博客_CSDN博客-嵌入式,Qt,Linux领域博主 ro.sf.lcd_density属性指定了这个机型使用的dpi是多少,dpi全称是dots per inch,对角线每英寸的像素点的个数。 密度 ldpi mdpi hdpi xhdpi xxhdpi 分辨率 240x320 320x480 480x800 7…

Cannot find module ‘core-js/modules/es6.regexp.constructor‘

npm run dev 之后报如下错误 解决方法:npm install core-js2 如果超时或者下载时间慢可以尝试 用cnpm install core-js2

软件工程知识总结梳理

🔥🔥宏夏Coding网站,致力于为编程学习者、互联网求职者提供最需要的内容!网站内容包括求职秘籍,葵花宝典(学习笔记),资源推荐等内容。在线阅读:https://hongxiac.com&…

Nodejs 第十六章(ffmpeg)

FFmpeg 是一个开源的跨平台多媒体处理工具,可以用于处理音频、视频和多媒体流。它提供了一组强大的命令行工具和库,可以进行视频转码、视频剪辑、音频提取、音视频合并、流媒体传输等操作。 FFmpeg 的主要功能和特性: 格式转换:…

Network: use `--host` to expose

vite 启动项目提示 Network: use --host to expose 同事不能通过本地IP地址访问项目 解决方案:package.json中启动命令配置本地IP地址 vite --host 192.168.200.252

Twitter图片数据优化的细节

Twitter个人数据优化:吸引更多关注和互动 头像照片在Twitter上,头像照片是最快识别一个账号的方法之一。因此,请务必使用公司的标志或与品牌相关的图片。建议尺寸为400x400像素。 为了建立强大的品牌形象和一致性,强烈建议在所有…

虹科教您 | 可实现带宽计量和延迟计算的时间敏感网络测试工具RELY-TSN-LAB操作指南与基本功能测试

1. RELY-TSN-LAB产品概述 时间敏感网络(TSN)能够合并OT和IT世界,这将是真正确保互操作性和标准化的创新性技术。这项技术的有效开发将显著降低设备成本、维护、先进分析服务的无缝集成以及减少对单个供应商的依赖。为了在这些网络中实现确定性,需要控制…

Kotlin Android中错误及异常处理最佳实践

Kotlin Android中错误及异常处理最佳实践 Kotlin在Android开发中的错误处理机制以及其优势 Kotlin具有强大的错误处理功能:Kotlin提供了强大的错误处理功能,使处理错误变得简洁而直接。这个特性帮助开发人员快速识别和解决错误,减少了调试代…

12:STM32---RTC实时时钟

目录 一:时间相关 1:Unix时间戳 2: UTC/GMT 3:时间戳转化 二:BKP 1:简历 2:基本结构 三: RTC 1:简历 2: 框图 3:RTC基本结构 4:RTC操作注意 四:案例 A:读写备份寄存器 1:连接图 2: 步骤 3: 代码 B:实时时钟 1:连接图 2:函数介绍 3:代码 一:时间相关 1:Un…

Linux -- 使用多张gpu卡进行深度学习任务(以tensorflow为例)

在linux系统上进行多gpu卡的深度学习任务 确保已安装最新的 TensorFlow GPU 版本。 import tensorflow as tf print("Num GPUs Available: ", len(tf.config.list_physical_devices(GPU)))1、确保你已经正确安装了tensorflow和相关的GPU驱动,这里可以通…

【数据结构练习】链表面试题集锦二

目录 前言: 1.链表分割 2.相交链表 3.环形链表 4.环形链表 II 前言: 数据结构想要学的好,刷题少不了,我们不仅要多刷题,还要刷好题!为此我开启了一个必做好题锦集的系列,每篇大约5题左右。此…

“高级前端开发技术探索路由的使用及Node安装使用“

目录 引言1. Vue路由的使用2. VueNode.js的安装使用总结 引言 在当今互联网时代,前端开发技术日新月异,不断涌现出各种新的框架和工具。作为一名前端开发者,我们需要不断学习和探索新的技术,以提升自己的开发能力。本文将深入探讨…

【C# Programming】值类型、良构类型

值类型 1、值类型 值类型的变量直接包含值。换言之, 变量引用的位置就是值内存中实际存储的位置。 2、引用类型 引用类型的变量存储的是对一个对象实例的引用(通常为内存地址)。 复制引用类型的值时,复制的只是引用。这个引用非常小&#xf…

前后端分离毕设项目之产业园区智慧公寓管理系统设计与实现(内含源码+文档+教程)

博主介绍:✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久,选择我们就是选择放心、选择安心毕业✌ 🍅由于篇幅限制,想要获取完整文章或者源码,或者代做&am…

短视频抖音账号矩阵系统源码开发者自研(四)

抖音是一款备受欢迎的短视频APP,拥有数亿的用户,其中包括了大量的粉丝。为了让更多的人能够发现和观看到你的视频,抖音SEO是必不可少的一环,特别是对于拥有企业或个人品牌的用户来说。在这个过程中,抖音SEO源码的开源部…