向前传播 forward pass

在机器学习中,输入的feature, 通过预测模型,输出预测值,此过程称之为向前传播;

向后传播 backward pass

为了将预测与真实值的产值减小,需要根据差值,更新模型中的参数,此过程称之为向后传播;

评分函数 Score function

  • 原始图像数据到类别分值的映射;
  • 也就是向前传播时,使用的模型函数;

损失函数 Loss function/代价函数Cost function/目标函数Objective

  • 用来量化预测分类标签的得分与真实标签之间一致性的.
  • 也就是衡量,我们对结果的不满意度;
  • 评分函数输出结果与真实结果之间差异越大,损失函数输出越大;
  • 损失函数的具体形式多种多样;
  • 损失函数基于向前传播和向后传播之间,起到承上启下的作用;
    • 承上:接收模型的预测值;
    • 启下:计算预测值与真实值的差值,为反向传播提供输入数据;

线性分类器 Linear Classification

  • 通过对原始数据进行处理,得到一个分类的分值;
  • 例如,最简单的线性分类
  • 其中,W表示权重(Weights),b表示偏差(bias vector)
  • 参数Wb是可控制改变的。我们的目标就是通过设置这些参数,使得计算出来的分类分值情况和训练集中图像数据的真实类别标签相符。
  • 一个实际的例子:

        

  • 上述函数的一个二维抽象:

        

  • 以红色的汽车分类器为例,红线表示空间中汽车分类分数为0的点的集合,红色的箭头表示分值上升的方向。
  • 所有红线右边的点的分数值均为正,且线性升高。红线左边的点分值为负,且线性降低。
  • 从上面可以看到,W的每一行都是一个分类类别的分类器。
  • 对于这些数字的几何解释是:如果改变其中一行的数字,会看见分类器在空间中对应的直线开始向着不同方向旋转。
  • 而偏差b,则允许分类器对应的直线平移。
  • 需要注意的是,如果没有偏差,无论权重如何,在xi=0时分类分值始终为0。这样所有分类器的线都不得不穿过原点。

多类支持向量机损失 Multiclass Support Vector Machine Loss

  • 常用的一种损失函数
  • 其核心思想是,在正确分类上的得分始终比不正确分类上的得分高出一个边界值Δ, 也就是value_right - value_wrong >= Δ;
  • 例如,第i个数据中包含图像xi的像素和代表正确类别的标签yi, 分值简写为s。针对第j个类别的得分就是第j个元素:sj=f(xi,W)j。其SVM损失函数如下:                  
  • 实际例子:假设有3个分类,并且得到了分值s=[13,−7,11]。其中第一个类别是正确类别,即yi=0。同时假设Δ是10;
    • 第一部分,为0, 第二部分,为8;
    • 虽然正确分类分值13>不正确分类11, 但还是比Δ(10)小,分差只有2, 所以损失值为8;
    • 因为不满足>=Δ, 所以此时开始计算损失值;
    • 如果没有这些情况,损失值为0;(因为预测正确的,一定是最高分)
  • 具象化:
    •    
    • 多类SVM“想要”正确类别的分类分数比其他不正确分类类别的分数要高,而且至少高出delta的边界值。
    • 如果其他分类分数进入了红色的区域,甚至更高,那么就开始计算损失。
  • Δ的说明:
    • 超参数Δ和λ看起来是两个不同的超参数,但实际上他们一起控制同一个权衡:即损失函数中的数据损失和正则化损失之间的权衡。
    • 不同分类分值之间的边界的具体值(比如Δ=1或Δ=100)从某些角度来看是没意义的,因为权重自己就可以控制差异变大和缩小
    • 真正的权衡是我们允许权重能够变大到何种程度(通过正则化强度λ来控制)。

        

折叶损失(hinge loss)

  • max(0,−)函数

平方折叶损失SVM--L2-SVM

  • 它使用的是max(0,−)2,将更强烈(平方地而不是线性地)地惩罚过界的边界值;

