政安晨:【深度学习神经网络基础】(七)—— 神经网络评估分类

news2024/12/28 19:42:29

目录

简述

评估分类概述

二值分类

多类分类

对数损失

多类对数损失


政安晨的个人主页政安晨

欢迎 👍点赞✍评论⭐收藏

收录专栏政安晨的机器学习笔记

希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正!

简述

到目前为止,我们已经看到了如何根据权重来计算神经网络的输出,但是,我们还没有看到这些权重的实际来源。训练是调整神经网络权重以产生所需输出的过程。训练利用了评估,即根据预期输出评估神经网络输出的过程。

由于神经网络可以通过许多不同的方式进行训练与评估,因此我们需要一种一致的方法来对它们进行判断。目标函数评估神经网络并返回得分,训练会根据得分调整神经网络,以便取得更好的结果。通常,目标函数希望得分较低,其试图获得较低得分的过程称为最小化。你可能会设定最大化的问题,此时目标函数需要较高的得分。因此,你可以将大多数训练算法用于最小化或最大化问题。

由于神经网络可以通过许多不同的方式进行训练与评估,因此我们需要一种一致的方法来对它们进行判断。目标函数评估神经网络并返回得分,训练会根据得分调整神经网络,以便取得更好的结果。通常,目标函数希望得分较低,其试图获得较低得分的过程称为最小化。你可能会设定最大化的问题,此时目标函数需要较高的得分。因此,你可以将大多数训练算法用于最小化或最大化问题。

评估分类概述

分类是神经网络尝试将输入分为一个或多个类别的过程。评估分类网络的最简单方法是跟踪被错误分类的训练集数据项的百分比。我们通常以这种方式对人类考试评分。如你可能在学校参加了仅有选择题题型的考试,必须为选项A、B、C或D其中之一涂上阴影。如果你在10个问题的考试中选择了一个错误的选项,得分将是90%。以同样的方式,我们可以给计算机评分。但是,大多数分类算法不会简单地选择A、B、C或D。计算机通常将报告每个类别中的置信度百分比,作为分类结果。下图展示了计算机和人类可能如何对考试中的问题做出回应。

如你所见,人类应试者将第一个问题标记为“B”。计算机对“B”的信心为80%(0.8),对“A”的信心为10%(0.1)。计算机将其余的百分比分布在另外两个选项上。从最简单的意义上讲,如果正确答案为“B”,则该计算机将获得该问题得分的80%。

如果正确答案为“ D”,则该计算机将仅获得5%(0.05)的得分。

二值分类

如果神经网络必须在两个选项之间进行选择,就会发生二值分类,如对/错、是/否、正确/不正确或买入/卖出等。为了理解如何使用二值分类,我们考虑一个发行信用卡的分类系统。该分类系统必须决定如何响应新的潜在客户。该系统要么“发行信用卡”,要么“拒绝发行信用卡”。

当你只考虑两个类别时,目标函数的得分是假阳性(False Positive,FP)预测的数量和假阴性(False Negative,FN)预测的数量。假阴性和假阳性都是错误的类型,理解它们的差异非常重要。对于前面的例子,发行信用卡是阳性的。当向某人发行信用卡会带来严重的信用风险时,就会发生假阳性。当拒绝发给风险很低的人信用卡时,就会产生假阴性。

在假阳性和假阴性这两个选项中,我们可以两害相权取其轻。对于大多数发行信用卡的银行,假阳性比假阴性更糟糕。拒绝一个潜在的、好的信用卡持有人,比接受一个坏信用卡持有人更好,后者会导致银行进行昂贵的收款活动。

分类问题试图将输入分配给一个或多个类别。二值分类采用单输出神经网络,将输入分为两类。让我们考虑汽车MPG数据集。

对于汽车MPG数据集,我们可能会为制造于美国的汽车创建分类。名为origin的字段提供有关汽车总成位置的信息。因此,单输出神经元将给出一个数字,表明该汽车在美国制造的可能性。

