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

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
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值