BP神经网络的学习

本文详细介绍了神经网络的基本概念,包括其组成结构、向前传递算法及其计算过程,并解释了如何通过正则化避免过拟合。此外,还介绍了BP神经网络的工作原理及如何利用误差向量确定梯度下降的方向。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Programming Exercise 4:Neural Networks Learning

神经网络模型由输入层、隐藏层和输出层组成。每一层都能够看作是上一层(如果有)的输出层和下一层(如果有)的输入层。
先来介绍一下向前传递算法。如图1所示即为简单的三层神经网络模型向前传递算法的计算过程。我们可以a (L)  表示第L层单元的数据,与逻辑回归类似,a (L) =g(z (L) )  这样可以很容易看出哪一个分类是可能性最大的。需要注意的是,每一层的a (L)   在计算下一层的z (L+1)  时,应该加上偏移单元(bias unit),这和线性回归的常数项有些类似。
在神经网络每一层之间的计算时,我觉得难点在于对矩阵各行列意义的理解,如果理解不好的话,code的时候很容易产生矩阵大小不匹配相乘或想相加的问题。常见的问题是由于每一层Θ 的矩阵形式都不一样,必须很小心的注意每一层Θ 矩阵行列大小,由图也能看出,第L层Θ (L)  矩阵的维数为s L +1s L+1   ,因为行代表了下一层单元的个数,列代表上一层单元个数(由于存在偏移单元,因此+1)。
图 1 简单的三层神经网络模型

理解了如何向前传递参数之后,就能通过输出层数据来得到costfunction了。如图2所示。图2 costfunction
式子看上去很复杂,实际上并不难,两个求和符号最里面实际上就是逻辑函数的costfunction,只不过二分类问题变成了k分类问题。第一个求和符号就是将输出层(预测的结果)与实际分类每一位的差进行求和,例如:假设实际分类为5,即y=[0,0,0,0,1,0,0,0,0] T  ,而输出层为out=[0.1,0.2,0.1,0.1,0.9,0.1,0.1,0.1,0.1] ,那么求和结果就是sum(yout) ,这是对y和out向量误差的一个综合量。 第二个求和符号则是对m个训练集的误差进行求和,这和逻辑函数表达的方式一样,就不在此赘述了。

为了防止过拟合,可以通过正则化(regularized)的方法修改costfunction,然后进行模型训练。对于神经网络模型,正则化后的costfunction为:

列表内容
正则化项就是将每层的Θ 的每一项都平方求和(对每一项都惩罚的原因是,不能判断哪一项影响过大),需要注意的是,计算时要将偏移单元排除在外(一种约定)。

上述为向前传递算法的基本过程,下面开始介绍BP神经网络(Backpropagation neural networks )的过程,BP神经网络利用向前传递的算法得到的结果与训练值的误差,反向得到每一层的误差向量,最后根据每一层的误差向量确定梯度下降的方向。下面第一个式子代表最后一层的误差(此例为3层神经网络),第二个式子则代表误差向量反向的传播,具体推导暂时还没有学到。得到了每一层的误差向量δ L  以及向前传递算法中得到的a (L)  后,根据第三和第四个式子可以计算出整个模型的梯度方向。

BP神经网络下降梯度
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

得到了梯度方向,之后便是关于正则化、利用数值方法进行梯度的检查、以及matlab自带的fmincg函数求最值的方法,以后有时间再介绍了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值