要进行这种预测,你需要更改origin字段,让它保存一个值,这个值在1到激活函数的低端范围内。如S型激活函数范围的下限为0;对于双曲正切激活函数,其范围的下限为−1。神经网络将输出一个值,该值表明汽车在美国或其他地方制造的可能性。值接近1表示汽车来自美国的可能性更高,值接近0或−1表示汽车来自美国以外地区的可能性更高。

你必须选择一个判定临界值,将这些预测结果分为美国或非美国。如果美国为1.0,非美国为0.0,那么我们可以选择0.5作为判定临界值。因此,输出为0.6的汽车将来自美国,而输出为0.4的汽车将来自非美国。

这个神经网络在对汽车进行分类时总是会产生错误,美国制造的汽车可能会产生0.45的输出,由于神经网络的输出低于判定临界值,因此无法将汽车归入正确的类别。因为我们设计这个神经网络是为了对美国制造的汽车进行分类,所以该错误称为假阴性。换言之,神经网络表明该汽车不是美国制造的,但该汽车实际上来自美国,产生了阴性结果,因此,分为阴性是错误的。这个错误也称为2型错误。

同样,神经网络可能会错误地将非美国的汽车归类为美国的。这种错误是假阳性或1型错误。更易于产生假阳性的神经网络被称为更具“特异性(specific)”的神经网络。同样,产生更多假阴性的神经网络被称为更具“敏感性(sensitive)”的神经网络。图5-2总结了真/假、阳性/阴性、1型/2型错误,敏感性/特异性之间的关系。

设置输出神经元的判定临界值,就是选择敏感性还是特异性谁更重要。如下图所示,可以通过调整判定临界值来使神经网络更具敏感性或特异性。

随着判定临界值线向左移动,神经网络将变得更具特异性。真阴性(True Negative,TN)区域的尺寸减小使这种特异性的提高显而易见。相反,随着判定临界值线向右移动,神经网络将变得更具敏感性。真阳性(True Positive,TP)区域的尺寸减小使这种敏感性的提高很明显。

敏感性的提高通常会导致特异性降低。下图展示了旨在使神经网络非常敏感的判定临界值。

也可以对神经网络进行校准,提高特异性,如下图所示。

达到100%的特异性或敏感性不一定是好事。通过简单地预测每个人都没有患某种疾病,得出医学检验可以达到100%的特异性。该测试永远不会产生假阳性错误,因为它永远不会给出阳性答案。显然,该测试没有意义。高度特异性或敏感性的神经网络会产生同样的毫无意义的结果。我们需要一种方法来评估与判定临界值点无关的神经网络的总有效性。总预测率(Total Prediction Rate,TPR)结合了真阳性和真阴性的百分比。下面公式可以计算TPR:

此外,你可以使用“受试者工作特征”(Receiver Operator Characteristic,ROC)曲线来可视化TPR,如下图所示。

上图展示了3种不同的ROC曲线。虚线显示了具有零预测能力的ROC;点线表示预测能力较好的神经网络;实线表示预测能力接近完美的神经网络。要解读ROC图,请先看以0%标记的原点。所有ROC曲线总是从原点开始,然后移动到右上角,在这里真阳性和假阳性均为100%。y轴显示真阳性率从0%到100%。当你沿y轴向上移动时,真阳性率和假阳性率都会增加。随着真阳性率的增加,敏感性也增加,但是,特异性会下降。ROC曲线允许你选择所需的敏感性级别,但它也显示了达到该敏感性级别必须接受的假阳性率。

最差的神经网络(虚线)总是具有50%的总预测率。这样的总预测率并不比随机猜测更好。要获得100%的真阳性率,必定会有100%的假阳性率,这仍然会导致一半的预测错误。

我们可以用模拟退火在上述网址上训练神经网络。

每次“退火期”(annealing epoch)完成时,该神经网络都会改进。我们可以通过均方差(Mean Squared Error,MSE)计算来衡量这种改进。随着MSE的下降,ROC曲线向左上角伸展。我们将在后文详细介绍MSE。现在,将它与预期输出进行比较,只需将它看成对神经网络误差的度量即可。较低的MSE是理想的。

