Jigsaw Unintended Bias in Toxicity Classification

  • 任务的目的

    • 原文表述

      • Jigsaw Unintended Bias in Toxicity Classification

      • Training a model from data with these imbalances risks simply mirroring those biases back to users.

      • build a model that recognizes toxicity and minimizes this type of unintended bias with respect to mentions of identities.

    • 自己理解

      • 任务一:识别不良的对话

        • 对于不良的解释:
          • toxicity is defined as anything rude, disrespectful or otherwise likely to make someone leave a discussion
      • 任务二:消除语句的偏见

        • 例如:犹太人很不幸的出现在了辱骂类的词语中,因此,此次任务还要消除这样的偏见,将犹太人这样的中性词,将辱骂因素去除。

        • 会有专门的指标去评价歧义

        • optimizing a metric designed to measure unintended bias

  • 任务中遇到的困惑

    • 1、Training a model from data with these imbalances risks simply mirroring those biases back to users.

    • 2、Note that the data contains different comments that can have the exact same text. Different comments that have the same text may have been labeled with different targets or subgroups.

  • 评价指标

    • ROC-AUC
      • 低的值,说明模型的区分不良和正常对话的能力较弱
    • Subgroup AUC
      • 低的值,表明会对于正常对话识别能力低,表现为给正常的对话过高的不良得分(target)
    • BPSN 𝐵𝑎𝑐𝑘𝑔𝑟𝑜𝑢𝑛𝑑𝑃𝑜𝑠𝑖𝑡𝑖𝑣𝑒,𝑆𝑢𝑏𝑔𝑟𝑜𝑢𝑝𝑁𝑒𝑔𝑎𝑡𝑖𝑣𝑒 AUC
      -低的值,表明会对不良对话的识别能力低, 表现为会给不良的对话过低的不良得分
    • 歧义的总得分


    • 模型总得分


  • 数据集

    • 内容

      • comment_text

        • 每一个样本的内容,即被分析的内容
      • target(标签数据)

        • 训练集中已知;测试集中未知,需要预测的部分;规定当target>=0.5时,该样本即为不良评论
      • 关于不良评论的子属性,不作于预测部分,仅供额外研究使用

        • severe_toxicity:非常不良
        • obscene:淫秽
        • threat:恐吓
        • insult:辱骂
        • identity_attack人身攻击
        • sexual_explicit露骨的
      • 样本评论中涉及的其它特征

        • 性别

          • male:男性的
          • female:女性的
          • transgender:变性的
          • other_gender:其它性别
        • 性取向

          • heterosexual:异性恋的
          • homosexual_gay_or_lesbian:同性恋的
          • bisexual:双性恋的
          • other_sexual_orientation:其它性取向
        • 宗教信仰

          • christian:基督徒
          • jewish:犹太教徒
          • muslim:穆斯林
          • hindu:印度教的
          • buddhist:佛教徒
          • atheist:无神论者
          • other_religion:其他宗教
        • 人种

          • black:黑种人
          • white:白种人
          • asian:亚洲人
          • latino:拉丁美洲人
          • other_race_or_ethnicity:其它种族或民族
        • 残障

          • physical_disability:生理缺陷
          • intellectual_or_learning_disability:智力缺陷
          • psychiatric_or_mental_illness:精神病
          • other_disability:其他缺陷
      • 评分含义

        • 评分者主观对评论相应特征之间的匹配程度作出的评分

        • 取值范围:0.0~1.0

    • 数据集文件

      • train.csv:带有标签的集合
      • test.csv:不带有标签的集合
      • sample_submission.csv:提交的格式样例
      • all_data:所有样本
    • 通过pycharm统计出训练集测试集中的样本数量

      • 训练集中

      • 测试集中

    • 数据可视化

      • 由于数据的差距较大,样本未处理,图形效果不理想
        • X轴:标签值
        • Y轴:人身攻击评分
        • 目的:显示人身攻击评分与样本标签的关系
  • 流程

    • 数据预处理

    • 加载数据

      • 读取数据集
      • 转换为小写
      • 替换简写字符串
      • 待训练文本与待预测文本中的字符用token2id中的下标表示
      • 通过正则表达式替换所有数字为空隔(‘’)
      • 通过str.strip()函数去除头尾空格
      • 将所有空格替换为nan
      • nan预测
      • 填补缺失值
      • 获取特征值
      • 打乱顺序
    • 建立词表

      • 参数类型
        • 字典
      • 参数
        • token2id(用0表示、用max_features + 1表示)
        • id2token()
    • 建立词嵌入矩阵

    • 待训练文本与待预测文本中的字符用token2id中的下标表示

    • 得到伪标签

      • 伪标签训练过程:
        • 通过预先标记好的训练集训练模型,将测试集在训练后的模型上做预测,是的测试集成为带有伪标签的数据集。将训练集与带有伪标签的测试集合并后继续训练模型。
      • 作用
        • 增强模型的泛化能力
      • EMA:
        • 滑动平均,可以看作是变量在过去一段时间内的均值
      • 采用EMA的作用:
        • 减少脏数据最整体数据的影响,是整体数据更加平滑
      • 上图为伪标签的迭代次数,及每次迭代产生的Loss值。
      • 分析:
        • 前四次的Loss逐渐降低,后两次却开始升高,可能与学习率rate的取值有关。
      • 措施:
        • 减小rate值,或减小训练次数
    • 最终训练

      • 训练集:
        • 采用StratifiedKFold,将训练集分为测试集与验证集,并设置每一折的大小。
      • 测试集:
        • 采用KFold
      • 过程:
        • 最终训练过程与获取伪标签的过程基本类似,使用的优化器及损失函数均相同。
      • 最终训练过程及每步的损失函数值如下表所示
    • 得出预测结果

  • 参考

  • 完整代码

完整代码

posted @ 2021-08-12 14:37  Simbanana  阅读(119)  评论(0)    收藏  举报