第三章 线性神经网络

线性回归

回归:预测一个数值;分类:预测数据属于⼀组类别中的哪⼀个。

线性回归的基本元素

  1. 首先线性指预测的目标值可以表示为特征的加权和
  2. 线性模型:给定训练数据特征X和对应的已知
    标签y,线性回归的⽬标是找到⼀组权重向量w和偏置b:当给定从X的同分布中取样的新样本特征时,这组权重向量和偏置能够使得新样本预测标签的误差尽可能⼩。在开始寻找最好的模型参数(model parameters)w和b之前,我们还需要两个东西:(1)⼀种模型质量的度
    量⽅式;(2)⼀种能够更新模型以提⾼模型预测质量的⽅法。
    通常使用“尖角”符号表示估计值。
  3. 损失函数(loss function)能够量化⽬标的实际值与预测值之间的差距。回归问题中最常⽤的损失函数是平方误差函数。
  4. 用梯度下降的方法来优化模型,梯度下降最简单的⽤法是计算损失函数(数据集中所有样本的损失均值)关于模型参数的导数(在这里也可以称为梯度)。
  5. 通过手动调整而不是在训练过程中更新的参数叫做超参数,调参(hyperparameter tuning)是选择超参数的过程。超参数通常是我们根据训练迭代结果来调整的,而训练迭代结果是在独⽴的验证数据集(validation dataset)上评估得到的。

线性回归从零开始实现

  1. 生成数据集:利用线性模型来生成一个人造数据集,利用torch.normal来生成正态分布随机数。
  2. 读取数据集:训练模型时我们要对数据集进行遍历,我们通过每次抽取一小批量样本Batch来更新我们的模型。
  3. 初始化模型参数 权重和偏置:可以利用随机数来初始化来初始化权重,在初始化参数之后,根据梯度下降来更新这些梯度。
  4. 定义模型:将模型的输入和参数同模型的输出关联起来,例:
def linreg(X, w, b): #@save
    """线性回归模型"""
    return torch.matmul(X, w) + b
  1. 定义损失函数:定义损失函数来计算损失函数的梯度。
  2. 定义优化算法:来更新模型参数,这里面一般包括两部分,更新参数和梯度置零。
  3. 训练:在前面的步骤完成之后,我们就开始训练我们的模型。设置训练次数和学习率这两个超参数。

线性回归的简洁实现

利用深度学习框架来简洁地实现线性回归模型。对于标准深度学习模型,我们可以使⽤框架的预定义好的层。这使我们只需关注使⽤哪些层来构造模型,而不必关注层的实现细节。
Sequential类以及在Linear类

sofxmax回归

分类问题有两个问题:1. 我们只对样本的“硬性”类别感兴趣,即属于哪个类别;2. 我们希望得到“软性”类别,即得到属于每个类别的概率。

分类问题

如果类别间有自然顺序,表示标签就可以用类似{1,2,3}这种方式来表示标签;若没有自然顺序,就可以用独热编码(one-hot encoding)来表示标签。独热编码是⼀个向量,它的分量和类别⼀样多。类别对应的分量设置为1,其他所有分量设置为0。例如我们对图像来分类,属于猫、狗和鸡这三类,标签y将是⼀个三维向量,其中(1, 0, 0)对应于“猫”、(0, 1, 0)对应于“鸡”、(0, 0, 1)对应于“狗”。
我们希望模型的输出yˆj可以视为属于类j的概率,然后选择具有最⼤输出值的类别argmaxjyj作为我们的预测。但模型的输出 yˆj不能直接作为我们的输出,因为这些输出数字的总和可能不为1,并且可能为负值。softmax函数将未规范化的预测变换为⾮负并且总和为1,同时要求模型保持可导。我们⾸先对每个未规范化的预测求幂,这样可以确保输出⾮负。为了确保最终输出的总和为1,我们再对每个求幂后的结果除以它们的总和。我们将softmax函数的输出作为最终的预测概率。

图像分类数据集

将文本标签和数字标签索引进行转换:

def get_fashion_mnist_labels(labels): #@save
"""返回Fashion-MNIST数据集的⽂本标签"""
   text_labels = ['t-shirt', 'trouser', 'pullover', 'dress', 'coat',
   					'sandal', 'shirt', 'sneaker', 'bag', 'ankle boot']
return [text_labels[int(i)] for i in labels]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值