目录

Miyato T., Kataoka T., Koyama M & Yoshida Y. SPECTRAL NORMALIZATION FOR GENERATIVE ADVERSARIAL NETWORKS. ICLR, 2018.

通过限制谱范数来限制Lipschitz常数, 但又不像weight normalization 或者其它的正则化方法一样, 本文提出的方法不会丧失过多的灵活性且保持高效.

主要内容

经过WGAN之后, 有许多方法是探讨如何限制Lipschitz常数的, 即

\[\min_G \max_{\|f\|_{Lip} \le K} V(G, D),
\]

其中\(f\)为

\[f(x,\theta) = W^{L+1}a_L (W^L(a_{L-1}(W^{L-1}(\cdots a_1(W^1x)\cdots)))),
\]
\[D(x,\theta) = \mathcal{A}(f(x,\theta)).
\]

实际上,

\[\|f\|_{Lip} \le \prod_{i=1}^{L+1} \sigma(W^l),
\]

其中\(\sigma\)为谱范数. 故本文的思想是, 实际使用下面的权重矩阵

\[\bar{W}_{SN} (W) := W/\sigma(W),
\]

此时\(\|f\|_{Lip} \le 1\).

但是, 由于\(W\)在训练过程中是变化的, 所以, 作者并不是精确求解\(\sigma(W)\), 采用了一种类似running average的方式, 既然

\[\sigma(W) = u_1^T Wv_1,
\]

其中\(u_1, v_1\)分别为\(\sigma(W)\)所对应的左特征向量和右特征向量.

作者进一步分析, 经过标准化后的\(W\)的梯度的变化

\[\frac{\partial V(G, D)}{\partial W} = \frac{1}{\sigma(W)} (\hat{\mathbb{E}}[\delta h^T] - \lambda u_1v_1^T),
\]

其中\(\lambda:= \hat{\mathbb{E}}[\delta^T (\bar{W}_{SN}h)]\), \(\delta:= (\partial V(G,D) / \partial (\bar{W}_{SN}h))^T\) . 与原来的梯度仅仅差了后面的一项, 这相当于阻止整个网络仅仅往一个方向学习而产生mode collapse.

实际上, 已经有很多类似的方法了, 一些是在损失函数后面加正则化项, 一些是直接要求多个奇异值的和等于某一个值(WN), 作者认为这些方法会让网络的能力下降, 在某种程度上会迫使权重的奇异值集中在一个维度之上. 还有像正交化的约束, 是能够避免集中在一个维度之上的, 但是这假设所以维度的意义是同等重要, 这个并不合适, 因为谱不一致是有意义的.

SNGAN的更多相关文章

  1. GANS 资料

    https://blog.csdn.net/a312863063/article/details/83512870 目 录第一章 初步了解GANs 3 1. 生成模型与判别模型. 3 2. 对抗网络思 ...

  2. 你的GAN训练得如何--GAN 的召回率(多样性)和精确率(图像质量)方法评估

    生成对抗网络(GAN)是当今最流行的图像生成方法之一,但评估和比较 GAN 产生的图像却极具挑战性.之前许多针对 GAN 合成图像的研究都只用了主观视觉评估,一些定量标准直到最近才开始出现.本文认为现 ...

  3. 2019 ICCV、CVPR、ICLR之视频预测读书笔记

    2019 ICCV.CVPR.ICLR之视频预测读书笔记 作者 | 文永亮 学校 | 哈尔滨工业大学(深圳) 研究方向 | 视频预测.时空序列预测 ICCV 2019 CVP github地址:htt ...

  4. 软件工程第一次作业:Warm Up

    Warm Up 项目 内容 作业所属课程 2021春季软件工程(罗杰 任健) 作业要求 第一次阅读作业 课程目标 培养通过团队协作使用软件开发工具按照软件工程方法开发高质量并且可用的复杂软件系统的能力 ...

随机推荐

  1. 如何在 ASP.NET Core 中构建轻量级服务

    在 ASP.NET Core 中处理 Web 应用程序时,我们可能经常希望构建轻量级服务,也就是没有模板或控制器类的服务. 轻量级服务可以降低资源消耗,而且能够提高性能.我们可以在 Startup 或 ...

  2. 17. yum

    https://www.linuxidc.com/Linux/2015-04/116331.htm

  3. Spark检查点机制

    Spark中对于数据的保存除了持久化操作之外,还提供了一种检查点的机制,检查点(本质是通过将RDD写入Disk做检查点)是为了通过lineage(血统)做容错的辅助,lineage过长会造成容错成本过 ...

  4. C/C++ Qt 数据库与SqlTableModel组件应用

    SqlTableModel 组件可以将数据库中的特定字段动态显示在TableView表格组件中,通常设置QSqlTableModel类的变量作为数据模型后就可以显示数据表内容,界面组件中则通过QDat ...

  5. 【leetcode】122.Best Time to Buy and Sell Stock II(股票问题)

    You are given an integer array prices where prices[i] is the price of a given stock on the ith day. ...

  6. JmxTest

    package mbeanTest; import java.util.Set; import javax.management.Attribute; import javax.management. ...

  7. spring生成EntityManagerFactory的三种方式

    spring生成EntityManagerFactory的三种方式 1.LocalEntityManagerFactoryBean只是简单环境中使用.它使用JPA PersistenceProvide ...

  8. Druid数据库监控

    一.简介 Druid是阿里开源的一个JDBC应用组件, 其包括三部分: DruidDriver: 代理Driver,能够提供基于Filter-Chain模式的插件体系. DruidDataSource ...

  9. spring cloud 通过 ribbon 实现客户端请求的负载均衡(入门级)

    项目结构 环境: idea:2020.1 版 jdk:8 maven:3.6.2 1. 搭建项目 ( 1 )父工程:spring_cloud_demo_parent pom 文件 <?xml v ...

  10. Js判断数组中是否存在某个元素

    Js判断数组中是否存在某个元素 方法一:indexOf(item,start); Item:要查找的值:start:可选的整数参数,缺省则从起始位子开始查找. indexOf();返回元素在数组中的位 ...