深度学习一些基础知识细节

BN层:作用:加速网络的收敛速度

BN层原理及作用_VictorHan01的博客-CSDN博客_bn层的原理和作用

python实现:Batch Normalization(BN)Python实现_柯南道尔的春天的博客-CSDN博客_python实现bn

解决的问题:输入的数据都具有不同的分布,会给下层网络的训练带来困难。

计算方法:

1.先求出此次批量数据x的均值

2.求出此次批量的方差

3.接下来就是对本次批量的x做归一化:xi-E(x)/(根号下批量方差-极小值(eps))防止分母为0.

4.最后最重要,引入缩放和平移变量γ和β

如果γ和β分别等于此batch的方差和均值,那么yi就还原到了归一化前的x,β 和γ分别称之为 平移参数和缩放参数 。这样就保证了每一次数据经过归一化后还保留的有学习来的特征,同时又能完成归一化这个操作,加速训练。

为什么一个5*5的卷积核可以用两个3*3的卷积核代替,一个7*7的卷积核可以用三个的3*3卷积核代替?

因为两个3x3的卷积核的感受野的大小刚好是5x5。

两个3*3的卷积核只需要18个参数,5*5的一个卷积核就是25,这样参数只是5*5的卷积核的0.72倍,三个3*3的卷积核为27个参数,7*7的卷积核为49个参数,0.55倍,达到了减少参数的目的

感受野的计算

卷积层输出大小计算(长、宽、深度)

  • 输入图片大小 W×W
  • Filter大小 F×F
  • 步长 S
  • padding的像素数 P

N = (W − F + 2P )/S+1

欠拟合、过拟合及如何防止过拟合

欠拟合、过拟合及如何防止过拟合 - 知乎

一、什么是欠拟合?

模型复杂度低,模型在训练集上就表现很差,没法学习到数据背后的规律。

如何解决欠拟合?

欠拟合基本上都会发生在训练刚开始的时候,经过不断训练之后欠拟合应该不怎么考虑了。但是如果真的还是存在的话,可以通过增加网络复杂度或者在模型中增加特征,这些都是很好解决欠拟合的方法。

二、什么是过拟合?

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

为什么会出现过拟合现象?

造成原因主要有以下几种:

1、训练数据集样本单一,样本不足。如果训练样本只有负样本,然后那生成的模型去预测正样本,这肯定预测不准。所以训练样本要尽可能的全面,覆盖所有的数据类型。

2、训练数据中噪声干扰过大。噪声指训练数据中的干扰数据。过多的干扰会导致记录了很多噪声特征,忽略了真实输入和输出之间的关系。

3、模型过于复杂。模型太复杂,已经能够“死记硬背”记下了训练数据的信息,但是遇到没有见过的数据的时候不能够变通,泛化能力太差。我们希望模型对不同的模型都有稳定的输出。模型太复杂是过拟合的重要因素。

三、如何防止过拟合?

要想解决过拟合问题,就要显著减少测试误差而不过度增加训练误差,从而提高模型的泛化能力。我们可以使用正则化(Regularization)方法。那什么是正则化呢?正则化是指修改学习算法,使其降低泛化误差而非训练误差。

常用的正则化方法根据具体的使用策略不同可分为:(1)直接提供正则化约束的参数正则化方法,如L1/L2正则化;(2)通过工程上的技巧来实现更低泛化误差的方法,如提前终止(Early stopping)和Dropout;(3)不直接提供约束的隐式正则化方法,如数据增强等。

1. 获取和使用更多的数据(数据集增强)——解决过拟合的根本性方法

2. 采用合适的模型(控制模型的复杂度)

3. 降低特征的数量

4.L2正则化起到使得权重参数 w 变小的效果,为什么能防止过拟合呢?因为更小的权重参数 w 意味着模型的复杂度更低,对训练数据的拟合刚刚好,不会过分拟合训练数据,从而提高模型的泛化能力。

5. Dropout

Dropout 指的是在训练过程中每次按一定的概率(比如50%)随机地“删除”一部分隐藏单元(神经元)。所谓的“删除”不是真正意义上的删除,其实就是将该部分神经元的激活函数设为0(激活函数的输出为0),让这些神经元不计算而已。

Dropout为什么有助于防止过拟合呢?

(a)在训练过程中会产生不同的训练模型,不同的训练模型也会产生不同的的计算结果。随着训练的不断进行,计算结果会在一个范围内波动,但是均值却不会有很大变化,因此可以把最终的训练结果看作是不同模型的平均输出。

(b)它消除或者减弱了神经元节点间的联合,降低了网络对单个神经元的依赖,从而增强了泛化能力。

6. Early stopping(提前终止)

Early stopping是一种迭代次数截断的方法来防止过拟合的方法,即在模型对训练数据集迭代收敛之前停止迭代来防止过拟合。

为什么能防止过拟合?当还未在神经网络运行太多迭代过程的时候,w参数接近于0,因为随机初始化w值的时候,它的值是较小的随机值。当你开始迭代过程,w的值会变得越来越大。到后面时,w的值已经变得十分大了。所以early stopping要做的就是在中间点停止迭代过程。我们将会得到一个中等大小的w参数,会得到与L2正则化相似的结果,选择了w参数较小的神经网络。

激活函数

温故知新——激活函数及其各自的优缺点 - G-kdom的文章 - 知乎 温故知新——激活函数及其各自的优缺点 - 知乎

如果不用激活函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合,如果使用的话,激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。

使用非线性激活函数是为了增加神经网络模型的非线性因素,以便使网络更加强大,增加它的能力,使它可以学习复杂的事物,复杂的表单数据,以及表示输入输出之间非线性的复杂的任意函数映射。

(1) sigmoid函数

sigmoid函数又称 Logistic函数,用于隐层神经元输出,取值范围为(0,1),可以用来做二分类。

sigmoid函数表达式: 

优点:

  1. Sigmoid函数的输出在(0,1)之间,输出范围有限,优化稳定,可以用作输出层。
  2. 连续函数,便于求导。

缺点:

1. sigmoid函数在变量取绝对值非常大的正值或负值时会出现饱和现象,意味着函数会变得很平,并且对输入的微小改变会变得不敏感。

在反向传播时,当梯度接近于0,权重基本不会更新,很容易就会出现梯度消失的情况,从而无法完成深层网络的训练。

2. sigmoid函数的输出不是0均值的,会导致后层的神经元的输入是非0均值的信号,这会对梯度产生影响。

3. 计算复杂度高,因为sigmoid函数是指数形式。

NMS原理

非极大值抑制(NMS,Non-Maximum Suppression)的原理与代码详解_MA201506的博客-CSDN博客

1.对所有预测框的置信度降序排序

2.选出置信度最高的预测框,确认其为正确预测,并计算他与其他预测框的IOU

3.根据2中计算的IOU去除重叠度高的,IOU>threshold就删除

4.剩下的预测框返回第1步,直到没有剩下的为止

需要注意的是:Non-Maximum Suppression一次处理一个类别,如果有N个类别,Non-Maximum Suppression就需要执行N次。

目标检测中NMS和mAP指标中的的IoU阈值和置信度阈值_梦坠凡尘-CSDN博客_nms阈值

解决正负样本极不平衡的问题

通过正负样本的惩罚权重解决样本不均衡 ————Focal Loss

对于分类中不同样本数量的类别分别赋予不同的权重(一般思路分类中的小样本量类别权重高,大样本量类别权重低),然后进行计算和建模。

为什么一般思路分类中的小样本量类别权重高,大样本量类别权重低

因为要均衡,这个地方的权重指的是loss里的权重,小样本这么少,就算loss很大,可能总体loss也很小,所以要把它们的效果放大,迫使网络关注它们,focal loss就是这个意思。

为什么二阶段的网络像Faster-rcnn对正负样本不明显

因为loss里面的背景少了吧,最终的loss,第一阶段已经把大部分背景都筛掉了,第一阶段的loss + 第二阶段的loss,第一阶段的系数肯定很小,相当于自带focal了,一开始第一阶段权重大,然后慢慢调小。

正则化项L1和L2的区别:

正则化项L1和L2的区别 - 岁月静好--lyr - 博客园

一、概念: L1和L2是正则化项,又叫做罚项,是为了限制模型的参数,防止模型过拟合而加在损失函数后面的一项。

二、区别:

  1.L1是模型各个参数的绝对值之和。

   L2是模型各个参数的平方和的开方值。

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

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

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

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

三、为什么参数越小代表模型越简单?

  越是复杂的模型,越是尝试对所有样本进行拟合,包括异常点。这就会造成在较小的区间中产生较大的波动,这个较大的波动也会反映在这个区间的导数比较大。

  只有越大的参数才可能产生较大的导数。因此参数越小,模型就越简单。

四、实现参数的稀疏有什么好处?

  因为参数的稀疏,在一定程度上实现了特征的选择。一般而言,大部分特征对模型是没有贡献的。这些没有用的特征虽然可以减少训练集上的误差,但是对测试集的样本,反而会产生干扰。稀疏参数的引入,可以将那些无用的特征的权重置为0.

