一个神经科学工作者眼中的Alexnet(上)

Alexnet是这一拨深度神经网络在视觉识别上大规模应用的开端,2012年的时候在ImageNet上还有17%的错误率,短短几年时间,人们就把错误率刷到了3%(见ResNet),而且一篇2012年的文章到今年就有了超过1w的引用。

作为一个研究人类视觉的神经科学工作者,我几年前就粗略的读过这篇文章,直到最近几个月参加明尼苏达大学心理系这边以deep learning and human vision为主题的读书会,我才又捡起来认真读了一读。觉得想写一篇详细的东西来从一个神经科学工作的角度来讨论一下alexnet。以下仅仅是个人观点,抛砖引玉,有不对的地方希望大神纠正。

说具体内容之前,先说一个大原则,免得说神经科学家来蹭热点。

如果现在DNN的算法设计上和神经科学的一些东西有重合,不代表当初设计这些算法的人真的灵感来自于神经科学,也许是,也许也不是。请一定不要一厢情愿的认为这些东西就必须要一致。我个人一直坚持认为神经科学家们没必要老说机器学习的发展来源于神经科学的发现,没必要靠这个刷存在感。。。

先说DNN里面最常提起的: convolution和network input

如果各位看现在媒体介绍,看各个专家手里的ppt,说convolution neural network借鉴了人类大脑加工机制的,其中最重要的一条证据就是convolution的设计。这一条的确是和人类视觉神经元吻合,人类视皮层神经元,尤其是初级视皮层神经元(甚至到高级视皮层。。),每个神经元一般都只对一定视觉范围内的视觉刺激有反应。比如,这个神经元只对左边的刺激有反应,另一个神经元只对呈现在右边的刺激反应,这叫感受野(Receptive field)。这一条已经说得够多了,不细讲。

network input是指,每一个高层的神经元接受一群底层神经元的输入。这在神经科学上也很好理解,神经元之间由轴突连接,传递动作电位传递兴奋信号。一个高层神经元接受多个神经元的轴突信号,然后到达一定输入强度之后开始有spike产生。这个现象早就被神经科学家们发现了,相应的电流动作电位模型也比较成熟,最著名就是hodgkin huxley model,各位在知乎搜索这个关键词就能找到很多优秀的回答。

也许再加一条,因为人脑是多个层级脑区连接的,所以神经网络也要设计为很多层。

其他与神经科学相关的细节

绝大部分关于DNN和神经科学的联系的介绍,基本也就到以上几条为止,每次我看这种东西都会想,还有么还有么还有么?这也是我最近自己的一些研究中开始想的问题,所以才产生了以下的思考,想去深入探究以下一些算法细节。不仅仅是他们和神经科学之间的联系,也许还有很多区别。

首先,激活函数。

Alexnet里面明确写了,之前的人大多用sigmoid和tanh激活函数,都是非线性的。但是Alexnet用了ReLU,简单来说就是一个分段线性函数,即只在输入大于0的区间是线性的,输入小于0则强制设为0。有很多人解释这个满足的是神经元活动的稀疏性。我个人觉得满足稀疏性并不是Alexnet成功的主要原因。比如我把sigmoid或者tanh也分段截开,输入小于0强制为0,或者把sigmoid和tanh函数稍加平移以后再截断,按说也满足稀疏性,是不是就能取得类似的效果?我个人认为ReLU最主要的好处是在优化,因为线性梯度太好求了,而不是像sigmoid和tanh总有梯度近似0的地方。

但是真实神经元可不是线性的,几乎所有的发现,无论是动作电位还是对比度相应函数(contrast response function),都发现当输入很大的时候,神经元的发放不可能永远线性增长,必然有一个饱和的渐进线。所以真实的神经元其实和sigmoid还有tanh更接近,但是ReLU在优化上就是好用,再一次证明了DNN设计和神经科学不一定要一致。

其次,局部反应标准化(local response normalization)。

这一条我几乎从来没看到有人提到它背后的生理学意义是什么。Alexnet里面把每一个神经元的反应,都要和在同一位置的其他神经元的反应做二阶的标准化。在文中他是这么说的:

This scheme bears some resemblance to the local contrast normalization scheme of Jarrett et al. [11]

我并不知道如果取消这一步会不会能显著的损害网络的表现,但是这一点却对应了最近几十年来system neuroscience上面的重要发现。Normalization已经被证明可以解释非常多的非线性神经元加工现象。因为normalization的机制很灵活,这种divisive normalization其实描述的是神经元群体之前相互抑制作用,换句话说,虽然Alexnet并没有直接设置同层神经元之间的相互连接,但是normalization这个操作其实implicitly实现了在相同位置的神经元之间的相互抑制。试想相同位置的一组神经元当中,有一个神经元发放特别强,那么会导致公式下面分母很大,那么其余神经元经过normalization之后的反应就会减弱。

至于normalization在神经科学里面的其他应用,我可以随意列举几条,

normalization可以解释局部视觉神经元的对比度响应函数。

Heeger, David J. "Normalization of cell responses in cat striate cortex." Visual neuroscience 9.02 (1992): 181-197.

normalization可以用来解释注意大小和刺激大小之间的交互。

Reynolds, John H., and David J. Heeger. "The normalization model of attention." Neuron 61.2 (2009): 168-185.

normalization可以解释在多感觉整合的时候超加性(superadditive)和次加性(subadditive)。

Ohshiro, Tomokazu, Dora E. Angelaki, and Gregory C. DeAngelis. "A normalization model of multisensory integration." Nature neuroscience 14.6 (2011): 775-782.

normalization甚至可以用来解释高级认知比如决策的非线性过程。

Louie, Kenway, Mel W. Khaw, and Paul W. Glimcher. "Normalization is a general neural mechanism for context-dependent decision making." Proceedings of the National Academy of Sciences 110.15 (2013): 6139-6144.

normalization不仅仅是一个现象性模型,还有重要的理论意义, normalization这一步能够很好的消除神经元之间的二阶相关性,让信息表征更加的efficient。

Schwartz, Odelia, and Eero P. Simoncelli. "Natural signal statistics and sensory gain control." Nature neuroscience 4.8 (2001): 819-825.

在Normalization上做出最主要贡献的是NYU心理系著名视觉科学家David Heeger,他早年就是计算机视觉出身。他也因为这一系列的贡献前几年入选了美国科学院院士。他写过一篇很好的综述来详细的解释normalization为什么可以作为一项普适的神经计算过程。

Carandini, Matteo, and David J. Heeger. "Normalization as a canonical neural computation." Nature Reviews Neuroscience 13.1 (2012): 51-62.

Alexnet里面的normalization公式,用所有的局部神经元来作为分母,这个叫做normalization pool。Alexnet只包括了空间上临近位置的神经元,但在真实神经计算中更加灵活,可以是空间,可以是相同的特征之间,换句话说,normalization pool可以包括很多高维上的视觉特征,甚至在不同任务当中可以灵活调节。



下一篇继续讨论pooling, dropout和data augmentation

编辑于 2017-06-06 05:38