【深度学习】日常笔记12

当⾯对更多的特征⽽样本不⾜时,线性模型往往会过拟合。

线性模型没有考虑到特征之间的 交互作⽤。对于每个特征,线性模型必须指定正的或负的权重,⽽忽略其他特征。与线性模型不同,神经⽹络并不局限于单独查看每个特征,而是学习特征之间的交互。

p159的即使我们有⽐特征多得多的样本,深度神经⽹络也有可能过拟合。2017年,⼀组研究⼈员通过在随机标记的 图像上训练深度⽹络。这展⽰了神经⽹络的极⼤灵活性,因为⼈类很难将输⼊和随机标记的输出联系起来, 但通过随机梯度下降优化的神经⽹络可以完美地标记训练集中的每⼀幅图像。想⼀想这意味着什么?假设标签是随机均匀分配的,并且有10个类别,那么分类器在测试数据上很难取得⾼于10%的精度,那么这⾥的泛 化差距就⾼达90%,如此严重的过拟合。

我觉得可以这样解释“那么分类器在测试数据上很难取得⾼于10%的精度”:

这是因为在训练过程中,深度神经网络主要依赖于训练集的样本和标签进行学习和优化。当训练集中的图像与测试集中的图像存在较大差异时,例如内容、背景、角度、光照等方面的差异,神经网络可能无法准确地将这些差异相关联。

在上文所描述的研究中,训练集中的图像标签是随机均匀分配的,没有实际含义。由于标签的随机性,神经网络很难找到通用的特征或模式来正确分类不同类别的图像。因此,当用这种训练方式得到的网络去处理新的、与训练集不相关的图像时,它的预测能力非常有限,准确率会很低,可能只有不到10%。

这也说明了在机器学习中,训练集的质量和代表性对于构建一个具有良好泛化能力的模型非常重要。如果训练集中包含了更多与测试集相似的样本和标签,深度神经网络在处理新图像时会有更高的准确率。同时,采用适当的数据增强、正则化技术以及调整模型的复杂度等方法,也可以有效缓解过拟合问题,提高预测准确率。

深度⽹络的泛化性质令⼈费解,⽽这种泛化性质的数学基础仍然是悬⽽未决的研究问题。嗯…感觉就是玄学问题了,那训练出加强泛化性质的模型岂不是要拜佛求神了()


根据上面的理论,代码即可设计为↓

def dropout_layer(X, dropout):
   
# 确保 dropout 的取值在 0 1 之间,若不在则停止代码执行,抛出AssertionError 异常
   
assert 0 <= dropout <= 1

   
# 如果 dropout 等于 1,则所有元素都被丢弃,返回与输入张量 X 相同大小的零张量
   
if dropout == 1:
       
return torch.zeros_like(X)

   
# 如果 dropout 等于 0,则所有元素都被保留,直接返回输入张量 X
   
if dropout == 0:
       
return X
   
# 对于其他情况,需要生成一个掩码来选择是否丢弃每个元素:
   
# 这行代码生成一个与输入张量 X 相同大小的 随机数 矩阵,
   
# 并将其大于 dropout 的值设置为 1,小于等于 dropout 的值设置为 0
   
# 最后将其转换为 float 类型。

# torch.rand()从区间 [0, 1) 上均匀分布的随机数生成的
   
mask = (torch.rand(X.shape) > dropout).float()

   
# 下面一行代码将掩码与输入张量 X 进行对应矩阵内元素相乘的操作,实现元素的丢弃操作。
   
# 并且除以 (1 - dropout) 的比例因子,以保持与未丢弃元素的期望值一致(这个自己求一下期望就知道了)
   
# 综上所述,该段代码中的 dropout_layer 函数根据传入的 dropout 参数,在神经网络中应用了 dropout 技术,随机丢弃一部分元素来减少过拟合风险。
   
return mask * X / (1.0 - dropout)

dropout是需要自己带入其中的暂退概率。


暂退法仅在训练期间使⽤。通常,我们在测试时不⽤暂退法。给定⼀个训练好的模型和⼀个新的样本,我们不会丢弃任何节点,因此不需要标准化。然⽽也有⼀些例外:⼀些研究⼈员在测试时使⽤暂退法,⽤于估计神经⽹络预测的“不确定性”:如果通过许多不同的暂退法遮盖后得到的预测结果都是⼀致的,那么我们可以说⽹络发挥更稳定。

p164练习

1. 如果更改第⼀层和第⼆层的暂退法概率,会发⽣什么情况?具体地说,如果交换这两个层,会发⽣什么 情况?设计⼀个实验来回答这些问题,定量描述该结果,并总结定性的结论。

答:原本的dropout1, dropout2 = 0.2, 0.5。

更改第一层和第二层的Dropout概率会对模型的训练和性能产生影响。具体来说,如果交换这两个层的Dropout概率,会导致以下情况:

  1. 改变第一层的Dropout概率(dropout1),增大dropout1可能会增加模型的正则化效果,减少过拟合的风险;而减小dropout1可能会降低模型的正则化效果,增加过拟合的风险。
  2. 改变第二层的Dropout概率(dropout2),增大dropout2可能会增加模型对第二层输出特征的随机丢弃,可能会降低模型的容量,抑制过拟合的趋势;而减小dropout2可能会增加模型的容量,增加过拟合的趋势。

