神经网络的结构和原理入门

神经网络的结构,简单示意图如下:

神经网络的结构和原理入门

神经网络的关键是中间的连线,而不是节点,工作时,上一层的**值将决定下一层的**值,所以,神经网络的核心在于,一层**值是通过怎样的运算,算出下一层**值的,某种程度上是模仿的生物大脑的工作机制。某些神经元的激发,会触发另一些神经元的激发。当被训练好之后,就可以识别固定的模式了。

简单来说,第一层的输入图形会导致第二层的某种图形模式,然后继续触发第三层,第四层。。。,直到最后一层。有点类似于链式反应,不过链式反应无法控制,速率越来越快,但神经网络最终都会收敛到一个或者几个有意义的结果输出。

数学原理如下:

Size 28*28的图片含有像素点784各,构成输入向量

神经网络的结构和原理入门

假设第一层的第i个节点对第二层的j的节点的权重为:

 

             神经网络的结构和原理入门

         神经网络的结构和原理入门

这样计算出来的神经元节点的值可以是任意大小,需要做归一化处理,常用的归一化函数是sigmoid函数,它可以将任意的数值映射为区间 [0,1]上的值,实现归一化处理,类似于将整个实轴压缩到(0,1)区间。

                                                                       神经网络的结构和原理入门

其函数图象为:

 神经网络的结构和原理入门

简而言之,它能把非常大的负值转换为接近于0,又能把非常大的正值转换为接近于1,在0值附近则是平稳增长。

所以,实际上神经元**值应该要在对上面的计算结果取一个sigmoid变换,通常还要再加上一个偏置换阈值。

                       神经网络的结构和原理入门

              神经网络的结构和原理入门

 转换为一般形式是:

                                                        神经网络的结构和原理入门

这种形式简单很多,而且更有代表性。

传递矩阵为

神经网络的结构和原理入门

W矩阵第一维代表后层的节点,第二维标识前层的节点.

            神经网络的结构和原理入门

神经网络既可以看成参数的容器,也可以从整体上看成一个函数,多输入多输出的函数,或者是一种集合的映射。

只是从参数角度看,参数实在太多,而且还有大量的矩阵类,归一化,累乘累加运算,导致需要极大的算力,普通的CPU根本难以承受。

看成函数的话,每一层的输入时上一层神经元的输出(除了第一层是数据输入外),而每一层的输出又成为了下一层的输入。整体上看,输入经过网络的处理后,变成了输出,例如,上面的网络可以看成如下函数:

                                         神经网络的结构和原理入门

只是这个函数过于复杂,以上面的网络为例,它使用了

    784*12 + 12*12 + 12*10=9,672  

权重,以及     

        12 + 12 + 10 = 34

个偏置。

总共9,672 + 34=9706个参数

来识别图形。

不过话说回来,识别图形本身就是很复杂的运算,这货不复杂还真不行。

关于神经网络是如何获取合适的权重和偏置的,就涉及到训练了。

神经网络的变种非常多,典型的:

卷积神经网络(convolutional neural network)适合于做图像识别

长短期记忆网络(long-short term memory network) lstm适合于做语音识别.