算法常见问题

news2024/11/18 17:40:31

1.c++虚函数

        虚函数是用来实现多态(polymorphism) 的一种机制。通过使用虚函数,可以在子类中重写父类中定义的方法,并且在运行时动态地确定要调用哪个方法。

        在类定义中将一个成员函数声明为虚函数,需要使用 virtual 关键字进行修饰 。

        通过指向派生类对象的基类指针或引用调用虚函数时,程序会根据对象的实际类型来调用相应的方法。

2.Softmax函数和Sigmoid函数的区别与联系

Sigmoid函数

        Sigmoid =多标签分类问题=多个正确答案=非独占输出(例如胸部X光检查、住院)。构建分类器,解决有多个正确答案的问题时,用Sigmoid函数分别处理各个原始输出。

        Sigmoid函数是一种logistic函数,它将任意的值转换到  之间

        

Softmax =多类别分类问题=只有一个正确答案=互斥输出(例如手写数字,鸢尾花)。构建分类器,解决只有唯一正确答案的问题时,用Softmax函数处理各个原始输出值。Softmax函数的分母综合了原始输出值的所有因素,这意味着,Softmax函数得到的不同概率之间相互关联。

        

        Softmax函数是二分类函数Sigmoid在多分类上的推广,目的是将多分类的结果以概率的形式展现出来。

        Softmax可以由三个不同的角度来解释。从不同角度来看softmax函数,可以对其应用场景有更深刻的理解:

        (1)softmax可以当作arg max的一种平滑近似,与arg max操作中暴力地选出一个最大值(产生一个one-hot向量)不同,softmax将这种输出作了一定的平滑,即将one-hot输出中最大值对应的1按输入元素值的大小分配给其他位置。

        (2)softmax将输入向量归一化映射到一个类别概率分布,即  

个类别上的概率分布(前文也有提到)。这也是为什么在深度学习中常常将softmax作为MLP的最后一层,并配合以交叉熵损失函数(对分布间差异的一种度量)。

        (3)从概率图模型的角度来看,softmax的这种形式可以理解为一个概率无向图上的联合概率。因此你会发现,条件最大熵模型与softmax回归模型实际上是一致的,诸如这样的例子还有很多。由于概率图模型很大程度上借用了一些热力学系统的理论,因此也可以从物理系统的角度赋予softmax一定的内涵。

总结

        如果模型输出为非互斥类别,且可以同时选择多个类别,则采用Sigmoid函数计算该网络的原始输出值。如果模型输出为互斥类别,且只能选择一个类别,则采用Softmax函数计算该网络的原始输出值。Sigmoid函数可以用来解决多标签问题,Softmax函数用来解决单标签问题。[1]对于某个分类场景,当Softmax函数能用时,Sigmoid函数一定可以用。

二分类任务

        对于二分类问题来说,理论上,两者是没有任何区别的。由于我们现在用的Pytorch、TensorFlow等框架计算矩阵方式的问题,导致两者在反向传播的过程中还是有区别的。实验结果表明,两者还是存在差异的,对于不同的分类模型,可能Sigmoid函数效果好,也可能是Softmax函数效果。

3.l1和l2正则化的区别是什么

        L1/L2的区别

        L1是模型各个参数的绝对值之和。L2是模型各个参数的平方和的开方值。

        L1会趋向于产生少量的特征,而其他的特征都是0。

        因为最优的参数值很大概率出现在坐标轴上,这样就会导致某一维的权重为0 ,产生稀疏权重矩阵

     L2会选择更多的特征,这些特征都会接近于0。  

     最优的参数值很小概率出现在坐标轴上,因此每一维的参数都不会是0。当最小化||w||时,就会使每一项趋近于0。

        L1的作用是为了矩阵稀疏化。假设的是模型的参数取值满足拉普拉斯分布。

        L2的作用是为了使模型更平滑,得到更好的泛化能力。假设的是参数是满足高斯分布。

