从头开始重新开始学习过程以获得最佳结果?

时间:2019-08-08 21:23:29

标签: tensorflow keras deep-learning image-segmentation unity3d-unet

我对深度学习比较陌生,并且刚刚开始尝试修改一些小的简单模型,在这种情况下,是一个小的unet,基本上是复制粘贴自https://github.com/zhixuhao/unet/blob/master/trainUnet.ipynb

我发现,在我的大部分跑步中,我都达到了一定的亏损水平,从那以后,我不想进一步收敛。但是,每隔一段时间我从头开始重新开始学习过程,它突然收敛到比上述高原低约1000倍的损失...最终模型非常出色-那里没有抱怨,但每个人都必须重新开始学习了很多次?

我知道这可能是由于偶然分配了模型的初始权重。.我提高了学习速度,并减小了批次大小以尝试逃避局部最小值,但这似乎无济于事。

重启模型是否是一遍又一遍的惯例?

1 个答案:

答案 0 :(得分:0)

无论模型训练了多长时间,在不同的运行中都会看到少量方差是很正常的,尽管这并不是您所看到的程度。

损耗的减少是否实际上反映在测试仪的精度上?损失可能是一个有用的度量,但是至少以我的经验来看,损失和准确性(或您感兴趣的任何度量标准)通常只是松散相关。我观察到,异常高的训练准确性/较低的训练损失通常会导致模型推广不佳。

失去的景观并不总是趋向于全球最低水平,您的其中可能有两个不同的山谷。 H Li等人的这篇论文是关于该主题的非常有趣的读物: Visualizing the Loss Landscape of Neural Nets

loss landscapes

总而言之,特征的重用和正则化可以极大地帮助创建朝向最小值的平滑梯度。

您可能还想研究一种学习率策略,以尝试将模型带入损失情况更为平滑的区域。我会推荐莱斯利·史密斯(Leslie Smith)的“单周期政策”。总体思路是提高学习率并降低势头,以使模型进入全局最小值的区域(并在此过程中跳过局部最小值),然后降低学习率以使模型落入模型的基础。最小值。

相关问题