1. 虚拟仿真实验

在自求导线性回归中,我们需要先自定义参数,并且需要通过数学公式来对w和b进行求导,然后在反向传播过程中通过梯度下降的方式来更新参数,从而降低损失值

本节使用框架实现线性回归算法时,我们就不需要实现这些具体的内容了(例如求导、梯度下降等),因为接下来学的三种框架(PyTorch、TensorFlow、PaddlePaddle)已经将具体代码实现了,比如反向传播的过程(也就是自动微分机制)。在使用框架实现线性回归算法时,我们更多的是准备好数据集,然后通过框架,将前向传播的内容做好并且“选择”好反向传播过程中所用到的一些参数或者参数更新的方法(比如梯度下降)即可

1.1 散点输入

有一些散点,将它们绘制在一个二维坐标中,其分布如下图所示:

1.2 定义前向模型

在y=wx+b中:

  • 输入特征:x,只有一个因此本实验只能选择一维
  • 输出特征:y,只有一个因此本实验只能选择一维
  • 样本数量:用来训练模型的数据点数量。

如果样本数量是m,则可以把x认为是一个1*m的矩阵,即1行m列。

当有多个输入特征时,公式就变成了

,x就是一个n*m的矩阵了。这些内容后续会学习,现在有个概念即可。

选择好输入特征和输出特征后,按照自求导线性回归的思路,我们应该进行w和b的初始化,给模型一个起始点,使其能够开始学习并逐渐优化参数。而在使用框架实现时,参数的初始化是框架自动处理的(随机值),所以就不用我们再去手动初始化w和b这两个参数了。

1.3 定义损失函数和优化器

在选择好前向的模型后,需要定义反向传播过程中用到的一些超参数。

  • 损失函数

本实验为MSE(均方误差),这也是我们之前一直用到的损失函数,也可以使用一些其他的损失函数,后续会引入其他的损失函数。

  • 优化器

优化器是参数的更新方式,用来降低损失函数值的,比如我们非常熟悉的梯度下降(GD)其实就是一种优化器,也叫做优化函数,关于优化器更加深入的内容会在后续的深度学习章节中介绍,这里不再过多叙述。

本例使用的SGD(随机梯度下降)是基于梯度下降实现的,在每个迭代(epoch)中,它随机选择多个小批量(batch_size,≤样本数)样本来计算梯度并更新参数。这种随机性有助于模型在参数空间中进行更广泛的探索,从而有可能跳出局部最小值,并在所有样本都被用于计算梯度后完成一个epoch。

  • 学习率

大多数优化器确实需要一个控制步长大小的参数,例如梯度更新公式中,

w新=w旧-学习率*梯度

在深度学习的三种框架中,关于损失函数和优化器的代码实现都已经封装好了,只需要选择使用哪种即可。

1.4 开始迭代

1.5 显示频率设置

迭代多少次显示一次

1.6 拟合线显示与输出

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