人工神经网络之连接权重和阈值

在matlab中通过net.IW和net.LW以及net.B(其中IW,LW,B均可小写)可以查看或者设置连接权重或阈值;对于一个三层结构的BP神经网络(一个输入层+两个神经元层:隐含层和输出层),一开始我与很多人一样不理解net.IW{1,1}为什么是表示由输入层到隐含层的连接权重,而net.LW{2,1}为什么表示由隐含层到输出层的连接权重?

后来通过查看训练好的神经网络的内部结构,终于明白了。在matlab命令行输入help network 再点击末尾doc network 可以查看net的详细描述。在matlab中,net.IW和net.LW都是元胞数组,此处的元胞数组可以理解为一个特殊的数据结构——以数组为元素的数组。假设一个元胞数组为a={[11,12;13,14],[1,2,3;4,5,6];[21,22,23;24,25,26],[31,32;33,34]},那么在matlab命令行窗口输入a{2,1}就可以得到数组[21,22,23;24,25,26]。

net有个结构属性(Architecture Properties)是net.numLayers,它是指神经网络中神经元层的数目(隐含层+输出层),需要注意的是输入层不是神经元层。该值的大小决定了net.IW和net.LW的维数,即net.IW是一个net.numLayers-by-1的元胞数组,而net.LW是一个net.numLayers-by-net.numLayers的元胞数组。为方便理解,下面通过实例说明。图-1是一个训练好的四层结构的BP神经网络,其结构是1-5-2-1,即一个输入层(仅一个变量),两个隐含层(第一个隐含层有5个神经元,第二个隐含层有2个神经元),一个输出层(仅一个神经元):

人工神经网络之连接权重和阈值_第1张图片

图-1


对于图-1所示的BP神经网络而言,此时net.numLayers=3,而net.IW和net.LW的结构如下图-2所示:

人工神经网络之连接权重和阈值_第2张图片

图-2

其中net.LW{i,j}(i,j=1,2,...,net.numLayers)表示由第j个神经元层到第i个神经元层的连接权重,尤其是net.LW{2,1}表示由第一个神经元层(即该BP神经网络中的第一个隐含层)到第二个神经元层(即该BP神经网络中的第二个隐含层)的连接权重,net.LW{2,1}表示由第二个神经元层(即第二个隐含层)到第三个神经元层(该BP神经网络中的输出层)的连接权重。net.IW{1,i}(i=1,2,...,net.numLayers)表示由输入层到第i个神经元层的连接权重,尤其是net.IW{1,1}(等同于net.IW{1})表示由输入层到第1个神经元层(即第一个隐含层)的连接权重。


对于图-1所示的BP神经网络而言,net.B的结构如下图-3所示:

人工神经网络之连接权重和阈值_第3张图片

其中net.B{i}表示第i个神经元层的所有阈值,尤其是net.B{2}表示第2个神经云层 (即该BP神经网络中的第2个隐含层)的阈值。


因此,对于一个三层的BP神经网络而言,net.IW{1,1}表示由输入层到隐含层的连接权重,而net.LW{2,1}表示由隐含层到输出层的连接权重。

你可能感兴趣的:(神经网络)