Deep Dream
Deep Dream是这样的:如果给机器一张图片\(x\),Deep Dream会把机器看到的内容加到图片\(x\)中得到\(x'\)。那如何实现呢?
如上图所示,将图片\(x\)输入到CNN中,然后取出CNN中某一层\(L\)(可以是卷积、池化阶段的隐藏层,也可以是FNN中的隐藏层)的输出\(O\),然后将\(L\)中的正值调大、负值调小得到一个新的输出\(O'\),然后通过梯度下降找到一张新的图片\(x'\)使层\(L\)的输出为\(O'\),这个\(x'\)就是我们要的结果。直观理解的话,也就是让CNN夸大它所看到的内容。
然后就得到了如下结果……(看到的时候我惊了,真是十分哇塞)
Deep Style
Deep Style是这样的:如果给机器一张图片\(x\)和\(y\),Deep Style可以把图片\(y\)的风格加到图片\(x\)上,也就是风格迁移。
那如何实现呢?论文:A Neural Algorithm of Artistic Style。
- 把图片\(x\)传入CNN并得到输出,然后其输出作为图片\(x\)的内容\(c_x\)(content);
- 把图片\(y\)传入CNN并得到输出,但不是考虑输出的值是什么,而是考虑输出层中各个filter输出之间的相关性(corelation)作为图片\(y\)的风格\(s_y\)(style);
- 最后基于同一个CNN找到图片\(z\),图片\(z\)传入CNN后得到的内容\(c_z\)像\(c_x\)、风格\(s_z\)像\(s_y\)。
如下图所示
围棋
CNN不单单可以用在图像上,还可以用在其它方面,比如下围棋。
在下围棋这件事上,其实FNN就可以(输入和输出都是19×19=361的vector),但CNN的效果更好。当然还可以用强化学习。
为什么CNN可以用来下围棋呢?因为围棋具有图像的3个性质,不过AlphaGo并没有用Max Pooling因为它不需要。
语音
如下图所示,用语谱图(Spectrogram)表示语音。
语谱图的x轴是时间,y轴是频率,z轴是幅度。幅度用颜色表示(比如亮色表示高、暗色表示低)。
在语谱图中,CNN的卷积核往往只在y轴方向上移动,这样可以消除男生女生声音频率的差异;卷积核往往不在x轴上移动,因为时间域一般是在后面用LSTM等等进行处理,如下图所示。
文本
CNN也可以用在文字处理上,比如文本情感分析。具体不再讲,可以看李宏毅老师的视频。
图片生成
Deep Dream的方法还是不能画出图片,不过也有其它较为成功的方法,如下图所示。
Github(github.com):@chouxianyu
Github Pages(github.io):@臭咸鱼
知乎(zhihu.com):@臭咸鱼
博客园(cnblogs.com):@臭咸鱼
B站(bilibili.com):@绝版臭咸鱼
微信公众号:@臭咸鱼
转载请注明出处,欢迎讨论和交流!