正则化(Regularization)

  • 为了解决损失函数的模糊性问题;
  • 所谓的模糊性问题,指的是如果W能够正确分类所有数据,即对于每个数据,损失值都是0,囊二这个W的任意>1的倍数,也同样满足;
  • 正则化惩罚(regularization penalty), R(w);
    • 最常用的正则化惩罚是L2范式:
  • 有了regularization penalty之后, 完整的SVM损失函数可以表示为:
    • 展开后:
    • N是训练集的数据量。
    • 现在正则化惩罚添加到了损失函数里面,并用超参数λ来计算其权重。
    • 其中最好的性质就是对大数值权重进行惩罚,可以提升其泛化能力,因为这就意味着没有哪个维度能够独自对于整体分值有过大的影响。
  • 实际例子:
    • 假设输入向量x=[1,1,1,1],两个权重向量w1=[1,0,0,0],w2=[0.25,0.25,0.25,0.25]。
    • 根据公式,权重1的L2 penalty是1, 权重2的L2 penalty是0.25;
    • 因此,根据L2惩罚来看,w2更好,因为它的正则化损失更小。
    • 从直观上来看,这是因为w2的权重值更小且更分散。既然L2惩罚倾向于更小更分散的权重向量,这就会鼓励分类器最终将所有维度上的特征都用起来,而不是强烈依赖其中少数几个维度。
    • 最后,因为正则化惩罚的存在,不可能在所有的例子中得到0的损失值,这是因为只有当W=0的特殊情况下,才能得到损失值为0。
    • 这一效果将会提升分类器的泛化能力,并避免过拟合

超参数(hyperparameter)

  • 超参数则是在算法运行之前手动设置的参数,用于控制模型的行为和性能
  • 这些超参数的选择会影响到模型的训练速度、收敛性、容量和泛化能力等方面。
  • 例如,学习率、迭代次数、正则化参数、隐藏层的神经元数量等都是常见的超参数。
    • learning rate;
    • momentum;
    • number of layers
    • hiddden nodes;
    • regularization parameters 
    • initial weights
    • 等等
  • 超参数的选择通常是一个试错的过程,需要根据经验和领域知识进行调整。

过拟合

  • 过拟合是指训练误差和测试误差之间的差距太大。
  • 换句换说,就是模型复杂度高于实际问题,模型在训练集上表现很好,但在测试集上却表现很差。
  • 模型对训练集"死记硬背"(记住了不适用于测试集的训练集性质或特点),没有理解数据背后的规律,泛化能力差。

Softmax分类器

  • 它的损失函数与SVM的损失函数不同。
  • 在Softmax分类器中,函数映射f(xi;W)=Wxi保持不变,但将这些评分值视为每个分类的未归一化的对数概率,并且将折叶损失(hinge loss)替换为交叉熵损失cross-entropy loss)
  • SVM和softmax的区别:

  • SVM的最终的损失值是1.58,Softmax的最终的损失值是0.452,但要注意这两个数值没有可比性。只在给定同样数据,在同样的分类器的损失值计算中,它们才有意义。
  • Softmax分类器为每个分类提供了“可能性”;
    • SVM的计算是无标定的,而且难以针对所有分类的评分值给出直观解释。
    • Softmax分类器则不同,它允许我们计算出对于所有分类标签的可能性。
    • 例如:
      • 针对给出的图像,SVM分类器可能给你的是一个[12.5, 0.6, -23.0]对应分类“猫”,“狗”,“船”。
      • 而softmax分类器可以计算出这三个标签的”可能性“是[0.9, 0.09, 0.01],这就让你能看出对于不同分类准确性的把握。
      • 可能性是一个相对的值,因为可能性分布的集中或离散程度是由正则化参数λ直接决定的

最优化 Optimization

  •  最优化是寻找能使得损失函数值最小化的参数W的过程
  • 损失函数可以量化某个具体权重集W的质量。而最优化的目标就是找到能够最小化损失函数值的W ;
  • 最优化的一般方式:
    • 一个差劲的初始方案:随机搜索;
      • 核心思路,迭代优化:对一个权重矩阵集W取优,使其损失值稍微减少。那么问题的难度就大大降低了。换句话说,我们的方法从一个随机的W开始,然后对其迭代取优,每次都让它的损失值变得更小一点。
    • 随机本地搜索
      • 第一个策略可以看做是每走一步都尝试几个随机方向,如果某个方向是向山下的,就向该方向走一步。这次我们从一个随机W开始,然后生成一个随机的扰动δW ,只有当W+δW的损失值变低,我们才会更新。
      • 这个比策略一好,但是依然过于浪费计算资源。
    • 跟随梯度
      • 前两个策略中,我们是尝试在权重空间中找到一个方向,沿着该方向能降低损失函数的损失值。其实不需要随机寻找方向,因为可以直接计算出最好的方向;
      • 这个方向就是损失函数的梯度(gradient);

