当前位置: 首页 > news >正文

吴恩达深度学习笔记第三周:手把手推导单隐层神经网络的前向与反向传播

吴恩达深度学习笔记第三周:手把手推导单隐层神经网络的前向与反向传播

在Coursera的深度学习专项课程中,吴恩达教授将神经网络的基础知识拆解为易于消化的模块。但对于真正想掌握其数学本质的学习者来说,仅观看视频远远不够。本文将以单隐层神经网络为例,带你用纸笔一步步推导矩阵运算与梯度计算的全过程,这是理解更复杂架构的必经之路。

1. 单隐层神经网络的结构拆解

一个标准的单隐层神经网络包含三层结构:输入层(第0层)、隐藏层(第1层)和输出层(第2层)。假设我们有:

  • 输入特征维度:3(即x₁, x₂, x₃)
  • 隐藏层神经元数量:4
  • 输出层神经元数量:1(二分类问题)

各层参数矩阵的维度必须严格对应:

  • W⁽¹⁾:隐藏层权重矩阵,维度为(4,3)
    行数=当前层神经元数,列数=前一层特征数
  • b⁽¹⁾:隐藏层偏置向量,维度为(4,1)
  • W⁽²⁾:输出层权重矩阵,维度为(1,4)
  • b⁽²⁾:输出层偏置标量,维度为(1,1)

初始化技巧:W应采用np.random.randn()*0.01进行微小随机初始化,b可初始化为零向量

2. 前向传播的矩阵运算推导

前向传播需要依次计算隐藏层和输出层的线性组合(z)与激活输出(a)。我们以单个样本为例:

2.1 隐藏层计算

z⁽¹⁾ = W⁽¹⁾·x + b⁽¹⁾ # (4,3)×(3,1)+(4,1) → (4,1) a⁽¹⁾ = g(z⁽¹⁾) # g为激活函数如ReLU

关键步骤验证:

  1. W⁽¹⁾·x执行矩阵乘法,每个隐藏神经元接收所有输入特征的加权和
  2. 偏置b⁽¹⁾逐元素添加到结果中
  3. 激活函数g(·)按元素作用,引入非线性

2.2 输出层计算

z⁽²⁾ = W⁽²⁾·a⁽¹⁾ + b⁽²⁾ # (1,4)×(4,1)+(1,1) → (1,1) a⁽²⁾ = σ(z⁽²⁾) # 二分类常用sigmoid

此时a⁽²⁾即为预测输出ŷ。对于m个样本的批量处理,只需将输入x扩展为矩阵X(每列一个样本),所有中间结果维度末尾增加m。

3. 反向传播的梯度计算原理

反向传播通过链式法则计算损失函数对各参数的偏导。假设使用交叉熵损失J,关键导数如下:

3.1 输出层梯度

dz⁽²⁾ = a⁽²⁾ - y # (1,1) dW⁽²⁾ = dz⁽²⁾·(a⁽¹⁾)ᵀ # (1,1)×(1,4) → (1,4) db⁽²⁾ = dz⁽²⁾ # (1,1)

3.2 隐藏层梯度

dz⁽¹⁾ = (W⁽²⁾)ᵀ·dz⁽²⁾ * g'(z⁽¹⁾) # (4,1)×(1,1) → (4,1) dW⁽¹⁾ = dz⁽¹⁾·xᵀ # (4,1)×(1,3) → (4,3) db⁽¹⁾ = dz⁽¹⁾ # (4,1)

其中g'(z⁽¹⁾)是激活函数的导数:

  • ReLU导数为1(z>0)或0(z≤0)
  • Sigmoid导数为a(1-a)

4. 激活函数的选择与实现

不同层的激活函数选择直接影响模型性能:

激活函数适用场景优点缺点
Sigmoid输出层(二分类)输出范围(0,1)易梯度消失
Tanh隐藏层零中心化计算量较大
ReLU隐藏层(默认)计算简单/缓解梯度消失负数区失效

实际编码时,激活函数及其导数可并行计算:

def relu(z): return np.maximum(0,z) def relu_derivative(z): return (z > 0).astype(float)

5. 向量化实现技巧

批量处理m个样本时,矩阵运算需特别注意维度对齐。以隐藏层为例:

