下面图表的左边展示了一个生物学的神经元,右边展示了一个常用的数学模型。乍一看还是有点相似的,事实上也是,人工神经网络中的神经元也有受到生物神经元的启发。总结要点:
-
在生物的神经元(也就是左图)中,树突将信号传递到细胞体,信号在细胞体中相加。如果最终之和高于某个阈值,那么神经元将会
激活
,向其轴突输出一个峰值信号,
注意这里输出是一个脉冲信号!
-
在数学计算模型(也就是右图)中,首先将输入
进行加权求和加上偏置
,得到待激励值,然后将该值作为输入,输入到
激活函数
中,最后输出的是一个
激励后的值
,这里的激活函数可以看成对生物中神经元的激活率建模。由于历史原因,激活函数常常选择使用
sigmoid函数 ,
当然还有很多其他激活函数,下面再仔细聊!
-
需要注意:
1.一个神经元可以看成
包含两个部分
,一个是对输入的加权求和加上偏置,一个是激活函数对求和后的激活或者抑制。2.注意生物中的神经元要复杂的多,其中一个是生物中的输出是一个脉冲,而现在大多数的数学模型神经输出的就是一个值,当然现在也有一些脉冲人工神经网络,可以自行了解!
-
比如基础的逻辑回归,结合上面的神经元知识,可以发现,逻辑回归就是激活函数是
sigmoid
的单层简单神经网络。也就是说,只要在神经元的输出端有一个合适的损失函数,就能让单个神经元变成一个线性分类器。因此说,
那些
线性的分类器本身就是一个单层神经网络
-
但注意,对于非线性的模型:
SVM和神经网络走了两条不同的道路:神经网络通过
多个隐层的方法来实现非线性的函数,有一些理论支持(
比如说带隐层的神经网络可以模拟任何函数
),但是目前而言还不是非常完备;SVM则采用了kernel trick的方法,这个在理论上面比较完备(RKHS,简单地说就是一个泛函的线性空间)。
两者各有好坏,神经网络最近的好处是网络设计可以很灵活,有很多的trick&tip,很多理论都不清不楚的;SVM的理论的确漂亮,但是kernel设计不是那么容易,所以最近也就没有那么热了。