多专家模型(mixture of experts)

来源:互联网 发布:苹果5s怎么用4g网络 编辑:程序博客网 时间:2024/05/29 13:05

Mixtures of experts

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

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

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

转自:http://www.w2bc.com/article/144212