数学基础 讨论区


#1

http://zh.diveintodeeplearning.org/chapter_appendix/math.html


#2

常见梯度演算公式有推导 过程吗?


#3


不知道这样对不对


#4

推导如下:


#5

数学基础中的练习题:


这个偏导应该是6 * x1 才对?计算结果怎么不对

image
去掉x2的项之后就对了。请问咋回事?


对x2求偏导是对的


#6

很好的问题,思考了下没想出结果。 希望知道的朋友解答下!


#7

autograde不是用来求函数梯度的吗,可以这么求偏导吗。

原来题目是求f(x)的梯度,所以f(x)的梯度应该是[6x1, 5exp(x2)]。所以我理解里面的x1, x2是向量X[x1, x2]

q = nd.arange(1,3).reshape(1,-1)

q.attach_grad()
with autograd.record():
    p = 3 * q[0,0] *q[0,0] + 5 * nd.exp(q[0,1])
p.backward()
q.grad

输出:
[[ 6. 36.945282]]
<NDArray 1x2 @cpu(0)>

我是新手,刚开始看,有可能理解的不对。


#8

梯度一般是一个向量,偏导数是其中的components,不冲突。


#9

以第一个公式为例:

函数f = A^Tx
函数对x 求梯度,相当于函数对x的各个分量分别求偏导数,然后将结果组成向量。

如此以来,求导就简化为函数f对一元变量 x_1,x_2,…,x_n 求导。最后结果即为:A

其他结果,可以类比得到。


#10

求函数梯度部分,书中的讲解和课程视频中的讲解不完全一致。虽然向量来说,行和列本质上没区别,但是还是希望在求梯度的时候,用统一的标准来确定行向量或者列向量。
example:

  1. 书中内容:
    Screenshot%20from%202019-02-28%2021-11-38

  2. 讲课视频中的内容:
    Screenshot%20from%202019-02-28%2021-12-28

求 Ax关于x的梯度,结果有差别。


#13

@astonzhang aston能请帮忙解释下嘛, 为什么x1.grad 不等于 6*x_1 而是 24*x_1,谢谢!


#15

from mxnet import autograd, nd

x1 = nd.arange(4).reshape((4, 1))
x2 = nd.array([[2], [4], [6], [8]])
print("x1: ", x1)
print("x2: ", x2)

x1.attach_grad()
x2.attach_grad()

print("nd.exp(x2): ", nd.exp(x2))

with autograd.record():
y = 3 * (x1 * x1) + 5 * nd.exp(x2)

print("y: ", y)

y.backward()

print("x1.grad: ", x1.grad)
print("x2.grad: ", x2.grad)

把y值打印出来应该就明白了