机器学习--学习笔记(三)--神经网络

本文介绍了神经网络的基础知识,包括模型结构、前向传播预测和后向传播训练算法。通过实例解析了神经网络的预测计算过程,并详细阐述了后向传播中误差的计算和权重更新规则。最后提到了梯度检查的重要性,确保训练过程的准确性。

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

1.神经网络模型

       神经网络由一个输入层、输出层以及一个或多个隐藏层组成,模型图如下所示。

      

                                                 图1

其中,Layer1为输入层,Layer2为隐藏层,Layer3为输出层。

 

2.预测:前向传播算法

      

如果把输入层设为第1层,则第1层隐藏层为第2层,以此类推至输出层。层与层之间的连线具有权重值,设第i层到第i+1层的权重值向量为θ(i),a(i)为代表第i层各个单元值的向量,取z(i)= θ(i)*a(i),则a(i+1)=g(z(i)),其中a0(i)=1,我们称之“bias 变量”;g(z)是sigmoid function, 其公式为g(z)=1/(1+exp(z))。最后可以根据模型对输入数据做预测。以图1所示模型为例,计算公式如下:

 

3.训练:后向传播算法

取损失函数如下:


其中y(i)是数据集中第i个样本的类别向量,例如数据集共有3个类别,则y(i)=[1, 0, 0]T或[0, 1, 0]T或[0, 0, 1]T ,分别表示对应样本的类别为第1、2、3类。

δj(l)=l层第j个单元的错误值,则对于每一层的错误值计算方法如下(以含2个隐藏层的神经网络模型为例):

对于输出层

δ(4)=a(4)-y

对于隐藏层

δ(3)=(θ3Tδ(4).*g(z(3))

δ(2)=(θ(2Tδ(3).*g(z(2))

输入层没有所谓错误值,所以不需要计算δ(1)。其中,g(z(i))=a(3).*1- a(3))。计算出δ后,按以下步骤可以求出

①   设Δij(l)=0(对所有l,i,j

②   i=1mm为训练样本数):

a1=x(i)

使用前向传播算法对l=2,3,…,La(l)

③   用前面介绍的方法计算各层的错误值

④   取Δij(l)=Δij(l)+aj(l)δi(l+1)

⑤   Dijl=1/m*Δij(l)+λθij(l)  if j ≠ 0

Dijl=1/m*Δij(l)  if j = 0

⑥ 

最后,我们取θij(l)ij(l) – α*i=1mj=1m,重复上述前向传播、后向传播过程直至损失函数满足终止条件,这样我们就完成了神经网络模型的训练过程。

 

4.梯度检查

     为了保证正确计算了,我们可以使用以下方法对其进行检验:

     取极小量ε,用(J(θijl+ε)-J(θij(l)-ε)) / 2*ε)作为的近似量,比较训练过程求得的与近似量是否真的近似,如果相差太大说明训练过程有误,如果近似则记得训练时使用训练过程所得值,而不是近似量,原因之一是近似量的计算效率不如前者高。

 

1:初始化θ时,应该随机初始化,从而保证θl不由同一个值构成,因为可以证明的是由同一个值构成的θ(l)会导致第l层的单元之间(除了“bias单元)是一致的。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值