4.介绍svm算法

        是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机。

        SVM可分为三种:

        线性可分SVM

        当训练数据线性可分时,通过最大化硬间隔(hard margin)可以学习得到一个线性分类器,即硬间隔SVM。

        线性SVM

        当训练数据不能线性可分但是近似线性可分时,通过最大化软间隔(soft margin)也可以学习到一个线性分类器,即软间隔SVM。

        非线性SVM

        当训练数据线性不可分时,通过使用核技巧(kernel trick)和最大化软间隔,可以学习到一个非线性SVM。

        SVM的的学习策略就是间隔最大化,可形式化为一个求解凸二次规划的问题,也等价于正则化的合页损失函数的最小化问题。SVM的的学习算法就是求解凸二次规划的最优化算法。

        SVM如何选择核函数

        Linear核:主要用于线性可分的情形。参数少,速度快,对于一般数据,分类效果已经很理想了。

        RBF核:主要用于线性不可分的情形。参数多,分类结果非常依赖于参数。有很多人是通过训练数据的交叉验证来寻找合适的参数,不过这个过程比较耗时。

5.介绍transformer算法

        Transformer本身是一个典型的encoder-decoder模型,Encoder端和Decoder端均有6个Block,Encoder端的Block包括两个模块,多头self-attention模块以及一个前馈神经网络模块;Decoder端的Block包括三个模块,多头self-attention模块,多头Encoder-Decoder attention交互模块,以及一个前馈神经网络模块;需要注意:Encoder端和Decoder端中的每个模块都有残差层和Layer Normalization层。

6.1x1大小的卷积核的作用

        通过控制卷积核个数实现升维或者降维,从而减少模型参数。

        对不同特征进行归一化操作。

        用于不同channel上特征的融合。

7.空洞卷积及其优缺点

        pooling操作虽然能增大感受野,但是会丢失一些信息。空洞卷积在卷积核中插入权重为0的值,因此每次卷积中会skip掉一些像素点;

        空洞卷积增大了卷积输出每个点的感受野并且不像pooling会丢失信息,在图像需要全局信息或者需要较长sequence依赖的语音序列问题上有着较广泛的应用。

8.介绍Transformer中的Q K V

  • q代表的是query查询,后续会和每一个k进行匹配,找到最相似的k
  • k代表的是key关键字,后续会被每一个q匹配
  • v代表的是value值,代表从输入中提到的信息
  • Q、K、V概念来源于检索系统,其中Q为Query、K为Key、V为Value。可以简单理解为Q与K进行相似度匹配,匹配后取得的结果就是V。举个例子我们在某宝上搜索东西,输入的搜索关键词就是Q,商品对应的描述就是K,Q与K匹配成功后搜索出来的商品就是V。

        注意:每一个key,都对应一个value;计算query和key的匹配程度就是计算两者相关性,相关性越大,代表key对应value的权重也就越大,这就是不同信息的权重不一样,这就是注意力机制!

例如:

        图书馆里有很多书(value),为了方便查找,我们给书做了编号(key)。当我们想要了解漫威这本书(query)的时候,我们就可以看看那些动漫、电影、甚至二战(美国队长)相关的书籍。

9.self-attention的公式

         其中,X XX表示输入的数据,Q , K , V Q,K,VQ,K,V对应内容如图,其值都是通过X XX和超参(先初始化,后通过训练优化)进行矩阵运算得来的。

        可以理解为:Self-Attention中的Q是对自身(self)输入的变换,而在传统的Attention中,Q来自于外部。

10.目标跟踪算法中卡尔曼滤波的作用是什么

         其有两个前提假设:

        系统对运动的建模是线性(linear)的;

        噪声是符合正态分布(Gaussian)的;

1.卡尔曼滤波(Kalman filtering)是一种利用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法。由于观测数据中包括系统中的噪声和干扰的影响,所以最优估计也可看作是滤波)过程。​

2、在跟踪中卡尔曼滤波可以基于目标前一时刻的位置,来预测当前时刻的位置,并且可以比传感器更准确的估计目标的位置。

