HALCON 20.11:深度学习笔记(5)---设置超参数

HALCON 20.11.0.0中,实现了深度学习方法。关于超参数的有关设置内容如下:

不同的DL方法被设计用于不同的任务,它们的构建方式也会有所不同。它们都有一个共同点,即在模型的训练过程中都面临着一个最小化问题。

训练网络或子网络,一个目标是努力使适当的损失函数最小化,参见“网络和训练过程”一节。

为此,有一组进一步的参数,这些参数是在开始训练之前设置的,在训练期间未进行优化。我们将这些参数称为超参数

对于DL模型,您可以设置更改策略,指定您希望在培训期间何时以及如何更改这些超参数。

在本节中,我们将解释不同超参数的概念。注意,某些方法有额外的超参数,你可以在它们各自的章节中找到更多的信息。

如前所述,损失比较来自网络的预测与图像内容的给定信息。损失决定惩罚偏差。训练网络以这样的方式更新滤波器权值,使损失受到的惩罚更少,从而使损失结果得到优化。

为此,需要从训练数据集中获取一定数量的数据。对于这个子集,计算损失的梯度,并修改网络以更新其相应的滤波权重。

现在,对下一个数据子集重复这一过程,直到整个训练数据被处理。这些训练数据的子集被称为,这些子集的大小,即“batch_size”,决定了一个批处理的数据数量,并作为结果一起处理。

对整个训练数据的完整迭代称为epoch。对训练数据进行多次迭代是有益的。迭代次数由“epochs”定义。因此,“epochs”决定了算法在训练集上循环多少次。

一些模型(如异常检测)一次训练使用整个数据集。对于其他模型,数据集按批处理,为了做到这一点,使用了随机梯度下降算法SGD(Stochastic Gradient Descent)。这涉及到更多的参数,将在下面解释。

在每次计算损失梯度后,滤波器权值被更新。

对于这个更新,有两个重要的超参数:

'learning_rate',它决定更新的损失函数参数(过滤器权重)上的梯度的权重,以及间隔内的'momentum',它指定以前更新的影响。更多信息可以在train_dl_model_batch的文档中找到。

简单地说,当我们更新损失函数参数时,我们仍然记得上次更新所采取的步骤。

现在,我们在梯度方向上迈出一步,其长度取决于学习速率;此外,我们重复上次所做的步骤,但这次只乘以上次的时间。

下图给出了可视化效果。学习率过大可能会导致算法发散,学习率过小则会花费不必要的多步。

因此,习惯上从一个较大的学习率开始,并在训练过程中潜在地降低它。对于动量,动量方法没有影响,所以只有梯度决定更新向量。

Sketch of the 'learning_rate' and the 'momentum' during an actualization step

The gradient step: the learning rate λ times the gradient g (λg - dashed lines)

The momentum step: the momentum λ times the previous update vector v (μv - dotted lines)

Together, they form the actual step: the update vector v (v - solid lines).

为了防止神经网络的过拟合(见下文“欠拟合和过拟合的风险”部分),可以使用正则化。利用这种技术,在损失函数中添加了额外的一项。

一种可能的正则化类型是权重衰减,有关详细信息,请参阅train_dl_model_batch文档。

它的工作原理是惩罚较大的权重,即将权重推到零。简单地说,这种正则化倾向于更简单的模型,这些模型不太可能适应训练数据中的噪声,并能更好地泛化。

它可以通过超参数‘weight_prior’进行设置。选择它的值需要权衡模型的泛化能力、过拟合能力和欠拟合能力。

如果‘weight_prior’太小,模型可能会过度拟合,如果它太大,模型可能会失去很好地拟合数据的能力,因为所有权重实际上都是零。

除了训练数据和所有的超参数,还有许多不同的方面可以对这种复杂算法结果产生影响。

为了提高网络性能,通常添加训练数据也会有所帮助。

请注意,是否收集更多的数据是一个好的解决方案,也总是取决于简单模型是否难以实现。

通常,一个小的额外部分不会显著改变整体性能。

