Skip to content

Show And Tell模型以及一些文本的评估标准

sssste edited this page Feb 5, 2018 · 1 revision

特点

CNN提取图片特征,RNN生成文字

1.图片只在RNN一开始输入,如在每一步都输入会有较差的效果

2.BeamSearch:Test时使用,每次选取当前结果序列中概率前k大的序列。

论文里使用的best beam为3

3.评价标准:

BELU:

其中候选语句(待评测语句)可以表示为C,而对应的一组参考语句为Si={si1,si2,⋯}∈S。n-gram表示n元词,令ωk表示第k组的n-gram。hk(ci)表示ωk在候选语句中ci的出现次数,hk(sij)表示的是ωk在参考语句sij中的出现的次数,其中CPn(C,S)是一个精确度度量。前面的b(C,S)是BLEUN的BP惩罚因子。 其中lc表示候选语句ci的长度,ls表示参考语句sij的有效长度。

ROUGE:

4.用到的dropout,ensembling以防过拟合,但只有小许的提升效果 其中常用的ensembling方法:

  • Bagging:使用训练数据的不同随机子集来训练每个 Base Model,最后进行每个 Base Model 权重相同的 Vote。也即 Random Forest 的原理。
  • Boosting:迭代地训练 Base Model,每次根据上一个迭代中预测错误的情况修改训练样本的权重。也即 Gradient Boosting 的原理。比 Bagging 效果好,但更容易 Overfit。
  • Blending:用不相交的数据训练不同的 Base Model,将它们的输出取(加权)平均。实现简单,但对训练数据利用少了。
  • Stacking:相比 Blending,Stacking 能更好地利用训练数据。以 5-Fold Stacking 为例,它的基本原理如图所示:
    条件:
		Base Model 之间的相关性要尽可能的小。  
		Base Model 之间的性能表现不能差距太大。但实际上还是可以尝试用的。  

5.使用不带动量的SGD,固定学习率,单词embedding长度和LSTM的hidden state长度为512。在文字上不用预训练好的embedding,直接随机初始化,CNN使用预训练的模型

6.图像feature提取采用Inception V3模型,在一开始参数Fixed,在最后添加一层Trainable layer,来把feature embed到语义空间(与RNN共享空间),当RNN训练到差不多时,放开所有的参数一起训练。

Clone this wiki locally