深度学习笔记

余弦距离

也称为余弦相似度(Cosine Similarity),是一种用于衡量两个向量之间的夹角的距离度量。它通常用于计算向量之间的相似性,尤其在信息检索、自然语言处理和机器学习中经常被使用。

代表A的范数

\text{Cosine Distance}(\mathbf{A}, \mathbf{B}) = 1 - \frac{\mathbf{A} \cdot \mathbf{B}}{\|\mathbf{A}\| \cdot \|\mathbf{B}\|}

one-hot

变量是一个离散值,将其转化为连续值时往往采用one-hot编码方式,因为所有的变量都是同等地位的,为了让所有的变量到原点的距离都相等,故采用one-hot,例如有三个离散值中国 美国 日本,如果单纯赋值1、2、3,那么他们到原点的距离分别是1、2、3,这样3的比重较大是不均衡的;采用one-hot就是001、010、100,这样到远点的距离就是均衡的了。

数据集

训练数据集用于学习,测试数据集用于评估泛化能力,而验证数据集则用于调整超参数;

Affine层

通常是指全连接层(Fully Connected Layer)或密集层(Dense Layer)。这是神经网络中的一种基本层类型,它的每个神经元与前一层的每个神经元都连接起来。

网络深度

通过加深网络的深度,可以将各层所需要学习的问题分解成容易解决的简单问题,从而可以更加高效的学习;

maxDets 

是目标检测任务中评估指标的一个参数,用于指定最大检测数。在目标检测中,检测模型通常会生成多个边界框(Bounding Box)作为可能的目标检测结果,但不是所有生成的边界框都会被考虑在性能评估中。maxDets 用于限制在评估中考虑的最大检测数量。

fpn

通常是一个存储了神经网络中使用的特征金字塔网络(Feature Pyramid Network,简称FPN)的步幅信息的数据结构。FPN 是一种用于处理不同尺度信息的神经网络结构,经常用于目标检测和语义分割等计算机视觉任务。

特征图(Feature Map)

是深度学习和卷积神经网络(CNN)中的一个关键概念。它是由神经网络中间层生成的数据结构,用于表示输入数据的抽象特征可以参考

【目标检测】FPN(Feature Pyramid Network) - 知乎

