关于训练一层神经网络的问题

大家好,我想训练一个包含softmax层的神经网络进行分类,小数据量可以么?并且我的输入是从全连接层fc7层的输出得到的(4096维的向量),能不能拿这个向量训练网络呢?输入可以是这个一维的向量么?
已邀请:

辛淼 - CaffeCN社区创始人。北航PhD,目前在哈佛大学工作。

赞同来自: a354003021 李扬 ruirui_ICT

首先回答可以还是不可以:
可以。这是一种常见的做法,也就是说把神经网络当成一种特征提取器,然后把得到的特征输入到一个分类器中做分类。loss只调分类层,而不调特征提取层(根据题主的意思理解)。输入是几维都无所谓,顶多加一个Flattening层就OK了。

然后再说这样做好不好:
不好。深度神经网络强调end-to-end,也就是要整体优化整个模型。在小数据上fine-tuning时,我们常常想方设法让梯度传的更深,从而可以不仅调整分类器也可以调整各个特征提取的层。原因很简单,我们之所以用深度神经网络提取特征是为了发现最适合任务的特征描述。fine-tuning可以让一些无偏的特征稍微偏向于你的任务类型。因此我的建议:不要割裂特征提取层与分类层的关系,如有可能,全局优化

以上。

cjwdeq

赞同来自:

  这样的话其实就等于fine-tuning时候只到倒数第二层就停止,而不是整个网络的全局调优。我们知道深度网络理论上来说相对更深的网络能够提取比浅层网络更好的特征,是因为在BP的时候,网络越深,残差传递的就越深,那么就能更新到更底层的网络,也就是能获取更好地特征表达。这样的话就是从底层最具体的特征表达开始调整,一直可以影响到最抽象出来的高层特征。而如果只是调最后一层,那么就是如上辛博士所说,割裂了提取特征和分类的关系,效果就不会那么好了。

要回复问题请先登录注册