在研究了一些关于神经网络识别的学术论文之后,加上我自己尝试了其中的一些,我确实理解了如何训练一个网络,根据输入在一组定义的输出神经元上给你一个特定的输出。
但是我很难理解,如何动态添加输出神经元。我见过神经网络应用程序,它可以从图像中识别对象,但是它们要识别的类集总是可以增加的。据我了解,这应该是不可能的,因为输出神经元的大小是固定的。
假设我想构建一个应用程序,用户可以在其中制作照片,将其上传到数据库并在后续用于图像识别。我只看到两种可能的解决方案:
再培训
每次添加新图像时重新训练整个神经网络。然而,培训非常昂贵,这将需要大量资源,因此用户可以添加他们所有的对象。
“死”输出
如https://datascience.stackexchange.com/a/9551/18744中所建议
我们可以向输出层添加很多神经元,这些神经元总是训练为 0,除非我们需要更多的输出。一旦出现新对象,我们就开始训练新的输出。但是我相信这种程序的性能会在识别方面受到影响,因为我们忽略了诸如随机化之类的重要训练特征。