五、L1范数和L2范数为什么可以避免过拟合?

  

  加入正则化项就是在原来目标函数的基础上加入了约束。当目标函数的等高线和L1,L2范数函数第一次相交时,得到最优解。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Halcon深度学习帮助文档提供了用户在使用Halcon深度学习模块时所需要的相关信息和指南。Halcon是一款功能强大的机器视觉软件,它提供了丰富的图像处理和分析工具。深度学习是当前热门的人工智能技术之一,通过构建深度神经网络可以实现对图像、视频等复杂数据的智能分析和识别。 在Halcon深度学习帮助文档中,用户可以找到如何使用Halcon进行深度学习任务的详细说明。文档中包含了深度学习模块的安装和配置步骤,以及各种深度学习网络的介绍和使用方法。用户可以了解到如何构建、训练和测试自己的深度学习模型,以及如何通过已有的预训练模型进行图像的分类、物体检测、目标跟踪等任务。 此外,Halcon深度学习帮助文档还提供了丰富的代码示例和详细的API文档,帮助用户快速上手和理解深度学习模块的功能和使用方法。用户可以根据自己的需求,选择适合的深度学习网络和配置参数,以及优化和调整模型的训练结果。同时,文档中还介绍了一些常见问题和解决方法,方便用户在遇到困难时能够快速解决。 总之,Halcon深度学习帮助文档是一个全面而详细的指南,可以帮助用户充分利用Halcon的深度学习功能,实现各种机器视觉任务。无论是初学者还是有一定经验的用户,都可以从文档中获取到所需的帮助和指导,提高工作效率和成果质量。 ### 回答2: Halcon是一种先进的机器视觉软件库,具有强大的功能和丰富的特性,可以让使用者轻松实现各种视觉任务。Halcon深度学习帮助文档提供了详细的教程和示例,以帮助用户快速入门并掌握深度学习在机器视觉中的应用。 Halcon深度学习帮助文档中包含了关于深度学习基础知识的介绍,例如神经网络的原理和常用层类型的解释。同时,文档还介绍了Halcon中深度学习算法的实现方式和相关函数的用法,以帮助用户了解如何在Halcon平台上搭建和训练自己的深度学习模型。 此外,Halcon深度学习帮助文档还提供了大量的示例代码和实践指南,以帮助用户理解和应用深度学习算法。使用者可以根据文档中提供的示例代码进行实验和调试,实现自己的视觉任务。文档还解释了每个示例的原理和实现细节,使用户能够更好地理解和应用深度学习算法。 总而言之,Halcon深度学习帮助文档是一个非常有价值的资源,对于想要在机器视觉领域应用深度学习的用户来说,它提供了丰富的知识和实践经验,帮助用户更好地理解和应用深度学习算法。无论是初学者还是有经验的开发者,都能从文档中获得所需的信息和指导,提高机器视觉应用的效果和效率。 ### 回答3: Halcon是一种广泛应用于机器视觉领域的工业级软件库,提供丰富的图像处理和分析功能。Halcon深度学习帮助文档是指Halcon软件中关于深度学习功能的详细文档和教程。 Halcon深度学习帮助文档首先介绍了深度学习的基本概念和原理,包括人工神经网络、深度神经网络等。然后,文档详细介绍了Halcon中与深度学习相关的功能和算法,例如图像分类、对象检测、目标识别等。文档提供了丰富的例子和代码,帮助用户理解和使用这些功能。 此外,Halcon深度学习帮助文档还包括了详细的步骤和流程,指导用户如何使用Halcon进行深度学习任务。从数据准备、网络训练到模型评估,文档都给出了清晰的指导和建议。同时,文档还解释了Halcon中深度学习相关函数和参数的用法和作用,方便用户进行自定义或优化。 Halcon深度学习帮助文档对于初学者来说尤为重要,它提供了学习和掌握深度学习的入门指南,使用户能够迅速上手并应用于实际项目中。同时,对于有经验的用户,文档也提供了更高级的技术和应用示例,帮助其进一步提升技术水平。 总而言之,Halcon深度学习帮助文档是Halcon软件中关于深度学习功能的详细指南,它涵盖了深度学习基础知识、功能介绍、算法解析以及实际应用等方面的内容。无论是初学者还是有经验的用户,都能在文档中找到对应的信息和指导,帮助其充分发挥Halcon深度学习功能的优势。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值