首页 > 编程知识 正文

经济学中ds模型,bs模型公式

时间:2023-05-06 16:50:23 阅读:161326 作者:2751

本文主要是在DSSM模型学习期间遇到的问题及分析、处理经验首先,指挥性地提出了深度学习模型训练过程的一般思路和要点,并结合具体实例进行说明。 全文的问题和解决方案尽可能具有通用性,也适用于一般深度学习模式的训练。

深度学习模式训练要素综述

补充:目标函数一般包括经验风险(损失函数或成本函数)和结构风险)范式项,本文中仅指损失函数。

深度学习模式应主要考虑四个方面。 (受限于目前的认知水平,只总结了四个方面。 ) :

数据处理,包括数据清洗和分布;

3358www.Sina.com/包括网络层结构设计和一些细节处理,前者主要是输入层设计和隐藏层设计(输出层设计分为目标函数),后者主要是3358www.Sina.com/;

模型结构包含目标语义和难度,前者决定模型的学习方向,后者的影响极大地影响模型能否收敛;

初始化、正则化和激活函数主要包括模型结构的复杂性(数值化表达为参数)和数据的复杂性)、数据的规模和数据本身的特性。

问题和处理负样本采集方式过于简单,最初为了快速贯穿模型,简单地再现了DSSM-LSTM。 此时的负样本不采用随机负样本,而是统一选取负样本空间的前n个(这部分工作已经完成,以后再交接)。

实际使用模型时,负样本数远大于正样本,但在模型训练时只使用了固定类型的负样本,间接导致正样本多于负样本明显不合理。目标函数设计

由此,学习过程中最大的问题——模型无法收敛。

使用模型不收敛的随机负采样会导致负样本丰富,操作本来是正常的,但这会导致模型不收敛(loss大多只有前三个epoch明显下降,最终loss比最初下降幅度小于1/4 )

除了模型不收敛并排除梯度问题外,问题或目标的复杂度通常超过模型的学习能力,模型的复杂性

最初没有这些经验,但首先调整了为了使模型尽可能多地学到负样本特征,采用随机负采样为正样本配平负样,初期正负样本1:4。 这只是改变了loss的绝对大小,并没有改变loss的高问题。 随后是数据杂乱、数据复杂、模型结构复杂、损失函数“太难”等

在此过程中,另一个问题是——batch_loss的变化幅度较大,在前3个可降低的epoch中,我们注意到batch_loss的振动较剧烈。

loss振荡幅度较大正常时,每次epoch batch _ loss逐渐减小,loss较大,且反复振荡模型不再收敛,loss较小时振荡呈现收敛趋势。

batch_loss较大且振动指示为batch_size和学习率,检查的结果是数据对应了标准问题,例如前50个问题对应问题a、51-110问题对应问题b是随机的

因此,每个batch中包含的数据差异很大,在batch逻辑中,这些batch已经“不是数据集”。 解决方法是随机打乱数据,使其分布没有“特征”。 batch彼此越近,数据分布越好。

调整数据分布后,batch_loss相对稳定,loss进一步下降,与最初的loss相比最终loss下降约1/3。 (这是不够的,只有loss下降90%,模型效果才能初步显现,至少下降95%,才能取得好的结果。

模型无法连续收敛如果数据和模型结构不影响模型的收敛性,则必须尝试修改目标函数。 修正前,在计算loss前使用softmax函数对输出进行了归一化,模型的学习目标是query和正样本的相似度从接近1到对应的softmax输出接近1。

为了直观地识别softmax的输出,我们模拟了几组数据。

可见,原本较大的输入差在输出层缩小,在b中0.9远大于0.01,对应的输出分别为0.37和0.15,相差不大,在a中0.6也远大于0.05,对应的输出分别为0.29

d与b、c相比,可知最后维度占整体数据的比例为90%,但随着维度的增加,其输出逐渐下降。

这反映了softmax的两个特性。

第一,缩小原始数据之间的大小差异。

其二,随着维度的增加,优势输入(在整体数据中比较大)的输出减弱,即输出逐渐下降。

从数据b、c、d中可以看出,最后一维这一绝对优势维的90%,其输出也没有达到0.9,而是随着维的增加而减小。 因此,以某一维的softmax输出接近1为学习目标,几乎无法实现,即损失函数的学习目标太难了。

由此,将0.4作为softmax输出的学习目标,间接地达成softmax的输入值

大于0.9,即query与正样本的相似度大于0.9。更改损失函数后,模型loss迅速下降,终于可以正常训练。

模型差异较大

模型调试阶段,一直以A语料为训练数据,以Top10的语义召回率R为评价指标,随着参数调优,R从0.6逐渐上升,一度达到0.91,由此确定了模型的最佳参数。使用最佳参数配置训练了B语料的模型,R只达到了0.76,同样的配置使用C语料训练模型,R只有0.61。处理同样的任务,

A、B、C语料来自于同样的场景,在模型结果上差距较大,这基本不是模型的问题,更多的可能是数据的问题。在这种假设下,对三种语料的特点做了对比分析。

注):data_size数据集大小,ques_types多分类总类别,quiz<=3,数据量不超过3的类别比例。

从上表中可以看出一条基本规律:数据规模越小,数据类别越多的语料训练出来的模型效果越差。数据规模小说明数据不充分,这对于深度学习模型训练来说确实不利,数据类别多说明数据特性复杂,会增大模型训练的难度。

此外,在C语料中76%类别的问题对应的样本不超过3条, 在B语料中13%类别的问题对应的样本不超过3条,在A语料中仅有8%类别的问题对应的样本不超过3条  ,这表明C语料不仅在整体数据上不充分,在单个类别上更加缺少数据。B语料类别虽然与C接近,但其数据规模相对充分,因此模型训练效果比C的好;同时,B语料规模与A语料接近,但其类别远多于A,因此其模型训练效果不如A。

总之,对于多文本分类问题,语料规模越大,单个类别样本越充足,其模型训练效果越好。

语料模型的微调

上文已分析了机票模型表现差的原因,即数据不充分、特性复杂,但是这并不意味着完全丧失了进一步优化的可能性。

数据就是这个情况,难以改变,目标函数也已被证实有效,无需大的变动,剩下的唯有调整模型结构了和一些超参数了。考虑到数据规模小,相应的应该减少模型参数(模型结构调整),于是从输入层和隐层两个角度对其神经元数量做了削减。

结果表明,输入层神经元减少不仅无益于模型性能提升,反而下降了。这主要是因为,输入层负责将文本转为语义向量对其进行语义表征,而维度降低也意味着表征能力下降,所以不利于模型学习。

而对隐层神经元数量的减小则进一步加快了模型的收敛,并且使模型性能有了一定提升,最终将C语料训练的模型的语义召回率从0.61提升至0.7。此后,再怎么调整模型语义召回率也难以超越0.7。

所以,数据不好是深度学习模型训练的硬伤,虽然可以在算法设计层面进行一定优化,但这种优化是有限的,治标不治本,要想从根本上解决问题,仍需提升数据质量。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。