参加了今年的ai challenger 的image caption比赛,最终很幸运的获得了第二名。这里小结一下。
- Pytorch 越来越火了。。 前五名有三个pytorch, 两个tensorflow 关于哪个learning frame work 更适合图像nlp相关的应用 我觉得用户用脚投票使用程度说明一切。tensorflow有强大的slim图像库支持,比如nasnet是slim最先支持的毕竟google原版。。。,但是在很多比赛灵活性上对比pytorch还有欠缺 比如强化学习feed dict较慢,比如多模型ensemble实现per step的投票 beam search比较麻烦,甚至一个in graph的beam seach相比pytorch也麻烦很多,希望后面eagar模式能改变这些。
- 最佳的caption利器当属微软的
Bottom-Up and Top-Down Attention for Image Captioning and Visual Question Answering
来自 <>
前五名除了我都使用这个思路, 因此我的单模型效果(show attention and tell)是相对最差的。。
- 强化学习非常重要
其它选手都通过强化学习大大提升了客观分数,但是仅仅优化类似cider这样的指标的强化学习可能会使得句子通顺度弱于优化cross entropy可能是这个原因我的主观流畅性打分最高..
- 调参和一些细节是至关重要的
- 比如lstm hidden size 大部分选手可能使用512 而有的选手使用2048 提升明显
- 我使用light gbm 进行gbdt rerank将cider提升了10个点 这里为 lightgbm 打call, 194w样本,52维特征,5交叉验证regression 只需要3分钟, lamdamart 排序只需要5分钟。
- 这里开源了本次比赛我使用的代码,欢迎contribute,特别是对强化学习的修改及改进,很遗憾尽管我也实现了scst但是没有达到理想效果几个指标只有meteor提升,其余指标下降。