Z⁽¹⁾ = W⁽¹⁾·X + b⁽¹⁾ # (4,3)×(3,m)+(4,1) → (4,m)

这里通过广播机制自动扩展b⁽¹⁾。反向传播时:

dW⁽²⁾ = (1/m) * dz⁽²⁾·(A⁽¹⁾)ᵀ # (1,m)×(m,4) → (1,4)

这种实现比循环快100倍以上。一个完整的训练迭代包含:

  1. 前向传播计算预测值
  2. 计算损失J
  3. 反向传播求梯度
  4. 梯度下降更新参数:
    W⁽¹⁾ -= α·dW⁽¹⁾ b⁽¹⁾ -= α·db⁽¹⁾

推导过程中最容易出错的是矩阵维度匹配。建议在编写代码前先手写验证维度变化,例如:

  • W⁽¹⁾·x的(4,3)×(3,1)确实得到(4,1)
  • 反向传播时(W⁽²⁾)ᵀ·dz⁽²⁾的(4,1)×(1,1)通过广播变为(4,1)
http://www.jsqmd.com/news/957937/

相关文章:

  • 2026年南京汽车维修服务TOP10榜:小保养/换机油/补胎换胎/底盘异响/发动机维修/钣金喷漆/24小时拖车救援专业精选 - 品牌企业推荐师(官方)
  • Python之stringsim包语法、参数和实际应用案例
  • 如何快速掌握Figma中文界面:设计师的终极解决方案指南
  • 不用下载直接改!主流网盘在线编辑功能深度实测 - 品牌测评鉴赏家
  • 2026亲测10款降AIGC软件红黑榜!优缺点无保留曝光,达标率直接对标行业天花板
  • 家用台式洗碗机实力品牌推荐榜单:GORGENOX歌嘉诺凭精工高性价比领跑,台式洗碗机、免安装洗碗机、超窄洗碗机、嵌入式美妆冰箱、台下嵌入式冰箱高口碑全解析 - 变量人生001
  • 实战指南:基于快马平台构建企业级oh my opencode开源生态平台
  • 北京家中闲置字画出手怎么选?本地六大上门回收商家实力排名 - 品牌排行榜单
  • A股指数不上涨不赚钱的原因
  • 实在Agent有没有针对开发者的个人终身免费版?2026开发者政策与企业级AI智能体演进深度评测
  • 2026 湖州防水补漏哪家好?住建实地测评权威榜单 TOP5|卫生间免砸砖 / 阳台屋顶 / 厨卫漏水维修(6 月湖州专项调研) - 苏易修缮
  • 如何用快马平台将markdown文档秒变可运行网站原型
  • 快速构建前端工具库原型:用快马一键生成小宇工具库完整项目框架
  • TIA Portal避坑指南:Get_Alarm指令读取ProDiag报警的5个常见错误与调试技巧
  • DataX从入门到精通 第2课 ETL之DataX 安装datax-web
  • 主流网盘在线追剧播放体验深度实测对比
  • DVWA-File Upload
  • DataX从入门到精通 第1课 ETL之DataX 安装DataX
  • 2026连云港防水补漏哪家好?住建实地测评权威榜单TOP5|卫生间免砸砖/阳台屋顶/厨卫漏水维修(6月连云港专项调研) - 苏易修缮
  • opencv识别抖音的评论区其实很简单
  • 告别锐捷客户端:WinSCP+抓包工具,给Padavan路由器‘植入’校园网认证的完整指南
  • 三步突破:重新定义Dell G15散热控制的轻量革命
  • 八目蛛网络(免费工具网站导航)
  • 有没有免费或低成本的工单系统推荐?
  • 如何在3分钟内实现WPS与Zotero的无缝对接:跨平台文献管理终极指南
  • 用Matlab GUI做个指纹锁原型:从图像处理到特征匹配的完整实战(附源码)
  • 新手福音:用快马平台生成burpsuite安装交互教程,三步完成安全工具部署
  • 苏州购宠避坑指南|姑苏+虎丘双店明轩猫犬舍,江南本地繁育健康萌宠优选 - 萌宠俱乐部
  • MatrikonOPC免费工具套件:工业自动化数据集成与通信调试实战指南
  • JEPA范式在VLM中的应用