·前言
上半年在写跨模态专题时,因为相关工作在投 paper,所以一些内容当时没有写出来。比较幸运 paper 上个月被接收了,所以把这部分工作简化成第5篇也分享下。对前 4 篇感兴趣的同学可以看文末链接。
本文脉络
combine GAN and infoNCE
不同的组合模式
场景应用讨论
01
—
combine GAN and infoNCE
在专题的前几篇文章中,我们分别介绍了基于 GAN 思路来构造公共子空间的方法,以及基于互信息角度引入 infoNCE loss 的方法。同时,在往期讨论中也提过这二者是并不矛盾的,可以在一个模型中同时引入这2个方法。
最简单的结合方法当然就是直接结合二者,即把基于 infoNCE 的双塔模型当做一个生成器 G,然后额外增加一个判别器 D 来形成对抗学习。一些 "too young" 的同学可能觉得这种结合方法 "too simple",那我们就称之为 naive-mode 吧。
以图文跨模态检索为例,进一步思考以下几个问题:1)infoNCE Loss 是否可以对偶的用2次,即一图多文的图片视角 loss 和 一文多图的文本视角的 loss。2)如果GAN的目的是混淆图片和文本,那么上面说的图片和文本视角,还需要区分吗?3)如果 GAN 打破模态壁垒了,跨模态匹配是不是就等于同模态相似样本检索 instance discrimination,那么对应的 infoNCE 的负样本就可以同时包含2个模态样本了。比如图片,对应的负例可以是文本和图片。
02
—
不同的组合模式
除了 naive-mode 这种组合外,本小节讨论下更深入的组合mode。第一个容易想到的改进方法,就是对称的改造模型。分别以 2 个模态的信号( t 和 i )为 positive anchor,对应的另一个模态信号( i 和 t )当做 N 个负样本。我们暂称之为 dual-mode。模型的 Loss 由3部分组成:
符号和字母都在前几篇介绍过,这里不多做解释了。这里2个模态的 loss 可以根据数据分布的差异以及业务目标的差异,设置不同的权重,以此来优化更好的结果。
上式中前2项分别代表了文本信号t视角的 Loss_t 以及代表了图片信号视角的 Loss_i. 分子相同都是表示2个模态中正例pair在空间中的距离,分母虽然不同但是意义一样都是表示一个模态信号和另一个模态信号中负例pair的距离。前文提过随着负样本个数的增加,有助于"提高"互信息的下界。所以我们也可以合并这2个loss,得到下面这样的 both-mode 模式:
从数学变换来看其实是,把min(1/a + 1/b) 换成了 min(1/(a+b)), 虽然从互信息量来看是有好处的,但是似乎还不能体现 GAN 所追求的混淆图文2个模态的思路。
如果我们真的不区分 t 和 i 这2个模态,那么可以在构造 infoNCE loss 中的负例 pair 时,不用刻意区分模态即可。
简单的说就是,一个 batch-size = N+1 的batch内,对于一个正例 pair <t+, i+>, 除了可以叉乘 t+ 和其他 i- 得到 N 个 <t+, i-> pair,也可以叉乘 t+ 和其他 i- 对应的 t-,得到 N 个 <t+, t-> 的 pair。对应的物理意义就是,最大化这组正例图文pair <t+, i+> 之间的相似度,最小化文本t+和其他不相关的图片 i- 之间的相似度,以及最小化文本 t+ 和其他不相关文本 t- 直接的相似度。
上面这个设想是合理的,因为引入 GAN 后的目的就是让 2 个模态的信号平等地分布在同一个子空间内。那么 t+ 与之相关的 i+ 之间的距离,肯定要小于 t+ 和不相关 i- 之间的距离,也会小于 t+ 与那些 i- 对应的 t- 之间的距离,所以可以在一个infoNCE loss 中混合(mix)加入2个模态。同理,从<i+, t+>角度看也是一样的,因此我们构造下面的 mix-dual 模型(只画了loss部分):
上图中,img 和 text 矩阵之间乘法是向量内积。结合 DGRL 层共同训练GAN,可以很好的融合2个模态信号。和之前提到的 dual-mode 改 both-mode 类似,也可以进一步将上面的 mix-dual 改成 mix-both,这里不再重复。
03
—
场景应用讨论
上面讨论了这么多种组合,那么哪个最好呢?不同场景下怎么选择呢?选择的依据是什么呢?
显然这个选择是要根据场景来定制的,很难说哪个是最好的。选择的依据主要是看两种模态的数据分布,以及数据特性。比如图片模态和文本模态不是同粒度的,如图片到分类label。那么此时如果硬要求二者共享同样的空间度量,可能未必得到理想的效果。再比如2个模态的内部集中性差距很大,也并不适合用mix的方式。
如果考虑一般情况时,个人比较推荐上面的 mix-dual 模式。具体怎么使用,欢迎有想法的同学留言讨论 ~
( ^_^ 点个在看!点个赞!)
更多推荐阅读:
Cross-Modal & Metric Learning 跨模态检索专题-3(下)
Cross-Modal & Metric Learning 跨模态检索专题-3(上)
Cross-Modal & Metric Learning 跨模态检索专题-2
Cross-Modal & Metric Learning 跨模态检索专题-1
由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:
(1)点击页面最上方"AINLP",进入公众号主页。
(2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。
感谢支持,比心。
推荐阅读
征稿启示| 200元稿费+5000DBC(价值20个小时GPU算力)
完结撒花!李宏毅老师深度学习与人类语言处理课程视频及课件(附下载)
模型压缩实践系列之——bert-of-theseus,一个非常亲民的bert压缩方法
文本自动摘要任务的“不完全”心得总结番外篇——submodular函数优化
斯坦福大学NLP组Python深度学习自然语言处理工具Stanza试用
关于AINLP
AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。
阅读至此了,分享、点赞、在看三选一吧🙏