大模型外挂知识库优化——负样本样本挖掘篇来自:AiGC面试宝典宁静致远2024年03月19日22:30一、为什么需要构建负难样本?在各类检索任务中,为训练好一个高质量的检索模型,往往需要从大量的候选样本集合中采样高质量的负例,配合正例一起进行训练。二、负难样本构建方法篇2.1随机采样策略(RandomSampling)方法对于随机采样方法,由于其采样得到的负例往往过于简单,其会导致该分数接近于零进而导致其生成的梯度均值也接近于零,这样过于小的梯度均值会导致模型不易于收敛。2.2Top-K负例采样策略(Top-KHardNegativeSampling)方法•大模型外挂知识库优化——负样本样本挖掘篇•一、为什么需要构建负难样本?•二、负难样本构建方法篇•2.1随机采样策略(RandomSampling)方法•2.2Top-K负例采样策略(Top-KHardNegativeSampling)方法•2.3困惑负样本采样方法SimANS方法•2.4利用对比学习微调方式构建负例方法•2.5基于批内负采样的对比学习方法•2.6相同文章采样方法•2.7LLM辅助生成软标签及蒸馏•辅助知识•附一:梯度计算方法•致谢•方法:直接基于一均匀分布从所有的候选Document中随机抽取Document作为负例;•存在问题:由于无法保证采样得到的负例的质量,故经常会采样得到过于简单的负例,其不仅无法给模型带来有用信息,还可能导致模型过拟合,进而无法区分某些较难的负例样本•分析随机采样策略(RandomSampling)方法挖掘负例训练时对梯度的影响:•方法:基于一稠密检索模型对所有候选Document与Query计算匹配分数,然后直接选择其中Top-K的候选Document作为负例;•优点:可以保证采样得到的负例是模型未能较好区分的较难负例;•存在问题:很可能将潜在的正例也误判为负例,即假负例(FalseNegative)。如果训练模型去将该部分假负例与正例区分开来,反而会导致模型无法准确衡量Query-Document的语义相似扫码加查看更多由于其很容易采样得到语义与正例一致的假负例,其会导致正负样本的右项值相似,但是左项符号相反,这样会导致计算得到的梯度方差很大,同样导致模型训练不稳定。2.3困惑负样本采样方法SimANS方法通过以上分析可得,在该采样分布中,随着Query与候选Document相关分数s(q,di)和与正例的相关分数s(q,d+)的差值的缩小,该候选Document被采样作为负例的概率应该逐渐增大,故可将该差值作为输入,配合任意一单调递减函数f(·)即可实现(如e−x)。故可设计采样分布如下所示:其中为控制该分布密度的超参数,b为控制该分布极值点的超参数,是一随机采样的正例样本,D-是Top-K的负例。通过调节K的大小,我们可以控制该采样分布的计算开销。以下为该采样方法具体实现的伪代码:度。•分析Top-K负例采样策略(Top-KHardNegativeSampling)方法挖掘负例训练时对梯度的影响:•动机:在所有负例候选中,与Query的语义相似度接近于正例的负例可以同时具有较大的梯度均值和较小的梯度方差,是更加高质量的困惑负样本•方法:对与正例语义相似度接近的困惑负例样本进行采样•采样方法特点:•与Query无关的Document应被赋予较低的相关分数,因其可提供的信息量不足;•与Query很可能相关的Document应被赋予较低的相关分数,因其可能是假负例;•与正例语义相似度接近的Document应该被赋予较高的相关分数,因其既需要被学习,同时是假负例的概率相对较低。•困惑样本采样分布2.4利用对比学习微调方式构建负例方法对比学习是优化向量化模型的常用训练方法:论文:SimCSE:SimpleContrastiveLearningofSentenceEmbeddings分别将B1个问题,和B2个文档片段通过向量化模型变成向量形式,然后通过矩阵乘积计算每个问题和文档的相似度,最后通过交叉熵损失进行优化。如果文档负例仅来自于同一个batch的其他样本的文档正例,那么B1=B2;如果人工的给每个样本陪k个文档负例(比如可以通过难例挖掘得到),那么B2=(k+1)*B1。•目的:优化向量化模型,使其向量化后的文本,相似的在向量空间距离近,不相似的在向量空间距离远。文档召回场景下,做对比学习(有监督)需要三元组(问题,文档正例,文档负例)。文档正例是和问题密切相关的文档片段,文档负例是和问题不相关的...
发表评论取消回复