条件网络层 介绍与脉络梳理:A Retrospective for “FiLM- Visual Reasoning with a General Conditioning Layer“

2023-05-16

网址链接

在很多多输入任务中,例如 visual question-answering (image + language), instruction-following (video + language), class-conditional image generation (image + class label), style transfer (style image + context image)等,需要根据多种输入特征来进行预测。

本文主要介绍一种可以嵌入到CNN模型中的通用网络层,即conditioning layer, 用于多输入任务。例如,对于分类+回归的任务,有可能回归任务是基于分类结果的输出,分类结果不同,回归出来的值也不一样。conditioning layer 不仅能够和传统卷积层一样以特征图为输入,还可以用分类结果的输出作为出入,来指导回归结果。

现有方法

  1. concatenation-based conditioning
    即将输入的数据和条件信息进行concatenate,然后输入到网络中。这种做法的问题在于,网络有可能不是在当前层需要该条件信息,而是在最后几层才需要条件信息。这要求网络的前几层能够保有原来条件信息。
    在这里插入图片描述

  2. conditional biasing
    先对条件信息进行处理,然后将得到的条件信息编码的vector作为一个bais, 与输入数据相加, 得到输出。
    在这里插入图片描述
    实际上,这种方法可以理解为concatenation-based conditioning的另一种实现方式。

  3. conditional scaling
    前一种方法是将条件信息编码的特征加在了输入数据上,该方法则用乘法代替。
    在这里插入图片描述

对于加性和乘性操作的优劣论述 :

  • 支持加性交互的一个论点是,对于不太强烈依赖于两个输入的联合值的应用场景,如特征聚合或特征检测(即,检查两个输入中是否存在特征),加性交互更为自然。
  • 支持乘性交互的一个论点是,它们有助于学习输入之间的关系,因为这些交互自然会识别“匹配”:将符号一致的元素相乘会产生比不一致的元素相乘更大的值。这就是为什么经常使用点积来确定两个向量的相似程度。

因此较好的做法是同时采取乘法和加法操作,这也就是本文所提出的conditioning layer中所用到的操作,Feature-wise Linear Modulation, FiLM.

Feature-wise Linear Modulation

介绍链接

通过对多输入任务中的每个特征进行线性调制,达到对不同输入得到不同输出的目的。
对 输 入 特 征 的 线 性 调 制 过 程 :  New  F i , c = ( V i , c ∗ F i , c ) + β i , c 这 里 的 V 和 β 是 单 独 需 要 一 个 网 络 ( F i L M    g e n e r a t o r ) 来 进 行 预 测 的 。 对输入特征的线性调制过程:\text { New } F_{i, c}=\left(V_{i, c}{ }^{*} F_{i, c}\right)+\beta_{i, c}\\ 这里的V和\beta是单独需要一个网络( FiLM \ \ generator)来进行预测的。 线 New Fi,c=(Vi,cFi,c)+βi,cVβFiLM  generator

在这里插入图片描述
在这里插入图片描述
当然,可以使用更复杂的操作(而不是仿射变换),但FiLM通常会在有效性和效率之间达成令人满意的折衷:FiLM中用于预测尺度的缩放平移系数的数目与网络参数数目成线性关系,且在实际中,FiLM有足够的能力在各种场景下对复杂现象进行建模。

FiLM的缺点:

  1. enforce a limited inductive bias::
    对于有些问题,借助较强的inductive bias可能会更容易解决。因此加入一些task-relavant的inductive bais 一般会获得性能的提升。

    inductive bias的解释

  2. remain domain-agnostic
  3. Limited Data Efficiency
    达到相同的性能,需要更多的数据,因此在大数据集上的效果会更好
    这些缺点也使得FiLM对于特异性任务的泛化性更强,可以广泛应用在各种任务中。
  4. 需要仔细的正则化
    FiLM非常容易过拟合,需要非常细心的进行正则化,尤其是对于FiLM generator网络(如L2 weight decay, 使用线性层而不是RNN来构建generator网络)有关详细的讨论见链接

Feature-Wise 的解释

By feature-wise, we mean that scaling and shifting are applied element-wise, or in the case of convolutional networks, feature map -wise.

假设Z为条件信息,X为条件层的输入:
FiLM ⁡ ( x ) = γ ( z ) ⊙ x + β ( z ) \operatorname{FiLM}(\mathbf{x})=\gamma(\mathbf{z}) \odot \mathbf{x}+\beta(\mathbf{z}) FiLM(x)=γ(z)x+β(z)
即对每一个输入都逐个进行仿射变换,下图说明了对一维向量和多个二维特征图进行处理的过程:
element-wise

FiLM的容量解释

FiLM只是一个简单的仿射变换,但是有相当大的容量,可以广泛应用在NLP、CV任务中。实际上,其大容量是借助FiLM层后面的深度神经网络实现的。后续的神经网络层可以将简单的线性变化转化为复杂的非线性变化。例如,作者的 消失实验表明,在CNN早期使用一层FiLM可以获得与在整个网络中使用4层FiLM大致相同的性能。如果FiLM层后面没有任何神经网络层,FiLM的容量将非常有限,正好是简单仿射变换的容量。

使用FiLM的一些建议

  1. 首先注意观察过拟合的发生。如果模型过拟合,调整正则化超参数并尝试使用更简单的网络架构,特别是对于预测FiLM增益和偏差的网络(FiLM generator)。
  2. 如果需要更好的性能或数据效率,可以通过添加与任务相关的归纳偏差来提升FiLM。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

条件网络层 介绍与脉络梳理:A Retrospective for “FiLM- Visual Reasoning with a General Conditioning Layer“ 的相关文章

  • 里程计及基于双目视觉的视觉里程计(stereo visual odometry)

    里程计在slam算法中扮演的作用不言而喻 xff0c 通常里程计可以分为轮子编码器的里程计 wheel odometry 和视觉里程计 visual odometry 而视觉里程计又可分为基于单目的视觉里程计 monocular odome
  • Visual Studio 与Visual C++ 有什么区别

    Visual C 43 43 是 Visual Studio的一个部分 xff0c 此外还有 Visual Basic xff08 VB xff09 Visual C 等 VC 43 43 6 0 是VS6的 VC 43 43 2003 是
  • Visual Studio Code(VSCode) 编辑/编译/调试 C++ 代码

    前言 最近想要切换编辑工具 xff0c 之前工作中使用过 Source Insight xff0c Eclipse xff0c CLion 来写 C 43 43 代码 目前来说 Source Insight 已经非常古老 xff0c 只有编
  • React警告:Received NaN for the `children` attribute. If this is expected, cast the value to a string.

    使用React框架时 xff0c 组件在使用 lt span gt Math abs goal goalInfo pretimes goal usergoalInfo cpt times lt span gt 这一语句时出现警告 xff1a
  • Visual Studio Code (vscode) 配置 C / C++ 环境

    Visual Studio Code vscode 配置 C C 43 43 环境 步平凡 博客园 在电脑安装软件管控严格的情况下 xff0c 想装VS装不了 xff0c 就装轻量版的VSCode了 以上写得很好 xff0c 照做即可 本人
  • Visual Studio 与 Visual C++ 关系

    Visual Studio netVisual C 43 43 netVisual C 43 43 MSC VER备注Visual Studio net 2002Visual C 43 43 net 2002Visual C 43 43 7
  • Visual Studio 2022 C++ CLR 的艰难除 Bug

    请看下面一段代码 xff1a 运行结果 xff1a 这是一个Button xff0c 要用到这段代码是因为字符串出了问题 xff1a 肯定是我写的类出问题了 xff0c 便是我在控制台下测试是正常的 代码 xff1a 运行结果 xff1a
  • Ubuntu 16.04下安装visual studio code

    一 坑和解决办法 很多帖子上写的方法都是使用命令方式 xff1a 1 先安装make sudo add apt repository ppa ubuntu desktop ubuntu make sudo apt get update su
  • visual studio code中模拟浏览器端向服务端发起请求

    一 需要使用的插件 二 使用方式 1 创建 http文件 2 在所创建的 http文件中输入如下内容 相关具体的使用方式可参见 xff1a https marketplace visualstudio com items itemName
  • Visual Studio上一些Error的解决方案

    近期在迁移一个linux上下项目到windows xff0c 编译时出来一堆error xff0c 挑了一些做记录 目录 1 E1696无法打开源文件 unistd h2 E0020 未定义标识符 34 getcwd 34 3 E0020
  • Visual Basic相关

    vb教程
  • visual studio的team使用问题小结

    visual studio的team使用问题小结 一 visual studio xff08 2017 xff09 默认浏览器打开team任务和bug二 visual studio xff08 2017 xff09 上传team时 xff0
  • Visual Assist 在VS2022中安装失败问题

    直接找到C Users xxxxx AppData Local Microsoft VisualStudio 17 0 xxxxx 文件夹 直接右击删除这个文件夹 注意要在VS2022关闭时再删除 可以先做一次备份 正常运行安装VA X S
  • Tips for Qt

    Based on Qt 5 14 0 Qt Creator 4 11 0 1 在UI设计界面添加控件后 xff0c 要编译一下 xff0c 再到编辑界面写代码 xff0c 否则系统不识别新添加的控件 2 多看帮助文档 xff0c 好多开发时
  • for input string:原因及其解决方案

    javascript view plain copy 首先我这里遇到的错误 for input String if 类型 money Double parseDouble 数据库中获取的内容 else if 类型 number Intege
  • Python:使用循环语句for 做一个九九乘法表

    学会了循环语句后 就能做很多小程序了 在这里演示几种九九乘法表的编程方法 首先使用for循环来进行编程 for hang in range 1 10 定义行为hang 行数为9 for lie in range 1 hang 1 定义列为l
  • 第二节 分支和循环语句

    第二节 分支和循环语句 目录 一 什么是语句 二 分支语句 选择结构 三 循环语句 本章重点 分支语句 if switch 循环语句 while for do while goto语句 一 什么是语句 C语句可分为以下五类 表达式语句 函数
  • QCR 与功能属性

    我有基于主题的问题 SOF OWL 中的爱因斯坦谜题 https stackoverflow com questions 4145706 how to get individual results while solving einstei
  • 一阶逻辑引擎

    我想创建一个可以使用一阶逻辑进行简单推理的应用程序 谁能推荐一个可以接受任意数量的 FOL 表达式并允许查询这些表达式 最好通过 Python 访问 的 引擎 除非绝对必要 否则不要使用一阶逻辑 FOL 进行查询 一阶逻辑不可判定 而只是半
  • 如何通过 Reasoning 实现 Apache Jena 中命名空间之间的映射?

    Goal 我不想在本体之间实现基于规则的映射 以完成数据迁移的常见任务 实现目标的方式 为了实现这一点 我开发了一个抽象数据结构 它能够存储任何数据类型的 xml 表示形式提供的所有信息 然后我编写了一个解析器 它根据目标文档类型定义构造了

随机推荐