MindSpore循环神经网络
一. 神经网络的组成
神经元模型:首先简单的了解以下构成神经网络的最基础单元:神经元。每个神经元与其它神经元相连,处于激活状态时,就会向相连的神经元发送相应信号。从而改变其它神经元的状态。如果某个神经元的信号超过某个阈值。那么将被激活,再接着发送给其它神经元。如图1所示:
图1:神经元结构
神经网络的任何神经元都可以表述为上述的形式。该单元主要由输入变量、带权参数和激活函数组成。首先是x1,x2,x3带权重的输入变量,该变量的取值来自前面一层所有变量与权重的乘积,然后再求和,在数学上表示为下式:
其中,x为自由的输入变量,xl为当前l层,这里的累加求和为前面一层所有变量与权重的乘积,n为神经元个数。在实践当中,神经网络的输入层由训练样本给定。隐含层和输出层的x取值由前一层计算得到。其中b为偏置参数。
激活函数:理想中的激活函数是如图2所示的跃迁函数,将输入值映射到O或1,很直观的1对应着神经元激活状态,0则表示神经元处于失活状态。然而由于跃迁函数不连续且非光滑(无法完美表达大脑神经网络的连续传递过程),实际常用Sigmoid函数作为激活函数。典型的Sigmoid函数如图3所示,把可能的数压缩进(0,1)输出值之间,又名挤压函数(squashing function)。
图2:跃迁函数图
图3:sigmoid函数图
将许多这样的神经元按照一定的层次结构组织起来,就得到了人工神经网络。发现这个模型是由许多个函数不断嵌套而成。
感知机与多层网络:输入层接收外界的输入信号然后传递给输出层,输出层为逻辑单元,图4中的感知机有三个输入:x1、x2、x3。通常,可以根据数据的维度设置数量。这里是一种计算输出的规则,引入了权重(weight),w1,w2,…,wj等实数来表示各个输人对于输出的重要程度。
图4:多层感知机结构图
神经元的输出是0或者l,分别代表未激活与激活状态,由加权和的值是否小于或者大于某一个阈值(threshold value)决定。与权重一样,阈值也是一个实数,这是神经元的一个参数。使用更严密的代数形式来表示:
对于上面决策的式子,基本的思想就是:这是一个通过给每个维度数据赋予不同权重从而做出决策的机器,就可以判断出该事件可不可行。也需要通过调整权重和阈值的大小,得到不同的决策模型。
很显然,感知机不能完全模拟人类的决策系统。但是,一个由感知机构成的复杂网络能够做出更加精细的决策,可解释得通的。在图5所示这个网络中,第一层感知机,通过赋予输入的权重,做出三个非常简单的决策。第二层感知机呢?每一个第二层感知机通过赋予权重给来自第一层感知机的决策结果做出决策。通过这种方式,第二层感知机可以比第一层感知机做出更加复杂,更高层次抽象的决策。第三层感知机能够做出更加复杂的决策。通过这种方式,一个多层网络感知机可以做出更加精细的决策。
图5:多层感知机网络
图5网络最左边的是输入层神经元,用于接收外界输入信息,中间为隐藏层,对信号进行一定加工与转换,最右边为输出层神经元,最终结果由输出层神经元输出表示。因此,通常被称之为两层网络。一般情况下,只需要包含隐藏层,即可称为多层网络。神经网络的学习过程,就是根据训练数据来调整神经元之间的“权重”,以及每个功能神经元的阈值。
设计网络的输入层通常是非常直接的。例如,,要尝试识别一张输入图像是否有“1”。很自然的,,可以将图片像素的强度进行编码作为输入层。如果图像是64×64的灰度图.需4096=64×64