机器学习算法之dcgan(代码片段)

hugechuanqi hugechuanqi     2022-12-12     448

关键词:

技术图片

1、基本介绍

  • DCGAN是生成对抗网络GAN中一种常见的模型结构。其中的生成器和判别器都是神经网络模型。

  • GAN是一种生成式对抗网络,即通过对抗的方式,去学习数据分布的生成式模型。所谓的对抗,指的是生成网络和判别网络的互相对抗。生成网络尽可能生成逼真样本,判别网络则尽可能去判别该样本是真实样本,还是生成的假样本。

技术图片

优化目标函数为:\\[min_G max_D V(D,G) = min_G max_D E_x~P_data(x) [log D(x)] + E_z~P_z(z) [log(1-D(G(z)))] \\]

  • GAN对噪声Z的分布没有特别要求,但是常用的有高斯分布、均匀分布。噪声z的维数至少要达到数据流形的内在维数,才能产生足够的diversity。

  • 对抗网络可以认为是由一个生成模型Generator和一个判别模型Discriminator组成的,生成模型和判别模型都是使用的神经网络的算法,比如感知机、卷积神经网络等。更形象的表达是:

技术图片

即通过“逆变换采样”将高斯随机变量变换成生成的概率分布。其中“逆变换采样”通过概率生成模型实现。数据分布的形象表示请看:https://blog.csdn.net/wishchin/article/details/80580923 GAN原理部分。下图为生成对抗网络的渐变图:

技术图片

2、模型

  • DCGAN深度卷积生成对抗网络:
    1、D网络模型,使用的是带步长的卷积取代池化层,进行下采样。
    2、G网络模型,使用?,进行上采样。
    3、激活函数为Leaky ReLu
    4、使用Batch Normalization标准化

  • DCGAN的网络结构为:

技术图片

其中,G是生成模型,D是判别模型。Z是噪声,为生成模型G的输入,可以是高斯噪声,也可以是均匀噪声。
整个流程为:首先噪声数据输入到生成模型G中,生成假样本,和真实样本一起输入到判别模型D中,D会尽量地将其中的生成样本识别出来,而生成模型G会尽量使生成的样本不被识别出来,因此两者是一个博弈的过程。最终得生成样本会逐渐地贴近真实数据,从而完成了新数据的生成。
  • 生成模型:使用卷积神经网络,除了最终输出层使用tanh,其他都使用Relu。目标是最小化判别模型D的判别准确率。
  • 判别模型:使用卷积神经网络,都使用Leaky Relu。目标是最大化判别模型D的判别准确率。

  • CNN卷积神经网络:是一种专门用来处理具有类似网格结构的数据的神经网络。例如时间序列数据(在时间轴上有规律地进行采样形成的一维网格)和图像数据(二维像素网格)。单个神经元和整个神经网络结构如下图:多个输入,一个输出,第一个叫输入层,最后一个叫输出层,中间叫隐藏层。
    • 输入层:众多神经元接受大量非线性输入信息,称为输入向量(x1,x2,...,xn)‘。——对数据进行预处理,去均值等
    • 输出层:信息在神经元连接中传输、分析、权衡,形成输出结果,输出信息称为输出向量y。——
    • 隐藏层,是输入层和输出层之间众多神经元链接组成的各个层面。如果有多个隐藏层,则意味着多个激活函数。——卷积计算层,激励层(ReLU),池化层(取最大)。
      技术图片
      技术图片
      技术图片
      技术图片
卷积的作用:
(1)原始图像通过与卷积核的数学运算,可以提取出图像的某些指定特征(features)。

(2)不同卷积核,提取的特征也是不一样的。

(3)提取的特征一样,不同的卷积核,效果也不一样。
  • 生成模型和判别模型的实质:我们知道,机器学习的任务是从属性X预测标记Y,即求概率P(Y|X)。
    • 对于判别模型,输入新数据X,根据P(Y|X)可以直接判别出来,实际上就是直接得到了判别边界,如下图左所示。判别式模型包括机器学习中的线性回归模型,支持向量机SVM,神经网络等。对于二分类,是指上是得到一个[0,1]之间的score,然后通过设定的阈值判定为正类还是反类。
    • 对于生成模型,输入新数据X和上一个输出Y,我们会求出他们的联合分布P(X, Y),然后通过贝叶斯公式\\(P(Y|X) = \\fracP(X|Y)P(Y)P(X)\\),可得\\(P(X,Y) = P(Y|X)P(X)\\) ,相当于求出X与不同标记之间的联合概率分布,然后联合概率大的获胜,如下图右方。生成式模型包括隐马尔科夫模型、朴素贝叶斯模型、高斯混合模型GMM、LDA等。

