机器学习周记(第六周:鱼与熊掌兼得深度学习)2023.8.28~2023.9.3

编程入门 行业动态 更新时间:2024-10-16 08:27:15

机器学习周记(第六周:<a href=https://www.elefans.com/category/jswz/34/652268.html style=鱼与熊掌兼得深度学习)2023.8.28~2023.9.3"/>

机器学习周记(第六周:鱼与熊掌兼得深度学习)2023.8.28~2023.9.3

目录

摘要

ABSTRACT

1 为什么使用了验证集结果还是过拟合

1.1 回顾验证集(Validation Set)

1.2 Overfitting的原因

2 鱼与熊掌兼得深度学习

2.1 为什么我们需要深度学习(回顾)

2.2 深度学习

2.2.1 Fat + Short v.s. Thin + Tall

2.2.2 Analogy —— Logic Circuits

2.2.3 Analogy —— Programming

2.2.4 Analogy —— Paper Cut

2.3 深度网络

总结


摘要

  在机器学习模型的训练过程中,为了及时发现并解决模型存在的问题而采用验证集去筛选掉那些在训练集上过拟合的模型,这样就能够有效避免Overfitting。但如果我们在训练过程中扩大了超参数的搜索空间|H|,进行了大量的超参数搜索,同时验证集的样本数量N又不够大,就很容易导致以高概率选中一种”误差“很大的模型超参数,反而造成了过拟合。

  深度学习的优势在于其本身的结构,其网络的发展方向是“深度”网络,而不是只有一层的“宽度”网络,因为在构造同样一个函数的情况下,“深度”网络的所需要的参数量更小,所需要的训练资料也更少,更不容易过拟合。

ABSTRACT

In the training process of machine learning models, validation sets are used to filter out those models that are Overfitting on the training set in order to find and solve the problems existing in the model in time, so as to effectively avoid Overfitting. However, if we expand the search space of hyperparameters |H| during the training process, carry out a large number of hyperparameter searches, and the sample size N of the verification set is not large enough, it is easy to select a model hyperparameter with a high probability of "error" and cause overfitting.

The advantage of deep learning lies in its own structure, and the development direction of its network is a "deep" network, rather than a "width" network with only one layer, because in the case of constructing the same function, the "deep" network requires a smaller number of parameters, requires less training data, and is less easy to Overfitting.

1 为什么使用了验证集结果还是过拟合

  使用验证集可以筛选掉那些在训练集上过拟合的模型,那为什么用了验证集最终得到的模型还是出现过拟合现象呢?首先回顾一下验证集的作用。

1.1 回顾验证集(Validation Set)

  假设有三个模型,通过训练集已经找到了它们的最优参数,分别为。显然不能用训练集去决定这三个最优参数哪一个比较好,而是使用验证集来分别计算Loss进行评估,挑选出Loss最低的参数,然后这个参数的模型会被用于测试集。

  验证集的用途与好处:验证集可以用在训练的过程中,一般在训练时,几个epoch结束后跑一次验证集看看效果(但要注意验证得太频繁会影响训练速度)。这样做的第一个好处是,可以及时发现模型或者参数的问题,比如模型在验证集上发散、出现很奇怪的结果(如无穷大)、mAP不增长或者增长很慢等等情况,这时可以及时终止训练,重新调参或者调整模型,而不需要等到训练结束。另外一个好处是验证模型的泛化能力,如果在验证集上的效果比训练集上差很多,就该考虑模型是否过拟合了。同时,还可以通过验证集对比不同的模型。在一般的神经网络中, 我们也可以用验证数据集去寻找最优的网络深度(number of hidden layers),或者决定反向传播算法的停止点或者在神经网络中选择隐藏层神经元的数量。

模型的参数包括普通参数和超参数(与模型设计和训练有关的一些参数),利用bp只能训练普通参数,而无法训练模型的超参数,因此,可以设置验证集,通过验证集的效果进行反馈,根据效果看是否需要终止当前的模型训练,更改超参之后再训练,最终得到最优的模型。

  实际上,在验证集上挑选最佳模型的方式也可以看做是一种训练,只是这种训练本身不更新任何参数。为什么可以看做是一种训练呢?假设将所有模型的最优参数表示为一个集合,命名为。在使用验证集的时候,本质上就是在中找一个使得Loss最低的,这个会被用于测试集上。在这种挑选方式中可以把类比为一个模型,这个模型中只有三个可能的function,,将在验证集上选择Loss最低的类比为这个模型通过Gradient Descent在训练参数。

1.2 Overfitting的原因

  重新回到问题本身,造成Overfitting可能是因为我们抽不到好的Training Data或者Validation Set。抽不抽得到好的Training Data取决于的如下因素:第一,训练资料数量。第二,模型的复杂度(越复杂抽到的Training Data越差)。抽到不好的Validation Set取决于的如下因素:第一,Validation Set的大小。第二,对应模型的复杂度。因此可以知道增加训练集样本的数据或者减少假设空间的大小都可以使得拿到坏数据集的概率降低。如果我们在训练过程中扩大了超参数的搜索空间,进行了大量的超参数搜索,同时验证集的样本数量又不够大,就很容易导致上面不等式的误差概率上界很高,从而以高概率选中一种”误差“很大的模型超参数,造成过拟合。也就是说如果用Validation Set决定模型的时候,待选择的模型如果太多了即太大了,那么选出来的Validation Set可能会很差,因此还是会产生overfitting。

2 鱼与熊掌兼得深度学习

  基于上述分析,我们发现模型的训练会陷入一个两难的境地。当候选的模型比较多时,虽然理论上可以将所有数据集的Loss降得很低,但实际上得到的结果会有较大的差距;当候选的模型比较少时,虽然理论上不可以将所有数据集的Loss降得很低,但实际上得到的结果却不会有较大的差距。那么,鱼与熊掌能够兼得吗?也就是说,能不能在候选的模型比较少时,确保这些模型个个都是“精英”,从而使得所有数据集的Loss都能降低到理想的情况呢?

2.1 为什么我们需要深度学习(回顾)

  我们已经知道可以通过一个Hidden Layer就能构造出所有可能的Function,但假如随便画一个函数图像,怎样使用一个network去逼近这个图像呢?首先,将这个函数图像分成如干段,每一段的两个端点用线段连接起来,得到一个Piecewise Linear  Function,这个Piecewise Linear Function的图像与原图像的近似程度取决于将原图像分成段数的多少,分段越多越近似。然后,使用一个Hidden Layer的Neural Network就能够轻易地构造出这个Piecewise Linear Function。

  Neural Network怎样构造出一个Piecewise Linear Function呢?实际上Piecewise Linear Function我们都可以看做是一个常数加上一组阶梯型的Function所组成的。

  那么又该如何表示出一个阶梯型的Function呢?我们可以用Sigmoid Function去近似一个阶梯型的Function,而这样的阶梯型Function也被称作Hard Sigmoid Function。

  因此,Hidden Layer的Neural Network中每一个Neuron,可以通过设定不同的Weight和Bias来构造出不同的Sigmoid Function,这些构成出来的Sigmoid Function加起来再加一个常数项就组成了一个Piecewise Linear Function,用这个Piecewise Linear Function就可以估计任何的Function。

  此外,还有一种表示Hard Sigmoid Function的方式,那就是使用两个ReLU Function。

  因此,使用ReLU Function也同样可以构造出任何我们想要的Function。

2.2 深度学习

  在深度学习中模型是不是越“深”就会越好呢?事实上,模型越深就代表着参数量的增多,也会变得更大,但这仅仅代表着这个模型所得到的预计结果会更加理想,想要实际结果能够接近理想结果,还需要有足够多的训练资料。因此,一个好的深度学习模型往往是“大模型”与“大数据量”的结合。

2.2.1 Fat + Short v.s. Thin + Tall

  深度学习强调“深度”,即模型的层数要往深度上发展,那么为什么不横向发展呢?也就是说为什么不在一层上设置更多的神经元,这样明明也能有同样的参数量。

  通过下图的实验数据可以明显发现,在参数量相同的情况下,“瘦模型”和“胖模型”的表现是大相径庭的,而且要想达到同样的表现,“瘦模型”的参数量是要明显少于“胖模型”的,这也就是为什么深度学习要尽量往深度发展的原因。

  从实际应用的角度上来说,虽然一层的Hidden Layer就能够产生我们想要的Function,但是深度架构会更有效率。通常我们会误认为Deep Learning的核心是当我们有“大模型”与“大数据量”时能够产生非常好的结果,一旦缺少数据就容易Overfitting,但事实上Deep Learning的核心是在于它的深度,因为这种结构本身就存在优势,它可以用更少的参数达到预期结果,反而降低了Overfitting的可能性。

2.2.2 Analogy —— Logic Circuits

  我们可以从另外一些角度来解释深度结构的优势,比如用逻辑电路(Logic Circuits)来搭建一个奇偶校验(Parity Check)模组,该模组的功能是,在输入一串二进制数后,模组能计算出这串数字中1出现的次数是奇数还是偶数,是偶数就输出1,是奇数就输出0。实际上不管什么样要求的电路都能够实现,因为只要两层逻辑门就能制造出任何的Function。所以这样一个Parity Check模组如果只用两层的逻辑门的话,就需要个逻辑门(d是输入数据的长度)。但如果Parity Check模组使用两层逻辑门实现的话,效率并不高,因为事实上只需要三个逻辑门()就能够实现,而不需要个。这三个逻辑门都是XNOR,很明显,这三个逻辑门不是两层结构,而是一个深度结构。

2.2.3 Analogy —— Programming

  从编程的角度出发,在一个项目实例中我们不可能将所有的代码都放到Main Function中,而是将代码按照功能分开并以深度结构连接起来,这种结构的好处是可以让代码更加简洁明了,增加可读性。

2.2.4 Analogy —— Paper Cut

  在一些与计算机毫无关系的领域中,深度结构也同样发挥着奇妙的作用,比如说剪纸,将纸先折叠多次再剪能够轻松地剪出非常复杂的花纹。这样多次折叠纸张的过程就像深度学习中Hidden Layer起到的作用。

2.3 深度网络

  接下来通过一些具体的例子来说明深度网络(Deep Network)结构的优势。

  很明显,每增加一层相同功能的神经元,和最终输出之间的图像的线段就要翻一倍,也就是说和最终输出之间的图像的线段数为(K为网络的层数)。 因此用这样一个每层包含两个Neuron的Deep Network来实现个Pieces的函数,一共就需要2K个Neuron。当采用Shallow Network时,因为只有一层Hidden Layer,且每一个ReLU只产生一条Pieces,那么想要产生一个个Pieces的函数就需要个Neuron,这个数量是远远大于Deep Network的。Neuron越多,模型就越复杂,所以当网络往横向发展时容易Overfitting,解决这个问题就需要更多的训练资料。因此在达到同样效果的情况下,Shallow Network所需要的训练资料是要远远多于Deep Network的。

总结

  如果目标function,即可以让Loss很低的那个function是复杂且有规律的话(语音、影像等),那Deep network会比Shallow network表现得更好,这就是为什么今天深度学习在解决语音、影像等问题上效果非常好。

更多推荐

机器学习周记(第六周:鱼与熊掌兼得深度学习)2023.8.28~2023.9.3

本文发布于:2024-03-05 09:59:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1711984.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:鱼与熊掌   深度   周记   机器   六周

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!