mAp(Mean Average Precision

评估目标检测模型性能的常见指标。mAP 衡量了模型在多个类别上的平均精度,通常用于评估目标检测模型的准确性。

超参数

两个重要的超参数是学习率批量大小

pytorch cuda cudnn之间的区别

pytorch是一个深度学习框架,有着丰富的拓展库;

cuda是nvidia的并行计算平台,框架可以利用cuda在gpu上进行张量计算从而提高性能;

cudnn是nvidia提供的深度神经网络库用于加速神经网络的计算

NCCL 是用于高性能计算和通信的库,特别适用于多GPU系统中的数据并行计算

总结:CUDA是GPU计算的基础,提供了通用计算能力,允许开发人员编写并行代码。

cuDNN是针对深度学习的库,构建在CUDA之上,提供了深度神经网络操作的高性能GPU实现。

显卡架构性能排序为

Ampere > Turing > Volta > Pascal > Maxwell > Kepler > Fermi > Tesla

卷积网络和Transformer:Tensor核心数>单精度浮点性能>显存带宽>半精度浮点性能

循环神经网络:显存带宽>半精度浮点性能>Tensor核心数>单精度浮点性能

glue 

通用语言理解评估任务   

动态神经网络

允许模型适应不同的数据长度和结构变化;

metada

在 Python 的 state_dict 对象中,metadata 是一个字典,用于存储与模型权重相关的元数据信息。元数据信息可以包括有关权重的一些描述性信息或其他与权重相关的数据。

召回率-recall

也叫做查全率,表示的是实际为正的样本有多少预测正确;

网络的结构

一般的网络由backbone neck head构成

backbone:主要用于提取特征;

neck:位于backbone和头部之间,用于进一步处理和融合特征 ,设计取决于具体的任务;

head:最后一部分,执行特定任务的输出操作,基于特征进行预测。

anchor-free

表示的是无锚框设计,模型直接预测目标的位置;

语义分割

针对像素级别的分类,将图像的所有像素点进行分类,输出的也是整张图像的分类图

目标检测

仅仅是检测出物体的位置和大小;

回归问题

模型通过学习输入特征和输出之间的关系,尝试建立一个函数来描述输入与输出之间的映射关系。

分类问题

输出是离散的类别;

轻量化的方法

1:在已经训练好的模型上进行剪枝和量化;

2:设计一个轻量化的模型;

3:加速卷积运算;

4:硬件加速。

迁移学习

将学习玩的部分权重复制到其他的神经网络,进行在学习,这对于数据集较少的情况使非常的有效;

知识蒸馏

创建教师和学生模型,其中教师模型的精度较高,学生模型根据教师模型的输出进行训练,使学生模型不断逼近教师模型的精度;

SE模块(Squeeze-and-Excitation Module

se注意力模块,可以对输入行通道特征进行加强,且不改变特征图的大小,s表示squeeze-对输入特征图的空间信息进行压缩,e表示exciitation-学习通道的注意力信息,与输入特征图进行融合,最终得到具有通道注意力的特征图;

常规卷积操作会对输入各个通道做卷积,然后对个通道的卷积结果进行求和,这种操作将卷积学习到的空间特征和通道特征混合在一起;而 SE 模块就是为了抽离这种混杂,让模型直接学习通道特征,以轻微的计算性能损失带来极大的准确率提升

ghost模块

用于减少冗余特征,减少模型的参数量,采用幽灵通道来降低计算成本,主要的优势就是减少模型参数量的同时保持较好的性能。

深度可分离卷积(pw-逐点卷积和dw-深度wisw卷积):

pw卷积主要用于引入非线性变换,卷积核为1*1

dw卷积主要用于与减少模型的参数和计算量,逐个通道分开卷积

激活函数

  1. 激活函数可以让神经网引入非线性性质,去除线性相关
  2. 特征映射,是网络捕获数据中的不同特征;
  3. relu =max(0,x)输出为0到正无穷
  4. sigmod输出为0-1 形状为s
  5. relu 输出为-1-1 以0为中心,形状为s

Numpy广播机制

1:两个tensor维度完全相同

2:两个tensor维度不同,此时从最后一维开始比较,若其中一个tensor最后一维为1则可以进行广播,继续比较倒数第二维,若有一个为1或者不存在则可以继续广播,否则不行;

Batch normalization

由于上层网络层的输出是下一层网络层的输入,但是由于不同的网络层不同导输出的差异较大,这会导致每次训练的结果差别较大,因此将每层的输出进行归一化也就是均值为0方差为1的标准分布(减去均值,除以方差即可),这样可以加快收敛,减少训练时间;

IOU

Intersection over Union,交并比,表示的是检测框与实际框的重叠程度,重叠程度越高越好;计算方法为先计算交集在计算并集最后交集/并集

过拟合

在训练集表现良好,但在未见过的数据集力里表现较差,一般两种原因:

1:模型拥有大量的参数,表现力较强;

2:训练数据集较少

解决办法:

1:权值衰减:在学习过程中对较大的权重进行惩罚,因为很多过拟合就是因为权值较大的参数导致的;具体做法就是在损失函数中引入一个额外的项,这个项通常表示为 L2 范数(欧几里德范数)的平方,其目标是使模型的权重趋向于接近零

损失函数 = 原始损失项 + λ * ||权重||^2

λ 是权值衰减系数,通常是一个非负实数,用于控制正则化项的强度。λ 的选择通常需要进行超参数调优。

2:dropout:在学习的过程中进行神经元的随机删除,在学习的过程中进行神经元的随机失活,以降低各个模块的依赖性,提高鲁棒性

残差链接

残差连接指的是将上游的数据原封不动的传给下游,这样在反向传播的时候可以将梯度原封不动的传递,这可以缓解因为加深层而导致梯度变小或者梯度消失的问题;

递归结构

神经网络会受到之前生成信息的影响;

卷积

卷积层可以保持输入数据的形状,这样可以更好的理解图像数据信息;

Padding

padding可以改变输出的形状,因为卷积操作会不断缩小输出的形状,这样会导致卷积不再可用,利用padding为1可以保持输入输出同形状;

stride

应用滤波器的位置间隔,增大步幅,输出会变小

输出计算公式:

三维卷积操作:

一个三通道滤波器进行卷积运算输出一个特征图

n个三通道滤波器输出n个特征图、

1x1卷积(逐点组卷积)

1:有利于降维从而减少参数量和实现高速化处理;

2:增加非线性,可以增加网络的非线性拟合能力,从而提高网络的精度;

3:提取通道相关联的信息

参数初始化

参考6.2节???

数据增广

在已有的数据集上,在其中加入噪音或者改变图片的颜色和形状色温进行改变或者随机切割、改变色调 饱和度 明亮度,使模型更具有泛化性;

微调(transform)

也叫做迁移学习,在一个比较大的数据集上进行训练的模型,将其中间的特征层进行复用,只对下游层进行重新训练,以复用学习到的特征;

预训练的模型很重要,微调通常速度更快、精度更高

损失函数

L2loss(均方损失)

L1loss绝对值损失

huber robust loss 鲁棒损失

softmax

交叉熵来计算两个概率的区别

seq2seq

序列到序列,由encode和decode组成

beam serach

束搜索在每次搜索是保存k个最好的选项,全连接层

embedding

1)将高位稀疏的矩阵嵌入到一个低维稠密的矩阵中

2:有点有用低维向量来表达上万维的onehot,效率显著提升

3:可以更好地理解词语的语义,并进行词语的推理,语义相近的词语在向量空间中更加接近

4:嵌入矩阵具有通用性,可以复用

评价方法

1:BELU:BLEU 最初设计用于机器翻译的质量评估,但它也可以用于其他自然语言处理任务的评估,前提是您有一个参考标准,以便将生成的文本与之进行比较得分越高越好

2:"Average Relative Distance (ARD)" 是一种用于衡量数据点之间的相对距离或相似性的统计度量。它通常用于数据挖掘、聚类分析、模式识别和机器学习等领域,以评估数据点之间的关系。得分越低越好

碰到的问题

1:训练时损失函数发散,这可能是由于学习率偏大导致的,在paddle的layout分析训练时,因为作者采用的是8卡进行训练,但我用的是1卡,未更改学习率导致无法收敛,后面将学习率调整为原来的1/8后得到改善;

训练工具

tensorboard

1)数据可视化工具,包括网络结构,损失和准确性,高维嵌入投影到低维空间

2)tensorboard --logdir=output/tensorboard --port=6009(端口若被占用可以换一个端口)

3)远程连接运行tensorboard

本地使用SSH 并将远程服务器的端口映射到本地的计算机,可以使用git bash(将远程和服务器的6009端口映射到本地16006端口)

ssh -L 16006:127.0.0.1:6009 -p 37557 root@i-1.gpushare.com

4)本地浏览器打开http://localhost:16006/

数学知识

范数(正则化,用于控制复杂度和抑制过拟合)

L1范数(曼哈顿范数)

||x||_1 = |x_1| + |x_2| + ... + |x_n|各元素绝对值的和

L2范数(欧几里得范数)

||x||_2 = √(x_1^2 + x_2^2 + ... + x_n^2)各元素平方和的开方

L3范数(无穷范数)

||x||_∞ = max(|x_1|, |x_2|, ..., |x_n|)绝对值最大的元素

  • 14
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

warren@伟er

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值