机器学习中使用的神经网络第十讲笔记

Geoffery Hinton教授的Neuron Networks for Machine Learning的第十讲介绍了如何combine模型,并进一步从实际应用的角度介绍了完全贝叶斯方法。

Why it helps to combine models

这一小节,我们讨论在做预测时为什么要结合许多模型。使用多个模型可以在拟合真正的规则和拟合样本错误之间做一个很好的折中。

我们已经知道,当训练数据比较少时容易出现过拟合,如果我们平均一下许多不同模型的预测,那我们就可以降低过拟合的程度。对于回归来讲,当模型的capacity较弱时容易出现high-bias;当模型的capacity太强时,模型就会过多的拟合样本错误,从而出现high-variance。而结合多个不同的模型,我们就可以实现一个更好的折中。

下面我们来分析如何对单独的模型(individual model)和平均的模型(an average of models)进行比较分析。在任意一个单个的测试集上,一些单独的模型的预测结果可能要比结合的模型的预测要好,这很正常。而在不同的样本上,不同的单独的预测器可各有优劣。如果单个的预测器之间相差很大的话,那平均下来,结合后的预测器肯定比单个的都要强,所以我们应该尝试着让单个的预测器差距大一些()犯的错很不相同,但各自的性能还是可以的。

现在,我们来看一下网络结合背后的数学推导。如下图所示,yˉ是N个不同模型对同一个输入的预测的平均,写成了<yi>i;而<(t?yi)2>i表示目标输出t与每一个预测值yi的误差平方的均值。我们可以将<>I看成一个取平均的符号。注意推导的最后一步,平方和展开式的结合项为零,可以直接省去。可以看到,目标输出t与每一个预测值yi的误差平方的均值可以写成目标输出t与结合后的预测yˉ的误差平方再加上一个正值。这就是说,结合后预测要比结合前的好。

下图给出了一个示意图,表示了不同的预测和目标输出的一个差距:红色的表示不好的预测,其与目标输出t的距离要比yˉ与t的距离大得多;绿色的表示好的预测,其与目标输出t的距离要比yˉ与t的距离小。但因为是使用平方误差,所以不好的预测占一个主导地位。

然后我们再做一个数学上的计算,我们假设yˉ到good guy和bad guy的距离相等,然后做一个计算得到了上图中的等式。但这样的等式并非总成立,这里主要是因为我们使用的是平方误差。换一个误差衡量方式,等式就未必成立了。下图给出了一个例子。

下图列出了很多让预测器不同的方法:

下图给出了通过使用不同的训练数据集来得到不同模型的方法:

Mixtures of experts

本小节介绍多专家模型(the mixture of experts model),该模型的思想是训练多个神经网络(也就是多个专家),每个神经网络(专家)被指定(specialize)应用于数据集的不同部分。这就是说,数据集可能有着多个不同的来源(different regimes,意思是说数据集中的数据的产生方式不同,这里我翻译成了“不同的来源”),不同来源提供的数据差距较大(但真实),因此我们为每一个来源的数据一个指定的神经网络来处理,而且模型还有一个managing neural net用来判断一个输入应该交给哪一个神经网络来处理。

对于较小的数据集,该模型的表现可能不太好,但随着数据集规模的增大,该模型的表现会有明显的提高。更重要的是,单个的模型往往善于处理一部分数据,不擅长处理另外一部分数据(在这部分数据上犯错多),而多专家系统则很好的解决了这个问题:系统中的每一个神经网络,也就是每一个专家都会有一个擅长的数据区域,在这组区域上其要比其他专家表现得好。

下图给出了局部模型(very local models)与全局模型(fully global models)的一个比较。

多专家系统是单一全局模型或者多个局部模型的一个很好的折中,但我们现在面临的一个很重要的问题就是如何将数据集分成不同的部分。下图展示了划分数据集的几种方法:按照输入到输出的映射,可以将图中数据分成两组,一组对应那条红色的抛物线,一组对应那条绿色的抛物线;仅按照输入作一个聚类的话,就被图中那条蓝色直线分成了两类。这里划分训练数据集的目的在于能够从每一个cluster中的输入和输出很好得得到一个局部模型。

下面我们来介绍使模型cooperate的损失函数,下图使用了前一小节介绍的东西,这样训练得来的模型要比单独训练每个模型的性能更好。

