Task 2
1 ) 自适应学习率
梯度大小和损失大小没有关联:
在训练网络时,起初损失较大,随后随着参数更新损失逐渐减小,最后停滞,不再下降。此时,尽管损失不再降低,但梯度的范数实际上并未真正变小。随着迭代次数增多,这种情况依然存在,即损失不再下降,而梯度的范数也没有变小。
概念:
梯度的范数(norm):梯度这个向量的长度
前述方法训练到参数在临界点附近,再根据特征值的正负号判断该临界点是鞍点还是局部最小值。实际上,要走到一个临界点其实是比较困难的,多数时候训练在还没有走到临界点的时候就已经停止了。
最原始的梯度下降连简单的误差表面都做不好,因此需要更好的梯度下降的版本。
概念:
自适应学习率:一种在梯度下降算法中为每个参数定制不同学习率的方法。
它的目的是解决原始梯度下降中所有参数使用相同学习率的不足,通过根据参数的特点和训练情况为每个参数分配最合适的学习率,以提高算法的性能和收敛速度。
AdaGrad算法
主要思想:令当前的学习率等于上一次迭代后得到的学习率除以当前迭代次数之前的所有微分之和的均方根
普通的学习率计算方法:
AdaGrad算法:
化简: 利用来表示学习率,化简后有:
下图中,θ1 坡度小,其梯度值小,导致 小,从而学习率大;θ2 坡度大,梯度值大, 大,更新时步伐小。有了 后,可根据梯度不同自动调整每个参数的学习率大小。
Q:为什么AdaGrad优化算法可以自适应地调整每个参数的学习率?
A :AdaGrad算法通过计算过去所有梯度的平方和的均方根来调整每个参数的学习率,这样梯度大的参数会有较小的学习率,而梯度小的参数会有较大的学习率。
但仍存在问题:
RMSprop :用于解决同一个参数在不同时间需要动态调整学习率的问题
RMSprop方法中新的最近算出来的梯度影响较大
Adam:
最常用的优化的策略或者优化器(optimizer)是Adam(Adaptive moment estimation)。Adam 可以看作 RMSprop 加上动量,其使用动量作为参数更新方向,并且能够自适应调整学习率。
Q: Adam 优化器结合了哪两个方法的优点?
A:Adam 可以看作 RMSprop 加上动量,其使用动量作为参数更新方向,并且能够自适应调整学习率。
优化总结:
扩展:梯度下降(二):自适应梯度(AdaGrad)、均方根传递(RMSProp)、自适应增量(AdaDelta)、自适应矩估计(Adam)、Nesterov自适应矩估计(Nadam)-CSDN博客
深度学习(14)神经网络的优化-优化器,动量,自适应学习率,批量归一化_深度学习 归一化和优化器-CSDN博客
2 )分类
用数字表示分类问题:
Q : 在深度学习中,分类问题与回归问题的主要区别是什么?
A : 分类问题可以当作回归问题来看,但为了避免类别之间的关系预设问题,分类问题通常使用独热向量表示类别。
扩展:损失函数整理(分类和回归)_分类损失函数-CSDN博客
softmax举例:
Q:softmax函数在分类问题中的作用是什么?
A:softmax函数将原始的输出值(可以是任意实数)转换成一个概率分布,其中每个类别的概率都在0到1之间,并且所有类别的概率和为1。这使得softmax函数能够将模型的输出与独热编码的目标标签进行有效比较。
改变损失函数可以改变优化的难度。
Q:为什么交叉熵损失函数在某些情况下比均方误差损失函数更适合用于分类问题
A:交叉熵损失函数在梯度较大时更容易优化,因为它在损失较大的地方仍然保持了较大的梯度,这有助于梯度下降算法在这些区域进行有效的参数更新。而均方误差损失在损失很大时梯度可能很小,导致优化困难。
扩展:
损失函数(loss function)(基本介绍,作用,场景,特点,常见损失函数,代码示例)-CSDN博客
3 ) 实践任务-CNN
实践任务:HW3(CNN)卷积神经网络-图像分类
运行完生成的`submission.csv`文件包含分类结果,可提交至Kaggle进行评估。
验证集可视化分布如下:
扩展:
数据增强:
1. 数据增强的目的
对现有数据集进行扩充和变换,从现有数据集中生成新的训练样本,增加数据的多样性和丰富性,从而提高模型的泛化能力和鲁棒性。
在实际应用中,模型往往会面临各种各样的情况,如果仅使用有限的原始数据进行训练,模型可能会过度拟合这些数据,导致在面对新的数据时表现不佳。通过数据增强,可以让模型学习到更多的变化和模式,使其能够更好地适应不同的场景和情况。
2. 数据增强的技术
常见的增强技术包括翻转、旋转、缩放和颜色调整等。
传统几何变换方法:
随机裁剪:从原始图像中随机裁剪出一部分区域,作为新的训练样本。
亮度调整:对图像的亮度进行随机调整,增加数据的光照多样性。
对比度调整:改变图像的对比度,使模型对不同对比度的图像具有更好的适应性。
添加噪声:向图像中添加随机噪声,如高斯噪声、椒盐噪声等,以模拟真实世界中的噪声情况。
图像扭曲:对图像进行扭曲、变形等操作,增加数据的多样性。
镜像变换:对图像进行镜像操作,如左右镜像或上下镜像,使模型学习到物体的镜像特征。
混合图像:将两个或多个图像进行混合,生成新的图像,同时相应地混合标签,以增加数据的多样性和模型的泛化能力。
随机擦除:随机选择图像中的一部分区域并将其擦除,使模型学习到物体的部分缺失情况。
基于模型的数据增强方法:(利用机器学习模型来生成新的数据样本的技术)
生成对抗网络(Generative Adversarial Network,GAN): 由生成器和判别器组成。生成器试图生成逼真的假数据样本,而判别器则试图区分真实数据和生成器生成的数据。通过不断训练这两个网络,生成器可以学习到数据的分布,从而生成新的、与原始数据相似的数据样本。
变分自编码器(Variational Autoencoder,VAE):一种生成模型,它可以学习数据的潜在表示。通过对潜在表示进行采样,可以生成新的数据样本。VAE 可以用于图像、文本等数据的增强。
自训练和半监督学习:利用少量有标记数据进行模型的初步训练,然后使用训练好的模型对大量无标记数据进行预测,将预测结果作为伪标记数据。这些伪标记数据可以与原始数据一起用于进一步训练模型,从而实现数据增强的效果。
模型融合:结合多个不同的模型或模型的预测结果,生成新的数据样本。例如,可以使用多个模型对同一数据进行预测,然后将这些预测结果进行组合或融合,得到新的样本。
迁移学习:将在一个数据集上训练好的模型应用于另一个相关的数据集,并根据新数据集的特点进行微调。这种方法可以利用已有的模型知识,减少对大量数据的需求。
主动学习增强方法:
主动学习是一种通过选择最有价值的数据进行标注,从而减少数据标注工作量并提高模型性能的方法。通过主动学习增强方法,可以更加有效地利用有限的标注资源,提高数据的质量和模型的性能。同时,这种方法也可以减少对大量数据的需求,降低数据收集和标注的成本。主动学习增强方法的效果取决于数据的分布、模型的选择以及标注策略的合理性等因素。
推荐:
总结 62 种在深度学习中的数据增强方式_stylemix: separating content and style for enhance-CSDN博客
常用数据增强方法(基于pytorch)_pytorch,数据增强-CSDN博客
数据增强(Data Augmentation)常用方法汇总-CSDN博客
【深度学习】数据增强基本介绍和常用的数据增强方法-CSDN博客
3. 相关库
Albumentations、Imgaug 和 TensorFlow 的 ImageDataGenerator 等库可以实现这些增强。
Albumentations:一个功能强大的图像增强库,提供了丰富的图像变换操作,包括几何变换、颜色变换、添加噪声等。它支持多种数据格式,如 NumPy 数组、PIL 图像和 OpenCV 图像。
链接:https://albumentations.readthedocs.io/
Imgaug:一个广泛使用的图像增强库,它提供了各种各样的图像增强操作,并且可以很容易地与其他深度学习框架集成。
链接:https://github.com/aleju/imgaug
TensorFlow 的 ImageDataGenerator: TensorFlow 提供的一个用于图像数据增强的工具,它可以自动进行数据增强操作,如翻转、旋转、缩放等,并且可以直接在训练过程中使用。