Deep Learning Notebook 2:单隐藏层神经网络搭建

本文详细介绍如何从零开始搭建一个具有单隐藏层的神经网络结构。内容涵盖网络结构定义、参数初始化、前向传播、损失计算、反向传播及权值更新等核心步骤。

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

 本篇主要介绍从零开始搭建一个具有单隐藏层的神经网络结构

       在笔记1中我们搭建了一个不含隐藏层的简单神经网络模型,本节我们将搭建一个包含单个隐藏层的神经网络模型,神经网络模型搭建的基本思路如下:

  • 定义网络结构(指定输入层、隐藏层和输出层的大小)

  • 初始化模型参数

  • 循环操作:执行前向传播、计算损失、执行反向传播、权值更新

01

定义网络结构

       假设 x 为神经网络的输入特征矩阵, y 为标签向量,则含有单个隐藏层的神经网络结构如下图所示:

6cdb9a327201b317316928568788ca36.png

       网络结构的函数定义如下:

9219e9ad78c8b9e341aa17ef44d25028.png

       其中,输入层和输出层的大小分别与 X 和 Y 的shape有关,而隐藏层的大小可以通过我们手动指定,这里我们指定隐藏层的大小为4。

02


初始化模型参数

       假设 W1 为输入层到隐藏层的权重数组,b1 为输入层到隐藏层的偏置数组,W2 为隐藏层到输出层的权重数组, b2 为隐藏层到输出层的偏置数组。参数初始化函数可以按如下方式定义:

e6b491558e97d608e9afed9b1b9e3cb2.png

       其中对权值的初始化我们利用了numpy中的生成随机数的模块 np.random.randn ,偏置的初始化则使用了 np.zeros 模块。通过设置一个字典进行封装并返回包含初始化参数之后的结果。

03


前向传播

       在定义好网络结构并初始化参数完成之后,就要开始执行神经网络的训练过程了。而训练的第一步则是执行前向传播计算。假设隐藏层的激活函数为tan函数,输入层的激活函数为 sigmoid 函数。则前向传播计算表示为:

65b2731df9fe7af5ad4dfee7aa1b405a.png

       定义前向传播函数为:

d999e92c96908e7a577a9d53604f5894.png

       从参数初始化结果字典中取到各自的参数,然后执行一次前向传播计算,将前向传播计算的结果保存到 cache 字典中,其中 A2 为经过Sigmoid激活函数激活后的输出层的结果。

04


计算当前训练损失

       前向传播计算完成后我们需要确定当前参数执行计算后的输出与标签值间的损失大小,计算损失采用交叉熵损失:

81657c0b73368f2c7c5ec885a3933186.png

       定义计算损失函数为:

bd6b7287aae501c01f3c91e5ad4ae0a0.png

05


执行反向传播

       当前向传播和当前损失确定以后,就需要继续执行反向传播过程来调整权值,中间涉及到的各个参数的梯度计算,具体如下图所示:

c874cf2ecf96cef90561b361d526b423.png

       根据上述梯度计算公式定义反向传播函数:

608f576bf7b69ac264ddce4c6289083d.png

    将各参数的求导计算结果放入字典 grad 进行返回。

    在机器学习中,当所学问题有了具体的形式之后,机器学习就会形式化为一个求优化的问题。不论是梯度下降法、随机梯度下降、牛顿法、拟牛顿法抑或是Adam之类的高级的优化算法。

06


权值更新

        迭代计算的最后一步就是根据反向传播的结果来更新权值了,更新公式如下:

c12471f0447505809b92b33e2ed7629e.png

        由该公式可以定义权值更新函数为:

ef4412accd4f57a1fbb2f45ea321f941.png

       这样,前向传播,计算损失,反向传播,权值更新的神经网络训练过程就部署完成了。接下来我将定义一个神经网络模型将各个模块组合起来,具体如下:

289512bef2dc85a3716d296a689d9ec0.png

参考:

https://www.cnblogs.com/rongyux/p/7742152.html

欢迎关注

9d30c825977a4fb894a983ba5548c80c.jpeg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值