计算机视觉教程核心版(三)优化中篇反向传播展示

本文对反向传播进行了直观专业的讲解,介绍其在计算梯度表达式中的应用。通过简单和复杂表达式示例,阐述梯度计算方法,还提及模块化、反向传播模式、多分支梯度相加及矢量化操作梯度等内容。强调分阶段计算重要性,为训练神经网络做准备。

目录

介绍

简单的表达式

模块化

反向传播中的模式

多个分支梯度相加

 

介绍

在本节中,我们将对反向传播(这是一种通过递归的应用链式法则计算梯度表达式的方法)进行直观而专业的理解。理解反向传播的过程以及其中的细节对我们理解,有效开发、设计和调试神经网络至关重要。

问题陈述

本节核心问题是:给定一些函数f(x),x是输入向量。我们着力于计算f在x的梯度。

动机

回想最初我们对这个问题感兴趣的原因,在具体的神经网络中,f对应着损失函数,输入x包含训练数据和神经网络权重。例如损失函数可以使SVM损失函数,输入是训练数据(x_i, y_i),i=1...N和,权重及偏置(W,b)。一般情况下,我们认为训练数据给定且固定,且权重作为我们可以控制的变量。因此,尽管我们可以使用反向传播计算输入样本x_i的梯度,实际中我们经常仅仅计算参数(W,b)的梯度,以便于我们可以使用它来执行参数更新。然而输入x_i的梯度有时也可以发挥作用,例如,为了可视化和翻译神经网络正在做什么。

简单的表达式

我们用一个简单的例子开始,以便于我们为更复杂的表达式定义概念和惯称。

假设函数f(x, y, z) = (x, + y) * z。这个表达式可以被分解为q = x + y和f = q*z。并且,我们知道如何分开单独计算两个表达式的值,之后利用链式法则计算。我们赋予初始值,表示如下图

 

计算图如图所示

图片来源

则香草代码如图所示,绿色表示输入,红色数字表示此处f的梯度值。

 

# set some inputs
x = -2; y = 5; z = -4

# perform the forward pass
q = x + y # q becomes 3
f = q * z # f becomes -12

# perform the backward pass (backpropagation) in reverse order:
# first backprop through f = q * z
dfdz = q # df/dz = q, so gradient on z becomes 3
dfdq = z # df/dq = z, so gradient on q becomes -4
# now backprop through q = x + y
dfdx = 1.0 * dfdq # dq/dx = 1. And the multiplication here is the chain rule!
dfdy = 1.0 * dfdq # dq/dy = 1

反向传播计算梯度如图

 

每一个节点之前的梯度(即偏导数)等于它的前向梯度乘它的本地梯度。举例,最后一个节点之后的偏导数等于它的前向梯度,即f对自己的偏导数,结果为1。最后一个节点由两输入部分相乘组成,即上箭头所指,和下箭头所指。上箭头的本地梯度z,带入输入值z(如图绿色部分),则本地梯度值为-4,此处梯度值为-4*1。下箭头梯度公式为q,带入q的值,则梯度为-3*1。

 

另一个节点的的输入由两输入部分相加得到,则节点的上箭头的本地梯度为q对x的偏导数,本体梯度为1,则此处梯度值为-4*1。下箭头的本地梯度为q对y的偏导数,本地梯度为1,则此处梯度值为-4*1。

更复杂的例子如下计算图

模块化

上图中,我们把梯度计算尽可能地分解成最简单的加法和乘法节点。实际上我们可以把一些节点组合在一起,形成更复杂的节点,如果我们想这么做的话,我们需要知道组合节点的本地梯度。例如sigmoid函数,将e的指数看为sigmoid函数输入

则计算如下图变得极为方便。

 

反向传播中的模式

值得注意的是,在许多案例中,反向传播梯度可以在直观层面上解释。例如,三个最常用的门(相加,相乘和求最大值),针对于这些门在反向传播过程中发挥的作用,它们都有各自非常形象的解释。

加法节点的分支梯度(注意是反向传播)等于它的上游梯度,我们可以将计算图加法节点当做梯度分布器,其将上游梯度分布到各个分支。最大值结点在正向传播过程中,仅有最大输入值对输出的影响,在反向过程中(max(a, 0)的在a>=0时候,梯度为1,在梯度小于0的时候,梯度为0),将梯度路由到其中一个分支,这类似路由器的功能。乘法结点将上游梯度通过缩放分步到各输入上,因此乘法结点类似于梯度分布器。

 

 

多个分支梯度相加

如果一个节点的输出q_{}i给n个节点,这个节点的梯度公式如下:

\frac{\partial f}{\partial x}=\sum_{i=1}^{n}\frac{\partial f}{\partial q_{}i}*\frac{\partial q_{}i}{\partial x}

 

 

矢量化操作梯度

示例,细节解释见参考

具体见

总结:

  • 我们研究了各种梯度的含义,它们是怎样在回路中反向传播,怎样更新。
  • 我们讨论了实际中分阶段计算的重要性,我们总是将函数打碎成各种模块,在这些模块中你可以轻易地得到局部梯度并使用链式法则,计算最终结果。更重要的是,我们一点也不想把损失函数的梯度求出来,并一次性计算梯度,我们不需要一个清楚地数学梯度等式。因此,分解表达式到多个阶段以便于你能够独立区分每个阶段。

下一节我们将开始定义神经网络,反向传播将使我们高效得在连接出计算损失函数梯度。换句话说,我们已经准备好训练神经网络。卷及神经网络近在咫尺。

 

 

 

 

 

 

 

 

 

 

多角色体系 支持管理员、商家、消费者种角色,权限分级管控: 管理员:负责平台整体配置、用户审核、数据监控等全局操作。 商家:管理店铺信息、发布商品、处理订单、回复评价等。 消费者:浏览商品、加入购物车、下单支付、评价商品等。 实现用户注册(手机号 / 邮箱验证)、登录(支持密码 / 验证码 / 第方登录)、个人信息管理(头像、收货地址、密码修改)。 权限精细化控制 商家仅能管理自家店铺及商品,消费者仅能查看和购买商品,管理员拥有全平台数据访问权限。 二、商品管理功能 商品信息维护 商家可发布商品:填写名称、分类(如服饰、电子产品)、子类别(如手机、笔记本)、规格(尺寸、颜色、型号)、价格、库存、详情描述(图文)、物流信息(运费、发货地)等。 支持商品上下架、库存调整、信息编辑,系统自动记录商品状态变更日志。 商品分类与搜索 按多级分类展示商品(如 “数码产品→手机→智能手机”),支持自定义分类体系。 提供智能搜索功能:按关键词(名称、品牌)搜索,支持模糊匹配和搜索联想;结合用户浏览历史对搜索结果排序(优先展示高相关度商品)。 商品推荐 基于用户浏览、收藏、购买记录,推荐相似商品(如 “浏览过该商品的用户还买了…”)。 首页展示热门商品(销量 TOP10)、新品上架、限时折扣等推荐列表。 、订单与交易管理 购物车与下单 消费者可将商品加入购物车,支持修改数量、选择规格、移除商品,系统自动计算总价(含运费、折扣)。 下单流程:确认收货地址→选择支付方式(在线支付、货到付款)→提交订单→系统生成唯一订单号。 订单处理流程 订单状态跟踪:待支付→已支付→商家发货→物流运输→消费者收货→订单完成,各状态变更实时通知用户。 商家端功能:查看新订单提醒、确认发货(填写物流单号)、处理退款申请(需审核理由)。 消费者端功能:查看订单详情、追踪物流、申请退款 / 退货、确认收货。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值