learning rate

  • 梯度指明了函数在哪个方向是变化率最大的,但是没有指明在这个方向上应该走多远;
  • 选择步长(也叫作学习率)将会是神经网络训练中最重要(也是最头痛)的超参数设定之一

梯度下降法

  • 梯度下降使用整个训练数据集来计算梯度,因此它有时也被称为批量梯度下降;
  • 在大规模的应用中(比如ILSVRC挑战赛),训练数据可以达到百万级量级。如果像这样计算整个训练集,来获得仅仅一个参数的更新就太浪费了。

随机梯度下降法

  • 如果使用梯度下降法(批量梯度下降法),那么每次迭代过程中都要对 n个样本进行求梯度,所以开销非常大,随机梯度下降的思想就是随机采样一个样本 J(xi)来更新参数,那么计算开销就从 O(n)下降到 O(1) 。

小批量梯度下降法

  • 随机梯度下降虽然提高了计算效率,降低了计算开销,但是由于每次迭代只随机选择一个样本,因此随机性比较大,所以下降过程中非常曲折;

        ​​​​​​​        

  • 所以,样本的随机性会带来很多噪声,我们可以选取一定数目的样本组成一个小批量样本,然后用这个小批量更新梯度,这样不仅可以减少计算成本,还可以提高算法稳定性。

 

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

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

相关文章

鸿蒙系统(HarmonyOS)应用开发之手势锁屏密码锁(PatternLock)

项目概述 基于鸿蒙(OpenHarmony)平台开发的手势密码锁应用,旨在为用户提供安全、便捷且具有良好交互体验的身份验证方式。通过手势图案输入,用户可以轻松设置和验证密码,提升设备的安全性和个性化体验。 功能特点 手…

vue文本插值

好的,我们来详细讲解 Vue 中最基础的数据展示方式:文本插值和在其内部使用的 JavaScript 表达式。 1. 文本插值 (Text Interpolation) 知识点: 文本插值是 Vue 中最基本的数据绑定形式。它使用“Mustache”语法(双大括号 {{ }})…

Python:线性代数,向量内积谐音记忆。

目录1 先说结论2 解释3 欢迎纠错4 论文写作/Python 学习智能体------以下关于 Markdown 编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、…

小程序导航设置更多内容的实现方法

在小程序中实现导航栏设置更多内容,可以通过以下几种方式实现: 1. 使用原生导航栏自定义按钮 javascript // app.json 或页面.json中配置 {"navigationBarTitleText": "首页","navigationBarTextStyle": "black&q…

SpringBoot 解决配置文件有黄色波浪线

在application.properties配置文件中有黄色波浪线,是警告!! 原因:编码格式不一致!! 解决:Settings| Editor | File Encodings | 选择UTF-8

在 Vue 3 中全局使用 Suspense 组件

Suspense 是 Vue 3 引入的一个内置组件,不需要引用可以直接用。用于处理异步依赖的等待状态。虽然 Suspense 主要用于异步组件,但你也可以全局地使用它来管理整个应用的加载状态。 全局 Suspense 的基本用法 1. 在根组件中使用 Suspense // main.js 或…

笔记/计算机网络

Content 计算机网络部分核心概念十大网络协议一览 计算机网络部分核心概念 1. 什么是计算机网络?它最基本的功能是什么? 计算机网络是指通过某种传输介质将多台独立的计算机或设备连接起来,实现数据交换和资源共享的系统。其最基本的功能是数…

时频图数据集更正程序,去除坐标轴白边及调整对应的标签值

当数据集是时频图时可能有一个尴尬的问题,就是数据集制作好后,发现有白边。 其实这也不影响训练模型,可能对模型训练效果的影响也是微乎其微的,于是大多数情况我会选择直接用整张图片训练模型。但是,有的情况下&#x…