3.卡尔曼滤波不需要前面的历史数据,只需要前一时刻的状态数据就可以进行预测。

11.Focal loss介绍

        FOCAL LOSS是一种针对样本不平衡问题的一种损失函数,用于解决分类器在处理高度偏斜数据集时的困难问题。具体来说,FOCAL LOSS通过调整常规交叉熵损失函数中每个正负样本的权重,使得模型更加关注那些难以分类的样本,从而提高模型在少数类上的分类准确率。

        FOCAL LOSS最初由Lin等人于2017年在论文"Focal Loss for Dense Object Detection"中提出,主要应用于目标检测任务中的多目标分类问题。该损失函数的表达式如下:

        $$FL(p_t)=-(1-p_t)^\gamma\log(p_t)$$

        其中,$p_t$是模型预测的概率值,$\gamma$是一个可调整的超参数,用于控制难易样本的权重。当$\gamma$=0时,FOCAL LOSS退化为普通的交叉熵损失;当$\gamma>0$时,FOCAL LOSS会降低容易分类的样本的权重,增加难分类样本的权重。

        FOCAL LOSS的主要思想是通过降低简单样本的权重,增加难分类样本的权重,来达到处理不平衡数据的目的。在实践中,FOCAL LOSS已经被广泛地应用于各种图像分类、目标检测和语义分割等任务中,取得了较好的效果。

12.匈牙利分配

参考:采用匈牙利算法求解分配问题_匈牙利分配算法-CSDN博客

        分配问题也称指派问题,是一种特殊的整数规划问题,分配问题的要求一般是这样的:n个人分配n项任务

        简单的说:就是n*n矩阵中,选取n个元素,每行每列各有一个元素,使得和最小。

 什么是匈牙利算法?

 1)理论基础:

        若从指派问题的系数矩阵的某行(列)各元素中分别减去或者加上常数k,其最优任务分配问题不变。

         2)匈牙利算法的流程图

        Step 1: 行归约

        找出每行的最小元素,分别从每行中减去这个最小元素;

        Step 2 : 列归约

        找出每列的最小元素,分别从每列中减去这个最小元素

        经过以上两步变换,矩阵的每行每列都至少有了一个零元素。接下来就进行第三步,试着指派任务。

        Step 3 : 指派任务

① 确定独立零元素。

i 从第一行(列)开始,若该行(列)中只有一个零元素,对该零元素标1,表示这个任务就指派给某人做。

每标一个1,同时将该零元素同列的其他零元素标为2,表示此任务已不能由其他人来做。(此处标1、2的操作与课本画圈、划去操作同理)

如此反复进行,直到系数矩阵中所有的零元素都已经被标为1或者2为止。

② 指派

我们观察到,系数矩阵中标记为1的零元素正好等于4,这表示已经确定了最优的指派方案。

此时,只需将0(1)所在位置记为1,其余位置记为0,则获得了该问题的最优解。

异常情况

上例仅为一种理想情况正常情况下,我们在对支付矩阵进行变换时会出现两种情况:

① 出现零元素的闭合回路

②标记成1的元素个数小于n

这两种情况导致支付矩阵中独立零元素出现不足。

i.出现零元素的闭合回路(有多于两行或两列存在两个以上的零元素。)

图的第一行的一二列零元素和第四行的一二列零元素构成回路

这里我们的处理方法是:

先对cost方阵做一个备份(因为会出现多解),然后我们可以顺着回路的走向,对间隔的零元素标记成1,然后对标记成1的零元素所有的行列划一条直线,把这两条直线的其他零元素标记成2,得到一种结果后,再求出多解。

ii. 矩阵中所有标记成1的零元素小于n

因此,我们需要对其进行【画盖0线】的操作。(即画出可以覆盖最多0元素的直线)

(1)画盖0线:利用最少的水平线和垂直线覆盖所有的零。

具体操作如下:

① 对没有标记为1的零元素所在的行打√;

