李沐-动手学深度学习-线性回归

回归(regression)是能为一个或多个自变量与因变量之间关系建模的一类方法。

线性模型可以看做是单层神经网络。

线性回归是对n维输入的加权,外加偏差。

使用平方损失来衡量预测值和真实值的差异。

线性回归具有显示解。

基础优化算法:梯度下降

步骤1:挑选一个初始值w0

步骤2:重复迭代参数

沿梯度方向将增加损失函数值

学习率:步长的超参数

学习率:不能太小:效率低;也不能太大:震荡没有下降;

总结:

梯度下降通过不断沿着反梯度方向更新参数求解

小批量随机梯度下降是深度学习默认的求解模型

两个重要的超参数是批量大小和学习率

线性回归从零开始实现

我们将从零开始实现整个方法,包括数据流水线、模型、损失函数和小批量随机梯度下降优化器。导入random包(需要随机梯度下降,随机初始化权重)

根据带有噪声的线性模型构造一个人造数据集。我们使用线性模型参数W = [2,-3.4]T、b = 4.2和噪声项生成数据集及其标签:y = Xw + b + e

李沐-动手学深度学习-线性回归_第1张图片

 features中的每一行都包含一个二维数据样本,labels中的每一行都包含一维标签值(一个标量)

李沐-动手学深度学习-线性回归_第2张图片

训练模型时要对数据集进行遍历,每次抽取一小批量样本,并使用它们来更新我们的模型。 由于这个过程是训练机器学习算法的基础,所以有必要定义一个函数, 该函数能打乱数据集中的样本并以小批量方式获取数据。

定义一个data_iter函数,该函数接收批量大小、特征矩阵和标签向量作为输入,生成大小为batch_size的小批量。

李沐-动手学深度学习-线性回归_第3张图片

定义初始化模型参数 

requires_grad=True 的作用是让 backward 可以追踪这个参数并且计算它的梯度。最开始定义你的输入是 requires_grad=True ,那么后续对应的输出也自动具有 requires_grad=True 。

 定义损失函数

 定义优化算法

 训练过程

李沐-动手学深度学习-线性回归_第4张图片

 我们可以通过比较真实参数和通过训练学到的参数来评估训练的成功程度。

 线性回归的简洁实现

通过使用深度学习框架来简洁地实现 线性回归模型 生成数据集

李沐-动手学深度学习-线性回归_第5张图片

我们可以调用框架中现有的API来读取数据。 我们将featureslabels作为API的参数传递,并通过数据迭代器指定batch_size。 此外,布尔值is_train表示是否希望数据迭代器对象在每个迭代周期内打乱数据。

李沐-动手学深度学习-线性回归_第6张图片 

 使用框架的预定义好的层

 初始化模型参数

 计算均方误差使用的是MSELoss类,也称为平方范数

 实例化SGD实例

 训练过程代码与我们从零开始实现时所做的非常相似

李沐-动手学深度学习-线性回归_第7张图片

 

你可能感兴趣的:(深度学习,线性回归,回归)