【深度学习】7-矩阵乘法运算的反向传播求梯度

简介: 【深度学习】7-矩阵乘法运算的反向传播求梯度

1. 求梯度的公式


在矩阵乘法的情况下,设有一个特征矩阵为X XX,一个权值矩阵为W WW,输出:Y = X W Y = XWY=XW。

如果我们要得到Y YY关于W WW的梯度,则可以使用公式:d W = X ⊤ d Y dW=X ^\top dYdW=X

dY

同样的,如果求Y YY关于X XX的梯度,则可以使用公式:d X = d Y W ⊤ dX=dYW^\topdX=dYW


那么,为什么上面的公式确实可以求出我们所需要的梯度呢?


2. “举个栗子”:两个矩阵相乘


我们不妨看看两个简单矩阵相乘的过程,并将目光聚焦到求关于W WW的梯度


image.png


求关于W WW的梯度,则我们得到的d W dWdW的形状应当是与W WW相同的,即每个元素都有一个对应的梯度。我们看和W 11 W_{11}W

11有关的部分:

image.png

不难发现,W 11 W_{11}W 11 的系数有三个,那么W 11 W_{11}W 11 的梯度就是这三个系数的和:X 11 + X 21 + X 31 X_{11}+X_{21}+X_{31}X 11+X 21+X31。

对应的系数作为梯度很好理解,可为什么是和呢?而不是平均数?又或者其它的?

我现在也没有很明白,求得的梯度为什么是它所有系数的和值,主要是对这个梯度值所代表的意义有些困惑。不过平均数其实没有什么意义,不过是给所有求得的梯度等比缩小了而已。

相应的,W WW第一行的元素,其梯度都是X XX第一列的和;第二行的元素,其梯度都是X XX第二列的和。

于是可以发现,通过公式 d W = X ⊤ d Y dW=X ^\top dYdW=X ⊤ dY,如果d Y dYdY的元素值都为1,我们就恰巧能得到上面的结果。


在实际的模型中,矩阵乘法的运算只是作为很小的一个部分,d Y dYdY的值接受自下一层,而非简单的全为1 11,因此不必担心出现每一行的权值只能同步更新的问题


3. 从计算图看:误差反向传播


前面我们是从表达式的系数得出的规律,接下来再从计算图来看一下反向传播求梯度的过程。


在考虑神经网络中的误差的反向传播时,计算图确实是一个很棒的工具。对于复杂的矩阵乘法运算,我们可以把它分解成许多简单的加法和乘法运算来考虑。

求W11有关的部分计算图——正向推理


image.png

误差反向传播


image.png

这里我们得到:

image.png


这里只画出了举例子所需要的小部分计算图,将一个矩阵乘法运算完整地用计算图呈现出来,会显得比较错综复杂,也比较麻烦。但使用部分计算图来以点带面、帮助理解还是非常不错的。

相关文章
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
梯度下降求极值,机器学习&深度学习
梯度下降求极值,机器学习&深度学习
48 0
|
机器学习/深度学习 算法 TensorFlow
深度学习常用知识梯度下降学习率和反向传播
深度学习常用知识梯度下降学习率和反向传播
95 0
|
2月前
|
机器学习/深度学习 人工智能 算法
深度学习入门:理解神经网络与反向传播算法
【9月更文挑战第20天】本文将深入浅出地介绍深度学习中的基石—神经网络,以及背后的魔法—反向传播算法。我们将通过直观的例子和简单的数学公式,带你领略这一技术的魅力。无论你是编程新手,还是有一定基础的开发者,这篇文章都将为你打开深度学习的大门,让你对神经网络的工作原理有一个清晰的认识。
|
24天前
|
机器学习/深度学习 算法
深度学习中的自适应抱团梯度下降法
【10月更文挑战第7天】 本文探讨了深度学习中一种新的优化算法——自适应抱团梯度下降法,它结合了传统的梯度下降法与现代的自适应方法。通过引入动态学习率调整和抱团策略,该方法在处理复杂网络结构时展现了更高的效率和准确性。本文详细介绍了算法的原理、实现步骤以及在实际应用中的表现,旨在为深度学习领域提供一种创新且有效的优化手段。
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习还不如浅层网络?RL教父Sutton持续反向传播算法登Nature
【9月更文挑战第24天】近年来,深度学习在人工智能领域取得巨大成功,但在连续学习任务中面临“损失可塑性”问题,尤其在深度强化学习中更为突出。加拿大阿尔伯塔大学的研究人员提出了一种名为“持续反向传播”的算法,通过选择性地重新初始化网络中的低效用单元,保持模型的可塑性。该算法通过评估每个连接和权重的贡献效用来决定是否重新初始化隐藏单元,并引入成熟度阈值保护新单元。实验表明,该算法能显著提升连续学习任务的表现,尤其在深度强化学习领域效果明显。然而,算法也存在计算复杂性和成熟度阈值设置等问题。
55 2
|
24天前
|
机器学习/深度学习 Python
深度学习笔记(六):如何运用梯度下降法来解决线性回归问题
这篇文章介绍了如何使用梯度下降法解决线性回归问题,包括梯度下降法的原理、线性回归的基本概念和具体的Python代码实现。
57 0
|
3月前
|
机器学习/深度学习 PyTorch 算法框架/工具
深度学习中的梯度消失与梯度爆炸问题解析
【8月更文挑战第31天】深度学习模型在训练过程中常常遇到梯度消失和梯度爆炸的问题,这两个问题严重影响了模型的收敛速度和性能。本文将深入探讨这两个问题的原因、影响及解决策略,并通过代码示例具体展示如何在实践中应用这些策略。
|
4月前
|
机器学习/深度学习 算法 Serverless
现代深度学习框架构建问题之链式法则在反向传播中的作用如何解决
现代深度学习框架构建问题之链式法则在反向传播中的作用如何解决
53 3
|
4月前
|
机器学习/深度学习 算法
现代深度学习框架构建问题之tinyDL中机器学习的通用组件与深度学习如何解决
现代深度学习框架构建问题之tinyDL中机器学习的通用组件与深度学习如何解决
76 2
|
5月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
使用Python实现深度学习模型:策略梯度方法
使用Python实现深度学习模型:策略梯度方法
48 0