深度函数式神经网络

来源:互联网 发布:中石油国际事业部 知乎 编辑:程序博客网 时间:2024/06/08 06:35

深度函数式神经网络

 

今天在查阅文献的时候,发现一篇最近的论文,觉得挺有研究的价值,就仔细读了一遍,然后记下了一些初步的理解。

 

这篇论文标题是Trainable back-propagated functional transfer matrices

原文可以在ArXiv下载https://arxiv.org/abs/1710.10403

 

这篇论文介绍的是一种深度神经网络模型,但是作者没有给它一个明确的名字,所以我暂时称它为深度函数式神经网络。这篇文章说的主要是:传统的深度神经网络使用权值作为神经元之间的连接,而这会限制深度神经网络的潜力,所以他们抖了个机灵,使用函数替代了权值。也就是说,我们一般来说都使用一个权值wij来表示这一层的第i个神经元和下一层的第j个神经元的连接强度。因为wij是实数,所以连接的强度是线性的,只能处理简单的分类问题。如果要处理复杂的分类问题,就要用非线性的激活函数。这也是为什么深度神经网络的前向传播公式是y = act(W * x + b),而在这个公式中一定要有act这个函数,而不能是单纯的y = W * x + b。而这篇论文提供了一个新的思路,他们认为,为了处理复杂的分类问题,除了改变激活函数以外,还有一种方法,就是改变神经元之间的连接。我们可以把公式中的W * x部分,替换成F(x),其中F是一个函数矩阵。函数矩阵的意思就是,F中的每个元素都是一个函数,可以是三角函数、多项式、激活函数、甚至可以是一个记忆细胞。也就是说,为了实现特定的功能,我们可以根据需要去自定义F中的函数,而不再受以往的限制。这样一来,模型就可以处理更复杂的分类问题。

 

作者还通过实验证明了反向传播算法(Back Propagation,BP算法)可以训练函数矩阵中的参数,而且函数式深度神经网络的深度可以达到10层以上。每个函数的参数可以有多个。我们都知道在传统的BP算法中,每一次迭代都对权值进行一次更新。同样的,对于函数矩阵,每一次迭代都对这些参数进行一次更新,也就是说BP的原理是可以兼容这个模型的。文章也给出了用于训练这些函数矩阵的BP算法,具体的公式和推导过程可以参考原文。

 

这篇文章用MNIST数据集做了实验。貌似作者是测试了20个不同的函数矩阵,网络层数设置为5或10,隐含层的神经元数量设置成128,然后在测试集上得到的图像识别正确率很多都在95%以上,有一部分可以达到97%以上。根据我以往在MNIST上面的实验,深度神经网络的正确率一般在95%到99%之间。所以这个结果应该是比较正常的。

 

此外还有一点比较有意思,就是作者认为函数矩阵也可以形成一个Recurrent的结构(大致上是这个意思),可以存储记忆信息。我们都知道循环神经网络(Recurrent Neural Network,RNN)是记忆存储在神经元中,特别是最近很流行的LSTM-RNN,也是专门设计了LSTM这样的单元用来存储记忆。而这篇文章中有一个实验,是把记忆存储在函数矩阵中。这种方法的优点就是,可以让信息的存储量增加。例如说有一个单层的神经网络,有100个输入节点和200个输出节点。如果把记忆存储在输出节点中,那就只能存储200个信号。而如果是存储在函数矩阵中,因为矩阵中一共有200*100=20000个记忆函数,所以可以存储的信号就是20000个!通过这种方式可以成倍地增加存储的信息量。

 

我个人是觉得这个模型挺有研究价值的。因为我们可以根据应用场景的不同,设计各种不同的函数矩阵,然后看看哪个的性能最好。理论上这个模型应该是可以兼容无数种不同的函数。但是作者也说了,并不是所有的函数都能收敛,而且随着隐含层层数的增加,训练会越来越困难。

 

之后要是有时间的话,会再深入研究一下这个模型。

 


 

转载请注明出处。

 

 

 

 

 

原创粉丝点击