费曼说:学习一件事情最好的方式是做它的老师,这也是写这篇博文的目的,写这篇博文,即便有其他原因,但更多的还是写给自己,话不多说,让我们开始进入大模型吧
任务说明:任务说明
基座课程:斯坦福大学大规模语言模型课程
task9是大模型的两种创新性的架构的介绍,一种是专家模型,而另一种就是基于检索的模型,专家模型是指建立一套门控专家模型和多个专家模型,通过门控来控制每个专家的输入和输出;而基于检索的模型是指将问题及所对应的相关文档,然后将两者拼接起来作为输入给seq2seq的模型。
背景:语言模型参数的不断扩大取得了令人感到振奋的成果,但这在一定程度上也带来了一系列新的问题,目前,模型的参数已经来到了逼近极限的程度,下面是模型的一些参数的统计。
从最初的ELMO94M的参数到GPT-2的1542M,再到GPT-3的170B,参数的增大是语言模型的泛化的能力显著地增强,使得大模型可以轻松的模仿人类的语言逻辑进行精准有效的输入输出,但这也给大模型的训练和使用带来了挑战,为此,我们在上一讲谈到了模型训练中的一些分布式训练的方法,但这只是一时的权宜之计,很快,模型的参数将会进一步增长,届时,无以为继的硬件将成为限制大模型发展的瓶颈,于是,我们转换了一种思路,使用类似模型有选择性并行的:专家模式和部分知识外包的:检索模式,来在现有的硬件条件下,试图进一步拓展大模型的能力。
语言参数如图所示,现在的的GPT3拥有170B的参数,大约是最初ELMO模型(94M)的两千倍:
10.1 混合专家模型
10.1.1 基础知识
混合专家模型的想法可以说是一种模型的拆解版本。就是将原本庞大的单个的神经网络,拆分成单个相对较小的神经网络,我们都知道,参数少的模型在训练的过程中也会相对收敛的更容易一点。其实这一步操作可以用随机森林来解释更加的直观一些。在图中看到,随机森林通过多棵决策树经过接合器实现boosting的操作,减少模型的训练时间,因为训练同等效果的单棵树面临着同大模型一样的极大的参数和较深的深度。
下面是混合专家的方法:
- 定义E个专家
- 对每个专家定义自己的参数
- 将门控函数定义为E个专家的概率分布:
- 根据专家特定参数定义每个专家函数:
- 将最终函数定义为专家的混合:
10.1.1.2 训练
通过反向传播来学习混合专家模式,一言以蔽之,就是对门控函数和专家函数的乘积求导来进行反向传播的操作。
10.1.1.3 举例
下面是京东在多类目MoE模型上对混合专家模式的使用,介绍人是京东的算法工程师肖茁建博士
项目的背景是:京东顾客对于不同类别的商品之间有着不同的关注点,同时对于一些小类目的商品,由于训练的数据相对大类别的商品样本较少,在模型训练时,会被大类别的数据所主导,从而忽略了对小类别数据的关注,于是多类目的专家模式在京东被提出了。
10.1.1.3.1 京东对于MoE模型的改进
对于门控网络来说,全部专家共同参与的输出也是一种“浪费”的行为,基于这个观点,Google在2017年的一篇文章中,着重对于门控网络进行了改进。提出一种Top-K gating的结构。当模型对一个样本进行预测时,首先会根据门网络的输出,选择最大的K个权重所对应的专家网络,然后只对选中的K个专家网络的输出进行加权求和。具体的计算公式如下:
就是对于门控函数取值最高的TOP-k个元素取softamx回归,从而达到简化专家模型输出的效果。
而京东对于该函数的特定性改进是基于京东业务情况进行的改进:
由于京东的商品门类条理清楚,相同种类的商品都使用“人类专家”的方式进行了建模,对于属于相同类别下的商品种类,用户的消费习惯都比较接近,于是,多类目的混合专家模型营运而生。
针对类目差异和小类目学习两个问题,我们利用了现有的层级类目信息,在Top_K MoE 的模型结构上做了相对应的改进,提出了多类目MoE的模型结构,如下图:
图中的模型结构分为两部分:专家网络(中间部分)和门网络(右边部分)。首先介绍专家网络,它由一组结构相同的MLP组成,京东将query和item的所有特征都拼接在一起作为专家网络的输入。同时,将Sub-Category 的embedding作为门网络(绿色)的输入,从门网络的输出中选择Top-K计算权重,并且激活相对应的专家网络(绿色部分)。Sub-Category作为门网络的输入,可以让模型对不同的类目,选择激活不同的专家网络,并且给予不同的权重。
图中还提出了两个改进结构:
10.1.1.3.2 Hierarchical Soft Constraint(HSC)
总结:这是对于同一大类别下的不同小类别之间的训练手段,目的是增强大类别中小类别的统一性,这是一种”聚“,就是使得小类别激活的专家函数尽可能的接近。如图:
HSC结构可以利用现有的层级类目结构,在模型训练过程中,协助小类目样本更好的学习。具体的做法是:在模型训练时,增加一个HSC门网络(HSC gate,图中蓝色部分),这个gate结构的输入是Top-Category,输出与MoE的gate结构维度一致,代表了不同专家网络对于Top-Category 的重要程度。京东将选择激活的专家网络对应的权重和HSC门网络对应的权重的L2距离作为模型训练的一个损失项,加入到模型的训练过程中。
HSC loss的具体表示形式如下:
其中,U_topk 表示激活的K个专家网络的index集合。
这样做可以让相同Top-Category下的所有Sub-Category所激活的专家网络尽量的接近。尤其对于样本量少的小类目,可以利用到相同Top-category下的其他类目信息,能一定程度上解决小样本学习难的问题。
10.1.1.3.2.3 Adversarial Regularization
总结说明:简单来说,这是与HSC相反的操作,上一个改进中,我们可以看到,京东追求相同品类之间的门控函数输出尽可能相似,是一种聚类的思想,在相同聚类之间在门控中获取相似性;而该种操作,则是对于专家网络之间获得差异性的一种操作。
Adversarial Regularization是京东提出的第二个改进结构。由于京东使用的Top_K的门网络结构,所以对于每条样本,专家网络都会分为两部分:激活的专家网络和没有激活的专家网络。 Adversarial Regularization的目的是在训练过程中增加不同专家网络之间的区分性,避免专家网络的预测结果趋同。换句话说,我京东鼓励没有被激活的专家(disagreeing experts)给出差异较大的预测结果。
Adversarial Regularization具体计算如下:
其中,U_topK 表示激活的专家网络集合,U_d 表示没有被激活的专家网络集合。为了降低计算复杂度,我们在实际模型训练过程中,只从没有被激活的专家网络中随机选择一个,用于计算Adversarial Regularization。
增加了HSC和Adversarial Regularization之后,模型训练时的损失函数变成下面的形式:
其中
和
都是需要继续去调节的一个参数。
10.1.1.3.4 评测
京东在Amazon数据集以及In-house数据集上分别评测了多类目MoE模型的指标。以DNN和传统的MoE模型作为baseline,Adv-MoE和HSC-MoE分别表示只有Adversarial Regularization和HSC loss的两个模型,Adv&HSC-MoE是我们最终的多类目模型。下图是我们在amazon数据集上的AUC指标,同时为了检测指标提升的显著性,京东也计算了对应的p值。
同时,京东在In-house数据集上做了多组实验,分别评测了模型的整体效果、类目差异的效果以及在小样本类目上的提升。下图是模型在AUC和NDCG两个指标上的评测结果。
京东也评测了使用单独类目的训练集训练模型和使用合并多个类目的训练集训练模型两种模型训练方式。下图是具体结果,其中M表示手机类目,B表示图书类目,C表示服饰类目。
由于MoE模型的门网络输出表示了不同的专家网络的权重,所以我们分析了不同类目下,门网络的输出,以便观察模型对于类目差异的学习效果。如下图所示:
京东将门网络的输出做T-SNE降维,观察不同类目的聚类效果,图上不同的颜色代表不同的类别(蓝色表示日用百货相关类目,绿色表示电器相关类目,红色表示流行服饰相关类目)。可以从图上明显的看出,京东提出的方法在聚类效果更好,也说明对于相似的类目,我们的模型更倾向于选择相似的专家网络,差异大的类目,更倾向于选择不同的专家网络。
最后,京东评测了模型在不同样本量类目上的AUC提升效果,如下图所示,横轴从左到右表示类目的样本量越来越多,柱状图表示样本量的大小。不同颜色的曲线表示模型相比于base模型的提升。
10.1.3 节约计算
目的是为了得到专家模型的top-k个元素,同上面的例子。
10.1.4 平衡模式
目的是为了得到专家的稀疏性,也就是差异性,这种原理在上面的例子中也有提到,
10.1.5 总结
混合专家模型的核心思想是利用不同专家的优势来应对复杂的任务。不同的专家可以具有不同的特长和领域知识,通过组合它们的预测结果,可以获得更准确、更全面的综合性结果。
同时,专家模式也非常支持并行布置。
10.2 基于检索的模型
基于检索的模型实际上的架构是当问题被输入后,引用问题来检索现实世界的各种文档。再喂给seq2seq。因而我们在这里主要介绍检索器和训练结果:
10.2.1 基于检索的模型-检索方法拓展介绍
检索步骤:
下面是几种方法的总结:
-
余弦相似度:一种常用的相似度计算方法,特别适用于基于向量表示的文本。在这种方法中,文本被表示为向量,例如词向量、句向量或文档向量。然后,通过计算向量之间的余弦相似度来衡量它们之间的相似程度。余弦相似度的取值范围在-1到1之间,值越接近1表示相似度越高。
-
TF-IDF:TF-IDF(Term Frequency-Inverse Document Frequency)是一种常用的特征表示方法,用于衡量一个词语在文本中的重要性。它结合了词频(TF)和逆文档频率(IDF)两个因素。TF衡量词在文本中的出现频率,而IDF衡量词的稀有程度。通过计算词语的TF-IDF权重,并比较文本之间的权重来判断它们的相似性。
-
BM25:BM25(Best Match 25)是一种用于信息检索的算法。它基于词频和文档长度来计算文本之间的相似度。BM25考虑了文档中词频的权重、查询中的词频以及文档长度等因素。通过计算查询与文档之间的BM25分数,可以对文本进行排序并选择相关性较高的文本。
-
短语匹配:对于特定的任务,可以使用短语匹配方法来进行检索。这种方法涉及将查询或问题分解为短语或关键词,并与候选集中的文本进行匹配。匹配可以基于精确匹配、模糊匹配、正则表达式或其他匹配技术来进行。
实际上,还需要对索引文本也同样的进行top-k筛选
10.2.2 实验结果
实验结果表明,优于非检索方法:
RETRO:
10.3 总结:基于索引的方法非常适用于知识密集型工作。