2 构造神经网络
本章我们来学习如何构造一个人工神经网络,当然这一切都要从基本单位人工神经元说起。
2.1 构造一个神经元
本节我们就来设计一个人工神经网络的基本单位——人工神经元。依照刚才学习到的单个神经元来创造一个简单的数理图形,能够反映现实神经元的基本模型,注意这里是基本模型,是从基本功能角度去模拟,而不是从单个蛋白细胞的角度去模拟。
前面我们说到生物神经元的时候,着重提了神经元的输入部分(树突)、处理部分(细胞体)和输出部分(轴突)。
我们先来看看信号的输入部分树突(如图2-1所示),这里我们用p代表树突,多个输入信号源,多个树突,分别是从p1开始到pn;我们用w代表树突的强度权重。
图2-1 神经元的输入部分:树突
树突将收集到的刺激源往后传递,这里的刺激源可以是外界五感信号源,也可以将其他神经元细胞产生的结果(output)作为目前这个神经元的输入(input),这里我们统一称作刺激源,如图2-2所示。
图2-2 树突将信号传往信息处理机构(模拟生物层面上的细胞体)
在信号处理里面处理的是所有树突的信号源及相关强度的计算。
这种强度可以用以下简单公式来表示:
s =p1w1+p2w2+p3w3+……+pnwn
从以上公式中我们可以看到,只是将输入的信号p乘以强度w,然后依次累加得到s。实际上,信号处理是归纳了所有神经元输入结果,并将其作为一个结果输出,这样就方便我们处理了。
以上就是构造人工神经元的基本过程,这也是根据生物神经元的原理做的算法模拟,即接受刺激信号并汇总输出。非常简单,对不对!仅仅这样,我们设计的这个神经元还无法干活,还要加点东西,如图2-3所示。
图2-3 传递函数
我们要先理解什么叫传递函数?
在信号处理这端,我们假设有一个输出结果s(n),这个结果有可能是0到1这个区间的一个数字,也可以是任意一个可能大于0或者小于0的整数,然而对于一个分类运算来说,大多数时候,我们需要输出一个0或1,代表是或否,怎么处理呢?如果大于0,我们就把它作为1,如果小于0,我们就把它输出为0,这是最简单的传递函数的一种用法,你可以把它看作格式化输出结果,将结果变成我们可以使用的一种符号或数字。
表2-1所示为常用的传递函数。
表2-1 常用的传递函数
我们几乎完整地模拟了一个神经元的功能,为什么说几乎呢?
因为还有个非常容易漏掉的地方。
神经元细胞的处理我们用s模拟,我们只是简单地将信号做了一个加权处理,而神经元本身的特性我们没有模拟出来,我们给s加个内置的处理输入源,并用b模拟这种内部的强度,如图2-4所示。
图2-4 构造神经元
原来的公式是s=p1w1+p2w2+p3w3+pnwn,现在的s函数是s=p1w1+p2w2+p3w3+pnwn+b×1,然后将用传递函数f(s)将结果格式化输出。
以上成功的模拟了生物神经元,很简单吧!
我们构造的神经元正确吗?如何测试其正确性呢?能用现实中的一个问题来检验吗?