动态添加和多种神经网络输出

数据挖掘 机器学习 图像分类 图像识别
2022-02-27 07:36:40

在研究了一些关于神经网络识别的学术论文之后,加上我自己尝试了其中的一些,我确实理解了如何训练一个网络,根据输入在一组定义的输出神经元上给你一个特定的输出。

但是我很难理解,如何动态添加输出神经元。我见过神经网络应用程序,它可以从图像中识别对象,但是它们要识别的类集总是可以增加的。据我了解,这应该是不可能的,因为输出神经元的大小是固定的。

假设我想构建一个应用程序,用户可以在其中制作照片,将其上传到数据库并在后续用于图像识别。我只看到两种可能的解决方案:

再培训

每次添加新图像时重新训练整个神经网络。然而,培训非常昂贵,这将需要大量资源,因此用户可以添加他们所有的对象。

“死”输出

如https://datascience.stackexchange.com/a/9551/18744中所建议

我们可以向输出层添加很多神经元,这些神经元总是训练为 0,除非我们需要更多的输出。一旦出现新对象,我们就开始训练新的输出。但是我相信这种程序的性能会在识别方面受到影响,因为我们忽略了诸如随机化之类的重要训练特征。

1个回答

修改神经网络的输出层是迁移学习的一部分。

添加新的类/输出节点总是需要额外的训练。

一个常见的选择是重新训练最后一层,也就是 softmax 层。最后一层是从特征提取器到类别成员的映射。