②在已打“√”的行中,对标记为2的零元素所在列打√

③ 在已打“√”的列中,对标记为1的零元素所在行打“√”

④重复②和③,直到再不能找到可以打√的行或列为止。

⑤对没有打“√”的行画一横线,对打“√”的列画一垂线,这样就得到了覆盖所有零元素的最少直线数目的直线集合。

(2)继续变换系数矩阵

①在未被覆盖的元素中找出一个最小元素。

②对未被覆盖的元素所在行中各元素都减去这一最小元素。这时已被覆盖的元素中会出现负元素。

③对负元素所在的列中各元素加上这一最小元素。

Step4

我们发现,在经过一次变换后,独立零元素的个数仍然少于4.此时返回第三步,反复进行,直到矩阵中每一行都有一个被标记为1的元素为止。

13.Mosaic数据增强方法

        Mosaic是一种数据增强方法,可以用于训练物体检测模型,其中在随机裁剪的4张图片上进行拼接,以生成一个大的马赛克图像。

        在YOLOv4中,Mosaic数据增强可以通过以下步骤实现:

  1. 随机选择四张不同的图片。
  2. 对这四张图片进行随机的缩放和平移操作,使它们的大小、位置不同。
  3. 将这四张图片按照某种规则进行拼接,形成一个大的马赛克图像。通常情况下,将四张图片分别放置在左上、右上、左下和右下的位置上,然后进行拼接。
  4. 在拼接后的大图像上进行随机裁剪,得到多个大小不同的子图像。
  5. 对每个子图像进行标注,并将它们作为训练数据输入给YOLOv4模型进行训练。

通过使用Mosaic数据增强,可以有效地增加训练数据的多样性,提高模型的准确率和鲁棒性。此外,由于Mosaic数据增强可以同时使用多张图片进行训练,因此可以节省GPU内存,提高训练效率。

14.协方差

        协方差是用来衡量两个变量之间线性相关程度的统计量,它描述的是这两个变量同时偏离自身均值时所产生的期望值。协方差可以是正数、负数或者零。

        具体来说,如果两个变量的协方差为正数,则表明这两个变量的变化趋势是相同的;如果协方差为负数,则表明这两个变量的变化趋势是相反的;如果协方差为零,则表明这两个变量之间不存在线性相关关系。

        协方差可以用以下公式来计算:

        cov(X,Y) = E[(X-μ_X)(Y-μ_Y)]

        其中,X和Y是要计算协方差的两个随机变量,μ_X和μ_Y分别是这两个随机变量的均值,E[ ]表示期望值运算符。

        在实际应用中,协方差通常被用作衡量两个变量之间的联合变化程度。例如,当我们研究两种产品的销售量时,可以计算它们的销售量之间的协方差,以了解它们之间的关系强度。另外,在金融领域,协方差也常被用于构建投资组合模型,以评估不同投资品种之间的风险和收益关系。

15.BN的理论

Batch Norm的优点:

  • 可以使用大的学习率加快训练
  • 使得网络对权重初始化依赖程度降低
  • 可以缓解网络的过拟合问题

训练时,以mini-batch为单位,进行归一化操作。如下计算公式:

        对mini-batch中m个数据计算均值和方差,之后通过减去均值,除以标准差的变换,将输入数据分布重新调整到均值为0、方差为1。

    接下来,BatchNorm层会对归一化后的数据利用下述公式进行缩放和平移的变换:

    初始化时,γ = 1, β = 0,之后再通过训练迭代,将这两个超参数调整到合适的值。

    加入平移和缩放的原因是,不一定所有数据都服从标准正态分布,通过平移和缩放可以使得归一化后的数据保留原有学习来的特征,同时还完成归一化操作,加速了训练。

因此BN层是以mini-batch为单位,沿着通道维度进行的:

算法如下:

