《动手学深度学习笔记》2-线性神经网络
| 2022-4-15
0  |  阅读时长 0 分钟
日期
Apr 15, 2022
Tags
深度学习
pytorch

基础概念

线性模型(线性回归)

回归用于预测多少的问题

偏置项(偏移量、截距)

在线性模型中,偏置是指当所有特征都取值为0时,预测值应该为多少。
  • 如果没有偏置项,模型的表达能力将受到限制

损失函数

损失函数(loss function)能够量化目标的实际 值与预测值之间的差距。
  • 非负数
  • 常用平方误差函数,为了避免误差计算在n个样本的损失均值

梯度下降

通过不断地在损失函数递减的方向上更新参数来降低误差。
梯度下降最简单的用法:
  • 计算损失函数(数据集中所有样本的损失均值) 关于模型参数的导数(在这里也可以称为梯度)。
问题:每一次更新参数之前,必须遍历整个数据集
⇒ 随机梯度下降:
  • 在每次需要计算更新的时候随机抽取一小批样本
线性回归恰好是一个在整个域中只有一个最小值的学习问题。 但是对于像深度神经网络这样复杂的模型来说,损失平面上通常包含多个最小值。 深度学习实践者很少会去花费大力气寻找这样一组参数,使得在训练集 上的损失达到最小。 事实上,更难做到的是找到一组参数,这组参数能够在我们从未见过的数据上实现较低的损失, 这一挑战被称为泛化(generalization)
在机器学习中,我们通常不太关心恢复真正的参数,而更关心如何高度准确预测参数。 幸运的是,即使是在复杂的优化问题上,随机梯度下降通常也能找到非常好的解。 其中一个原因是,在深度网络中存在许多参数组合能够实现高度精确的预测。

解析解

线性回归的解可以用一个公式简单地表达出来, 这类解叫作解析解(analytical solution)

公式

  1. L2范数
  1. 矩阵求导
  1. 向量的内积

Softmax回归

Softmax回归用于分类问题
尽管softmax是一个非线性函数,但softmax回归的输出仍然由输入特征的仿射变换决定。 因此,softmax回归是一个线性模型(linear model)

独热编码(one-hot encoding)

用于表示分类数据的向量,类别对应分量设置为1,其余为0
softmax回归的输出层也是全连接层:每个输出都取决于输入

分类精度

分类精度即正确预测数量与总预测数量之比

校准(calibration)

softmax函数将未规范化的预测变换为非负并且总和为1,同时要求模型保持可导。

交叉熵损失(cross-entropy loss)

softmax的导数

导数是我们softmax模型分配的概率与实际发生的情况(由独热标签向量表示)之间的差异。

softmax的范围

上溢: 的大小过大,可能会超过数据类型能允许的最大数值,形成上溢
⇒ 在计算softmax时减去
⇒ 存在下溢的可能
下溢:的值为较大负数,精度有限,导致的值接近零,可能会导致的值为-inf。
⇒ 将softmax和交叉熵结合在一起(用softmax的结果作为交叉熵的输入),可以避免反向传播过程中可能会困扰我们的数值稳定性问题。

信息论

信息论(information theory)涉及编码、解码、发送以及尽可能简洁地处理信息或数据。

熵(entropy)

信息论的核心思想是量化数据中的信息内容。 在信息论中,该数值被称为分布的熵(entropy)
信息论的基本定理之一指出,为了对从分布中随机抽取的数据进行编码, 我们至少需要“纳特(nat)”对其进行编码

信息量

用来量化人们在预测事件时的惊异程度,是观察时赋予的主观概率。
  • 是当分配的概率真正匹配数据生成过程时的信息量的期望

交叉熵

可以把交叉熵想象为“主观概率为的观察者在看到根据概率生成的数据时的预期惊异”
交叉熵从
  • 交叉熵最小化时

交叉熵的分类目标

  1. 最大化观测数据的似然;
  1. 最小化传达标签所需的惊异

技巧

矢量化加速

矢量化(矩阵化)使数学表达上更简洁,同时运行的更快。
同时处理整个小批量的样本,可以使用numpy实现,计算不是对数组对象进行而是同时对数组的每个元素进行

with torch.no_grad()

with torch.no_grad的作用
在该模块下,所有计算得出的tensor的requires_grad都自动设置为False。
当requires_grad设置为False时,反向传播时就不会自动求导了,因此大大节约了显存或者说内存,简单来说是移除计算图

框架的使用

使用深度学习框架的API可以简化代码,且框架具有一定普适性
Loading...
目录