既然你提到你是一个初学者,我会尽量比平时更详细一点,所以请多多包涵。
神经模型如何识别图像
- 预训练模型中的层存储图像的多个方面,例如图案(线条、曲线)、图像中的颜色,用于确定图像是否属于特定类别李>
- 随着每一层,它可以存储的内容的复杂性增加,最初它会捕获线条或点或简单的曲线,但随着每一层,表示能力增加,它开始捕获猫耳朵、狗脸、数字曲线等特征。
Keras 博客中的下图显示了初始层如何学习表示点和线等简单事物,随着我们深入,它们开始学习表示更复杂的模式。
Read more about Conv net Filters at keras's blog here
使用预训练模型如何获得更好的结果?
当我们训练一个模型时,我们在最初创建这些表示时会浪费大量计算和时间,为了获得这些表示,我们还需要大量数据,否则我们可能无法捕获所有相关特征和我们的模型可能不太准确。
因此,当我们说我们要使用预训练模型时,我们希望使用这些表示,因此,如果我们使用在具有大量猫图片的 imagenet 上训练的模型,我们可以确定该模型已经具有识别重要的表示识别猫所需的特征,并且会收敛到比我们使用随机权重更好的点。
如何使用预训练的权重
因此,当我们说使用预训练权重时,我们的意思是使用包含表征的层来识别猫,但丢弃最后一层(密集层和输出层),而是添加具有随机权重的新密集层和输出层。所以我们的预测可以利用已经学习的表示。
在现实生活中,我们会在初始训练期间冻结预训练的权重,因为我们不希望底部的随机权重破坏学习的表示。我们只有在我们有很好的分类准确度来微调它们之后才解冻这些表示,而且学习率也非常低。
使用哪种预训练模型
始终选择那些您知道具有最多表示的预训练权重,这可以帮助您识别您感兴趣的类。
那么与在图像网络上训练的权重相比,使用 mnist 数字训练的权重会产生相对较差的结果吗?
是的,但考虑到初始层已经学习了简单的模式,例如使用这些权重的数字线条和曲线,在大多数情况下,与从头开始相比,您仍然处于优势。