当前位置: 首页 > news >正文

【深度学习_TensorFlow】误差函数

写在前面

搭建完网络层后,在每层网络中都要进行前向计算,下一步就是选择合适的误差函数来计算误差。其中均方差函数和交叉熵函数在深度学习中比较常见,均方差函数主要用于回归问题,交叉熵函数主要用于分类问题。


写在中间

均方差函数

( 1 )简单介绍

均方差函数(简称 MSE)把输出向量和真实向量映射到笛卡尔坐标系的两个点上,通过计算这两个点之间的欧式距离(准确地说是欧式距离的平方)来衡量两个向量之间的差距:

M S E ( y , o ) ≜ 1 d o u t ∑ i = 1 d o u t ( y i − o i ) 2 \mathrm{MSE}(\boldsymbol{y},\boldsymbol{o})\triangleq\frac{1}{d_{\mathrm{out}}}\sum_{i=1}^{d_{\mathrm{out}}}(y_i-o_i)^2 MSE(y,o)dout1i=1dout(yioi)2

MSE 误差函数的值总是大于等于 0,值越小,越接近真实值。

当 MSE 函数达到最小值 0 时,输出值等于真实标签,此时神经网络的参数达到最优状态。

( 2 )函数实现

# 均方差函数的实现有多种
import tensorflow as tf# 方法一:
tf.reduce_mean(tf.square(y_true - y_pred))# 方法二:
tf.keras.losses.MSE(y_true, y_pred)

交叉熵函数

介绍交叉熵函数之前,我们先了解 KL散度 这两个概念


熵用来衡量信息的不确定度,熵越大,代表不确定性越大。

公式如下:

H ( P ) ≜ − ∑ i P ( i ) log ⁡ 2 P ( i ) H(P)\triangleq-\sum_iP(i)\log_2P(i) H(P)iP(i)log2P(i)

熵的计算


熵怎样计算?对于分类问题:

  • 如果某个样本的标签的 One-hot 编码为[0, 0, 0, 1],即这张图片的分类是唯一确定的,不确定性为 0。它属于第 4 类的概率𝑃(𝑦为 4|𝒙) = 1,此标签的熵可以简单的计算为:

− 0 ⋅ log ⁡ 2 0 − 0 ⋅ log ⁡ 2 0 − 0 ⋅ log ⁡ 2 0 − 1 ⋅ log ⁡ 2 1 = 0 -0\cdot\log_20-0\cdot\log_20-0\cdot\log_20-1\cdot\log_21=0 0log200log200log201log21=0

  • 如果某个样本的标签的 One-hot 编码为[0.1, 0.1, 0.1, 0.7],即这张图片的分类属于第四类的概率较大,此标签的熵就可以计算为:

− 0.1 ⋅ log ⁡ 2 0.1 − 0.1 ⋅ log ⁡ 2 0.1 − 0.1 ⋅ log ⁡ 2 0.1 − 0.7 ⋅ log ⁡ 2 0.7 ≈ 1.356 -0.1\cdot\log_20.1-0.1\cdot\log_20.1-0.1\cdot\log_20.1-0.7\cdot\log_20.7\approx1.356 0.1log20.10.1log20.10.1log20.10.7log20.71.356

很明显,第二个结果的熵比第一个熵大,不确定度也大得多,因此最小化熵的过程也是最大化正确类别的预测概率的过程。从这个角度去理解交叉熵损失函数,非常地直观易懂。

KL散度


如果我们对于同一个随机变量 i 有两个单独的概率分布 p(i) 和 q(i),我们可以使用 KL 散度来衡量这两个分布的差异:

在深度学习中,我们通常把真实的标签分布(通常是 one-hot 编码)视为 p,把模型预测的概率分布视为 q。

KL散度的计算公式为

D K L ( p ∣ ∣ q ) = ∑ i p ( i ) l o g ( p ( i ) q ( i ) ) D_{KL}(p||q)=\sum_{i}p(i)\mathrm{log}\left(\frac{p(i)}{q(i)}\right) DKL(p∣∣q)=ip(i)log(q(i)p(i))

我们仍然使用上面的例子,标签的one-hot编码为[0, 0, 0, 1],预测值为[0.1, 0.1, 0.1, 0.7],KL散度计算结果为:

KL = 0 * log(0/0.1) + 0 * log(0/0.1) + 0 * log(0/0.1) + 1 * log(1/0.7)
= -log(0.7)
≈ 0.357

