在神经网络中,正向传播是将数据从前面传播到后面,正向传播的过程中会计算局部梯度(导数)存到变量里,得到预测值和真实值的损失函数,反向传播是将损失函数的梯度(导数)一步一步的从后面传播到前面的过程,就可以得到损失函数关于某一个权重的偏导数,有了这个偏导数就可以用梯度下降法求损失函数的最小值。
复合函数链式求导法则
复合函数的导数等于其内部局部函数的导数的累积
为什么要引入非线性激活函数
为了增加输出函数的复杂性,否则神经网络无论经过多少层变换都是线性函数(直线)。有了激活函数,就可以使神经网络逼近任意的非线性函数。
反向传播的数学过程
下面是单个节点的反向传播过程,运用到了复合函数的链式求导法则,Pytorch将单个节点的梯度寸在X变量里。
线性模型的计算图
Pytorch构建代码的过程
tensor用来存数据,可以存标量、矩阵、高纬数据
它包含两个重要成员:权重、损失函数对权重的导数
用Pytorch写神经网路的时候,构建模型的过程就是在构建如上所示的计算图的过程。
1.创建一个权重,权重是个张量并且需要进行计算梯度
2.正向传播时张量与一个标量相乘会自动将x转化为张量计算
3.
4.
5.
6.
7.
Pytorch构建计算图的过程
2.
3.
作业