神经网络可以在不完全重建的情况下进行调整吗?

数据挖掘 神经网络 深度学习 分类 迁移学习
2021-10-15 05:04:02

例如,如果我有一个可以判断图片中是狗还是猫的分类网络,是否可以调整网络使其也可以学习检测鼠标?无需从头开始制作新的。在这种情况下,它没有任何意义,但我想知道例如 Netflix 是否必须在他们添加的每个新节目中完全重新训练其网络。如果是这样,他们什么时候这样做?前几天可能是最关键的几天,但也是训练网络所需数据最少的几天。

我遇到的实际问题是我正在尝试训练一个网络来预测公共交通工具的位置。这本身就够难了,但是如果有一条新的传输线,我没有输入神经元,我该怎么办。- 在这里我需要添加一个输入神经元。

或者我正在考虑的另一个想法是神经网络,它可以通过检测公司和日期来帮助我订购文件。我想对一个未知的文档布局进行几次分类,这样神经网络就能够自行对其进行分类,但不会丢失它迄今为止学到的一切。- 在这里我需要添加一个输出神经元。

似乎有一种方法可以做到这一点,因为那里有一些机器学习算法似乎可以完成类似的事情。还是他们以某种方式解决这个问题?如果是这样,怎么做?

2个回答

您的问题的答案是“迁移学习”。

由于数据集“cat and dog”和“mouse”非常相似,因为它们都是图像。在用于识别“猫狗”的 DeepNet 中,任何处于其早期层的深度学习网络都会学习识别边缘等低级特征。它会在随后的几层中学习高级特征,如眼睛、耳朵等DeepNet 层,它开始识别目标对象。在用于识别“狗”的 DeepNet 中,将遵循类似的模式。在比较这两者时,人们可能会发现 DeepNet 的前几层在这两种情况下都会产生类似的低级特征,例如边缘等。

因此,从“猫”学习的 DeepNet 的前几层可以用作 DeepNet 的基础层,用于“鼠标”检测。这种技术称为迁移学习。

要应用迁移学习,已在其上训练 DeepNet 的数据集和可应用此技术的数据集必须相似。

Andrew Ng 的这个迁移学习视频也有助于理解这个概念

当我谈到添加一个新的输出时,你只需要重新训练最后一层,它被称为迁移学习。一个很好的例子是重新训练谷歌的一个初始模块的最后一层(最初是在 ImageNet 数据集上训练的)来对花朵进行分类。您可以在Tensorflow 的网站上找到该示例。

在添加和输入神经元方面,老实说,我从来没有遇到过这种情况。