2024腾讯游戏安全技术竞赛-机器学习赛道

决赛赛题链接https://gss.tencent.com/competition/2024/doc/2024%E8%85%BE%E8%AE%AF%E6%B8%B8%E6%88%8F%E5%AE%89%E5%85%A8%E6%8A%80%E6%9C%AF%E7%AB%9E%E8%B5%9B-%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0-%E5%86%B3%E8%B5%9B.zip

今年的题目是游戏跨语言恶意内容识别 ,题目比较简洁,数据也简单,只有0-1标签和语句.但是想要拿高分不容易,训练集少是一方面,跨语言也是一方面.相较于往年的题目,数据集非常有限(往年甚至有70G的数据),也从机器学习进化到了深度学习.

题目介绍

参赛者需要基于英语数据集开发一款跨语言恶意文本识别模型,最终模型将在包含英语、阿语、土语、俄语的测试集上评估效果,并取各语种的 F-score 平均值作为评定最终成绩的依据。

比赛提供的数据集:

1. 训练集及相关数据集:

  • 8k 条带标注数据(英语),文件名:train.txt
  • 4*20k 条无标注数据(每个语种各 20k),文件名:unlabel_text.txt
  • 4*5k 条 ChatGPT 标注数据(每个语种各 5k),文件名:labeled_text_by_ChatGPT.txt。 prompt 见文件 labeled_text_by_ChatGPT_prompt.txt。
  • 50k 平行语料(以英语为原语言,通过 ChatGPT 翻译获取)文件名:parallel_text_by_ChatGPT.txt。prompt 见文件 parallel_text_by_ChatGPT_prompt.txt。

2. 验证集:

  • 4*100 条带标注数据(每个语种各 100),文件名:dev_ar.txt、dev_en.txt、dev_ru.txt、dev_tr.txt

3. 测试集:4*1k 无标注数据(每个语种各 1k),与验证集同分布,不对外提供。

这个赛题机制比较特别,一般比赛直接提供测试集或者分数排行榜,本赛题啥也不给,完全黑盒状态,不能通过排行榜去判断自己模型的好坏,唯一评判标准只有验证集.结果就跟买彩票一样.


赛题分析

题目给出了baseline:

采用 twitter-xlm-roberta-base 作为基础模型,https://huggingface.co/cardiffnlp/twitter-xlm-roberta-base.
合并训练集和验证集作为训练集,训练参数:learning_rate=1e-5;batch_size=64;train_epoch=3;
最终指标:0.674094

一般情况下,根据比赛时间的长短,选择是否更换模型.这次比赛初赛3天,决赛5天(本来没有5天的,但是提前开赛了,感觉缺少了优势).时间比较短就没有必要更换基础模型了,最多找一下微调的模型.

废话:XLM-RoBERTa(XLM-R)是由Facebook AI团队在2019年11月发布的模型,作为其原始的XLM-100模型的更新。XLM-R是基于Transformer的语言模型,都依赖于掩码语言模型目标,并且都能够处理100种不同语言的文本。它已经证明能在各种跨语言任务上达到行业领先的性能表现,并在需要多语言理解和迁移学习的场景中尤其有用。

针对数据集,唯一能直接使用的训练集只有8k 条带标注数据(英语),其他未标注数据和GPT标注数据慎用(实测直接用会降分).所以要寻找公开的数据集(题目提到比赛不限制使用任何开源数据、模型、代码).

最后是训练方法,baseline中提到合并训练集和验证集作为训练集.而我们没有测试集,唯一的评价标准只有验证集,所以不能一开始就直接使用验证集进行训练,应该根据其他训练集在验证集上的表现,把评价指标拉到最高后,再使用验证集进行训练.


一些想法

模型

由于初赛只有两种语言,所以没有想着要使用其他微调过的模型,直接使用了baseline进行训练,可到了决赛却有4种语言,应该选用更好的微调模型,可以以验证集评价在线模型.

这里给出一些微调模型的比较(在验证集上评估,评价指标为准确率):

szzzzz cardiffnlp EIStakovskii airKlizz
en 0.36 0.4 0.66 0.62
ru 0.66 0.3 0.61 0.53
ar 0.52 0.36 0.65 0.63
tr 0.39 0.39 0.52 0.55
平均 0.55 0.36 0.61 0.58

如果在初赛的时候就选择了一个指标较高的模型,结果应该会更好.

数据集

GitHub - aymeam/Datasets-for-Hate-Speech-Detection: Datasets for Hate Speech Detection

Multi-lingual HateSpeech Dataset | Kaggle(MultiLanguageTrainDataset.csv)

词汇 GitHub - valeriobasile/hurtlex: A multilingual lexicon of words to hurt.

英语

数据集

xhate

Davidson et al., 2017

俄语

数据集

xhate

Automatic Toxic Comment Detection in Social Media for Russian

Detection of Abusive Speech for Mixed Sociolects of Russian and Ukrainian Languages

Russian South Park

土耳其语

数据集

xhate

offenseval_2020

Turkish Hate Speech Analysis

turkish-toxic-language

turkish-offensive-language-detection

阿拉伯语

数据集

Let-Mi

MLMA

L-HSAB

Arabic Hate Speech Dataset 2023

SSTD

实际测试只有部分数据集能提分,其他数据集都不太行.我认为是打标签的规则不一样,所以GPT的数据和其他数据集需要慎用.

训练

我的方法是先集中力量提升某一语言的指标(数据集要筛选,降分的不用),然后在提升下一语言的时候,把之前的数据集和新语言的数据集合并进行训练,防止练了这个语言,上一语言又不行了.最后拿验证集进行训练.


可能有用的方法

  1. 每种语言单独训练一个模型,开头加个语种分类器.这个应该不违规,达到下面这个限制应该就行
  2. 想办法使用GPT标注的数据和无标注数据.我觉得聚类可能不太行,想了一种比较简单的方法.因为唯一已知的打标签方法只有验证集和英语的训练集,所以通过去学习他们的打标签规则去给无标签的数据集生成标签.也就是先用非验证集数据把模型指标拉到最高,然后加入验证集进行训练.把这个训练好的模型作为标签生成模型,对GPT标注的数据(不是翻译的数据)进行打标签,根据生成的标签和GPT的标签进行融合,筛选出两者标签相同的数据.再把这些数据放入指标最高的模型进行训练,如果有提升,则逐渐扩展到给无标注数据打标签.翻译的数据最好不要用,翻译质量不好掌握.GPT打的标签也不要直接使用,联想能力太强,导致过渡解读语句.

相关推荐

  1. centos mysql安装

    2024-04-25 06:36:08       23 阅读
  2. 面试准备-2024.3.21

    2024-04-25 06:36:08       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-25 06:36:08       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-25 06:36:08       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-25 06:36:08       87 阅读
  4. Python语言-面向对象

    2024-04-25 06:36:08       96 阅读

热门阅读

  1. C# ToString

    2024-04-25 06:36:08       35 阅读
  2. 2024-04-24 问AI: 在深度学习中,CUDA 是什么?

    2024-04-25 06:36:08       38 阅读
  3. 【SAP ME 27】SAP ME创建开发组件(DC)serviceExt

    2024-04-25 06:36:08       37 阅读
  4. vue - 路由守卫

    2024-04-25 06:36:08       32 阅读
  5. Pytorch:Dataset类和DataLoader类

    2024-04-25 06:36:08       36 阅读
  6. 1-k8s集群安装报错CGROUPS_CPU: missing

    2024-04-25 06:36:08       33 阅读
  7. 设计模式简介之几大原则

    2024-04-25 06:36:08       38 阅读