下图给出了averaging models为什么能够使模型cooperation的原因。下图右侧是除模型i外所有模型对某一输入的预测的平均,中间的t是目标输出,左侧yi是模型i的预测。当我们加上yi去计算一个新的平均值时,这个值肯定要更接近t,从而实现了一点点修正。所以,为了使平均值越来越接近t,我们就需要yi左移。

但实际上,我们希望做的是让yi越来越接近目标t,而这种做法就会使得模型specialization。下图给出了一个使模型specialization的损失函数。这里的损失是一个期望值,其中的pi是我们在处理该组输入数据时会使用模型i的概率。

多专家系统使用了第二种损失函数的形式,下图给出了示意图。在多专家系统中有一个softmax gating network,对于一个给定的输入,该网络输出每一个专家对该输入的处理的可靠度。而系统最终的损失函数就是每个专家的输出与目标的差值平方再乘上可靠度。

下图给出了两个偏导。前一个偏导得到的梯度表示一个专家应做的修正:如果该专家的可靠度(Pi)较小,那么该梯度值也就很小,也就意味着该专家(神经网络)只需要做一个很小的调整(只需要为现在犯的这个错误负很小的责任);如果该专家的可靠度(pi)较大,那么该梯度也就比较大,也就意味着该专家(神经网络)需要做一个大的修正(需要为现在犯的这个错误负很大的责任)。后一个偏导得来的梯度用来修正专家的可靠度:如果一个专家犯的错比平均错误来的小,那我们就要增大其可靠度;如果一个专家犯的错误比平均错误来的大,那我们就应该降低其可靠度。

在这一小节的最后hinton给出了多专家系统的一个更好的损失函数。

The idea of full Bayesian learning

这一小节继续介绍完全贝叶斯方法,介绍在实际中如何应用它。在完全贝叶斯方法中,我们不是尝试着去找到仅仅一组参数设置,而是去求出所有可能的参数设置的后验概率分布(也就是对于每一组可能的参数设置都有一个后验概率密度,积分起来恰为一)。然后在预测阶段,我们计算出所有参数设置对应的预测值,然后每个预测值乘上该参数设置的后验概率再求和得到一个加权值,这个加权值就是模型最后的输出。当然,这两个过程都需要做大量的计算工作。还有一点,完全贝叶斯方法在较小的数据集上仍可以使用较复杂的模型。

前面我们已经讲过,复杂模型在较小的数据集上会出现过拟合的问题。但前面说的过拟合是发生在我们前面得到的那个最佳参数设置上,完全贝叶斯方法要所有可能的参数设置,这就大大较小了过拟合的可能。在较小的数据集上,完全贝叶斯方法考虑的参数设置会特别多(可用的参数设置所在的空间比较大),因此最终的预测也会很模糊。随着数据集的增大,完全贝叶斯考虑的参数设置越来越有指向性(可用参数设置所在空间变得越来越小),最终的预测也会越来越准确。

下图给出了拟合的一个典型例子:右上图中有六个数据点,红色曲线表示一条五次多项式,明显过拟合。但是如果我们基于一个合理的先验条件,如多项式的次数为5,去使用完全贝叶斯方法求得所有可能的参数设置。下图右下给出了几条可能的参数设置对应的曲线。可以看到,这些曲线差别很大,但如果由所有曲线的预测值去计算出一个加权值,会发现这些加权值大概会落在绿色直线的附近。

对于为什么数据集的大小会影响我们的先验条件和模型的复杂度,从贝叶斯的角度出发是没有原因的。下面介绍在一个仅有几个参数的神经网络中去近似的使用完全贝叶斯学习。

我们在参数空间上放置一个网格(a grid),然后对每一个参数选定几个值,然后我们就得到了参数空间上的若干网格点。每一个网格点对应一组参数,我们就可以判断每一组参数预测数据的性能如何。这里没有引入梯度下降,我们需要考虑的只是参数空间中的一系列参数点。一旦确定了每个参数点的后验概率,我们就可以对预测集中的数据做预测了。整个过程的计算量都很大,但在较小的数据集上,该方法要比最大似然法或者最大后验概率法好很多。下图中给出了一个概率计算公式。

下图给出了完全贝叶斯学习的一个例子。

