一、神经元(M-P)模型
1943 年,美国神经生理学家沃伦·麦卡洛克( Warren McCulloch ) 和数学家沃尔特 ·皮茨(Walter Pitts )对生物神经元进行建模,首次提出了一种形式神经元模型,并命名为McCulloch-Pitts模型,即后来广为人知的M-P模型。
在M-P模型中,神经元接受其他n个神经元的输入信号(0或1),这些输入信号经过权重加权并求和,将求和结果与阈值(threshold) θ 比较,然后经过激活函数处理,得到神经元的输出。
M-P 模型可以表示多种逻辑运算,如取反运算、逻辑或、逻辑与。
网络结构
人工神经网络由神经元模型构成,这种由许多神经元组成的信息处理网络具有并行分布结构。
其中圆形节点表示一个神经元,方形节点表示一组神经元。
二、感知器、多层感知器
单层感知器
1958 年,罗森布拉特( Roseblatt )提出了感知器,与 M-P 模型需要人为确定参数不同,感知器能够通过训练自动确定参数。训练方式为有监督学习,即需要设定训练样本和期望输出,然后调整实际输出和期望输出之差的方式(误差修正学习)。
其中,x 为训练样本,α 为学习率,r 为期望输出,y 为实际输出。
感知器权重调整的基本思路:
- 当实际输出 y 与期望输出 r 相等时,w 和 θ 不变
- 当实际输出 y 与期望输出 r 不相等时,调整 w 和 θ 的值
下面给出感知器模型的训练过程
多层感知器
单层感知器只能解决线性可分问题,而不能解决线性不可分问题;为了解决线性不可分问题,我们需要使用多层感知器。
多层感知器指的是由多层结构的感知器递阶组成的输入值向前传播的网络,也被称为前馈网络或正向传播网络。
以三层结构的多层感知器为例,它由输入层、中间层及输出层组成
- 与M-P模型相同,中间层的感知器通过权重与输入层的各单元相连接,通过阈值函数计算中间层各单元的输出值
- 中间层与输出层之间同样是通过权重相连接
三、BP算法
多层感知器的训练使用误差反向传播算法(Error Back Propagation),即BP算法。BP算法最早由沃博斯于1974年提出,鲁梅尔哈特等人进一步发展了该理论。
BP算法的基本过程
- 前向传播计算:由输入层经过隐含层向输出层计算网络输出
- 误差反向逐层传递:网络的期望输出与实际输出之差的误差信号由输出层经过隐含层逐层向输入层传递
- 由“前向传播计算”与“误差反向逐层传递”的反复进行网络训练过程
BP算法就是通过比较实际输出和期望输出得到误差信号,把误差信 号从输出层逐层向前传播得到各层的误差信号,再通过调整各层的连接权重以减小误差。权重的调整主要使用梯度下降法:梯度下降法
激活函数
通过误差反向传播算法调整多层感知器的连接权重时,一个瓶颈问题就是激活函数:
- M-P 模型中使用阶跃函数作为激活函数,只能输出 0 或 1,不连续所以不可导。
- 为了使误差能够传播,鲁梅尔哈特等人提出使用可导函数Sigmoid作为激活函数
Sigmoid函数的导数:
其他常见的激活函数:ReLU (Rectified Linear Unit,修正线性单元)和tanh等
激活函数的性质
- 连续并可导(允许少数点上不可导)的非线性函数
- 激活函数及其导函数要尽可能的简单
- 激活函数的导函数的值域要在一个合适的区间内
BP算法示例
个人感觉这篇博客对BP算法示例的讲解更加清晰:深度学习之BP算法
优化问题
难点:
- 参数过多,影响训练
- 非凸优化问题:即存在局部最优而非全局最优解,影响迭代
- 梯度消失问题,下层参数比较难调
- 参数解释起来比较困难
需求:
- 计算资源需求大
- 数据量的需求大
- 算法效率要好:即收敛快
非凸优化问题:
梯度消失问题: