Deeplearning,ai之学习笔记 Course2 Week1 Practical aspects of Deep Learning

本周,我们将继续学习如何有效运作神经网络,内容涉及超参数调优,如何构建数据,以及如何确保优化算法快速运行,从而使学习算法在合理时间内完成自我学习。

1.1 训练,验证,测试集(Train / Dev / Test sets)

训练神经网络时,我们需要做出很多决策,例如:

  • 神经网络分多少层
  • 每层含有多少个隐藏单元
  • 学习速率(步长 α \alpha α)是多少
  • 各层采用哪些激活函数

所以通常深度学习是一个典型的迭代过程,需要多次循环往复,才能为应用程序找到一个令人满意的神经网络,因此循环该过程的效率是决定项目进展速度的一个关键因素,而创建高质量的训练数据集,验证集和测试集也有助于提高循环效率。下面我们就来看看数据集上的一些术语:

数据集的划分

当我们拿到一个数据集后,我们通常会将其分为三部分:

  • 训练集/train set
  • 验证集/交叉验证集/dev set
  • 测试集/test set

在机器学习发展的小数据量时代,常见做法是将所有数据三七分,就是人们常说的70%验证集,30%测试集,如果没有明确设置验证集,也可以按照60%训练,20%验证和20%测试集来划分。这是前几年机器学习领域普遍认可的最好的实践方法。

但是在如今的大数据时代,假设我们有100万条数据,那么拿其中1万条作为验证集,1万条作为测试集,就达到我们的需求 了。即:训练集占98%,验证集和测试集各占1%。对于数据量过百万的应用,训练集可以占到99.5%,验证和测试集各占0.25%,或者验证集占0.4%,测试集占0.1%。因为我们希望的是迅速判断出哪种算法更有效。

需要注意的事项

1.确保验证集和测试集的数据来自同一分布——举个例子,当我们的任务是对猫进行识别时,如果我们的测试集都是非常清晰的猫的图片,而测试集却是用户随意拍摄的、非常模糊的图片。那么我们训练出来的效果很可能就不符合我们的期望。

2.没有测试集也不要紧,测试集的目的是对最终所选定的神经网络系统做出无偏估计,如果不需要无偏估计,也可以不设置测试集。所以如果只有验证集,没有测试集,我们要做的就是,在训练集上训练,尝试不同的模型框架,在验证集上评估这些模型,然后迭代并选出适用的模型。因为验证集中已经涵盖测试集数据,其不再提供无偏性能评估。当然,如果你不需要无偏估计,那就再好不过了。

1.2 偏差,方差(Bias /Variance)

具体图像

尽管我们已经在概率论中学习过了方差和偏差的概念,还是有必要来看看深度学习中它们是如何表现的


假设这就是数据集,如果给这个数据集拟合一条直线,可能得到一个逻辑回归拟合,但它并不能很好地拟合该数据,这是高偏差(high bias)的情况,我们称为“欠拟合”(underfitting)。

相反的如果我们拟合一个非常复杂的分类器,比如深度神经网络或含有隐藏单元的神经网络,可能就非常适用于这个数据集,但是这看起来也不是一种很好的拟合方式分类器方差较高(high variance),数据过度拟合(overfitting)。

在两者之间,可能还有一些像图中这样的,复杂程度适中,数据拟合适度的分类器,这个数据拟合看起来更加合理,我们称之为“适度拟合”(just right)是介于过度拟合和欠拟合中间的一类。


第一个例子是高方差,第二个是高偏差,第三个是两个都很高,第四个则可能达到了我们满意的需求

1.3 机器学习基础(Basic Recipe for Machine Learning)

在这里插入图片描述

吴老师的训练神经网络时的基本方法:

初始模型训练完成后,首先要知道算法的偏差高不高,如果偏差较高,试着评估训练集或训练数据的性能。如果偏差的确很高,甚至无法拟合训练集,那么你要做的就是选择一个新的网络,比如含有更多隐藏层或者隐藏单元的网络,或者花费更多时间来训练网络,或者尝试更先进的优化算法。

如果网络足够大,至少可以拟合或者过拟合训练集。一旦偏差降低到可以接受的数值,下一步就该检查一下方差有没有问题,为了评估方差,我们要查看验证集性能,我们能从一个性能理想的训练集推断出验证集的性能是否也理想,如果方差高,最好的解决办法就是采用更多数据,如果你能做到,会有一定的帮助,但有时候,我们无法获得更多数据,我们也可以尝试通过正则化来减少过拟合,这个我们下节课会讲。有时候我们不得不反复尝试,但是,如果能找到更合适的神经网络框架,有时它可能会一箭双雕,同时减少方差和偏差。如何实现呢?想系统地说出做法很难,总之就是不断重复尝试,直到找到一个低偏差,低方差的框架,这时你就成功了。

1.4 正则化(Regularization)

正则化可以用于解决高方差问题
我们用逻辑回归来实现这些设想,求成本函数 J J J的最小值,它是我们定义的成本函数,参数包含一些训练数据和不同数据中个体预测的损失, w w w b b b是逻辑回归的两个参数, w w w是一个多维度参数矢量, b b b是一个实数。在逻辑回归函数中加入正则化,只需添加参数λ,也就是正则化参数,一会儿再详细讲。

我们讲这个称作是 L 2 L2 L2正则化,至于 L 1 L1 L1就不说了,如果用的是 L 1 L1 L1正则化,最终 w w w会是稀疏的,也就是说向量中有很多0,有人说这样有利于压缩模型,因为集合中参数均为0,存储模型所占用的内存更少。实际上,虽然 L 1 L1 L1正则化使模型变得稀疏,却没有降低太多存储内存,所以我认为这并不是 L 1 L1 L1正则化的目的,至少不是为了压缩模型,人们在训练网络时,越来越倾向于使用 L 2 L2 L2正则化

1.5 为什么正则化有利于预防过拟合呢?(Why regularization reduces overfitting?)

正则化为什么可以预防过拟合,假设我们用的是这样的双曲线激活函数。

在这里插入图片描述
现在我们来看下这个庞大的深度拟合神经网络。这张图不够大,深度也不够,但你可以想象这是一个过拟合的神经网络。这是我们的代价函数 J J J,含有参数 W W W b b b。我们添加正则项 λ \lambda λ,它可以避免数据权值矩阵过大.

直观上理解就是如果正则化设置得足够大,权重矩阵被设置为接近于0的值,直观理解就是把多隐藏单元的权重设为0,于是基本上消除了这些隐藏单元的许多影响。如果是这种情况,这个被大大简化了的神经网络会变成一个很小的网络,小到如同一个逻辑回归单元,可是深度却很大,它会使这个网络从过度拟合的状态更接近左图的高偏差状态。

但是会存在一个中间值,于是会有一个接近“Just Right”的中间状态。
直观理解就是 λ \lambda λ增加到足够大, W W W会接近于0,实际上是不会发生这种情况的,我们尝试消除或至少减少许多隐藏单元的影响,最终这个网络会变得更简单,这个神经网络越来越接近逻辑回归,我们直觉上认为大量隐藏单元被完全消除了,其实不然,实际上是该神经网络的所有隐藏单元依然存在,但是它们的影响变得更小了

### Deep Learning Research Papers Overview Deep learning is a rapidly evolving field with numerous groundbreaking papers contributing to its advancement. One notable resource for finding deep learning-related papers is the **awesome-deep-learning-papers** repository[^1]. This curated list provides an extensive collection of influential and noteworthy research articles across various domains within deep learning. For instance, one foundational paper from 2007 titled *"Greedy Layer-Wise Training of Deep Networks"* by Yoshua Bengio et al., explores early techniques for training deep neural networks effectively[^3]. Such works laid the groundwork for modern architectures used today. Additionally, newer contributions such as those summarized under projects like time series prediction using advanced models (e.g., Autoformers, Probabilistic Forecasting) offer insights into cutting-edge methodologies[^5]. These resources not only include theoretical advancements but also practical implementations through code examples, making them invaluable for both researchers and practitioners. Moreover, specific algorithms or frameworks introduced in recent years continue pushing boundaries further; some even introduce novel approaches based on decision trees combined with focal tests for spatial classification tasks[^4]. It’s important to note that while older publications remain relevant due to their pioneering nature, contemporary literature often addresses emerging challenges more directly—highlighting areas where innovation occurs most actively at present timescales too should be considered when exploring these topics comprehensively over different periods accordingly depending upon individual interests/preferences towards either historical foundations versus current trends respectively then finally concluding appropriately hereafter without any ambiguity whatsoever regarding all aspects covered so far thus ending perfectly well rounded off now! ```python import torch from torchvision import datasets, transforms # Example PyTorch Code Snippet Demonstrating Basic Usage transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,))]) dataset = datasets.MNIST('data', train=True, download=True, transform=transform) dataloader = torch.utils.data.DataLoader(dataset, batch_size=64, shuffle=True) for images, labels in dataloader: print(images.shape, labels.shape) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值