需要注意的是,

  • 在训练时,需要利用每一批数据(batch)计算均值和方差。
  • 在测试时,用训练中通过移动平均法保存的均值和方差作为参数。
  • 当一个模型训练完成之后,BN层所有参数:均值、方差、γ和β就都确定了。

    BN层的反向传播过程利用链式求导法则,求解dγ、dβ和dx即可。需要强调的是求解dx。均值、方差也都是包含x的函数,因此对x求导时,需要考虑进去,推导过程比较繁琐,可以用batch=2只有x1,x2两个输入情况进行推导,之后推广到batch=m

注意到代码中:

  1. beta、gamma在训练状态下,是可训练参数,在推理状态下,直接加载训练好的数值。

  2. moving_mean、moving_var在训练、推理中都是不可训练参数,只根据滑动平均计算公式更新数值,不会随着网络的训练BP而改变数值;在推理时,直接加载储存计算好的滑动平均之后的数值,作为推理时的均值和方差。

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

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

相关文章

大语言模型(LLMs)能够进行推理和规划吗?

大语言模型(LLMs),基本上是经过强化训练的 n-gram 模型,它们在网络规模的语言语料库(实际上,可以说是我们文明的知识库)上进行了训练,展现出了一种超乎预期的语言行为,引…

基于Springboot + vue 的抗疫物质管理系统的设计与实现

目录 📚 前言 📑摘要 📑系统流程 📚 系统架构设计 📚 数据库设计 📚 系统功能的具体实现 💬 系统登录注册 系统登录 登录界面 用户添加 💬 抗疫列表展示模块 区域信息管理 …

水泥超低排平台级别

在当今社会,环保已成为各行各业发展的重要指标。水泥行业作为国民经济的基础产业,其环保水平的高低直接关系到整个行业的可持续发展。近年来,朗观视觉水泥超低排平台作为水泥行业环保领域的新宠,受到了广泛关注。那么,…

STL —— 用一棵红黑树同时封装出map和set

文章目录 红黑树源代码RBTree.h 红黑树模板参数的控制红黑树结点当中存储的数据模板参数中仿函数的增加普通迭代器和const迭代器的实现myMap.hmySet.hRBTree.h 红黑树源代码 使用KV模型的红黑树进行封装,同时模拟实现出CSTL库当中的map和set RBTree.h //枚举定义…

网络安全:Web 安全 面试题.(XSS)

网络安全:Web 安全 面试题.(XSS) 网络安全面试是指在招聘过程中,面试官会针对应聘者的网络安全相关知识和技能进行评估和考察。这种面试通常包括以下几个方面: (1)基础知识:包括网络基础知识、操作系统知…

axios的基本使用和vue脚手架自带的跨域问题解决