交叉熵


终于要介绍交叉熵了,你一定会猜到讲上面的知识会和交叉熵有关,对你猜的没错!

交叉熵损失函数的计算公式为:

H ( p ∣ ∣ q ) = H ( p ) + D K L ( p ∣ ∣ q ) H(p||q)=H(p)+D_{KL}(p||q) H(p∣∣q)=H(p)+DKL(p∣∣q)

其实就是熵和KL散度的加和,稍加变形就得到:

H ( p ∣ ∣ q ) ≜ − ∑ i p ( i ) log ⁡ 2 q ( i ) H(p||q)\triangleq-\sum_ip(i)\log_2q(i) H(p∣∣q)ip(i)log2q(i)

交叉熵函数的实现


import tensorflow as tf# 假设 y_true 是真实的标签,y_pred 是模型的预测值
y_true = [[0, 0, 0, 1], [0, 1, 0, 0]]
y_pred = [[0.1, 0.1, 0.1, 0.7], [0.1, 0.6, 0.1, 0.2]]loss = tf.keras.losses.categorical_crossentropy(y_true, y_pred)

写在最后

👍🏻点赞,你的认可是我创作的动力!
⭐收藏,你的青睐是我努力的方向!
✏️评论,你的意见是我进步的财富!

相关文章:

【深度学习_TensorFlow】误差函数

写在前面 搭建完网络层后,在每层网络中都要进行前向计算,下一步就是选择合适的误差函数来计算误差。其中均方差函数和交叉熵函数在深度学习中比较常见,均方差函数主要用于回归问题,交叉熵函数主要用于分类问题。 写在中间 均方差…...

mysql按照日期分组统计数据

目录 前言按天统计按周统计按月统计按年统计date_format参数 前言 mysql的date_format函数想必大家都使用过吧,一般用于日期时间转化 # 例如 select DATE_FORMAT(2023-01-01 08:30:50,%Y-%m-%d %H:%i:%s) # 可以得出 2023-01-01 08:30:50# 或者是 select DATE_FOR…...

19 | 分类模型评估指标

文章目录 Python分类模型评估指标准确率(Accuracy)精确率(Precision)召回率(Recall)F1值(F1 Score)混淆矩阵(Confusion Matrix)ROC曲线和AUC值1. 准备数据集2. 初始化并训练逻辑回归模型3. 获取预测概率并计算ROC曲线和AUC值4. 绘制ROC曲线5. 整合代码结论Python分类…...

【Pycharm2022.2.1】python编辑器最新版安装教程(包含2017-2022的所有版本win/mac/linux)

前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 永久安装 Pycharm(2017-2022的win/mac/linux所有版本)/ IntelliJ IDEA也可以, 按照本文教程所写的,具体步骤跟着下面的图文教程一步一步来就行,一分钟即可搞定,过…...

深度学习-相关概念

Adam优化器 Adam,Adaptive Moment Estimation,自适应矩估计。是2014年提出的一种万金油式的优化器,使用起来非常方便,梯度下降速度快,但是容易在最优值附近震荡。竞赛中性能会略逊于SGD,毕竟最简单的才是最…...

眼科医生推荐的台灯 护眼台灯买什么好?

我家孩子需要一个护眼灯,就请教了我的一个医生朋友。大家都知道医生白天对着电脑长时间的工作,晚上还要看书,查文献,写论文,选一个对眼睛友好的高质量护眼台灯对他们是刚需,同时又是医生,所以他…...

如何使用 ChatGPT 为 Midjourney 或 DALL-E 等 AI 图片生成提示词

人工智能为创意产业开辟了一个充满可能性的全新世界。人工智能最令人兴奋的应用之一是生成独特且原创的艺术品。Midjourney 和 DALL-E 是人工智能生成艺术的两个突出例子,吸引了艺术家和艺术爱好者的注意。在本文中,我们将探索如何使用 ChatGPT 生成 AI …...

【Linux后端服务器开发】Reactor模式实现网络计算器

目录 一、Reactor模式概述 二、日志模块:Log.hpp 三、TCP连接模块:Sock.hpp 四、非阻塞通信模块:Util.hpp 五、多路复用I/O模块:Epoller.hpp 六、协议定制模块:Protocol.hpp 七、服务器模块:Server.…...

【WebRTC---源码篇】(二:一)PeerConnection详解

