我看的論文不太多,但是特別喜歡看解釋CNN的一些論文:比如說這一篇:Visualizing and Understanding Convolutional Networks 裡面描述自己如何設計CNN的有理有據,讓人信服。比如說這裡:

他發現對於alexnet來說,我們第一層的圖像(左邊a)(用的技術是deconv)過濾出來的都是高頻率以及低頻率的圖像,而右邊,它縮小了一點窗口,所以得到的邊緣圖像信息更加多。還有一篇是今年CVPR的這一篇,Understanding Deep Image Representations by Inverting Them具體的一些我就不詳細解釋,其實你自己看CNN的一些論文,他們都有詳細的解釋之所以這麼做的理由,你一句一句摘抄下來,就會看著不那麼「黑」。

以前把DL用在圖像方面的工作常用的『讓黑箱不那麼黑』其中一種方法是把『權重』可視化出來,可以看到所謂的提取的『特徵』。

涵蓋面窄,僅供參考。
這個問題不錯,不過神經網路並不算是一個黑箱。它通過不斷調整自身內部的參數值,試圖達到一個既定目標。如果沒有達到目標就換一組參數,不行再換……在有限的資源(時間等)內還是無法完成任務,那就換一個更加複雜的模型,然後接著換參數……(網路結構是事先設計好的,中間參數是為了minimizing cross entropy,再由gradient descent計算出來的。)至於卷積神經網路(CNN),由於被大量用在圖像處理領域,所以人們希望將網路內部可視化。

假如有一個訓練好的用於人臉檢測的網路(總共3層),在第一層它將學到一些簡單概念(比如邊界,顏色),第二層它會學到一些局部特徵(比如眼睛,鼻子,耳朵),第三層它就可以學到整個人臉的特徵(具體見下圖),從而實現人臉檢測的功能。

(只是示意圖,第二三層的特徵不可能這麼清晰。圖片來源已不可考,非常抱歉)之前人們已經可以清楚地visualize CNN網路的第一層,現在藉助DCNN(反卷積神經網路),後幾層的參數也可以被帶到pixel space,從而整個網路內部都可以被直接觀察(見下圖)。

(右邊是原圖,左邊是visualize之後的網路中間層。圖片來源:Zeiler, M. D., Fergus, R. (2014). Visualizing and understanding convolutional networks. In Lecture Notes in Computer Science)當然CNN/DCNN還可以做一些別的事情,比如這個網站deepart.io - become a digital artist. 只要上傳一張照片(下圖左上)和一張具有一定風格的圖片(下圖左下),你就可以得到一張風格化(下圖右)的照片。他們的演算法參考了Simonyan, K., Zisserman, A. (2015). Very deep convolutional networks for large-scale image recognition.

(圖片來源已不可考,非常抱歉)感覺上CNN+DCNN也就相當於是個Autoencoder。說到底(其實是扯遠了),神經網路並不神奇,它只是計算機對神經系統的簡單模擬(simulate而不是emulate)。就像人腦神經系統里神經遞質累計到一定數量neuron就會fire,人工神經網路里的activation function超過閾值node就會被激活。我覺得神經網路也快要被開發到極限了,希望研究者多投入精力開發一些新的好用的模型。也多花點時間開發一下unsupervised learning,不管是AI(Artificial Intelligence)和IA(Intelligence Amplification),祝願早日戰勝人類。參考資料:

1. Zeiler, M. D., Fergus, R. (2014). Visualizing and understanding convolutional networks. In Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics) (Vol. 8689 LNCS, pp. 818–833).

2. Simonyan, K., Zisserman, A. (2015). Very deep convolutional networks for large-scale image recognition. Iclr, 1–14.


現在,只有少數神經網路的特定層,有比較通俗、靠譜的解釋。

舉例來說,深度殘差收縮網路[1][2]中的軟閾值化層,是用於消除雜訊信息的,跟信號處理領域是相同的:

參考

  1. ^深度殘差收縮網路:從刪除雜訊特徵的靈活度進行探討 https://zhuanlan.zhihu.com/p/118493090
  2. ^https://ieeexplore.ieee.org/document/8850096


個人非常支持走狗老師,呸,匿各老師經常散布的一個觀點,即對於神經網路可解釋性,我們去探究同一任務下能夠達到相同或者相近目標的不同網路結構之間的聯繫是很有意義的,私以為這是NAS的一個重要方向;看到ICML2017的best paper是探究對於一個訓練好的網路結構,究竟是哪一個樣本對結果的影響非常大,這固然很有意義,然而僅限於對權重參數的探討;關於不同網路結構對結果的影響,目前實在是沒有看到,希望有大佬能夠指點迷津。


看到有人回答CNN,在Computer Vision上有了一些不錯的貢獻和結果。

對於CNN,在二維空間上有出色的處理能力,比如也可以用於text/sentence classification,看這裡:http://emnlp2014.org/papers/pdf/EMNLP2014181.pdf

相比之下RNN也在自然語言處理方面有很多應用,例如LSTM,對於基於時間序列的text有不錯的結果。

最近在做一個比較實際的推薦系統的問題,為一些用戶推薦hotel,坑爹的是沒有rating。。只有一些其他的feature。為此,我設計了一個及其簡單的神經網(因為我壓根不知道哪個模型適合啊),把feature換成很多組非常稀疏的vector當做輸入,還在試驗中,但是目前效果並不理想。


推薦閱讀:
相关文章