为了具体定量描述此结果,可以设计一个实验步骤如下:

  1. 使用原始的dropout1 = 0.2, dropout2 = 0.5进行训练和评估,记录模型性能(例如准确率、损失值等)。
  2. 将第一层的dropout1值和第二层的dropout2值进行交换,重新训练并记录模型性能。
  3. 比较两个模型在相同测试集上的性能指标。如果第二个模型表现更好,则可以得出结论:较低的dropout1和较高的dropout2对模型性能有积极影响;反之亦然。

通过该实验,可以 quantitatively 测量和比较交换dropout概率后的模型性能。此外,还可以尝试使用不同的dropout概率组合来观察性能的变化,以获得更多场景下的结果。

总结定性的结论时,需要考虑到交换dropout概率对模型的影响可能是个案件(case-dependent),因此需要在多种组合和实验中进行测试和验证。一般而言,增加第一层的dropout可能会减少过拟合风险,适当调整第二层的dropout可能会影响模型的容量和性能。然而,具体结果还取决于数据集、模型复杂度等因素,需要在实验中进行验证和观察才能得出明确的结论。

5. 以本节中的模型为例,⽐较使⽤暂退法和权重衰减的效果。如果同时使⽤暂退法和权重衰减,会发⽣什么情况?结果是累加的吗?收益是否减少(或者说更糟)?它们互相抵消了吗?

答:

在使用本节中的模型时,可以比较使用暂退法和权重衰减的效果。

使用暂退法(Dropout)可以减轻模型的过拟合问题,帮助提高泛化能力。通过在训练过程中以概率p丢弃神经元单元,可以降低模型对特定输入的依赖性,增加模型的鲁棒性。

使用权重衰减(Weight Decay)可以控制模型的复杂度,通过在损失函数中添加一个惩罚项来减小权重值的大小。这有助于减少特征之间的高度相关性,防止过拟合现象的发生。

当同时使用暂退法和权重衰减时,它们可以产生累加的效果,而不是相互抵消。累加的意思是,两种正则化技术相互强化,进一步降低了模型的复杂性和过拟合的风险。

然而,在某些情况下,使用过高的暂退概率权重衰减系数可能会导致欠拟合,从而使结果变得更糟。模型的表达能力受到了双重限制,可能无法充分拟合训练数据和泛化到新的数据。

因此,同时使用暂退法和权重衰减需要谨慎设置参数,需要根据具体任务和数据集进行调优。过大的参数值可能导致性能下降,而合适的参数设置可以提供更好的正则化效果,改善模型的泛化能力。

6. 如果我们将暂退法应⽤到权重矩阵的各个权重,⽽不是激活值,会发⽣什么?

答:

将暂退法应用于权重矩阵的各个权重,而不是激活值,可能会导致模型无法正常学习和有效训练。

暂退法的主要目的是通过在训练过程中随机丢弃神经元单元来减轻过拟合问题。它通常应用于隐藏层的激活值,而不是权重。

如果将暂退法应用于权重矩阵的权重,那么在每次训练迭代中,权重的数值都会以一定的概率被清零或缩小。这将导致模型无法获得充分的训练信号,因为权重是模型参数的关键部分,它们负责控制网络的连接强度和信息传递

通过对权重进行暂退,可能会严重损害模型的表达能力和训练效果,使模型无法学习到有效的特征表示。结果可能是性能下降、训练困难以及泛化能力的丧失。

因此,通常情况下,我们将暂退法应用于隐藏层的激活值,而不是权重矩阵的权重,以获得更好的训练效果和泛化能力。

7. 发明另⼀种⽤于在每⼀层注⼊随机噪声的技术,该技术不同于标准的暂退法技术。尝试开发⼀种 在Fashion-MNIST数据集(对于固定架构)上性能优于暂退法的⽅法。

答:

对于在每一层注入随机噪声的技术,可以考虑使用DropConnect(Dropout的一种变体)来替代标准的暂退法技术。DropConnect是一种正则化方法,它以一定的概率将每个权重连接改为零或缩小。

与传统的暂退法不同,DropConnect作用于权重矩阵的权重,在每次训练迭代中以一定的概率清零或缩小权重。这样做的目的是减少各个神经元单元之间的依赖性,从而增加模型的鲁棒性和泛化能力。

在Fashion-MNIST数据集上尝试开发一种优于暂退法的方法时,可以尝试使用DropConnect,并进行适当的调整和优化。在固定架构下,可以通过验证实验来比较不同的参数设置和模型配置,以找到最佳的性能表现。

需要注意的是,具体的实现和结果可能会因模型结构、超参数选择和数据预处理等因素而有所不同。因此,需要进行实验和评估来确定这种新方法是否在Fashion-MNIST数据集上表现更好。

请注意,我无法提供具体的代码实现或确切的结果指标,因为这需要详细的实验和研究。建议你参考相关的文献和研究论文,或者在机器学习社区中与其他研究人员讨论,以获得更多关于该方法的详细信息和实验经验。

自问:暂退法不可以操纵权重矩阵,那为什么DropConnect可以操纵权重矩阵?

答:

Dropout中,我们将隐藏层的激活值按照一定的概率随机设置为零,从而强制网络学习对于不同神经元的组合具有鲁棒性。这种操作有效地减少了神经元之间的依赖性。

DropConnect中,则是将权重矩阵的权重按照一定的概率随机设置为零或进行缩放。这样做可以达到类似的效果,减少权重之间的依赖,增加模型的鲁棒性。

因此,Dropout和DropConnect都是通过随机操纵隐藏层激活值或权重矩阵,以达到正则化和提高模型泛化能力的目的。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

重剑DS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值