随笔分类 - 机器学习
摘要:特征映射和感受野 因此,当需要检测输入特征中更广区域时,我们可以构建一个更深的卷积网络 。 利用卷积网络进行目标边缘检测
阅读全文
摘要:对于表格数据(其中行对应样本,列对应特征),我们寻找的模式可能涉及特征之间的交互,但是我们不能预先假设任何与特征交互相关的先验结构。 此时,多层感知机可能是最好的选择,然而对于高维感知数据,这种缺少结构的网络可能会变得不实用。原因如下: 当特征数非常高维时,全连接网络的参数会变得极大,导致计算成本大
阅读全文
摘要:张量与GPU 不同GPU之间操作 神经网络与GPU 总结 我们可以指定用于存储和计算的设备,例如CPU或GPU。默认情况下,数据在主内存中创建,然后使用CPU进行计算。 深度学习框架要求计算的所有输入数据都在同一设备上,无论是CPU还是GPU。 不经意地移动数据可能会显著降低性能。一个典型的错误如下
阅读全文
摘要:以PyTorch为例 class MLP(nn.Module): def __init__(self): super().__init__() self.hidden = nn.Linear(20, 256) self.output = nn.Linear(256, 10) def forward(
阅读全文
摘要:深度学习成功背后的一个因素是神经网络的灵活性: 我们可以用创造性的方式组合不同的层,从而设计出适用于各种任务的架构。 例如,研究人员发明了专门用于处理图像、文本、序列数据和执行动态规划的层。 有时我们会遇到或要自己发明一个现在在深度学习框架中还不存在的层。 在这些情况下,必须构建自定义层。本节将展示
阅读全文
摘要:到目前为止,我们忽略了建立网络时需要做的以下这些事情: 我们定义了网络架构,但没有指定输入维度。 我们添加层时没有指定前一层的输出维度。 我们在初始化参数时,甚至没有足够的信息来确定模型应该包含多少参数。 有些读者可能会对我们的代码能运行感到惊讶。 毕竟,深度学习框架无法判断网络的输入维度是什么。
阅读全文
摘要:参数访问 我们从已有模型中访问参数。 当通过Sequential类定义模型时, 我们可以通过索引来访问模型的任意层。 这就像模型是一个列表一样,每层的参数都在其属性中。 如下所示,我们可以检查第二个全连接层的参数。 print(net[2].state_dict()) OrderedDict([('
阅读全文
摘要:一个块可以由许多层组成;一个块可以由许多块组成。 块可以包含代码。 块负责大量的内部处理,包括参数初始化和反向传播。 层和块的顺序连接由Sequential块处理。 下面给出一个例子(以pyTorch为例) class NestMLP(nn.Module): def __init__(self):
阅读全文
摘要:🤔️如何避免梯度爆炸或消失? 在参数初始化时需要非常小心,以确保梯度和参数可以得到很好的控制(随即初始化) ReLU激活函数缓解了梯度消失问题,这样可以加速收敛。(Sigmoid激活函数在输入很大或是很小时,它的梯度都会消失。)
阅读全文
摘要:在训练神经网络时,前向传播和反向传播相互依赖。 对于前向传播,我们沿着依赖的方向遍历计算图并计算其路径上的所有变量。 然后将这些用于反向传播,其中计算顺序与计算图的相反。 因此,在训练神经网络时,在初始化模型参数后, 我们交替使用前向传播和反向传播,利用反向传播给出的梯度来更新模型参数。 注意,反向
阅读全文
摘要:偏差指的是模型与真实数据分布之间的误差。线性模型能表示的函数空间有限,所以存在偏差。 方差指同一模型在不同训练集上的输出变化。简单模型方差小,复杂模型容易过拟合,方差大。 1. 泛化性好的模型往往偏差高,方差低。比如简单的线性模型。 2. 灵活性强的模型往往偏差低,方差高。比如复杂的深度神经网络。
阅读全文
摘要:正则化 正则化(Regularization)是机器学习中的一类技术,其通过对模型添加惩罚项来解决过拟合问题,从而提高模型的泛化能力。 正则化的主要思想是在损失函数中引入模型复杂度的惩罚项,强制模型保持一定的简单性和平滑性。 比较常见的正则化方法包括: - L1正则化:对权重参数的绝对值之和进行惩罚
阅读全文
摘要:过拟合 作为机器学习科学家,我们的目标是发现模式(pattern)。 但是,我们如何才能确定模型是真正发现了一种泛化的模式, 而不是简单地记住了数据呢? 例如,我们想要在患者的基因数据与痴呆状态之间寻找模式, 其中标签是从集合痴呆轻度认知障碍健康中提取的。 因为基因可以唯一确定每个个体(不考虑双胞胎
阅读全文
摘要:在分类问题中,我们通常使用交叉熵损失,而不是平方误差损失的主要原因是: 输出解释不同。分类使用概率,而回归使用具体预测值。交叉熵更适合度量概率分布之间的距离
阅读全文
摘要:线性模型的局限性 例如,线性意味着单调假设: 任何特征的增大都会导致模型输出的增大(如果对应的权重为正), 或者导致模型输出的减小(如果对应的权重为负)。 有时这是有道理的。 例如,如果我们试图预测一个人是否会偿还贷款。 我们可以认为,在其他条件不变的情况下, 收入较高的申请人比收入较低的申请人更有
阅读全文
摘要:在深度学习中,全连接层无处不在。 然而,顾名思义,全连接层是“完全”连接的,可能有很多可学习的参数。 具体来说,对于任何具有d个输入和q个输出的全连接层, 参数开销为O(dq),这个数字在实践中可能高得令人望而却步。 幸运的是,将d个输入转换为q个输出的成本可以减少到O(dq/n), 其中超参数n可
阅读全文
摘要:分类问题 ⬆️独热标签向量 网络架构 softmax运算 小批量样本的矢量化 损失函数 模型预测与评估 在训练softmax回归模型后,给出任何样本特征,我们可以预测每个输出类别的概率。 通常我们使用预测概率最高的类别作为输出类别。 如果预测与实际类别(标签)一致,则预测是正确的。 在接下来的实验中
阅读全文
摘要:回归 回归(regression)是能为一个或多个自变量与因变量之间关系建模的一类方法。 在自然科学和社会科学领域,回归经常用来表示输入和输出之间的关系。 在机器学习领域中的大多数任务通常都与预测(prediction)有关。 当我们想预测一个数值时,就会涉及到回归问题。 常见的例子包括:预测价格(
阅读全文
摘要:默认情况下,调用求和函数会沿所有的轴降低张量的维度,使它变为一个标量。 x = torch.arange(4, dtype=torch.float32) x, x.sum() (tensor([0., 1., 2., 3.]), tensor(6.)) 我们还可以指定张量沿哪一个轴来通过求和降低维度
阅读全文