下图展示了我们对神经网络进行多次迭代训练后的ROC曲线。

重要的是要注意,目标并不总是使总预测率最大化。有时,假阳性比假阴性更好。考虑一个预测桥梁倒塌的神经网络。一方面,假阳性意味着当桥梁实际安全时,程序会预测倒塌。在这种情况下,检查结构合理的桥梁会浪费工程师的时间。另一方面,假阴性意味着神经网络预测桥梁安全时,实际会倒塌。与浪费工程师的时间相比,桥梁倒塌的后果要糟得多。因此,你应该安排具有很高特异性的神经网络。

要评估神经网络的总体有效性,应考虑曲线下的面积(Area Under the Curve,AUC)。最佳AUC为1.0,这是一个100%×100%(1.0×1.0)的矩形,它将曲线下的面积推到最大。解读ROC曲线时,更有效的神经网络在曲线下方有更多空间。图5-6中显示的曲线与这种评估相符。

多类分类

如果要预测多个结果,则将需要多个输出神经元。因为单个神经元可以预测两个结果,所以带有两个输出神经元的神经网络是很少见的。如果要预测3个或更多结果,则将有3个或更多输出神经元。

考虑Fisher的鸢尾花数据集。针对3种不同物种的鸢尾花,该数据集包含了4种不同的测量值。

鸢尾花数据集的样本数据如下所示:

根据4个测量值可以预测这些物种。对于这种预测,这4个测量值的含义并不重要,重要的是这些测量值将指导神经网络进行预测。下图展示了可以预测鸢尾花数据集的神经网络结构。

上图所示的神经网络接受4个测量结果并输出3个数字。每个输出与一个鸢尾花物种相对应。产生最高数值的输出神经元决定了预测的物种。

对数损失

分类网络可以从输入数据推导出一个分类。

如4个鸢尾花测量值可以将数据分组为3种鸢尾花。

评估分类的一种简单方法,是将它看成仅有选择题题型的考试,并返回百分比得分。尽管这种方法应用得很普遍,但是大多数机器学习模型都无法像你在学校那样回答多项选择题。

请考虑可能会在考试中出现的以下问题:

1.鸢尾花setosa会有萼片长5.1厘米、萼片宽3.5厘米、花瓣长1.4厘米、花瓣宽0.2厘米吗? A) True B) False

这正是神经网络在分类任务中必须面对的问题类型。

但是,神经网络不会回答True或False。

它会用以下方式回答问题:

True: 80%

上面的响应意味着神经网络有80%的概率确信这朵花是setosa。

这项技术如果可以应用在你的考试上,则会非常方便。如果你不能在是非题之间做出选择,只需将80%的置信度置于True上即可。得分相对容易,因为你会得到正确答案相应置信度的得分比例。

在这个例子中,如果True是正确的答案,则该问题将会获得80%的得分。

但是,对数损失(log loss)不是那么简单的。如下公式是对数损失的公式:

你应将这个公式仅用作具有两个分类结果的目标函数。其中变量[插图]是神经网络的预测,变量[插图]是已知的正确答案。在这种情况下,Yi始终为0或1。训练数据没有概率,神经网络将它分为一类(1)或另一类(0)。

变量N代表训练集中的元素数量,即测验中的问题数量。我们将结果除以N,因为这个过程按惯例求的是平均。我们在该方程前添加负号,因为对数函数在域0~1上始终为负。这个负号允许最小化训练的正得分。

你会注意到公式5-2中等号右边的两个项之间用加号(+)隔开。每个项都包含一个对数函数。因为Yi为0或1,所以这两个项之一将被0消除。如果Yi为0,则第一项为0;如果Yi为1,则第二项为0。

对于两类预测,如果你对第一类的预测是Yi,那么对第二类的预测是1−Yi。本质上,如果你对A类的预测为70%(0.7),那么对B类的预测为30%(0.3)。你的得分会根据你对正确分类的预测对数而增加。如果神经网络对A类预测为1.0,并且正确答案为A,则你的得分将增加lg(1),即0。对于对数损失,我们追求较低的得分,因此正确答案导致得分为0。以下是神经网络对正确类别的概率估计的一些对数值:

