在网上看到不少对这篇文章的解析,今天就来总结一下,其中也有个人的见解。
文章的做法是:首先生成一个模板
这个模板里面的插槽对应了需要填入的词所在的region。
对于一张输入的图片,将物体检测的结果和CNN中间层的features输入带有Attention的RNN里,RNN给出s_t和h_t,ht经过softmax生成P_txt^t,而s_t与v_1, v_2, v_3...v_N一起生成P_r^t。
需要注意的是,这里的X操作是一个乘号,将P_txt^t与p(~r|y_1:t-1)相乘,完成以下公式:
再之后进入C操作(Compare),与用region信息生成下一个词的概率进行比较,得出此时应该使用何种信息生成下一个词。
如果直接生成连接词的话,就直接用P_txt^t输出连接词,如果需要用到region的信息,就生成对应的插槽。
RNN with Attention使用的是如下结构的网络:
注意到每个时间步都需要输入y_t, v_1...v_N以及CNN中间层的features。
生成完模板,选择实体对应的词后判断完单复数形式再填入句子。
最终使用的Loss如上,包含了连接词的概率,refinement的部分以及从目标区域生成词语的概率。