介绍

其实挺久前就看了这个教程动手学深度学习v2,但是一直没有看完,这次趁过年想一次性过完。
花了差不多一天时间过了一遍视频和代码,完成了线性回归模型的简单实现。这算是一个基础阶段了,比起西瓜书和李宏毅的教程,这个更容易理解,更加实际,当然相对也不会那么深入。
所有要学习的内容

理论

主要是线性代数,各种求导,梯度下降的理论,有个入门的概念即可。后面能看懂对应代码就行。

实践

根据.ipynb文件,有如下代码

def sgd(params, lr, batch_size):  #@save

    """小批量随机梯度下降"""

    with torch.no_grad():

        for param in params:

            param -= lr * param.grad / batch_size

            param.grad.zero_()

关键在于对每个神经元参数每轮梯度下降处理,同时别忘了先清零。

概括一下,我们将执行以下循环:

  • 初始化参数

  • 重复以下训练,直到完成

  • 计算梯度$\mathbf{g} \leftarrow \partial_{(\mathbf{w},b)} \frac{1}{|\mathcal{B}|} \sum_{i \in \mathcal{B}} l(\mathbf{x}^{(i)}, y^{(i)}, \mathbf{w}, b)$

  • 更新参数$(\mathbf{w}, b) \leftarrow (\mathbf{w}, b) - \eta \mathbf{g}$
    至于训练轮数还有学习率之类的超参数,实践出真知吧,

    这就是炼丹!