感知机
- 一、感知机简介
- 二、感知机模型
-
- [2.1 感知机的基本组成](#2.1 感知机的基本组成)
- [2.2 求和函数](#2.2 求和函数)
-
- [2.2.1 时间总合](#2.2.1 时间总合)
- [2.2.2 空间总合](#2.2.2 空间总合)
- [2.3 激活函数](#2.3 激活函数)
- [2.4 学习算法](#2.4 学习算法)
-
- [2.4.1 赫布学习规则](#2.4.1 赫布学习规则)
- [2.4.2 Delta学习规则](#2.4.2 Delta学习规则)
- [三、 结论](#三、 结论)
- 参考文献
一、感知机简介
M-P神经元模型因其对生物神经元激发过程的极大简化而成为神经网络研究的基础模型。然而,由于该模型仅支持二进制输入,并依赖于手动学习权重和偏置,因此在实际应用中,它的扩展性受到了限制,无法满足更复杂的学习任务。
1949年,唐纳德 ⋅ \cdot ⋅ 赫布在《行为的组织》中论述道,当神经元A的轴突足够接近并反复激发神经元B时,这两个神经元或其中一个神经元会发生某种生长过程或代谢变化,致使二者的关联性增强。在人工神经网络中,神经元之间的关联性由二者的连接权重表示。同步激发的两个神经元,二者的权重增加;反之,则权重减少。在人工神经网络的训练中利用该可塑性,可以在不使用外界监督的情况下,引导网络学习提取有用特征。
受赫布规则的启发,康奈尔大学心理学教授弗兰克·罗森布拉特于1958年基于M-P神经元模型提出了感知机模型。该模型不仅能够处理离散和连续数据,还能够通过感知机学习算法自动调整权重,这对后来的神经网络发展产生了深远影响。以下是单层感知机模型的示意图。
二、感知机模型
2.1 感知机的基本组成
感知机是神经网络的基本组成单元,其基本组成包括:
- 输入:感知机采用多个输入特征,每个特征代表输入数据的特征或属性;
- 权重:每一个输入神经元都与一个权重相关联,确定每个输入神经元对感知机输出的影响程度,在训练期间,这些权重会进行调整以学习最佳值;
- 偏置:在输入层增加偏置项主要用于调整激活神经元所需阈值,类似于改变神经元激活"起点",即使输入信号全为零,偏置项也能够使神经元产生一定的激活;
- 求和函数:感知机使用求和函数计算其输入的加权和;
- 激活函数:激活函数的主要作用对输出进行变换,使得输出落在一个特定的范围内(如阶跃函数的0和1,或者符号函数的1和-1);
- 输出:感知机的最终输出是由激活函数的结果决定。例如,在二元分类中,输出可能表示预测类别(0或1);
- 学习算法(权重更新规则):在训练过程中,感知机通过学习算法调整其权重和偏置。一种常见的方法是感知机学习算法,它根据预测输出于真实输出之间的差异来更新权重。
其中,求和函数、激活函数和学习算法,是感知机模型的核心。
2.2 求和函数
英国科学家查尔斯·斯科特·谢灵顿在其著作《神经系统的整合作用》中,详细讨论了神经系统如何整合信息,并引入了"时间总合"和"空间总合"的概念。
2.2.1 时间总合
与空间总合不同,时间总合指的是神经元在短时间内接收到重复的信号时,会将这些信号叠加起来。如果这些信号在时间上足够接近,它们的累积效应也可能足以触发神经元的动作电位。
2.2.2 空间总合
空间总合指的是神经元接收来自不同空间位置的多个突触输入,并将它们整合起来。如果这些输入信号的总和足够强大,神经元就会触发动作电位。这些输入可以来自多个不同的突触,并在神经元的树突或细胞体上分布。当这些突触信号同时到达时,它们会在神经元内部产生叠加效应。
谢灵顿提出的空间总合概念直接影响了人工神经网络中的加权求和机制。在生物神经元中,来自不同突触的信号可以被整合起来,并根据总和的强度决定是否产生动作电位。这个原理在人工神经元中通过对输入信号进行加权求和的方式加以体现,每个输入都乘以特定的权重,并将它们求和,再经过激活函数进行输出。这种机制是感知机以及更复杂的神经网络中的核心计算步骤。
2.3 激活函数
激活函数是神经元模型中不可或缺的组成部分。M-P神经元模型使用的是Heaviside函数作为激活函数,但在神经网络的实际应用中,还可以使用其他激活函数,如符号函数和Sigmoid函数。每个函数的表达式和对应的图像如下:
1. Heaviside 函数
Heaviside函数是阶跃函数,其输出为0或1,用于判断输入是否达到某个阈值。其表达式为:
H ( x ) = { 0 , x < 0 1 , x ≤ 0 H(x) = \begin{cases} 0, & x < 0 \\ 1, & x \leq 0 \end{cases} H(x)={0,1,x<0x≤0
函数图像:这是一个二值化函数,当输入小于0时输出0,大于等于0时输出1,具体函数图像如下所示。
python
def heaviside(x):
y = np.zeros(x.shape)
y[x < 0] = 0
y[x >= 0] = 1
return y
2. 符号函数 (Signum function)
符号函数是另一种常用的激活函数,它可以输出-1或1,用于二分类问题。其表达式为:
S i g n ( x ) = { − 1 , x < 0 1 , x ≤ 0 Sign(x) = \begin{cases} -1, & x < 0 \\ 1, & x \leq 0 \end{cases} Sign(x)={−1,1,x<0x≤0
函数图像:当输入小于0时输出-1,输入大于等于0时输出1,输出仅为两个离散值,具体函数图像如下所示。
python
def signum(x):
y = np.zeros(x.shape)
y[x < 0] = -1
y[x >= 0] = 1
return y
3. Sigmoid 函数
Sigmoid函数是常用于神经网络中的平滑激活函数,其输出为连续值,介于0和1之间,特别适合用于处理概率输出。其表达式为:
σ ( x ) = 1 1 + e − x \sigma(x)=\frac{1}{1+e^{-x}} σ(x)=1+e−x1
函数图像:Sigmoid函数的图像呈S形,在极端情况下(输入为负无穷或正无穷时)分别趋近于0或1,但从不过界,具体函数图像如下所示。
python
def sigmoid(x):
return 1 / (1 + np.exp(-x))
2.4 学习算法
感知机学习算法种类繁多,其中最著名且经典的当属赫布学习算法和Delta学习算法。
2.4.1 赫布学习规则
赫布学习算法是神经科学和人工智能中一种重要的学习规则,由加拿大心理学唐纳德 ⋅ \cdot ⋅ 赫布于1949年提出。作为一种无监督学习方法,因为它不需要外部的标签或反馈来指导,而是仅依赖于神经元活动的关联性。在人工神经网络中,赫布学习的数学表达形式如下:
w i = w i o l d + △ w i w_{i} = w_{i}^{old} + \triangle w_{i} wi=wiold+△wi
△ w i = x i y \triangle w_{i} = x_i y △wi=xiy
其中, △ w i \triangle w_{i} △wi 表示神经元 i i i 的权重变化; x i x_i xi 表示神经元 i i i 的输入; y y y 表示神经元的输出。
为了帮助理解赫布学习算法,以下是赫布学习过程的示意图,直观展示了该算法的典型案例。
2.4.2 Delta学习规则
Delta学习算法是Widrow和Hoff于1960年提出,是一种经典的学习算法,广泛应用于神经网络训练。该规则的基本思想是根据节点输出与期望输出之间的误差来调整权重,具体数学表达式如下:
w i = w i o l d + △ w i w_{i} = w_{i}^{old} + \triangle w_{i} wi=wiold+△wi
△ w i = ( y − y ^ ) x i \triangle w_{i} = (y - \hat{y}) x_i △wi=(y−y^)xi
其中, y ^ \hat{y} y^ 表示预测结果。
三、 结论
感知机算法解决了M-P模型二进制输入问题和人工手动调参问题,为深度学习的发展奠定了坚实的基础。
参考文献
[1] 张玉宏. 深度学习之美[M]. 北京: 电子工业出版社, 2018:164-178.