无监督预训练
无监督预训练
抽象的
在不依赖注释的情况下使用卷积神经网络预训练通用视觉特征是一项具有挑战性且重要的任务。最近在无监督特征学习方面的努力都集中在像 ImageNet 这样的小型或高度精选的数据集上,而在对迁移任务进行评估时,发现使用非精选的原始数据集会降低特征质量。
介绍
假设您要处理一项没有太多标记训练数据的复杂任务,但不幸的是,您找不到在类似任务上经过训练的模型(预训练模型)。
不要失去所有的希望!首先,您当然应该尝试收集更多带标签的训练数据,但如果这太难或太昂贵,您可能仍然能够执行无监督预训练(参见图 1)
Figure 1. Unsupervised pretraining
收集未标记的训练示例通常相当便宜,但标记它们却非常昂贵。如果你能收集到大量未标记的训练数据,你可以尝试一层一层地训练,从最低层开始,然后向上,使用无监督的特征检测算法,如受限玻尔兹曼机或自动编码器
自动编码器
自编码器是一种人工神经网络,用于以无监督的方式学习数据编码。
自动编码器的目的是通过训练网络捕获输入图像的最重要部分(图 2)来学习高维数据的低维表示(编码),通常用于降维。
Figure 2. Autoencoder
脚步
每一层都在先前训练的层的输出上进行训练(除了正在训练的层之外的所有层都被冻结)。一旦以这种方式训练了所有层,您就可以为您的任务添加输出层,并使用监督学习(即使用标记的训练示例)微调最终网络。此时,您可以解冻所有预训练的层,或者只解冻一些上面的层。
这是一个相当漫长而乏味的过程,但通常效果很好;事实上,Geoffrey Hinton 和他的团队在 2006 年使用的正是这种技术,它导致了神经网络的复兴和深度学习的成功。直到 2010 年,无监督预训练(通常使用 RBM)是深度网络的规范,只有在梯度消失问题得到缓解之后,纯粹使用监督学习训练 DNN 才变得更加普遍。
然而,当你有一个复杂的任务要解决、没有类似的模型可以重用、标记的训练数据很少但有大量的未标记的训练数据时,无监督预训练(今天通常使用自动编码器而不是 RBM)仍然是一个不错的选择。
结论
即使标记数据很少,迁移学习和无监督预训练也可以帮助我们处理复杂的任务。
检查那里的代码 Github
参考
使用 Scikit-Learn 和 TensorFlow 进行机器学习
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明