HALCON 20.11:深度学习笔记(5)---设置超参数相关推荐

  1. HALCON 20.11:学习笔记---一维测量(Measuring)

    HALCON 20.11:学习笔记---一维测量(Measuring) 本章主要提供有关一维测量的信息. 一维测量的概念 通过一维测量可以沿着预定义的线或弧定位从亮到暗或从暗到亮的过渡边缘.这使您可以 ...

  2. 吴恩达深度学习笔记7-Course2-Week3【超参数调试、Batch 正则化和程序框架】

    超参数调试.Batch 正则化和程序框架 一.超参数调试(hyperparameter tuning) 推荐的超参数重要性排序: 1.学习率(learning rate): α 2.隐藏神经单元(hi ...

  3. HALCON 21.11:学习笔记---OPC_UA(I/O)

    HALCON 21.11:学习笔记---OPC_UA(I/O) 本章主要提供有关OPC_UA的信息. 系统要求 Intel compatible PC with Windows 7 (32-bit o ...

  4. HALCON 20.11:深度学习笔记(12)---语义分割

    HALCON 20.11:深度学习笔记(12)--- 语义分割 HALCON 20.11.0.0中,实现了深度学习方法. 本章解释了如何使用基于深度学习的语义分割,包括训练和推理阶段. 通过语义分割, ...

  5. HALCON 20.11:深度学习笔记(11)---目标检测

    HALCON 20.11:深度学习笔记(11)---目标检测 HALCON 20.11.0.0中,实现了深度学习方法. 本章讲解了如何使用基于深度学习的对象检测. 通过对象检测,我们希望在图像中找到不 ...

  6. HALCON 20.11:深度学习笔记(10)---分类

    HALCON 20.11:深度学习笔记(10)---分类 HALCON 20.11.0.0中,实现了深度学习方法. 本章解释了如何在训练和推理阶段使用基于深度学习的分类. 基于深度学习的分类是一种对一 ...

  7. HALCON 20.11:深度学习笔记(9)---异常检测

    HALCON 20.11:深度学习笔记(9)---异常检测 HALCON 20.11.0.0中,实现了深度学习方法. 本章解释了如何使用基于深度学习的异常检测. 通过异常检测,我们想要检测图像是否包含 ...

  8. HALCON 20.11:深度学习笔记(6)---有监督训练

    HALCON 20.11:深度学习笔记(6)---有监督训练 HALCON 20.11.0.0中,实现了深度学习方法.不同的DL方法有不同的结果.相应地,它们也使用不同的测量方法来确定网络的" ...

  9. HALCON 20.11:深度学习笔记(4)--- 网络和训练过程

    HALCON 20.11:深度学习笔记(4)--- 网络和训练过程 HALCON 20.11.0.0中,实现了深度学习方法.关于网络和训练过程如下: 在深度学习中,任务是通过网络发送输入图像来执行的. ...

最新文章

  1. java批量事物管理_[疯狂Java]JDBC:事务管理、中间点、批量更新
  2. vim括号匹配跳转操作
  3. svn 迁移到 git 仓库并保留 commit 历史记录
  4. Mallet Java【Windows下配置】(解决Ant安装可能会失败的解决方案)
  5. session或者error引起的iframe嵌套问题的解决
  6. 腾讯安全平台部专家研究员胡育辉:千亿黑产背后的破局之道
  7. 数据结构--线性表顺序存储(顺序表)
  8. 一年中什么时候申请房贷最容易下款?
  9. Oracle 使用GSON库解析复杂json串
  10. .NET core 项目发布、部署到iis中
  11. C#3 分部方法,简单标记一下
  12. whatsapp协议分析
  13. 使用 NVIDIA Kaolin Wisp 重建3D场景
  14. 车牌识别相机4G、WiFi联网功能
  15. (原创)广度优先搜索解决最短路径问题
  16. sphinx分词搜索
  17. 数字IC/FPGA设计之——学习路径
  18. Python爬虫学习笔记-第十一课(selenium下)
  19. java 对象锁_个人对java中对象锁与类锁的一些理解与实例
  20. error: ambiguous overload for 'operator[]'

热门文章

  1. IDEA导入javaWeb项目注解爆红问题
  2. [转帖]漫画趣解Linux内核
  3. [HAOI2011]problem a
  4. jQuery 方法 十四. html()方法和text()方法
  5. js基础之---slice()
  6. SSM商城系统开发笔记-配置01-web.xml
  7. 对于over-posting的防御
  8. 【转】linux shell 逻辑运算符、逻辑表达式
  9. linux之pkill命令
  10. Spring Setter方法注入