image caption筆記(六):《self_critical (scst)》

現在image caption主要存在的問題有:

1、exposure bias:模型訓練的時候用的是叫“Teacher-Forcing”的方式:輸入RNN的上一時刻的單詞是來自訓練集的ground-truth單詞。而在測試的時候依賴的是自己生成的單詞,一旦生成得不好就會導致誤差的積累,導致後面的單詞也生成得不好。

2、模型訓練的時候用的是cross entropy loss,而evaluate的時候卻用的是BLEU、ROUGE、METEOR、CIDEr等metrics,存在不對應的問題。

由於生成單詞的操作是不可微的,無法通過反向傳播來直接優化這些metrics,因此很多工作開始使用強化學習來解決這些問題。

但強化學習在計算期望梯度時的方差會很大,通常來說是不穩定的。又有些研究通過引入一個baseline來進行bias correction。還有一些方法比如Actor-Critic,訓練了一個critic網絡來估算生成單詞的value。

而本文的方法則沒有直接去估算reward,而是使用了自己在測試時生成的句子作爲baseline。sample時,那些比baseline好的句子就會獲得正的權重,差的句子就會被抑制。具體做法會在後面展開。

 

 

兩種模型:

FC和attin

第一種和show and tell 的公式差不多,attin和show attend and tell 的區別在於上下文變量,attin只在輸入門處添加。

使用ADAM方法優化的時候,這種結構的表現優於其他結構。

 

原本的結構:

 

更改之後:

 

 

作者的核心思想是,在訓練的時候,對於每個批次的預測,按照概率來取詞,生成預測結果。與gt比較,計算CIDER作爲score1。

同時按照greed算法取詞,生成預測結果,作爲baseline使用,它與gt比較計算CIDER作爲score2。

reward=score1-score2  即爲強化學習的獎勵。有了baseline,可以避免梯度過大的問題。

將獎勵加入損失函數,  new_loss=-reawd*loss

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章