BP神经网络原理与matlab实现

个人博客文章链接: http://www.huqj.top/article?id=166

BP神经网络,即“反向传播”神经网络,是一种被广泛运用的人工神经网络,它的思想就是通过反向传播不断调整模型权重,最终使得模型输出与预期输出的误差控制在一个小范围内。其中反向传播的算法(BP算法)是核心。

    一、模型架构

    一个普通的神经网络模型大致如下图:

    image.png

    其中第一层称为“输入层”,最后一层称为“输出层”,其他层都是“隐含层”,每一层由若干个神经元(也就是图中的小圆圈)组成,输入层的神经元数目就是训练数据每个X的维度值,或者说是特征数目,输出层的神经元数目就是数据集的因变量维度。隐含层的数目和每层的神经元个数是随意的,一般根据模型需要调节。相邻层之间通过权重相连,每一层的每个神经元都与下一层的每个神经元相连。

    BP神经网络训练的计算过程分为两种:前向传播反向传播

    前向传播就是从数据数据前向计算出最终结果的过程,这也是模型训练好之后应用的方式。反向传播是一种参数调节方法,它从前向传播计算出的最终结果与实际数据相比计算误差,并根据数学公式逆向推导各个神经元和权重的误差,然后更新权重,重复前向传播的过程。在前向传播的过程中,除了第一层,每个神经元都接受上一层的输入,然后使用一个 激励函数 输出值到下一层。

    二、数学原理以下公式都为矩阵表示形式

    BP神经网络,本质上也是一个参数调优的模型,其中参数就是各个权重。

    使用 a 表示每个神经元的输出, z 表示每个神经元的输入, W 表示权重, g(z) 表示神经元的激励函数,则前向传播的计算公式如下:

    a(1) = Xi        

    i 表示是第i组训练数据

    z(2) = W(1) * a(1)  Add(a0 = 1)        

    W 是一个 Sl+1 * (Sl  + 1) 的矩阵, Sk 表示是第 层神经元的数目,这里添加了一个值为1的偏置单元

    a(2) = g(z(2))

    g是激励函数,在分类问题中,通常使用sigmoid函数

    以此类推,即可完成前向传播的过程,直到计算到输出层。

 

    而对于反向传播(BP)的过程,实际就是求代价函数偏导数的过程,神经网络模型的代价函数如下:

    image.png

    为了计算这个代价函数的偏导数,我们定义了两个矩阵变量:δ 和 Δ,分别是二维和三维矩阵,δ 用来存储每个神经元的偏差,Δ 用来存储每个权重的偏差。

    反向传播的计算公式如下&#x

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值