[DataAnalysis]机器学习算法——BP神经网络原理简介

M-P神经元模型

神经元接收到来自n个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接进行传递,神经元接收的总输入值将于神经元的阈值进行比较,然后通过“激活函数”处理以产生神经元的输出。

感知机与多层网络

感知机由两层神经元组成,输入层接收外界输入信号后传递给输出层,输出层是M-P神经元。

感知机能容易地实现与、或、非运算

感知机只能解决线性可分问题。要解决非线性可分问题需要使用多层功能神经元。输出层和输入层之间的一层神经元,被称为隐藏层,其中隐藏层和输出层神经元都是拥有激活函数的功能神经元。

多层前馈神经网络

1、每层神经元与下一层神经元全互连

2、神经元之间不存在同层连接

3、神经元之间不存在隐层连接

神经网路学习的内容

1、连接权

2、阈值

误差逆传播算法(BP算法)

给定训练集D=\{(x_1,y_1),(x_2,y_2),...(x_m,y_m)\},x_i\in \mathbb{R}^d,y_i\in \mathbb{R}^l,即输入示例由d个属性描述,输出l维实值向量。

下面给出具体的一个例子:

其中输出层第j个神经元的阈值用\theta _j表示,隐藏层第h个神经元的阈值用\gamma _h表示。

1、模型评价

\hat y_j^k=f(\beta_j-\theta_j)

均方误差:E_k=\frac{1}{2}\sum_{j=1}^l(\hat y_j^k-y_j^k)

2、模型参数

输入层到隐藏层的d*q个权值、隐藏层到输出层的q*l个权值、q个隐藏神经元的阈值、l个输出层神经元的阈值。

3、参数估计方法

任意参数v的更新估计式为:

v\leftarrow v+\triangle v

BP神经网络基于梯度下降,以目标的负梯度方向对参数进行调整,对误差E_k=\frac{1}{2}\sum_{j=1}^l(\hat y_j^k-y_j^k),给定学习率\eta,以w_{hj}为例,有:

\triangle w_{hj}=-\eta \frac{\partial E_k}{\partial w_{hj}}

w_{hj}\leftarrow w_{hj}+\triangle w_{hj}

4、学习率\eta

学习率\eta\in (0,1),控制着算法每一轮迭代的更新步长,若太大则容易震荡,若太小则收敛速度又过慢。

5、目标函数

BP算法的目标函数是最小化训练集D上的累计误差。

E=\frac{1}{m}\sum_{k=1}^mE_k

防止BP神经网络过拟合的方法

1、early stopping:

将数据分成训练集和测试集,训练集用来计算梯度、更新连接权和阈值,验证集用于估计误差,当训练集误差降低但测试集误差升高则停止更新。

2、正则化:

在目标函数中添加描述神经网络复杂度的部分。

E=\lambda \frac{1}{m}\sum_{k=1}^mE_k+(1-\lambda)\sum_iw_i^2

猜你喜欢

转载自blog.csdn.net/TOMOCAT/article/details/82462692