| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 【研究生工作周报】(CAM) -> 正文阅读 |
|
[人工智能]【研究生工作周报】(CAM) |
GAN论文研究之注意力生成器文章目录前言对于NICE-GAN模型中用到的组件,部分只是进行原理上的简单介绍,至于为什么使用这些组件,它是怎么起作用的,还需要起源追朔,比如SN-GAN中首次提出spectral normalization这种新的权重归一化方法来稳定判别器的训练,还有U-GAT-IT模型中如何通过CAM(Class Activation Map)实现注意力机制,(GAP → \rightarrow → CAM → \rightarrow → Attentional Net) 一、Class Activation Mapping首次提出CAM(Class Activation Mapping)这个概念是在论文《Learning Deep Features for Discriminative Localization 》(2016CVPR)中。 简单来说,这篇文章主要介绍了两个核心技术: GAP(Global Average Pooling Layer) 和 CAM(Class Activation Mapping) 1. GAP池化层的本质是一个下采样,因为数据经过卷积之后维度越来越高,而且特征图没有多大改变,在连续多个卷积之后,会产生一个很大的参数量,不仅会大大的增加网络训练的难度,还容易造成过拟合的现象,所以通常会在卷积层之后放一个池化层对数据进行压缩,降低维度,减少参数量。池化操作能够对上一层的特征图进行融合,因为相邻区域的参数具有较强的关联性,还能够防止发生过拟合现象。 pooling的结果是使得特征减少,参数减少,但pooling的目的并不仅在于此。 根据相关理论,特征提取的误差主要来自两个方面: (1)邻域大小受限造成的估计值方差增大; (2)卷积层参数误差造成估计均值的偏移。 一般来说 第一个提出GAP这个想法的,是一篇叫做《Network in Network》的论文。这篇论文发现用GAP代替全连接层,不仅可以降低维度,防止过拟合,减少大量参数,网络的性能也很不错。 作者在卷积层后使用GAP模块:
后续在论文《Learning Deep Features for Discriminative Localization 》中,他们发现了GAP的一个作用,能保留空间信息并且定位(localization) 2. CAM使用全局均值池化生成CAM的步骤:网络主要由卷积层组成,并且在最后的输出层之前, 在卷积特征图上进行全局平均池化,用于全连接层。可以通过将输出层的权重投影到卷积特征图上来识别图像区域的重要性,该技术称为类激活映射(class, activation mapping)。 M c ( x , y ) = ∑ k w k c f k ( x , y ) M_{c}(x,y) = \sum_{k}w_{k}^{c}f_{k}(x,y) Mc?(x,y)=k∑?wkc?fk?(x,y) 其中 f k ( x , y ) f_{k}(x,y) fk?(x,y) 为最后一层特征图位置 ( x , y ) (x,y) (x,y) 的值, w k c w_{k}^{c} wkc? 为类别c的全连接权重
3. Attentional networkU-GAT-IT中的注意力网络只是对CAM进行了一个小改进,结合GAP,GMP训练学习源域的特征权重
w
k
w_{k}
wk?,得到注意力向量
ω
\omega
ω。
二、spectral normalization原生 GAN 的目标函数等价于优化生成数据的分布 p g p_{g} pg? 和真实数据的分布 p r p_{r} pr? 之间的 J-S 散度 (Jensen–Shannon Divergence)。在但存在的问题是判别器训练越好,生成器梯度消失越严重。 ??WGAN使用性质优良的 Wasserstein distance 代替原生 GAN 中的 J-S 散度。 然后利用KR对偶原理将 Wasserstein distance的求解问题转换为求解最优的利普希茨连续函数的问题。 为了使得判别器 D 满足利普希茨连续性,作者使用“梯度裁剪”将过大的参数直接裁剪到一个阈值以下。 ??我们可以这样理解:局部最小点附近如果是平坦(flatness)的话(斜率有约束),那么其泛化的性能将较好,反之,若是不平坦(sharpness)的话,稍微一点变动,将产生较大变化,则其泛化性能就不好,也就不稳定。 Spectral normalization for generative adversarial network” (以下简称 Spectral Norm) 使用一种更优雅的方式使得判别器 D 满足利普希茨连续性,限制了函数变化的剧烈程度,从而使模型更稳定。 1. Lipschitz 连续性Lipschitz 条件限制了函数变化的剧烈程度,即函数的梯度。在一维空间中,很容易看出 y=sin(x) 是 1-Lipschitz的,它的最大斜率是 1
∥
D
(
x
)
?
D
(
y
)
∥
<
=
K
∥
x
?
y
∥
\lVert D(x) - D(y)\rVert <= K\lVert x - y \rVert
∥D(x)?D(y)∥<=K∥x?y∥ 2. SVD分解Spectral Normalization的做法其实很简单: 将神经网络的每一层的参数 W W W 作 SVD 分解,然后将其最大的奇异值限定为1,满足1-Lipschitz条件, 具体地,在每一次更新 W W W 之后都除以 W W W 最大的奇异值。 这样,每一层对输入 x x x 最大的拉伸系数不会超过 1。 经过 Spectral Norm 之后,神经网络的每一层 g l ( x ) g_{l}(x) gl?(x) 权重,都满足
g
l
(
x
)
?
g
l
(
x
)
x
?
y
<
=
1
\frac{g_{l}(x) - g_{l}(x)}{x - y} <= 1
x?ygl?(x)?gl?(x)?<=1 而在图像上每个位置的卷积操作,正好可以看成是一个矩阵乘法。因此,我们只需要约束各层卷积核的参数 ,使它是 1-Lipschitz continuous 的,就可以满足整个神经网络的 1-Lipschitz continuity。而我们已经知道,想让矩阵满足 1-Lipschitz continuous,只需要让它所有元素同时除以它的最大奇异值,或者说是它的 spectural norm。 总结
参考论文 Learning Deep Features for Discriminative Localizatiion Unsupervised Generative Attentional Networks with Adaptive Layer-Instance Normalization for Image-to-Image Translation (U-GAT-IT) |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 23:51:50- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |