二.嚼烂python神经网络编程理论篇-阅读笔记Four矩阵简化参数运算

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_35289736/article/details/93912374

原理解析与基础知识

2. 微观上:

2.6 在神经网络中追踪信号:

我们尝试使用只有两层、每层两个神经元的较小的神经网络,来演示神经网络如何运作,如下图所示。
在这里插入图片描述
让我们想象一下,两个输入值分别为1.0和0.5。这些值输入到这个较小的神经网络,如下图所示。
每个节点使用激活函数,将输入转变成输出。我们还将使用先前看到的S函数y = 1/(1 + e−x ),其中神经元输入信号的总和为x,神经元输出为y。
权重是什么?权重的初始值应该为多少?这是一个很好的问题。让我们使用这些随机权重:
在这里插入图片描述
在这个小型的神经网络中,由于连接每一层中两个节点的组合就只有四种连接方式,因此只有四个权重。下图标出了我们当前所知的所有数字。
在这里插入图片描述
第一层输入层很容易,此处,无需进行计算。
接下来的第二层,我们需要做些计算。对于这一层的每个节点,我们需要算出组合输入。还记得S函数y = 1 /(1 + e-x)吗?这个函数中的x 表示个节点的组合输入。此处组合的是所连接的前一层中的原始输出,但是这些输出得到了链接权重的调节。下图就是我们先前所看到的这幅图,但是现在,这幅图包括使用链接权重调节输入信号的过程。
在这里插入图片描述
x = (第一个节点的输出链接权重)+(第二个节点的输出链接权重)
x =(1.0 * 0.9)+(0.5 * 0.3)
x = 0.9 + 0.15
x = 1.05
现在,我们已经得到了x=1.05,这是第二层第一个节点的组合调节输出。最终,我们可以使用激活函数y = 1 /(1 + e -x)计算该节点的输出。你可以使用计算器来进行这个计算。答案为y = 1 /(1 + 0.3499)= 1 /1.3499。因此,y = 0.7408。这个工作真是太伟大了!现在,我们得到了神经网络两个输出节点中
的一个的实际输出。
同理可得第二个输出节点,如下图显示:
在这里插入图片描述
从一个非常简化的网络得到两个输出值,这个工作量相对较小。对于一个相对较大的网络,我不希望使用手工进行计算!好在计算机在进行大量计算方面表现非常出色,并且不知疲倦和厌烦。

2.7 矩阵的运用:

在这里插入图片描述
这就是一个矩阵,它就是一张表格或一个数字网格,与下面大小为“2
乘以3”的示例矩阵一样。
在这里插入图片描述
下面是两个简单矩阵相乘的一个示例。
在这里插入图片描述
在这里插入图片描述
见证奇迹的时刻到来了!
在这里插入图片描述
这真的非常有用啊!
为什么呢?因为我们可以使用矩阵乘法表里所有计算,计算出组合调节后的信号x,输入到第二层的节点中。我们可以使用下式,非常简洁地表示:
X = W•I
此处,W是权重矩阵,I是输⼊矩阵,X是组合调节后的信号,即输入到第二层的结果矩阵。矩阵通常使用斜体显示,表明它们是矩阵,而不是单个数字。
理论已经足够了,现在,让我们看看这如何在一个真实实例中工作。这一次,我们将使用3层、每一层有3个节点的、稍大一点的神经网络。

2.8 使用矩阵乘法的三层神经网络实例:

下图显示了具有3层、每层具有3个节点的神经网络实例。为了保证图的清晰,我们并没有标上所有的权重。
在这里插入图片描述
第一层为输入层,最后一层为输出层,中间层我们称之为隐藏层
我们演示一下图中所描述的实例网络。我们观察到了3个输入是0.9、0.1和0.8。因此,输入矩阵I为:
在这里插入图片描述
图中显示了这个神经网络的一些权重,但是并没有显示所有的权重。下图显示了所有的权重,同样,这些数字是随机列举的。在这个实例中,权重没有什么特殊的含义。
在这里插入图片描述
但是等等,为什么这个W的下标我们写的是“input_hidden”呢?这是因为W input_hidden是输入层和隐藏层之间的权重。我们需要另外个权重矩阵来表示隐藏层和输出层之间的链接,这个矩阵我们称之为W hidden_output。
在这里插入图片描述
让我们一起继续算出输入到隐藏层的组合调节输出值。我们应该给这个输出值起个名称,考虑到这个组合输出是到中间层,而不是最终层,因此,我们将它称为X hidden。
X hidden = W input_hidden • I
在这里插入图片描述
让我们可视化这些输入到第二层隐藏层的组合调节输入。
在这里插入图片描述
在X hidden层中的元素上应用S函数,输成中间隐藏层输出矩阵。
在这里插入图片描述
在这里插入图片描述
我们计算出了中间层的输出值。这个过程是非常清晰的,也就是应用激活函数到中间层的组合输入信号上。让我们使用这个新信息,更新下图。
在这里插入图片描述
我们如何处理通过第三层的信号呢?我们可以采用与处理第一层信号相同的方式进行处理,这没有任何实质的区别。我们仍然可以得到第三层的输入信号,就像我们得到第二层的输入信号一样。我们依然使用激活函数,使得节点的反应与我们在自然界中所见到的一样。
使用同样的方式计算出这个矩阵,这样我们得到了最后一层输出层的组合调节输出信号。
在这里插入图片描述
现在,更新示意图,展示我们的进展,从初始输入信号开始,前馈信号,并得到了最终层的组合输入信号。
在这里插入图片描述
剩下的工作就是应用S激活函数,这是很容易的一件事情。
在这里插入图片描述
我们成功追踪了神经网络中的信号,从信号进入神经网络,通过神经网络的各层,并得到了最终输出层的输出信号。
下一步,将神经网络的输出值与训练样本中的输出值进行比较,计算出误差。我们需要使用这个误差值来调整神经网络本身,进而改进神经网络的输出值。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_35289736/article/details/93912374