接下来详细一点的说明 YOLOv4 的内部架构!
目标检测通常由以下几个部分组成:
YOLOv4 模型的架构是由这三部分组成的:
Dropout 是一个有效降低 Overfitting 的方法,与权重衰减的精神相似,皆是在训练
模型时使用的正则化方法,在训练时每一次的迭代(epoch)皆以一定的机率丢弃隐藏层神经元,而被丢弃的神经元不会传递讯息。
在反向传播时,被丢弃的神经元其梯度是 0,所以在训练时不会过度依赖某一些神经元,藉此达到对抗 Overfitting 的效果。
要特别注意的是,因为 dropout 只能在训练时使用,所以会造成测试时向前传播的讯息大於
训练时向前传播的讯息,通常会在测试时乘以 1/p 改善这个问题。(这个方式叫 inverted dropout)
为了避免结果大於训练的情况,需要测试的时候将输出结果乘以 1/p
使下一层的输入规模保持不变!
而利用inverted dropout,可以在训练的时候直接将dropout後留下的权重扩大 1/p 倍,这样就可以使结果的scale保持不变,而在预测的时候也不用做额外的操作了,更方便一些~
Overfitting:Overfitting 顾名思义就是机器过於纠结误差值,过度学习训练资料,变得无法顺利去预测或分辨不是在训练资料内的其他资料。
权重衰减的主要目的是「抑制更新参数的幅度」,在训练模型时预测的结果会通过 loss 函数评估结果与真实值的差距,再藉由梯度下降更新参数,而权重衰减的方法是在 loss 函数加上一个惩罚项
。
用线性回归中的例子来看:损失函数为 loss(w, b),我们在这个损失函数後加上一个带有 L2 范数的惩罚项,其中 λ 是惩罚项的倍率,当 λ=0 时,则权重衰减不会发生;当 λ 越大时,惩罚的比率较高,权重衰减的程度也就跟着变大。
weight decay 也是一种对抗模型 overfitting 的正则化方法。
也了解到透过修改惩罚项的系数 λ,改变权重衰减的倍率对於训练模型会有不一样的效果。
<<: D27 - 走!去浏览器学 Drag & Drop 自己组汉堡包
>>: [Day27] String methods 字串操作方法(2)
今天是30天程序语言研究的第十九天,由於深度学习老师多让我们上了python的进阶课程里面包括之前没...
前3天已经学会了Button用法 以往我们处理按钮的点击事件 都是先抓到元件id,才去设定点击事件 ...
-CMM 和 CMMI 成熟度水平比较 成熟度模型“可以”(而不是应该或必须)定义五个成熟度级别,...
程序架构 Namespace (自订命名空间) 就是由自己写的程序库之名称,一个程序库只能有一个自订...
为什麽 Transformer ? 回顾 LSTM 与 CNN ,在一开始处理 time-seque...