李宏毅機器學習課程筆記-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):@絕版臭鹹魚

微信公衆號:@臭鹹魚

轉載請註明出處,歡迎討論和交流!


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