Track的添加 上图是整体流程图 RTCErrorOr<rtc::scoped_refptr<RtpSenderInterface>> PeerConnection::AddTrack(rtc::scoped_refptr<MediaStreamTrackInterface> track,const std::vector<std::string>& stream_ids) {RTC_DCHECK_RUN_ON(signal…...

使用tinyxml解析和修改XML文件

首先要清楚XML文件包含哪些元素&#xff1a; 他是由元素、文本或者两者混合物组成。元素可以拥有属性&#xff0c;元素是指从开始标签到结束标签的部分。 <?xml version"1.0" encoding"UTF-8" ?> <books><book id"1001">&…...

[Docker实现测试部署CI/CD----相关服务器的安装配置(1)]

目录 0、CI/CD系统最终架构图规划IP地址 1、git配置Git下载pycharm配置gitidea配置git 2、GitLab安装与配置主机要求拉取镜像定义 compose.yml启动gitlab浏览器访问并修改密码查看登录密码修改密码 3、SonarQube 安装与配置拉取镜像修改虚拟内存的大小启动SonarQube登录 SonarQ…...

【自动化运维】编写LNMP分布式剧本

目录 一 playbook编写LNMP1.1环境设置1.2编写Nginx剧本1.3、编写Mysql剧本1.4准备PHP剧本 一 playbook编写LNMP 1.1环境设置 ip服务192.168.243.100ansible192.168.243.102nginx192.168.243.103PHP192.168.243.104mysql 1.2编写Nginx剧本 1.编写Nginx源 mkdir -p /etc/ans…...

用Rust实现23种设计模式之单例

话不多说&#xff0c;上代码&#xff01; 1. 使用Arc Mutex 在这个例子中&#xff0c;我们使用了 Arc &#xff08;原子引用计数&#xff09;和 Mutex &#xff08;互斥锁&#xff09;来实现线程安全的单例。通过 get_instance 方法&#xff0c;我们可以获取到单例实例&…...

小米平板6将推14英寸版!与MIX Fold 3同步推出

今天&#xff0c;知名数码博主数码闲聊站爆料消息&#xff0c;称小米平板6将推出一款Max版本&#xff0c;预计与小米MIX Fold 3同步推出。 据介绍&#xff0c;小米平板6 Max将是小米首款14英寸大屏的旗舰平板&#xff0c;平板搭载骁龙8处理器&#xff0c;在性能释放、影音表现、…...

webpack 的一点知识

多个入口共享多个模块 在使用webpack搭建多页面应用时候需要多个入口&#xff0c;这个时候需要考虑到模块共享问题了 可以使用entry.dependOn 来处理 entry: {home: {import: "./pages/home/index.js",// 其中vendors里边使用到模块&#xff0c;不会打入home对应的…...

Python 双目摄像机控制(windows + linux)

一、Windows 下载 Download libusb-win32-devel-filter-1.2.6.0.exe (libusb-win32) 安装&#xff0c;在弹出框中选择摄像机usb设备 pip install pyusb pip install libusb 代码如下&#xff0c;注意如果报错要以管理员权限运行&#xff1a; import cv2 import usb.corecam…...

mybatisplus实现自动填充 时间

mybatisplus实现自动填充功能——自动填充时间 数据库表中的字段 创建时间 (createTime)更新时间 (updateTime) 每次 增删改查的时候&#xff0c;需要通过对Entity的字段&#xff08;createTime&#xff0c;updateTime&#xff09;进行set设置&#xff0c;但是&#xff0c;每…...

P5732 【深基5.习7】杨辉三角

题目描述 给出 n ( n ≤ 20 ) n(n\le20) n(n≤20)&#xff0c;输出杨辉三角的前 n n n 行。 如果你不知道什么是杨辉三角&#xff0c;可以观察样例找找规律。 输入格式 输出格式 样例 #1 样例输入 #1 6样例输出 #1 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 11.题目…...

ubuntu调整路由顺序

Ubuntu系统跳转路由顺序 1、安装ifmetric sudo apt install ifmetric2、查看路由 route -n3、把Iface下面的eth1调到第一位 sudo ifmetric eth1 0命令中eth1是网卡的名称&#xff0c;更改网卡eth1的跃点数&#xff08;metric值&#xff09;为0&#xff08;数值越小&#xf…...

集成学习算法是什么?如何理解集成学习?

什么是集成学习&#xff1f; 集成学习通过建立几个模型来解决单一预测问题。它的工作原理是生成多个分类器/模型&#xff0c;各自独立地学习和作出预测。这些预测最后结合成组合预测&#xff0c;因此优于任何一个单分类的做出预测。 机器学习的两个核心任务 任务一&#xff1…...

Vue中虚拟DOM的原理与作用

绪论 首先我们先了解&#xff0c;DOM&#xff08;Document Object Model&#xff0c;文档对象模型&#xff09; 是浏览器对 HTML/XML 文档的结构化表示&#xff0c;它将文档解析为一个由节点&#xff08;Node&#xff09;和对象组成的树形结构&#xff08;称为 DOM 树&#xf…...

【RTP】Intra-Refresh模式下的 H.264 输出,RTP打包的方式和普通 H.264 流并没有本质区别

对于 Intra-Refresh 模式下的 H.264 输出,RTP 打包 的方式和普通 H.264 流并没有本质区别:你依然是在对一帧一帧的 NAL 单元进行 RTP 分包,只不过这些 NAL 单元内部有部分宏块是 “帧内编码” 而已。下面分步骤说明: 1. 原理回顾:RFC 6184 H.264 over RTP 按照 RFC 6184 …...

数据库(sqlite)基本操作

数据库&#xff08;sqlite&#xff09; 一&#xff1a;简介&#xff1a; 为什么需要单独的数据库来进行管理数据&#xff1f; 数据的各种查询功能数据的备份和恢复花大量时间在文件数据的结构设计和维护上要考虑多线程对数据的操作会涉及到同步问题&#xff0c;会增加很多额…...

【HarmonyOS 5】游戏开发教程

一、开发环境搭建 ‌工具配置‌ 安装DevEco Studio 5.1&#xff0c;启用CodeGenie AI助手&#xff08;Settings → Tools → AI Assistant&#xff09;配置游戏模板&#xff1a;选择"Game"类型项目&#xff0c;勾选手机/平板/折叠屏多设备支持 二、游戏引擎核心架构…...

抖音怎么下载没有水印的视频?

你是不是经常在抖音上刷到喜欢的视频&#xff0c;想保存下来却总是带着烦人的水印&#xff1f;无论是想收藏精彩片段&#xff0c;还是二次创作&#xff0c;水印都成了“拦路虎”。别急&#xff01;今天就来教你3种超简单方法&#xff0c;轻松下载无水印抖音视频&#xff0c;高清…...

基于定制开发开源AI智能名片S2B2C商城小程序的首屏组件优化策略研究

摘要&#xff1a;在数字化转型背景下&#xff0c;用户对首屏交互效率的诉求日益提升。本文以"定制开发开源AI智能名片S2B2C商城小程序"为技术载体&#xff0c;结合用户行为数据与认知心理学原理&#xff0c;提出首屏组件动态布局模型。通过分析搜索栏、扫码入口、个人…...

国防科技大学计算机基础慕课课堂学习笔记

1.信息论 香农作为信息论的这个创始人&#xff0c;给出来了这个信息熵的计算方法&#xff0c;为我们现在的这个生活的很多领域奠定了基础&#xff0c;我第一次听说这个信息熵是在这个数学建模里面的理论学习中有关于这个&#xff1a;决策树的模型&#xff0c;在那个问题里面&a…...

计算机基础知识(第五篇)

计算机基础知识&#xff08;第五篇&#xff09; 架构演化与维护 软件架构的演化和定义 软件架构的演化和维护就是对架构进行修改和完善的过程&#xff0c;目的就是为了使软件能够适应环境的变化而进行的纠错性修改和完善性修改等&#xff0c;是一个不断迭代的过程&#xff0…...

AUTOSAR实战教程--标准协议栈实现DoIP转DoCAN的方法

目录 软件架构 关键知识点 第一:PDUR的缓存作用 第二:CANTP的组包拆包功能 第三:流控帧的意义 配置过程 步骤0:ECUC模块中PDU创建 步骤1:SoAD模块维持不变 步骤2:DoIP模块为Gateway功能添加Connection ​步骤3:DoIP模块为Gateway新增LA/TA/SA ​步骤4:PDUR模…...

第18节 Node.js Web 模块

什么是 Web 服务器&#xff1f; Web服务器一般指网站服务器&#xff0c;是指驻留于因特网上某种类型计算机的程序。 Web服务器的基本功能就是提供Web信息浏览服务。它只需支持HTTP协议、HTML文档格式及URL&#xff0c;与客户端的网络浏览器配合。 大多数web服务器都支持服务…...