技术图片

  • DCGAN使用CNN结构稳定GAN的训练,相关方式:

    • Batch Normalization(批处理标准化,即对每层都进行标准化):批标准化,是将分散数据统一的做法。其是优化神经网络的一种做法,因为具有统一规格的数据,能让机器学习更容易学习到数据之中的规律。

    • 使用Transpose convlution进行上采样:转置卷积上采样,是神经网络生成图像时,从低分辨率到高分辨率的上采样方法,转置卷积能够让神经网络学会如何以最佳方式进行上采样。(最近邻插值)

    • 使用Leaky ReLu作为激活函数:神经网络中每层网络结构输入到输出的映射,称为激活函数(一般为非线性函数)。正是由于这些非线性函数的反复叠加,才使得神经网络有足够的capacity来抓取复杂的pattern。Leaky ReLU = max(0.01x ,x),计算速度快,解决了梯度消失的问题,输出均值接近0。

  • 层级结构的GAN通过逐层次、分阶段进行生成,一步步提高图像的分辨率。例如,层级结构StackGAN,阶段结构ProgressiveGAN。

技术图片

  • 自编码结构:
    • 在GAN结构中,判别网络通常是一种区分真实/生成样本的概率。
    • 在自编码器结构里面,判别器使用VAE作为判别器,通常被当做能量函数,AE的loss:\\[D(u) = || u - AE(u) ||\\] 是一个重构误差。如果输入生成的样本,其重构误差会很大;如果输入真实样本,其重构误差会很小。
  • GAN的目标函数可以是最小化两个分布的JS散度,也可以是其他衡量两个分布距离,不同的距离度量方式可以得到不同的目标函数,从而改进GAN训练的稳定性。

3、优缺点/其他

  • 很难取学习生成离散的数据,例如,文本。
  • GAN的扩展:DCGAN,InfoGAN,AC-GAN,WGAN(GAN的改进版)
  • DCGAN主要用于在图片中的生成模型。
  • GAN:优化的目标函数是两个分布上的Jensen-Shannon距离,但这个距离有这样一个问题,如果两个分布的样本空间并不完全重合,这个距离是无法定义的。并且“真实分布与生成分布的样本空间并不完全重合”是一个极大概率事件。WGAN,使用Wasserstein距离代替Jensen-Shannon距离。
  • GAN的应用:按文本生成图像、提高图片分辨率、药物匹配、检索特定的模式的图片。https://www.jiqizhixin.com/articles/2017-08-23-6
    • 药物匹配:目标是训练生成器,以尽可能精确地从一个药物数据库中对现有药物进行按病取药的操作。经过训练后,可以使用生成器获得一种以前不可治愈的疾病的药方,并使用判别器确定生成的药方是否治愈了特定疾病。

参考

参考:GAN-Overview pdf文档

参考:机器学习大牛:批标准化理解 https://zhuanlan.zhihu.com/p/24810318

参考:AI研习社:Transpose convlution上采样 https://ai.yanxishe.com/page/TextTranslation/856

参考:https://zhuanlan.zhihu.com/p/25110450

参考:生成式模型和判别式模型:http://www.cnblogs.com/fanyabo/p/4067295.html

参考:https://www.zhihu.com/question/20446337

参考:《深度学习》- 《Deep Learning》

参考:CNN卷积神经网络:https://blog.csdn.net/v_JULY_v/article/details/51812459

参考:GAN原理的形象表示:https://blog.csdn.net/wishchin/article/details/80580923

参考:激活函数:https://zhuanlan.zhihu.com/p/25110450(Sigmoid函数,,tanh函数,ReLU函数,Leaky ReLU函数)

毕业设计之---新闻分类系统(代码片段)

...设计中比较热门的,本质上是属于自然语言分类,可以使用机器学习算法去处理,也可以使用深度学习算法去处理.基本步骤如下:文本数据采集-->选择训练算法(机器学习/深度学习)-->进行训练-->检效果.本文章博主将介绍:从头... 查看详情

十个机器学习基本算法之-线性回归(代码片段)

 在图解最常用的10个机器学习算法!给出了最常用到的10个及其学习算法。举个例子来说,你不能说神经网络永远比决策树好,反之亦然。模型运行被许多因素左右,例如数据集的大小和结构。因此,你应该... 查看详情

支持向量机算法之鸢尾花特征分类机器学习(代码片段)

...算法是求解凸二次规划的优化算法。Scikitlearn(sklearn)是机器学习中常见 查看详情

支持向量机算法之鸢尾花特征分类机器学习(代码片段)

...算法是求解凸二次规划的优化算法。Scikitlearn(sklearn)是机器学习中常见 查看详情

人工智能之knn算法(代码片段)

...-kNN.html基于python实现的KNN算法邻近算法(k-NearestNeighbor)是机器学习中的一种分类(classification)算法,也是机器学习中最简单的算法之一了。虽然很简单,但在解决特定问题时却能发挥很好的效果。因此,学习kNN算法是机器学习... 查看详情

