我看的论文不太多,但是特别喜欢看解释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当做输入,还在试验中,但是目前效果并不理想。


推荐阅读:
相关文章