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):@絕版臭鹹魚
微信公衆號:@臭鹹魚
轉載請註明出處,歡迎討論和交流!