《动手学深度学习》3.3.9 练习

692 阅读1分钟

1. 如果将小批量的总损失替换为小批量损失的平均值,你需要如何更改学习率?

答:设训练第n个样本得到的梯度为an,则第一次梯度更新w1:

w1=w1a1lrw1'=w1-a1*lr

第二次:

w1=w1a2lrw1''=w1'-a2*lr
w1=w1(a1+a2)lrw1''=w1-(a1+a2)*lr

依次类推:

w1(n)=w1(Σan)lrw1(n)=w1-(Σan)*lr

故训练批量样本更新的权重等于初始权重减掉训练批量样本的梯度总和*学习率。

况且总损失求导就是总梯度,当总损失换成平均值的时候,也就是除了一个n,因此只需把n乘回来即可,所以学习率为n*lr。

2. 查看深度学习框架⽂档,它们提供了哪些损失函数和初始化⽅法?⽤Huber损失代替原损失

image.png 答:分别用两种损失函数训练w,w误差变化如下:

(y轴是w误差,x轴是迭代次数) image.png 如图可以看出,mse在远离最优解的时候收敛速度很快,斜率很大,然而在靠近最优解的时候会越来越慢,而huber在远离的时候斜率是不变的,也就是huber是均速靠近最优解的,因为最优解处绝对值导数不存在,所以换成了mse,所以在靠近最优解的时候又有mse的特点

3.你如何访问线性回归的梯度?

答:net[0].weight.grad