感知机理论上可以实现构建整个计算机系统,但问题是设定权重需要人工设定且很难找到合适的、符合预期的输入输出的权重值,所以,必须要找到一种自动化求解何理权重的方法,而神经网络就是一种从数据中学习得到权重的方法。
神经网络最简单的例子:
图中,隐藏层有时候也叫中间层,隐藏的意思就是和输入、出层对用户不可见。便于python实现,这里对输入层编号0,隐藏层编号1,输出层编号2。显然神经网络的结构类似于感知机,但神经网络如何传递信号?
回过头来看看感知机:
感知机中,是偏置,用于控制神经元被激活的容易度,
是各个信号的权重,用于控制各个信号重要度。把感知机的公式分项用一个函数
来改写下来,
,其中,
。
有点儿神经网络基础的童鞋已经看出来了,这里,会将输入信号的总和转化成输出信号,这种函数一般就是我们通常叫的activation function(激活函数),进一步改写公式:
如果要明确现实激活函数的计算过程可以用下面图来表示:
上图中,信号加权总和为节点a,该节点被激活函数转化为节点y。
总而言之,激活函数区别是朴素感知机和神经网络的关键点。感知机没有统一的算法,朴素感知机一般都是单层网络(激活函数用了阶跃函数),多层感知机是指神经网络,用sigmoid函数或者其他平滑激活函数的多层网络。