mv重命名报错:bash:未预期的符号 ‘(‘附近有语法错误

文章目录 一、报错背景二、解决方法2.1、方法一:文件名加引号2.2、方法二:特殊字符前加\进行转义 一、报错背景 在linux上对一文件执行重命名时报错。原因是该文件名包含空格与括号。 文件名如下: aa (1).txt执行命令及报错如下…

Unity-MMORPG内容笔记-其三

继续之前的内容: 战斗系统 无需多言,整个项目中最复杂的部分,也是代码量最大的部分。 属性系统 首先我们要定义一系列属性,毕竟所谓的战斗就是不断地扣血对吧。 属性系统是战斗系统的核心模块,负责管理角色的所有…

Linux入门篇学习——Linux 帮助手册

目录 一、Linux 帮助手册 1.怎么打开帮助手册 2.安装依赖 3.使用手册查看命令 一、Linux 帮助手册 1.怎么打开帮助手册 打开 ubuntu ,输入 man 命令打开帮助手册,直接在控制台输入 man 就可以了, man 手册一共有 9 页&#xff0c…

2025年后端主流框架对比和竞争格局及趋势发展

2025年的后端开发呈现出云原生主导、性能革命、AI深度融合的技术格局,主流框架在细分领域持续分化,新兴技术快速渗透关键场景。以下是基于行业实践与技术演进的深度解析: 一、主流框架竞争态势与核心能力 1. Java生态:企业级市场的…

bRPC简介

bRPC基础介绍。 什么是RPC? 互联网上的机器大都通过TCP/IP协议相互访问,但TCP/IP只是往远端发送了一段二进制数据,为了建立服务还有很多问题需要抽象: 数据以什么格式传输?不同机器间,网络间可能是不同的字节序&am…

力扣网C语言编程题:在数组中查找目标值位置之二分查找法

一. 简介 上一篇文章对力扣网上"有序数组中查找目标值范围"题目进行了普通的解法。文章如下: 力扣网C语言编程题:在数组中查找目标值位置之暴力解法-CSDN博客 本文使用二分查找法进行实现,因为二分查找法符合题目要求&#xff0…

前端查询条件加密传输方案(SM2加解密)

一、需求背景 控台项目甲方进行安全测试,测试报告其中一条:敏感信息明文传输 1 敏感信息明文传输 中危 查询接口传输手机号、银行卡号等敏感信息时未加密/脱敏处理。 二、解决方案 讨论出的方案是通过前端查询条件加密,后端对加密的…

【Python】Flask网页

Flask第三方库安装命令:pip install flask代码:from flask import Flask app Flask(__name__)app.route("/") def hello():return "Hello world!"if __name__ "__main__":app.run()其中的"Hello world!"可以改…

数字资产革命中的信任之锚:RWA法律架构的隐形密码

首席数据官高鹏团队律师创作,AI辅助 在数字经济的浪潮中,资产的边界正在被重新定义。当一块地产、一笔应收账款、甚至一份碳配额被转化为链上的数字代币时,技术的光芒固然耀眼,但真正决定其生命力的,是背后隐匿的“信…

mobaxterm终端sqlplus乱码问题解决

背景。使用mobaxterm终端连接linux。在查询数据库表注释时发现**?**中文乱码。影响对表的分析。完成以下三个编码设置再打开sqlplus查询含中文的数据就正常了 总结。需要查看sqlplus的编码是什么 SELECT parameter, value FROM nls_database_parameters WHERE pa…

一个简单的分布式追踪系统

1. 准备工作 导入必要的库 import contextvars import time from typing import Any, Optional, Dict, List, Union from dataclasses import dataclass, field2. 定义上下文变量 # 定义两个上下文变量,存储当前 Span 和 Trace _current_span: contextvars.Conte…

【Qt】事件处理、事件分发器、事件过滤器

事件处理 一. 事件事件处理鼠标事件处理按键事件处理定时器事件处理窗口事件处理 二. 事件分发器三. 事件过滤器 虽然 Qt 是跨平台的 C 开发框架,Qt 的很多能力其实是操作系统提供的,只不过 Qt 封装了系统 API,程序是运行在操作系统上的&…