一、多层感知机与反向传播算法 #
1.1 单层感知机的问题 #
单层感知机(Rosenblatt)可以实现简单的分类问题,但不能解决异或问题。(异或逻辑运算从几何意义上讲是线性不可分的)
MLP引入了隐藏层,和非线性激活函数,被证明具有通用逼近能力。MLP的基本结构如下图所示,其中每一个小球就代表一个神经元结构。
图片来源:MLP的理解(CSDN)
1.2 基本BP算法 #
1.2.1 权值确定方法 #
在某种最优准则下,通过学习确定网络的权值$W_{kj}^{KJ}$和$W_{ji}^{JI}$。
有网络输出为:$o_k^K=f(net_k^K)$;
累加器输出为:$net_k^K=\sum\limits_{j=1}^{J}W_{kj}^{KJ}\cdot+o_j^J+b_k^K$
定义损失函数:$E=\frac{1}{2} \sum\limits_{k=1}^K\left(d_k-o_k^K\right)^2$
其中,$d_k$为输出层第k个神经元的期望输出,$o_k^K$为该神经元的实际输出。
后一个神经元与前一个神经元权值的关系如下,难点在于求出其中的微分项。
根据以上式子,由链式求导法则可得:
两式对照可得,本层误差信号 = 下一层误差信号累加和 * 本层激励函数的导数。
定义输出层第k个神经元的误差信号:$\delta_k=-\frac{\partial E}{\partial n e t_k^K}=\left(d_k-O_k^K\right)f^{\prime}\left(n e t_k^K\right)$
隐含层第j个神经元的误差信号为:$\delta_j=-\frac{\partial E}{\partial n e t_j^J}$
将$\delta_k$带入$-\frac{\partial E}{\partial W_{k j}^{K J}}$,再带入$W_{k j}^{K J}(n+1)$,得到
1.2.2 BP算法的特点 #
- 前馈式的:信号从前往后传播
- 误差从后往前传播
- 并行的:硬件实现速度快
- 层内无神经元连接