在自然语言处理领域,正处于一个由深度学习驱动的时代。得益于技术的飞速发展,越来越多的人能够利用深度学习的力量。同时,这也是一个复杂的领域,对于新手来说可能显得有些令人生畏。
如果对以音视频格式学习概念更感兴趣,在下面提供了这篇文章的完整视频解释。如果不喜欢,可以继续阅读。
在这个领域,每个人都普遍关心的一个问题是如何改进他们的深度学习模型。是否有任何方法或技术可以帮助他们改进模型?确实有这样的技术,如果也想提高模型性能,需要了解这些技术。在这篇文章中,将介绍其中一种非常重要的技术,即模型检查点(Model Checkpointing)。这种技术主要有两大优势:
将详细讨论每一个优势。让开始吧!
让讨论一下“最佳模型”的含义以及如何保存它。假设这是模型性能的可视化表示——
在这里,蓝线代表训练损失,橙线代表验证损失。在X轴上,有
epochs
的数量,在Y轴上有
loss values
。现在,在进行预测时,将使用存储在最后一个epoch的权重和偏差。因此,模型将训练到指定的epoch数量,在这个例子中是50个epoch。为了进行预测,将使用在最后一个epoch学习到的参数。
但是,如果仔细观察这个特定的图表,最佳验证损失大约在这个epoch,即第45个epoch——
让拿模型历史来进一步阐述这一点。所以这里是为一个训练了50个epoch的模型准备的模型历史——
可以看到这里的epoch编号。现在可以看到训练损失、训练准确度、验证损失和验证准确度。让看看这里突出显示的验证损失——
所以,通常做的是,取模型在最后一个epoch的参数,即这里的第50个epoch,并进行预测。现在,在这个例子中,可以看到第50个epoch的验证损失是
0.629
,而最低的验证损失是
0.61
,在
epoch 45
。
因此,通过模型检查点,不是保存最后一个模型或最后一个epoch的参数,而是保存产生最佳结果的模型。这个模型被称为最佳模型。所以基本上,模型检查点将帮助保存最佳模型。
现在,由于看起来是最好的模型,这种技术的第二个有用优势是,如果系统在训练过程中崩溃或失败,不会丢失太多信息,因为模型正在不断被保存。现在,知道通过模型检查点,可以保存最佳模型,但可能想知道,如何做到的?怎么知道哪个模型是最好的模型?
为了回答这个问题,在Keras中,需要定义两个参数。一个是“Monitor”,另一个是“Mode”。
第一个指的是希望监控的数量,例如验证损失或验证准确度,“Mode”指的是该数量的模式。让用一个例子来解释这个。所以,假设希望监控这个案例中的验证损失。当监控验证损失时,模式将是最小,因为希望最小化损失。
同样,如果监控验证准确度,模式将是最大,因为希望验证集的最大准确度。
所以,在每个epoch之后,将监控验证损失或验证准确度,并在这些值比前一个模型有所改进时保存模型。
这些是在创建任何深度学习模型时执行的常见步骤,在模型训练时设置模型检查点——
结束语
阅读完这篇文章后,应该对模型检查点技术有了一定的直觉,这种技术非常有用,如果期待改进深度学习模型,它可能会产生奇迹。对于这种技术的实现,请继续关注!将在下一篇文章中介绍它的实现。
Certified AI & ML BlackBelt Plus Program
。
如果有任何问题,请在评论区告诉!
模型检查点
Himanshi Singh