Making full Bayesian learning practical

后面两小节明天更新。

Dropout

时间: 2024-12-15 06:54:57

机器学习中使用的神经网络第十讲笔记的相关文章

机器学习中使用的神经网络第六讲笔记

Geoffery Hinton教授的Neuron Networks for Machine Learning的第六讲介绍了随机梯度下降法(SGD),并且介绍了加快学习速度的动量方法(the momentum method).针对网络中每一个连接的自适应学习步长(adaptive learning rates for each connection)和RMSProp算法. 这几个算法的难度很大,需要反复推理思考,并在实践中摸索以加深理解. Overview of mini-batch gradie

机器学习中使用的神经网络第四讲笔记

Geoffery Hinton教授的Neuron Networks for Machine Learning的第四讲主要介绍如何使用back propagation算法来学习到词汇的特征表示. Learning to predict the next word 接下来的几小节主要介绍如何使用back propagation算法来学习到词汇的特征表示.我们从一个很简单的例子开始,介绍使用back propagation算法来将词汇间的相关信息转换成特征向量. 下图给出了一个家庭的树状图,我们要做的

机器学习中使用的神经网络第七讲

这一节主要介绍了RNN和LSTM. Modeling sequences: A brief overview 在这一小节,我们将对应用于序列(sequences)的不同类型的模型做一个概括.我们从最简单的模型--ultra aggressive models(该模型尝试根据前一个序列(term or sequence)去预测下一个序列)开始,接着再讨论该模型使用了隐含层的复杂变形,然后再介绍更多有着hidden state和hidden dynamics的模型(这其中包含了linear dyna

机器学习中使用的神经网络(七)

A geometrical view of perceptron 感知器的几何视图 Weight-space 权值空间 在这个空间中,每一个感知器中的权值都表示一维,而空间中的一点则代表了所有权值的特定集合,假设消除阈值,则每个训练样本都可以看做通过起点的超平面.So, points in the space correspond to weight vectors and training cases correspond to planes. 也就是说,空间中的点对应权值向量,超平面则对应训

机器学习中使用的神经网络第九讲笔记

Geoffery Hinton教授的Neuron Networks for Machine Learning的第八讲为可选部分,好像很难,这里就先跳过了,以后有用的时候再回来补.第九讲介绍了如何避免过拟合,提高模型的泛化能力. 这是Cousera上的课程链接 Overview of ways to improve generalization 这一小节,我们介绍如何在网络有过多能力处理过多容量的训练数据集时,如何通过降低过拟合来提高网络模型的泛化能力.下面将介绍几种控制网络容量的方法,以及如何设

机器学习中使用的神经网络第五讲笔记

Geoffery Hinton教授的Neuron Networks for Machine Learning的第五讲主要介绍物体识别问题的难点及克服这些难点的方法,重点介绍了数字识别和物体识别中使用的卷积网络. Why object recognition is difficult 我们知道识别真实场景中的物体是很困难的,这一小节我们来介绍造成这些困难的一些东西. Segmentation: 在一个图像中,我们很难将其中的一个物体与其他的物体分隔开.在现实生活中,我们人类有两只眼睛且我们身体可以

机器学习中使用的神经网络(一)

本系列博客根据Geoffrey Hinton课程Neural Network for Machine Learning总结. 课程网址为: https://www.coursera.org/course/neuralnets 1.Some examples of tasks best solved by learning 机器学习最适用的领域举例 - Recognizing patterns: 模式识别– Objects in real scenes 物体识别 – Facial identiti

机器学习中使用的神经网络(四)

机器学习的一个简单例子 It is a very simple kind of NeuralNet and it is gonna be learning to recognize digits and you gonna be able to see how the weights  evolved as we run a very simple learning algorithm. A very simple learning algorithm for traing a very sim

机器学习中使用的神经网络(六) --第二课

An overview of the main types of neural network architecture 神经网络结构的主要类型 什么是神经网络的结构? 神经网络中神经元的组织方式. 1. 目前应用领域中最常用的结构类型是feet-forward 神经网络, 信息来自输入单元,并且以一个方向流动,通过隐含层,直到所有信息到达输出单元. 2 .一种非常有趣的结构类型是recurrent神经网络,information can flow round in cycles. 这种网络能够