參加了今年的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
來自 <https://arxiv.org/abs/1707.07998>
前五名除了我都使用這個思路, 因此我的單模型效果(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提升,其余指標下降。
https://github.com/chenghuige/image-caption-ai-challenger2017