半监督生成对抗网络_生成对抗网络
·
生成对抗网络(GAN, Generative Adversarial Networks)是一种深度学习模型,是近年来复杂分布上无监督学习最具前景的方法之一,也是当下热门的人工智能技术之一,被美国《麻省理工科技评论》评为2018年“全球十大突破技术”。一、生成对抗网络相关概念(一)生成模型在概率统计理论中,生成模型是指能够在给定某些隐含参数的条件下,随机生成观测数据的模型,它给观测值和标注数据序列指定一个联合概率分布。在机器学习中,生成模型可以用来直接对数据建模,也可以用来建立变量间的条件概率分布。通常可以分为两个类型,一种是可以完全表示出数据确切的分布函数,一种是只能做到新数据的生成,而数据分布函数则是模糊的。其中,对抗生成网络属于第二种类型。较为常见的生成模型有高斯混合模型、隐马尔科夫模型等。(二)判别模型在机器学习领域判别模型是一种对未知数据y与已知数据x之间关系进行建模的方法,是一种基于概率理论的方法。已知输入变量x,通过构建条件概率分布P(y|x)预测y。较为常见的判别模型有支持向量机、决策树、逻辑回归、条件随机场、人工神经网络等。
二、生成对抗网络基本原理
(一)基本思想生成对抗网络的基本思想是二人零和博弈思想,即参与博弈的双方,在严格竞争下,一方的收益必然意味着另一方的损失,博弈各方的收益和损失相加总和永远为“零”,双方不存在合作的可能。在生成对抗模型中进行博弈的是生成模型(G)和判别模型(D)。其中生成模型G负责接收一个随机的噪声,然后通过这个噪声生成图片。判别模型D负责判别一张图片是不是“真实的”。它的输入参数是一张图片,输出参数为真实图片的概率,如果输出概率为1,则代表一定是真实图片。如果输出概率为0,则代表不可能是真实图片。在训练过程中,生成模型G的目标是尽量生成真实的图片去欺骗判别模型D。而判别模型D的目标是尽量把生成模型G生成的图片和真实的图片分别开来。这样,两个模型之间就构成了一个动态的“博弈过程”。这场博弈最终要达到的结果是,在最理想的状态下,生成模型G可以生成足以“以假乱真”的图片。此时,对于判别模型D来说,已经难以判定生成模型G生成的图片究竟是不是真实的,即输出概率为0.5。这样,我们就得到了一个生成式的模型G,它可以用来生成图片。需要强调的是,由于该算法具有收敛性,因此在模型收敛时,生成数据具有和真实数据相同的分布,这也保证了生成对抗模型的生成效果。(二)数学解析从数学原理角度分析,该过程实际上是一个最大最小优化问题,其目标函数如公式1所示:


三、生成对抗网络的应用场景
(一)图像处理生成对抗网络最常使用的地方是图像生成与处理。在真实工作场景中,图片生成、人脸生成、图像转换、文本到图片的转换、语义图片到照片的转换、照片编辑、图片混合、超分辨率、图片修复、3D物体生成等都可以通过生成对抗网络来解决,甚至有实验证明可以用生成对抗网络来把图片变成视频。如果这个技术成真,则未来电影拍摄的成本都可以大大降低。(二)声音处理生成对抗网络除了可以应用于图像处理,还可以应用于声音处理,尤其是在合成和恢复语音素材的过程中。例如,用AI合成语音、从大量杂音中恢复某条声轨,模仿一个人的语速、语气和语言心理等。(三)文字生成除此之外,生成对抗网络在文本生成、写稿机器人等领域也有极大的应用空间。生成对抗网络之所以可以在AI领域被广泛的应用,有很大一部分原因在于生成对抗网络赋予了机器创造力。例如,在AI创作文字过程中,最大的难点在于机器没有思想和感情,无法制造出人类写作的文本张力,而生成对抗网络刚好可以解决这一问题。(四)信息破译与信息安全由于生成对抗网络的目的是使某物不断趋近真实,因此可以通过其生产出真实的笔记、数字密码、生物密码等来破译个体习惯、解锁信息、进行信息安全防护等。在网络信息繁杂的现代社会,生成对抗网络的应用将给信息破译与信息安全防护带来新的可能。(五)高精度的样本预测此外生成对抗网络还可以通过模糊数据和少量信息,对某种可能性结果进行样本预测。数据越充分,算法越高超,预测就会越精准。例如,运用AI来通过人的侧脸判断正脸,就是用生成对抗网络技术来完成。这种预测样本的应用还有很多,因此,在未来生成对抗网络将拥有更充分的应用空间。附GAN在图像处理中的Matlab代码(代码来源于CSDN和机器学习实战):clcclear%% 构造真实训练样本 60000个样本 1*784维(28*28展开)load mnist_uint8;train_x = double(train_x(1:60000,:)) / 255;%真实样本认为为标签 [1 0]; 生成样本为[0 1];train_y = double(ones(size(train_x,1),1));% normalizetrain_x = mapminmax(train_x, 0, 1);rand('state',0)%% 构造模拟训练样本 60000个样本 1*100维test_x = normrnd(0,1,[60000,100]); % 0-255的整数test_x = mapminmax(test_x, 0, 1);test_y = double(zeros(size(test_x,1),1));test_y_rel = double(ones(size(test_x,1),1));%%nn_G_t = nnsetup([100 784]);nn_G_t.activation_function = 'sigm';nn_G_t.output = 'sigm';nn_D = nnsetup([784 100 1]);nn_D.weightPenaltyL2 = 1e-4; % L2 weight decaynn_D.dropoutFraction = 0.5; % Dropout fraction nn_D.learningRate = 0.01; % Sigm require a lower learning ratenn_D.activation_function = 'sigm';nn_D.output = 'sigm';% nn_D.weightPenaltyL2 = 1e-4; % L2 weight decaynn_G = nnsetup([100 784 100 1]);nn_G.weightPenaltyL2 = 1e-4; % L2 weight decaynn_G.dropoutFraction = 0.5; % Dropout fraction nn_G.learningRate = 0.01; % Sigm require a lower learning ratenn_G.activation_function = 'sigm';nn_G.output = 'sigm';% nn_G.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples%%num = 1000;ticfor each = 1:1500 %----------计算G的输出:假样本------------------- for i = 1:length(nn_G_t.W) %共享网络参数 nn_G_t.W{i} = nn_G.W{i}; end G_output = nn_G_out(nn_G_t, test_x); %-----------训练D------------------------------ index = randperm(60000); train_data_D = [train_x(index(1:num),:);G_output(index(1:num),:)]; train_y_D = [train_y(index(1:num),:);test_y(index(1:num),:)]; nn_D = nntrain(nn_D, train_data_D, train_y_D, opts);%训练D %-----------训练G------------------------------- for i = 1:length(nn_D.W) %共享训练的D的网络参数 nn_G.W{length(nn_G.W)-i+1} = nn_D.W{length(nn_D.W)-i+1}; end %训练G:此时假样本标签为1,认为是真样本 nn_G = nntrain(nn_G, test_x(index(1:num),:), test_y_rel(index(1:num),:), opts);endtocfor i = 1:length(nn_G_t.W) nn_G_t.W{i} = nn_G.W{i};endfin_output = nn_G_out(nn_G_t, test_x);%%函数nn_G_out为:function output = nn_G_out(nn, x) nn.testing = 1; nn = nnff(nn, x, zeros(size(x,1), nn.size(end))); nn.testing = 0; output = nn.a{end};end
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)