中文预训练模型泛化能力挑战赛

赛题描述及数据说明

大赛地址:https://tianchi.aliyun.com/s/3bd272d942f97725286a8e44f40f3f74

本赛题精选了以下3个具有代表性的任务,要求选手提交的模型能够同时预测每个任务对应的标签:

数据说明

OCNLI:是第一个非翻译的、使用原生汉语的大型中文自然语言推理数据集;
OCEMOTION:是包含7个分类的细粒度情感性分析数据集;
TNEWS:来源于今日头条的新闻版块,共包含15个类别的新闻;

数据格式

  • 任务1:OCNLI–中文原版自然语言推理
0 一月份跟二月份肯定有一个月份有. 肯定有一个月份有 0  
1 一月份跟二月份肯定有一个月份有. 一月份有 1  
2 一月份跟二月份肯定有一个月份有. 一月二月都没有 2  
3 一点来钟时,张永红却来了 一点多钟,张永红来了 0  
4 不讲社会效果,信口开河,对任何事情都随意发议论,甚至信谣传谣,以讹传讹,那是会涣散队伍、贻误事业的 以讹传讹是有害的 0  
(注:id 句子1 句子2 标签)

(注:标签集合:[蕴含,中性,不相关])

  • 任务2:OCEMOTION–中文情感分类
0 你知道多伦多附近有什么吗?哈哈有破布耶...真的书上写的你听哦...你家那块破布是世界上最大的破布,哈哈,骗你的啦它是说尼加拉瓜瀑布是世界上最大的瀑布啦...哈哈哈''爸爸,她的头发耶!我们大扫除椅子都要翻上来我看到木头缝里有头发...一定是xx以前夹到的,你说是不是?[生病] sadness  
1 平安夜,圣诞节,都过了,我很难过,和妈妈吵了两天,以死相逼才终止战争,现在还处于冷战中。sadness  
2 我只是自私了一点,做自己想做的事情! sadness  
3 让感动的不仅仅是雨过天晴,还有泪水流下来的迷人眼神。happiness  
4 好日子 happiness  

(注:id 句子 标签)

  • 任务3:TNEWS–今日头条新闻标题分类
0 上课时学生手机响个不停,老师一怒之下把手机摔了,家长拿发票让老师赔,大家怎么看待这种事? 108  
1 商赢环球股份有限公司关于延期回复上海证券交易所对公司2017年年度报告的事后审核问询函的公告 104  
2 通过中介公司买了二手房,首付都付了,现在卖家不想卖了。怎么处理? 106  
3 2018年去俄罗斯看世界杯得花多少钱? 112  
4 剃须刀的个性革新,雷明登天猫定制版新品首发 109  

(注:id 句子 标签)

评测方案

参赛选手仅可使用单模型,推荐选手使用单模型完成本赛题(单模型的定义:一个任务只能有一个预测函数,所有任务只能使用同一个bert,在计算图中只能有一个bert),先求出每个任务的macro f1,然后在三个任务上取平均值,具体计算公式如下:

计算公式:

名称 说明
TP(True Positive) 真阳性:预测为正,实际也为正
FP(False Positive) 假阳性:预测为正,实际为负
FN(False Negative) 假阴性:预测与负、实际为正
TN(True Negative) 真阴性:预测为负、实际也为负
P(Precision) 精确率 P = TP/(TP+FP)
R(Recall) 召回率 R = TP/(TP+FN)
F(f1-score) F-值 F = 2PR/(P+R)

macro f1

需要先计算出每一个类别的准召及其f1 score,然后通过求均值得到在整个样本上的f1 score。

sklearn 计算方式 (python):

from sklearn.metrics import confusion_matrix, precision_recall_fscore_support, classification_report, f1_score

l_t, l_p = [1, 2, 3, 2, 3], [2, 2, 3, 2, 1]
marco_f1_score = f1_score(l_t, l_p, average='macro')
print(marco_f1_score)
print(f"{'confusion_matrix':*^80}")
print(confusion_matrix(l_t, l_p, ))
print(f"{'classification_report':*^80}")
print(classification_report(l_t, l_p, ))

示例输出:

0.48888888888888893
********************************confusion_matrix********************************
[[0 1 0]
 [0 2 0]
 [1 0 1]]
*****************************classification_report******************************
              precision    recall  f1-score   support

           1       0.00      0.00      0.00         1
           2       0.67      1.00      0.80         2
           3       1.00      0.50      0.67         2

    accuracy                           0.60         5
   macro avg       0.56      0.50      0.49         5
weighted avg       0.67      0.60      0.59         5

