【深度学习】动手学深度学习(PyTorch版)李沐 2.4.3 梯度【公式推导】

2.4.3. 梯度

  我们可以连接一个多元函数对其所有变量的偏导数,以得到该函数的梯度(gradient)向量。 具体而言,设函数f:Rn→Rf:\mathbb{R}^{n}\to\mathbb{R}f:RnR的输入是一个nnn维向量x⃗=[x1x2⋅⋅⋅xn]\vec x=\begin{bmatrix} x_1\\x_2\\···\\x_n\end{bmatrix}x = x1x2⋅⋅⋅xn ,输出是一个标量。 函数f(x⃗)f(\vec x)f(x )相对于x⃗\vec xx 的梯度是一个包含nnn个偏导数的向量:
∇x⃗f(x⃗)=[∂f(x⃗)∂x1∂f(x⃗)∂x2⋅⋅⋅∂f(x⃗)∂xn]\nabla_{\vec x} f(\vec x) = \begin{bmatrix}\frac{\partial f(\vec x)}{\partial x_1}\\\frac{\partial f(\vec x)}{\partial x_2}\\···\\ \frac{\partial f(\vec x)}{\partial x_n}\end{bmatrix}x f(x )= x1f(x )x2f(x )⋅⋅⋅xnf(x )
其中∇x⃗f(x⃗)\nabla_{\vec x} f(\vec x)x f(x )通常在没有歧义时被∇f(x⃗)\nabla f(\vec x)f(x )取代。


假设x⃗\vec xx nnn维向量,在微分多元函数时经常使用以下规则:

一、对于所有A∈Rm×nA \in \mathbb{R^{m\times n}}ARm×n,都有∇x⃗Ax⃗=A⊤\nabla_{\vec x} A\vec x = A^\topx Ax =A

证明:设A(m,n)A_{(m,n)}A(m,n) =[a1,1a1,2⋅⋅⋅a1,na2,1a2,2⋅⋅⋅a2,n⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅am,1am,2⋅⋅⋅am,n]\begin{bmatrix} a_{1,1}&a_{1,2}&···&a_{1,n} \\ a_{2,1}&a_{2,2}&···&a_{2,n} \\ ··· & ··· & ··· & ··· \\ a_{m,1} & a_{m,2} &···&a_{m,n} \end{bmatrix} a1,1a2,1⋅⋅⋅am,1a1,2a2,2⋅⋅⋅am,2⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅a1,na2,n⋅⋅⋅am,n
Ax⃗(m,1)A\vec x_{(m,1)}Ax (m,1) =[a1,1x1+a1,2x2+⋅⋅⋅+a1,nxna2,1x1+a2,2x2+⋅⋅⋅+a2,nxn⋅⋅⋅am,1x1+am,2x2+⋅⋅⋅+am,nxn]\begin{bmatrix} a_{1,1}x_1+a_{1,2}x_2+···+a_{1,n}x_n \\ a_{2,1}x_1+a_{2,2}x_2+···+a_{2,n}x_n \\ ··· \\ a_{m,1}x_1+a_{m,2}x_2+···+a_{m,n}x_n \end{bmatrix} a1,1x1+a1,2x2+⋅⋅⋅+a1,nxna2,1x1+a2,2x2+⋅⋅⋅+a2,nxn⋅⋅⋅am,1x1+am,2x2+⋅⋅⋅+am,nxn ,
∇x⃗Ax⃗\nabla_{\vec x}A\vec xx Ax =[∂Ax⃗∂x1∂Ax⃗∂x2⋅⋅⋅∂Ax⃗∂xn]\begin{bmatrix}\frac{\partial A\vec x}{\partial x_1}\\\frac{\partial A\vec x}{\partial x_2}\\···\\ \frac{\partial A\vec x}{\partial x_n}\end{bmatrix} x1Ax x2Ax ⋅⋅⋅xnAx
=[∂a1,1x1+a1,2x2+⋅⋅⋅+a1,nxn∂x1∂a2,1x1+a2,2x2+⋅⋅⋅+a2,nxn∂x1⋅⋅⋅∂am,1x1+am,2x2+⋅⋅⋅+am,nxn∂x1∂a1,1x1+a1,2x2+⋅⋅⋅+a1,nxn∂x2∂a2,1x1+a2,2x2+⋅⋅⋅+a2,nxn∂x2⋅⋅⋅∂am,1x1+am,2x2+⋅⋅⋅+am,nxn∂x2⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅∂a1,1x1+a1,2x2+⋅⋅⋅+a1,nxn∂xn∂a2,1x1+a2,2x2+⋅⋅⋅+a2,nxn∂xn⋅⋅⋅∂am,1x1+am,2x2+⋅⋅⋅+am,nxn∂xn]\begin{bmatrix}\frac{\partial a_{1,1}x_1+a_{1,2}x_2+···+a_{1,n}x_n}{\partial x_1}& \frac{\partial a_{2,1}x_1+a_{2,2}x_2+···+a_{2,n}x_n}{\partial x_1}&···&\frac{\partial a_{m,1}x_1+a_{m,2}x_2+···+a_{m,n}x_n}{\partial x_1}\\ \frac{\partial a_{1,1}x_1+a_{1,2}x_2+···+a_{1,n}x_n}{\partial x_2}& \frac{\partial a_{2,1}x_1+a_{2,2}x_2+···+a_{2,n}x_n}{\partial x_2}&···&\frac{\partial a_{m,1}x_1+a_{m,2}x_2+···+a_{m,n}x_n}{\partial x_2}\\ ···&···&···&···\\ \frac{\partial a_{1,1}x_1+a_{1,2}x_2+···+a_{1,n}x_n}{\partial x_n}& \frac{\partial a_{2,1}x_1+a_{2,2}x_2+···+a_{2,n}x_n}{\partial x_n}&···&\frac{\partial a_{m,1}x_1+a_{m,2}x_2+···+a_{m,n}x_n}{\partial x_n}\end{bmatrix} x1a1,1x1+a1,2x2+⋅⋅⋅+a1,nxnx2a1,1x1+a<

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ninding

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值