李宏毅机器学习课程笔记-7.3CNN应用案例

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

  1. 把图片\(x\)传入CNN并得到输出,然后其输出作为图片\(x\)的内容\(c_x\)content);
  2. 把图片\(y\)传入CNN并得到输出,但不是考虑输出的值是什么,而是考虑输出层中各个filter输出之间的相关性(corelation)作为图片\(y\)的风格\(s_y\)style);
  3. 最后基于同一个CNN找到图片\(z\),图片\(z\)传入CNN后得到的内容\(c_z\)\(c_x\)、风格\(s_z\)\(s_y\)

如下图所示

img

围棋

CNN不单单可以用在图像上,还可以用在其它方面,比如下围棋。

在下围棋这件事上,其实FNN就可以(输入和输出都是19×19=361的vector),但CNN的效果更好。当然还可以用强化学习。

为什么CNN可以用来下围棋呢?因为围棋具有图像的3个性质,不过AlphaGo并没有用Max Pooling因为它不需要。

语音

如下图所示,用语谱图(Spectrogram)表示语音。

语谱图的x轴是时间,y轴是频率,z轴是幅度。幅度用颜色表示(比如亮色表示高、暗色表示低)。

在语谱图中,CNN的卷积核往往只在y轴方向上移动,这样可以消除男生女生声音频率的差异;卷积核往往不在x轴上移动,因为时间域一般是在后面用LSTM等等进行处理,如下图所示。

img

文本

CNN也可以用在文字处理上,比如文本情感分析。具体不再讲,可以看李宏毅老师的视频

img

图片生成

Deep Dream的方法还是不能画出图片,不过也有其它较为成功的方法,如下图所示。

img


Github(github.com):@chouxianyu

Github Pages(github.io):@臭咸鱼

知乎(zhihu.com):@臭咸鱼

博客园(cnblogs.com):@臭咸鱼

B站(bilibili.com):@绝版臭咸鱼

微信公众号:@臭咸鱼

转载请注明出处,欢迎讨论和交流!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章