最终得分:
取每个任务的macro f1,最后取平均值,作为 最终得分。
计:

  • macro_f1_ocnli 为ocnli任务的 macro_f1
  • macro_f1_ocemotion 为ocemotion任务的 macro_f1
  • macro_f1_tnews 为tnews任务的 macro_f1
    最终得分为:
score = (macro_f1_ocnli + macro_f1_ocemotion + macro_f1_tnews) / 3

赛题分析

  1. 本次赛题为数据挖掘类型,通过预训练模型调优进行分类。

  2. 是一个典型的多任务多分类问题。

  3. 主要应用keras_bert,以及pandas、numpy、matplotlib、seabon、sklearn、keras等数据挖掘常用库或者框架来进行数据挖掘任务。

  4. 赛题禁止人工标注;微调阶段不得使用外部数据;三个任务只能共用一个bert;只能单折训练。

多任务学习

多任务学习(Multi-Task Learning/MTL),有时候也称为:联合学习( joint learning)、自主学习(learning to learn)、辅助任务学习(learning with auxiliary tasks )。大多数机器学习模型都是独立对一个任务进行学习的,而多任务学习则是将多个相关任务放在一起进行学习。从损失函数角度来说,只要优化的是多个损失函数,则就是在进行多任务学习。多任务学习的目标是,通过利用相关任务的训练信号中包含的特定领域信息来提高泛化能力。当前多任务学习的研究,主要集中在两个方面:模型结构和loss优化。对比于单任务学习,多任务学习有不少优点,下面从多任务学习的动机和有效性来进行阐述。

多任务学习动机

  1. 从生物学上讲,可以把MTL看作是受到人类学习的启发,在学习新任务时,人类通常会使用在其他相关任务上学来的知识。
  2. MTL避免重复计算共享层中的特征,既减少了内存的占用,也大大提高了推断速度。
  3. 单任务学习每个特定任务都需要大量带标签数据,MTL提供了一种有效的方法,来利用相关任务的监督数据。
  4. 多任务学习通过缓解对某一任务的多度拟合而获得正则化效果,从而使所学的表征在任务间具有通用性。
    为什么有效?
  5. 每一个任务数据都有噪音,模型只学习一个任务容易在该任务上过拟合,而学习多个任务可以使模型通过平均噪声的方式获得更好的表示。
  6. 如果一个任务非常嘈杂,或者数据有限且高维,那么模型将很难区分相关和不相关的特征。MTL可以帮助模型将注意力集中在那些真正重要的特性上,因为其他任务将为这些特性的相关性或不相关性提供额外的证据。
  7. 对某个任务B来说,特征G比较容易学到,但对另外的任务A则比较难学到。可能因为任务A与特征G的交互比较复杂,或者其他特征阻碍了模型学习特征G的能力。这个时候,使用MTL,可以通过任务B来学习到特征G。
  8. MTL使模型偏向于所有任务都偏向的特征,这有助于推广到新的任务,因为特征在足够多的训练任务中表现良好,也会在新任务上表现良好,只要它们来自相同的环境。
  9. MTL通过引入归纳偏差来当做正则化,降低过拟合风险。

模型结构

如下图所示,深度学习中的多任务学习模型结构主要分为三种:硬共享模式、软共享模式和共享-私有模式。

硬共享模式

从1993年开始,硬参数共享就是神经网络MTL中最常用的方法。如上图a所示,它通常在所有任务之间共享隐藏层,同时保留几个特定任务的输出层。硬参数共享可以大大降低了过拟合的风险。

软共享模式

如上图b所示,在软共享模式中,每个任务都有自己的模型和参数,对模型参数之间的距离进行正则化,从而使参数趋于相似。

共享-私有模式

如上图c所示,共享-私有模式,通过设置外部记忆共享机制来实现在所有任务上的信息共享。该模式有个优点,可以避免在共享路径上传递负迁移的信息,这些信息对另外的任务有损害。

loss优化

以最经典的硬共享模式为例,来分析下多任务学习的loss,最简单的方式就是多个任务的loss直接相加,就得到整体的loss,那么loss函数为:
L o s s = ∑ i l o s s i Loss =\sum_i loss_i Loss=ilossi
其中 l o s s i loss_i lossi 表示第i个任务的loss。

这种方式非常简单,但不合理之处也比较明显,不同的任务loss的量级不同,这可能导致多任务的学习被某个任务所主导或学偏。所以我们对loss函数进行简单的调整,为每一个任务的loss添加一个权重参数,则整体loss函数变为:
L o s s = ∑ i w i ∗ l o s s i \\ Loss = \sum_i w_i*loss_i Loss=iwilossi

其中

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值