基于Keras框架对抗神经网络DCGAN实践
1. 前言 金庸小说《射雕英雄传》中,周伯通被东邪“黄药师”困在桃花岛的地洞里。为了打发时间,周伯通就用左手与右手打架,自娱自乐。其武功决窍在于要先“左手画圆、右手画方”,分心二用,保证可以同时使出两种武功,从而使得武力倍增。 于是,一位名叫伊恩·古德费洛的美国人在2014年加拿大蒙特利尔大学读博士的时候想了这样一个方案,也就是说,在两个神经网络中进行“猫和鼠游戏”,一个不断地“造假”,一个不断“验真”,彼此相互追逐,在对抗中不断提高自身的本领。 常见的应用场景: 数据生成——解决数据缺失 在特定的应用场景下,例如医疗领域、能源行业工业化生产,缺少训练数据是应用深度学习的最大障碍。数据增强的传统做法是将原图像拉伸旋转剪切,但这毕竟还是原来的图像,通过使用GAN,能够生成更多类似的数据。 图像编辑 图像编辑好比“美图秀秀”软件中的各种滤镜的升级版,给出一张原始的妹子图片,可以生成出金发版,卷发版,微笑版,还能修改图片中的环境因素。 恶意攻击检测 通过给深度神经网络一些特异生产的训练数据,深度学习生成的模型是可以被黑客攻击,利用甚至控制的。为了对抗这样的逆向攻击(adversarialattacks),可以训练对抗神经网络去生成更多的虚假训练数据作为假想敌,让模型在演习中去识别出这些虚假数据,就如同人类打疫苗,GAN生成的虚假数据让正在做分类的模型更加稳健。 注意力预测