首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

知识卡片 反向传播中的梯度

前言:本文介绍神经网络中通过反向传播计算梯度的原理,并通过代码演示计算正向和反向传播中的矩阵相乘得出梯度。

反向传播中的梯度

反向传播(backpropagation)中的梯度

神经网络的基本结构有三层,输入、中间层和输出层。正向传播计算出来的结果,误差较大,因此通过反向传播不断迭代修改参数,使得误差降低。

反向传播从输出层传到输入层,逐层自顶向下计算损失函数,计算神经元权值的梯度,作为修改神经元的依据。当误差达到期望值时,或者迭代次数超过预设的阈值时学习结束。

梯度的简单解释

计算误差时,对于复杂的函数无法直接求得误差最小时的参数取值,采用梯度下降的办法更新梯度计算。在梯度的简单解释例2中,af/ax = 1, 这里的1是逻辑判断,即右边括号里的条件(x >= y)成立时为1,否则为0。

举例:反向传播中的梯度传播和计算-使用链规则对复合表达式求导

复合表达式f(u,v,w)表示为神经网络的损失函数,u和v是输入的训练数据,w是权重参数,是机器学习算法需要通过学习来调节。链式法则是对复合函数求导的一种方法。

正向传播中 q = u + v =3  ;f = qw = 3* -3 = -9

每个变量的导数的含义是表示整个表达式对预期值的敏感性,反向传播中为红色字体,从右往左看,f 梯度为 1,  af/aq = w =-3  q 梯度=-3 ....... 传到最左边,求得三个变量的梯度。

Sigmoid 门的反向传播

Sigmoid的作用是对变量进行规范化处理,使其值落在[0,1],反向传播计算梯度,分别对变量w和x求导。

矩阵‐矩阵相乘的梯度

反向传播中的梯度计算不仅使用于单个变量,也适用于矩阵和向量。

矩阵D= 矩阵 W 点乘dot 矩阵 X,W 通常为权值矩阵,X 为样本的特征向量矩阵。随机产生 W 和 X,矩阵相乘时,X 的列数必须和 W 的行数相同,都设置为10。

反向传播过程中,首先随机初始化模拟dD梯度,dD与D 的shape相同;然后分别计算矩阵D对 W 和 X 的偏导,注意矩阵的相乘时的维度和转置即可求得表达式的对参数的偏导数,也就是梯度。

代码演示-正向传播和反向传播

# 演示内容: 正向传播和反向传播 -矩阵的相乘:D = W dot X

import numpy as np

# 正向传播

# X 10 行数 与 W 列数相同,2 两行意味着分类为两类

D = W.dot(X)

print(D)  # D也是分类的结果

'''

'''

# 反向传播

dDdW = dD.dot(X.T) # D 对参数 W 求偏导也就是梯度;D是五行两列, X是十行两列,矩阵相乘行列数要相等,X.T 转置

dDdX= W.T.dot(dD)

print(dDdW)

print(dDdX)

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200812A00ZV800?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券