了解生成对抗网络GAN
来源:互联网 发布:新概念英语软件知乎 编辑:程序博客网 时间:2024/05/22 16:13
此文章是阅读论文后看了顾险峰老师的文章《看穿机器学习W-GAN模型的黑箱》后写的。顾老师在纽约州立。
使用Principe of GAN说明最优化传输理论(Optimal Mass Transportation)的几何解释,在GAN论文波澜四起的的这几天Wasserstein突然特别火,顾老师做的就是对文中的的理论给出了几何解释这个就可以直观看懂机器学习的理论!
对抗网络的研究历程和对过拟合的猜想——对抗样本生成——生成式对抗网络GANs——代码解释——运行实例验证假设——读文章后启发和知识点总结
生成对抗网络(GAN)
使用训练模型生成一个对抗网络(Generative Adversarial Networks)是一个自相矛盾系统,主要矛盾体现在判别器(Descriminator)与生成器Generator方面。
其实这个问题在2014年时候Szegedy研究神经网络是发现的性质。具体问题是(针对于一个已经训练好的分类模型如果将训练集做 一些细微的改变会导致模型给出一个错误的的分类结果,这个结果当时人类眼睛可以识别,对此他们对这些使模型发生错误的样本称为对抗样本且发明了adversarial training),从改进模型的泛化能力阅读论文《Intriguing properties of neural networks》后会思考一个问题就是用实际案例重复这种假设和例子对其黑盒现象做一个描述性解释和使用现有的方法对其进行深入的研究。在论文《Explaining and harnessing adversarial examples》中做了以下实验;
在可信度为57.7%时用上
GAN运行时各个概率分布图在TensorFlow实现的《carpedm20/DCGAN-TensorFlow》,黑色的虚线是真实数据概率分布,绿色的实线是生成后的网络学习到的仿概率分布,蓝色的线是分类网络判别真实图片后的概率,
那么当D为一个卷积神经网络时,变量名为D。其中构造一层的方式如下:
1 w = tf.get_variable('w',[4,4,c_dim,num_filter], 2 initializer=tf.truncated_normal_initializer(stddev)) 3 dconv = tf.nn.conv2d(ddata,w,strides=[1,2,2,1],padding='SAME') 4 bias = tf.get_variable('biases',[num_filter], 5 initializer=tf.constant_initializer(0,0)) 6 bias = tf.nn.bias_add(dconv,biases) 7 dconv1 = tf.maximum(bias, leak*bias) 8 ... G是一个逆卷积神经网络,变量名为G,其中构造的一层如下:
w = tf.get_variable('w', [4, 4, num_filter, num_filter*2], initializer=tf.random_normal_initializer(stddev=stddev))deconv = tf.nn.conv2d_transpose(gconv2, w, output_shape=[batch_size, s2, s2, num_filter], strides=[1, 2, 2, 1])biases = tf.get_variable('biases', [num_filter],initializer=tf.constant_initializer(0.0))bias = tf.nn.bias_add(deconv, biases)deconv1 = tf.nn.relu(bias, name=scope.name)...```G的网络输入为一个zdim维服从-1~1均匀分布的随机变量,这里取的是100.batch_z = np.random.uniform(-1, 1, [config.batch_size, self.z_dim]) .astype(np.float32)
D的网络输入是一个batch的64*64的图片,既可以是手写体数据也可以是G的一个batch的输出。这个过程可以参考上图的a状态,判别曲线处于不够稳定的状态,两个网络都还没训练好。
对抗网络的作用就是将无监督的机器学习问题转化成有监督学习问题便于更好产生特征便于实际问题的研究,而不是人为的寻找特征,最大的难题在于训练是调参数所以generator输入时好时坏。从论文和经验来看特别容易过拟合,这是对样本产生确实是一种对抗的结果。在论文《Quick introduction to GANs》。
最有传输概论
在满足保持测度和极小化传输代价 就是上文中的0.007那种情况下,保持的测度是对任意的博莱尔集,就是映射
W-GANs关键在于概率测度(概率分布情况与映射),真实数据的概率分布和生成数据概率分布,对于生成器的input的随机data满足条件就是概率分布服从(高斯和均匀分布),概率测度间的最优化映射结果生成器,概率分布的空间测度的Wasserstein距离。我们把概率测度空间泛化后得到一个体积空间,这种建立在概率测度空间的按照几何的规律构造!同样可是用保角变换将人脸曲面映射到平面圆中,这种现象主要为了达到优化和最优传输,这种传输是离散最优化传输映射,离散的Wassstein距离用丘成桐先生的变分法求取平面截距映射到平面后做胞腔分解后的面积定义为能量,满足了测度不变体现在截距上,这个能量是非线性项,由于体积函数和Wasserstein距离之间存在一个勒让德(Legendre Transform),然后在这个变化可视化后对任意一点的导数(斜率)作为参数,切线的的截距做函数值求得Wasserstein距离的变化。
网络优化理论的几何意义
当两个概率分布给定后存在一个最优化得凸函数(Brenier势函数),这两种概率分布存在一个最优传输,所以就有一个极小传输成本给出的两个概率间的wasserstein距离,Brenier势能函数,进行对wasserstein距离的几何求解实现可视化就是在对Wasserstein模型最优化传输理论得到几何证明,通常的GAN是生成器和判别器来实现深度神经网络的,在此我们使用的Briener势能函数代替深度神经网络的黑箱问题使其完全可视化从本质上说明训练概率分布空间的传输映射证明其隐含学习最优传输的映射存在,
此博客是学习纽约州立大学顾险峰老师和听见下雨的声音博客后总结的,感谢两位老师的启发!
- 了解生成对抗网络GAN
- 生成对抗网络GAN
- GAN生成对抗网络
- 生成对抗网络-GAN
- Gan 生成对抗网络
- [生成对抗网络] GAN
- 生成对抗网络(GAN)
- 生成对抗网络(GAN)
- 浅谈GAN生成对抗网络
- pytorch GAN生成对抗网络
- GAN 生成式对抗网络
- 生成对抗网络GAN学习
- GAN—生成对抗网络
- 生成式对抗网络GAN汇总
- 生成式对抗网络GAN汇总 研究进展
- 生成式对抗网络GAN汇总
- GAN生成对抗网络发展史-文章整理
- 深度学习之生成对抗网络GAN
- License Key Formatting
- 编写高质量OC代码52建议总结:13.用“方法调配技术”调试“黑盒方法”
- C#如何调用以管理员身份运行的cmd命令提示符
- robotframework封装关键字用于控制ats(apache traffic server)实现ats自动化测试
- Rectjs问题总结
- 了解生成对抗网络GAN
- JSP常用标签——JSTL标签和EL表达式
- Java DOM解析XML的几个例子
- 算法提高 日期计算
- 一个简单的selenium demo
- JS:正则表达式学习笔记(九) - text和exec方法
- oj2427: C语言习题 整数排序
- (转)C++中extern “C”含义深层探索
- redis集群搭建