2017-06-13 32 views
-1

假设我有一个softmax层的神经网络作为分类任务的最后一层。 softmax图层中的这个数量的神经元将是类的数量。可伸缩神经网络softmax分类器

但是,如果随着新数据的进入增加类的数量,我将不得不改变网络架构并从头开始重新训练整个模型。

什么是制作可伸缩分类器的最佳方法?

PS:神经网络模型是一个RNN-LSTM,带有2个LSTM层,后面跟着一个softmax层。我想这种方法在softmax层之前将独立于NN架构。

任何帮助,将不胜感激! :)

+0

你能说清楚“可扩展”是什么意思吗?如果你使用的是像tf或keras这样的框架,你只需要修改你的模型声明。 –

+0

是的,但问题是,当我增加类的数量,因为体系结构的变化,我将不得不从头开始重新训练模型。所以所有学习到的权重都会丢失。 – Pranav

回答

0

假设您有一个神经网络,它仅对0至4(0,1,2,3,4)之间的MNIST数据集中的手写数字进行分类。

你要做的是,你要建立一个神经网络,指定1个输入层,k个隐藏层和1个输出层,大小为5.然后训练网络上的100万个只包含数字的样本0至4.

现在,假设您的神经网络已经学会了预测0到4之间的数字,准确率为95%。您希望它能够将手写数字分类为6.但是,神经网络之前没有接受过6次的训练,并且不知道该怎么做 - 这是一种错误分类。这意味着你的网络是有偏见输入范围从数字0到4.

如果你想让你的神经网络预测数字5以及其他5位数字。因此,您需要放弃现有的大小为5的输出图层,并将其替换为大小6.这意味着也会丢弃最终图层的权重和偏差。

现在,问题是,你可以保留已经被训练的先前图层的权重吗?问题是肯定的,不是。虽然你不需要完全丢弃它们,但是需要更多地训练它们以计算数字5.

好消息是,对于内层你不需要训练网络来自以前的所有100万个样本。只是一个较小的数据集,其中大部分是5位数字的样本,只有少量的其他数字为了公平就足够了。坏消息是,对于最后一层,你将不得不训练所有100万个样本,加上新的5位数样本。

所以,现在你的任务将涉及到稍微重新训练内层,完全重新训练外层,然后验证和微调连接两者,因为他们没有受过相同的训练。

如果你觉得这是值得的麻烦,那么你可以。但是,从头开始重新训练会更简单。