python - 卷积神经网络性能的奇怪模式
问题描述
我正在学习 VGG,我对以下性能图感到震惊:
我的问题是这样的:看图表,似乎先是快速增长,然后逐渐放缓。这对我来说很有意义,因为损失越小,改进模型就越困难。但是,在 50、75 和 100 纪元附近也有 3 次突然下降。我很好奇为什么所有型号都会同时出现这种下降和反弹?是什么原因造成的?
预先感谢您的任何帮助。
解决方案
这是复杂模型训练中的常见观察。例如,经典的 CNN 表现出这种行为:AlexNet 和 GoogleNet 在他们的训练模式中有两个 drop-and-improve 中断。这是模型整体学习特性的一个非常复杂和有机的效果。
过于简单化......即使拓扑看起来很平滑,大多数模型也存在固有的学习瓶颈。该模型会学习一段时间,直到后面的层在反向支持期间适应良好……直到学习遇到瓶颈之一,输入驱动和反馈中的一些干扰往往会阻碍训练早期层的进一步实际进展。这表明在那些较低层的学习中存在一些错误的假设,这些假设现在在上层中遇到了一些统计现实。
训练过程的自然运行迫使一些早期层的混乱回到了稍微稳定的晚期层——一种有机的辍学效应,尽管随机性较小。后期层中的一些“学习”内核被证明是不正确的,并且重新打乱了它们的权重。由于这种辍学,模型的准确性会暂时降低,但很快就会比以前学习得更好,如图所示。
我无法预测给定拓扑何时以及如何发生这种情况。我个人的希望是,它原来是拓扑中固有的某种谐波共振,比如封闭空间中的音频共振,或者许多动物身上的斑点/条纹。
推荐阅读
- c# - 在 SOLR DB 中,当我执行查询时我有数据,但是当我尝试在代码中执行此操作时,我有一个包含空数据的数组
- google-tag-manager - 自定义模板 callInWindow
- postgresql - PostgreSQL:比较同一列但不同系列(行)中的字符串
- maven - 如何在 Maven 依赖项的另一个 war 文件中添加 jar?
- javascript - 选择 5 张时排队要立即上传的图像
- c# - 如何区分具有相同 id 的两个 WebElement?
- exchangewebservices - 日历 - 对约会应用搜索过滤器(主题)
- vb.net - 如何以另一种语言显示日期时间选择器
- sql - “INSERT INTO ... ON CONFLICT DO NOTHING”在检查约束处停止
- macos - 将 Maven bin 添加到 PATH 变量后获得权限被拒绝问题,也无法在根模式下添加到 PATH