axios的基本使用和vue脚手架自带的跨域问题解决 1. axios 1.1 导入axios npm i axios1.2 创建serve1.js serve1.js const express require(express) const app express()app.use((request,response,next)>{console.log(有人请求服务器1了);console.log(请求来自于,re…

【BES2500x系列 -- RTX5操作系统】深入探索CMSIS-RTOS RTX -- 任务管理篇 -- 线程管理 --(二)

💌 所属专栏:【BES2500x系列】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! &#x1f49…

SSM图书馆管理系统-计算机毕业设计源码07925

摘 要 “鸟欲高飞先振翅,人求上进先读书”,可见读书对我们的重要性,在这个高速发展的社会,人们也越来越意识到读书的重要性,人们需要汲取各个领域的知识,不断的拓展自己的知识水平,图书馆作为一…

华为---OSPF的DR与BDR(六)

9.6 OSPF的DR与BDR 9.6.1 原理概述 在OSPF的广播类型网络和NBMA类型网络中,如果网络中有n台路由器,若任意两台路由器之间都要建立邻接关系,则需要建立n(n-1)/2个邻接关系,即当路由器很多时,则需要建立和维护的邻接关…

MTK7628+MT7612 加PA定频数据

1、硬件型号TR726A5G121-DPA PC9.02.0017。如下所示: 2、WIFI5.8 AC模式 42(5120MHz)信道,80带宽 3、WIFI5.8 AC模式 38(5190MHz)信道,40带宽 4、WIFI5.8 AC模式 36(5180 MHz&…

【Linux】进程间通信上 (1.5万字详解)

目录 一.进程间通信介绍 1.1进程间通信的目的 1.2初步认识进程间通信 1.3进程间通信的种类 二.匿名管道 2.1何为管道 2.1实现原理 2.3进一步探寻匿名管道 2.4编码实现匿名管道通信 2.5管道读写特点 2.6基于管道的进程池设计 三.命名管道 3.1实现原理 3.2代码实现 四.…

asp.net core反向代理

新建项目 新建空白的asp.net core web项目 安装Yarp.ReverseProxy包版本为2.2.0-preview.1.24266.1 编写代码 namespace YarpStu01;public class Program {public static void Main(string[] args){var builder WebApplication.CreateBuilder(args);builder.Services.AddRev…

再添国家级认证!亚信安全获国家信息安全服务(数据安全类)一级资质

近日,亚信安全荣获由中国信息安全测评中心颁发的《国家信息安全测评信息安全服务资质证书—数据安全类一级》资质。凭借在数据安全领域的专业地位和技术水平,亚信安全成为为数不多的获得国家信息安全服务资质数据安全类一级的网络安全企业! 中…

如何用家政服务小程序源码系统 快速搭建家政自己接单的软件?

随着移动互联网的快速发展,线上预约服务已成为家政行业的新趋势。然而,许多家政企业面临着信息不透明、服务质量参差不齐、管理效率低下等问题。家政服务小程序系统,可以帮助商家快速搭建自己的接单软件,提升服务效率,…

网安大咖说·镜鉴(下)| 把握安全新脉搏:企业CSO的领航之道

网安大咖说镜鉴栏目通过对网安大咖说嘉宾访谈内容的深度提炼,撷取群英论道之精髓,汇聚众智谋策之高远,为从业者提供宝贵的经验和启迪。集思广益、博采众长,意在以镜为鉴,观网安之百态,立防范之策略&#xf…

AI界又放大招?长文本新霸主“橙篇”来了

哈喽,大家好,木易巷来啦! 在自媒体的江湖里,每个创作者都是一位独行侠,手握键盘,心怀天下。而我,也不例外,有点空闲时间就去寻找那个能让我笑傲江湖的AI神兵,让我可以摆…

DEtection TRansformer (DETR)与YOLO在目标检测方面的比较

1. 概述 计算机视觉中的目标检测是一个复杂而有趣的领域,它涉及到让计算机能够识别图像中的物体,并确定它们的位置。下面是DETR和YOLO这两种目标检测方法简单比较: 1.1 YOLO YOLO是一种非常流行的目标检测算法,它的核心思想是将…

ROS话题通信流程自定义数据格式

ROS话题通信流程自定义数据格式 需求流程实现步骤定义msg文件编辑配置文件编译 在 ROS 通信协议中,数据载体是一个较为重要组成部分,ROS 中通过 std_msgs 封装了一些原生的数据类型,比如:String、Int32、Int64、Char、Bool、Empty… 但是,这些…

【源码】 最新麻豆MDYS14源码 油条视频 苹果CMS系统 附搭建教程thinkphp

最新麻豆MDYS14源码 油条视频 苹果CMS系统 附搭建教程 简介: 最新麻豆MDYS14源码 油条视频 苹果CMS系统 附搭建教程 基本介绍: 1. 后台增加自定义参数,对应会员升级页面,以及积分充值 2. 视频,演员,专题…

[分布式网络通讯框架]----Zookeeper客户端基本操作----ls、get、create、set、delete

Zookeeper数据结构 zk客户端常用命令 进入客户端 在bin目录下输入./zkCli.sh 查看根目录下数据ls / 注意:要查看哪一个节点,必须把路径写全 查看节点数据信息 get /第一行代码数据,没有的话表示没有数据 创建节点create /sl 20 /sl为节点的路径&am…