机器学习笔记之kmeans算法(代码片段)

Kmeans算法:优点:容易实现缺点:可能收敛到局部最小值,在大规模数据集上的收敛速度较慢。适用数据类型:数值型数据算法原理:k-means算法接受参数k;然后将事先输入的n个数据对象划分为k个聚类... 查看详情

机器学习:python实现聚类算法之总结(代码片段)

考虑到学习知识的顺序及效率问题,所以后续的几种聚类方法不再详细讲解原理,也不再写python实现的源代码,只介绍下算法的基本思路,使大家对每种算法有个直观的印象,从而可以更好的理解函数中参数... 查看详情

决策树算法之鸢尾花特征分类可视化详解机器学习(代码片段)

...分类决策树算法可视化效果图如下:决策树是一种常用的机器学习方法,它可以帮助我们解决分类和回归问题。该模型具有高度的可解释性。该模型符合人类的思维方式,是一种经典的树形结构。熵:香农用“下降”一词来表示... 查看详情

开始学习机器学习时你必须要了解的模型有哪些?机器学习系列之决策树进阶篇(代码片段)

前言在上一篇文章中我们已经详细介绍了决策树模型,并且提到了ID3算法及其局限性,那么在本篇文章中,我们将会介绍基于ID3算法进行改良的C4.5算法以及决策树拟合度的优化问题。目录前言1C4.5算法1.1修改局部最优... 查看详情

机器学习算法之knn最近邻详解和python实现(代码片段)

作者:RayChiu_Labloy版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处目录概念KNN相关的三个事情 1.K值的确定2.距离的度量计算距离注意一定要做数据缩放:归一化和标准化3.... 查看详情

以❤️简单易懂❤️的语言带你搞懂有监督学习算法附python代码详解机器学习系列之knn篇(代码片段)

必须要看的前言本文风格:以❤️简单易懂❤️的语言带你彻底搞懂KNN,了解什么是有监督学习算法。认真看完这篇文章,彻底了解KNN、了解监督学习算法绝对是一样很简单的事情。注:本篇文章非常详细,... 查看详情

机器学习算法(knn)(代码片段)

KNN简介KNN(k-NearestNeighbor)算法的思想总结一下:就是在数据和标签已知的情况下,输入测试数据,将测试数据的特征与训练集中对应的特征进行相互比较,找到训练集中与之最为相似的前K个数据,则该测试数据对应的类别就是K个... 查看详情

em算法(expectationmaximizationalgorithm)详解(附代码)---大道至简之机器学习系列---通俗理解em算法。

☕️本文来自专栏:大道至简之机器学习系列专栏🍃本专栏往期文章:逻辑回归(LogisticRegression)详解(附代码)---大道至简之机器学习算法系列——非常通俗易懂!_尚拙谨言的博客-CSDN博客_逻辑回归代码❤️各位小... 查看详情

机器学习特征工程之特征构造:构造统计特征(代码片段)

机器学习特征工程之特征构造:构造统计特征数据决定了模型预测的上限,而算法只是在逼近这个极限而已。这里的数据指的就是经过特征工程所得到的数据。机器学习的核心就是特征构造。好的数据是从原始数据抽取出来对预... 查看详情

keras深度学习实战(23)——dcgan详解与实现(代码片段)

Keras深度学习实战(23)——DCGAN详解与实现0.前言1.使用DCGAN生成手写数字图像2.使用DCGAN生成面部图像2.1模型分析2.2从零开始实现DCGAN生成面部图像小结系列链接0.前言在生成对抗网络(GenerativeAdversarialNetworks,GAN)一节中,我们使用... 查看详情

机器学习数学基础之高数篇——函数极限和导数(python版)(代码片段)

...知道大家有没有类似的经历,斗志满满地翻开厚厚的机器学习书,很快被一个个公式炸蒙了。想要学习机器学习算法,却很难看的懂里面的数学公式,实际应用只会调用库里的函数,无法优化算法。学好机器... 查看详情

keras深度学习实战(23)——dcgan详解与实现(代码片段)

Keras深度学习实战(23)——DCGAN详解与实现0.前言1.使用DCGAN生成手写数字图像2.使用DCGAN生成面部图像2.1模型分析2.2从零开始实现DCGAN生成面部图像小结系列链接0.前言在生成对抗网络(GenerativeAdversarialNetworks,GAN)一节中,... 查看详情

朴素贝叶斯算法之鸢尾花特征分类机器学习伯努利分布,多项式分布,高斯分布(代码片段)

一.前言1.1本文原理1.熟悉机器学习之朴素贝叶斯算法2.使用朴素贝叶斯算法解决问题贝叶斯定理是关于随机事件a和B的条件概率(或边际概率)的定理。其中p(a|B)是当B发生时a发生的可能性。朴素贝叶斯算法:对于样本集:其... 查看详情