对于单个神经元来说,一般结构如下:
其中包括以下几个模块:
- 输入 input
- 权重 weights
- 偏置 bias
- 求和计算 sum
- 激活函数 activation
从单个神经元推广到更复杂的神经网络的模型,都少不了以上的几个模块,下面我们分别介绍一下以上的几个模块。
神经元的输入也就是我们要喂给神经元什么数据,如上一小节中提到的房子信息,对于输入神经元的数据,一般是会有好多个特征,如上图中的$$x_1,x_2,x_3$$可以分别代表房子面积,房子采光好不好,房子是不是挨着街道。
权重代表输入数据中每个特征所占的比重,例如房子价格肯定会与房子面积占有很大关系,那么房子面积所对应的权重$$w_1$$就会相对大。
对于偏置的解释有很多种,但是我较为认同的是偏置代表一种神经元的临界状态。一定是输入信号大于某个临界值时,神经元细胞才会处于兴奋状态,这个偏置$$b$$实际就是那个临界值。
如果将上面公示转变为矩阵运算则表示为
经过求和之后,我们想要知道有多少信息是要传递下去饿,这个可以通过激活函数来控制。
看以下的例子:
展开:
如果我们不运用激活函数的话,则输出信号将仅仅是一个简单的线性函数。线性函数一个一级多项式。线性方程是很容易解决的,但是它们的复杂性有限,并且从数据中学习复杂函数映射的能力更小。一个没有激活函数的神经网络将只不过是一个线性回归模型罢了,不能解决现实世界中的大多数非线性问题。
没有激活函数,我们的神经网络将无法学习和模拟其他复杂类型的数据,例如图像、视频、音频、语音等。这就是为什么我们要使用人工神经网络技术,诸如深度学习,来理解一些复杂的事情,一些相互之间具有很多隐藏层的非线性问题。
- 一个神经元可以有多个输入。
- 一个神经元只能有一个输出,这个输出可以同时输入给多个神经元。
- 一个神经元的$$w$$的数量和输入的数量一致。
- 一个神经元只有一个$$b$$。
-
$$w$$ 和$$b$$有人为的初始值,在训练过程中被不断修改。 -
$$A$$ 可以等于$$Z$$,即激活函数不是必须有的。 - 一层神经网络中的所有神经元的激活函数必须一致。