如你所见,为正确答案给出低置信度对得分的影响最大。因为lg(0)是负无穷大,所以我们通常强加一个最小值。当然,以上对数值是针对单个训练集元素的。我们将对整个训练集的对数值进行求平均。

多类对数损失

如果对两个以上的结果进行分类,则必须使用多类对数损失(multi-class log loss,mlogloss)。这个损失函数与刚才描述的二值对数损失密切相关。

下面公式是多类对数损失的公式:

在上面公式中,N是训练集元素的数量,M是分类过程的类别数量。从概念上讲,多类对数损失函数的作用类似于单个对数损失函数。上面的等式本质上为你提供一个得分,该得分是每个数据集上正确类别预测的负对数的平均值。上面公式中最里面的求和作为一个if-then语句,仅允许Yi,j为1.0的正确分类对求和有贡献。


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

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

相关文章

深入了解数据结构第四弹——排序(1)——插入排序和希尔排序

前言: 从本篇开始,我们就开始进入排序的学习,在结束完二叉树的学习之后,相信我们对数据在内存中的存储结构有了新的认识,今天开始,我们将进入排序的学习,今天来学习第一篇——插入排序 目录 什…

Python | Leetcode Python题解之第30题串联所有单词的子串

题目: 题解: class Solution:def findSubstring(self, s: str, words: List[str]) -> List[int]:res []m, n, ls len(words), len(words[0]), len(s)for i in range(n):if i m * n > ls:breakdiffer Counter()for j in range(m):word s[i j…

Oracle-实例重启导致其他实例不可访问!

问题背景: 用户报障生产一套11G的RAC集群,每个节点有5个数据库实例,其中一个实例由于ORA-00600错误引发实例异常重启,在该实例重启之后,同服务器上的其他4个实例均出现无法访问的情况,应用反馈出现ORA-1253…

C++初识

这里会对一些内容进行简单的提起,后面会详细讲解 一、注释 作用:在代码中加入一些说明和解释,方便自己或其他人阅读代码 两种格式: 1、单行注释: // 描述信息 通常放在一行代码的上方,或者一条语句的末…

Java代码基础算法练习-删除空格-2024.04.15

任务描述: 请从键盘获取一串字符,然后实现删除字符串空格的操作。 任务要求: 代码示例: 这里提供两种方法 1.使用正则表达式(推荐) // 用正则表达式的方法 System.out.println("删除空格后的的字符…

嵌入式MCU BootLoader开发配置详细笔记教程

目录 一、BootLoader基础 二、BootLoader原理及配置 三、BootLoader程序 bootloader.h bootloader.c 四、Application1 用户程序 application1.h application1.c 五、Application2 用户程序 application2.h 六、程序运行效果 七、工程文件Demo 一、BootLoader基础 …

FRR-NET:用于弱光图像增强的快速重参数残差网络

很久之前写的文章,前两天才见刊。项目的具体代码因项目原因无法公布,我自己重新训练了一个版本(包含两类预训练模型),供初学者参考。本文主要为AB式创新。 文章链接:paper 代码链接:GitHub || …

使用脚本部署openstack平台

两台虚拟机,compute和controller 建议两台虚拟机都配置,内存4G,硬盘60G,网络要在虚拟机设置这里添加一个网络适配器,第一个是主机模式192.168.10.0,第二个是NAT模192.168.20.0, 可以在此处了解一…

vue源码解析——diff算法/双端比对/patchFlag/最长递增子序列

虚拟dom——virtual dom,提供一种简单js对象去代替复杂的 dom 对象,从而优化 dom 操作。virtual dom 是“解决过多的操作 dom 影响性能”的一种解决方案。virtual dom 很多时候都不是最优的操作,但它具有普适性,在效率、可维护性之…

C++ 之 【类与对象】从入门到精通一条龙服务 最终篇(static成员、友元、匿名对象。。。)

💴到用时方恨早,白首方悔挣的少 车到山前没有路,悬崖勒马勒不住 一、再谈构造函数 1.构造函数体赋值 2.初始化列表 3.explicit关键字 二、Static成员 1.概念 2.特性 三、友元 1.友元函数 2.友元类 四、内部类 五、匿名对象 六、…

【uniapp】vscode安装插件、ts校验、允许json文件注释

1、vscode安装的插件: uni-create-viewuni-hlperuniapp小程序扩展 2、ts校验 安装插件: pnpm i -D types/wechat-miniprogram uni-helper/uni-app-types配置tsconfig.json {"extends": "vue/tsconfig/tsconfig.json","compi…

向量 | vector;标量 | scalar;矩阵;张量

目录 什么是标量 什么是向量? 向量的3种表达方式 向量的矩阵表示 什么是矩阵 什么是张量 什么是标量 标量只有大小概念,没有方向的概念。通过一个具体的数值就能表达完整。 比如:重量、温度、长度、提及、时间、热量等都数据标量。

gzip,bzip2,xz,tar-读书笔记(九)

gzip 将文件进行压缩 在Linux系统中,gzip 是一个压缩和解压文件的命令工具。它使用LZ77压缩算法及霍夫曼编码(Huffman Coding)来压缩文件,通常用来减少文件的大小,以节约磁盘空间或减少网络传输的时间。 gzip 命令的…

SpringBoot集成JWT快速入门Demo

目录 1. 概述 2. JWT的请求流程 3. Session认证与JWT认证的区别 4 JWT优缺点 4.1 优点 4.2 缺点 5. 快速入门 5.1 创建工程 5.2 导入依赖 5.3 添加配置文件 5.4 添加Swagger2配置类 5.5 添加JWT工具类 5.6 添加entity、service、controller类 5.7 添加拦截器类 …

【Linux】CentOS 7安装后没有图形界面

专栏文章索引:Linux 有问题可私聊:QQ:3375119339 目录 一、项目场景 二、问题描述 三、原因分析 四、解决方案 1.当前处于命令行界面,可以切换为图形界面 2.安装时没有安装图形界面,选择了Minimal Install 3.下…

【Linux】磁盘分区扩容到原有目录(LVM)

一、LVM基本组成 LVM(Logical Volume Manager,逻辑卷管理)逻辑卷管理器是负责管理物理卷、卷组和逻辑卷的软件层。它提供了创建、调整和管理这些组件的命令和工具,使得用户能够灵活地调整和管理磁盘空间。 1.物理卷(PV,Physical…

基于Springcloud可视化项目:智慧工地可视化大数据云平台源码

目录 技术架构 智慧工地系统在实际推行过程中遇到的问题 智慧工地接纳程度较低 基础设施条件有待完善 智慧工地整体生态尚未完善 智慧工地平台各功能模块 施工过程工信程息信管息理管模理块 人员管理模块 生产管理模块 技术管理模块 质量管理模块 安全管理模块 绿…

免费的 ChatGPT 网站(六个)

🔥博客主页: 小羊失眠啦. 🎥系列专栏:《C语言》 《数据结构》 《C》 《Linux》 《Cpolar》 ❤️感谢大家点赞👍收藏⭐评论✍️ 文章目录 一、insCode二、讯飞星火三、豆包四、文心一言五、通义千问六、360智脑 现在智能…

关于GDAL计算图像坐标的几个问题

关于GDAL计算图像坐标的几个问题_gdal读取菱形四角点坐标-CSDN博客 这篇文章写的很好,讲清楚了图像行列号与图像点坐标(x,y)对应关系,以及图像行列号如何转为地理坐标的,转载一下做个备份。 1.关于GDAL计算图像坐标的…

【Python】使用OPC UA创建数据服务器

目录 准备工作服务器设置创建或获取节点设置节点值启动服务器查看服务器客户端总结 在工业自动化和物联网(IoT)领域,OPC UA(开放平台通信统一架构)已经成为一种广泛采用的数据交换标准。它提供了一种安全、可靠且独立于…