最近研究的是短文本的分类,具体到微博消息的分类。考虑到现在很多人在发微博或者朋友圈的时候除了发文字还会加上一张配图,而大多数情况下,这一配图和文本会有一定的联系。随着深度学习在图像中的应用,我从NIC(Neural Image Caption)获得灵感,可以利用这一技术,对图像进行文本描述,将改描述信息和原始短文本结合起来,进行分类,可以克服微博短文本信息数字少的现象。这里阅读了Show and Tell: A Neural Image Caption Generator这篇论文。
这篇论文的大致思路是end to end,CNN提取特镇,RNN生成语句。
1、NIC从machine translation方法中学来了一个名字叫encoder-decoder模型。这里encoder是CNN,decoder是RNN。重点在于,这里用的CNN和RNN都和NeuralTalk有很大不同。NIC模型使用了更好的feature extractor ——GoogLenet(2015), 使我们获得的图像信息更丰富了;使用了LSTM,使得decoder更复杂了,取得了更好的效果。
2、feature输入方式。NeuralTalk中提取完特征将其作为bias结合其他输入一起,直接输入到了RNN的第一个cell中,感觉有些草率;而NIC将第一个时刻完全留给了feature输入。文中还提到,作者经验证实了每次都输入图片不好,所以只在开始输入了一次。
NIC模型
3、在其他细节方面:
NIC使用了CNN的pretrained model,并采用static方法训练,即不对这一部分的参数进行训练,只训练LSTM部分。直到模型稳定了,才又在COCO数据集上对整体模型进行训练。这样的好处是,因为COCO的训练集中有很多关于颜色的描述的词,所以得到的新模型既有原模型的预测稳定性,又使得标注语句更加具体准确。
LSTM部分采取随机初始化,模型使用ensemble综合预测,使用了dropout进一步预防过拟合增加泛化能力,beam search尝试更多,使用schedule sampling等等,更多细节请参考原文。
总体来说,整篇文章无不在吐槽因为训练集小而导致的过拟合问题。也确实如此,image caption问题面临的一个很大的挑战是出现的caption总是训练集中有的,而且细节描述也不到位。此文中说,如果训练集更大了,overfit问题将得到缓解,效果也将会更好。但我私下认为单纯指望更大的训练集也不是长远的办法,从更小的数据集中发现更普遍的规律才能带来更长远的发展空间,我们不妨尝试使用其他手段解决一下overfit 问题,或者通过结构的调整将模型的鲁棒性做得更好
网友评论