骑马小猫 08dd8eed10 | 1 year ago | |
---|---|---|
.. | ||
data | 2 years ago | |
evaluation | 1 year ago | |
imgs | 2 years ago | |
rationale_extraction | 1 year ago | |
task | 1 year ago | |
README.md | 2 years ago | |
download.sh | 2 years ago | |
punctuations | 2 years ago | |
requirements.txt | 2 years ago | |
utils.py | 1 year ago |
深度学习模型在很多NLP任务上已经取得巨大成功,但其常被当作一个黑盒使用,内部预测机制对使用者是不透明的。这使得深度学习模型结果不被人信任,增加落地难度,尤其是在医疗、法律等特殊领域。同时,当模型出现效果不好或鲁棒性差等问题时,由于不了解其内部机制,导致很难对模型进行优化。近期,深度学习模型的可解释性被越来越多的人关注。但模型的可解释性评估还不够完善,本模块提供了3个NLP任务的评测数据和相关评测指标,旨在评估模型的可解释性。模块包含以下功能:
1. 完善可解释性评估体系,提供了评测数据和对应的评测指标
2. 提供了3种典型的证据抽取方法,分别是基于注意力(attention-based)、梯度(gradient-based)和线性模型(LIME)的证据抽取方法,并在LSTM、Transformer(RoBERTa-base和RoBERTa-large)等常用模型网络结构上完成实验验证,分别验证模型结构复杂度、模型参数规模对模型可解释的影响
3. 提供模型较全面的评估报告,含模型本身准确率等效果、以及在3个可解释评测指标上的结果
我们提供了情感分析、相似度计算、阅读理解等三个NLP任务上的中英文数据集。对于每一个数据集,人工标注了证据数据和扰动数据。
证据数据:给出模型预测依赖的证据(从人类认知角度),其由输入中的若干词构成。我们的标注标准包含3个维度:充分性(sufficiency)、简洁性(concision)、可理解性(understandability)。
扰动数据:旨在评估模型在扰动下的证据一致性。我们从抗干扰性、敏感性和泛化性等角度构建了扰动数据,其中,“敏感性”和“泛化性”维度下构建的数据可能会改变证据。
任务 | 英文模型 | 中文模型 | ||||
规模 | 证据平均长度比例 | 证据平均数量 | 规模 | 证据平均长度比例 | 证据平均数量 | |
情感分析 | 1,499 | 19.20% | 2.1 | 1,646 | 30.10% | 1.4 |
相似度任务 | 1,659 | 52.20% | 1.0 | 1,629 | 70.50% | 1.0 |
阅读理解 | 1,507 | 10.20% | 1.0 | 1,762 | 9.60% | 1.0 |
合理性:评估模型预测依赖的证据与人工标注证据的拟合度,我们这里使用macro-F1作为评估指标,其中模型预测依赖证据可以由本模块提供的证据分析方法(位于/model_interpretation/task/目录下)给出。
一致性:评估(原始输入,对应扰动输入)对中词重要度排序的一致性。证据分析方法对输入中每个词赋予一个重要度,基于该重要度对输入中所有词进行排序。我们使用搜索排序中的MAP(mean average precision)指标来计算两个排序的一致性。这里给出了MAP的两种计算方式,分别见以下两个公式:
公式一(正在使用):
忠诚性:评估模型给出的证据的忠诚性,即模型是否真的基于给出的证据进行预测的。这里从充分性和完备性两个角度进行评估。充分性,即模型给出的证据是否包含了预测需要的全部信息(即yri = yxi,其中ri表示输入xi的证据,yx表示模型对输入x的预测结果);完备性,即模型对输入x的预测结果(即yxi\ri ≠ yxi,其中xi\ri表示从输入xi中去除证据ri)。基于这两个维度,我们提出了一个新的指标New-P,计算方式如下:
证据抽取方法(rationale-extraction),顾名思义,就是从输入中抽取对模型预测至关重要的词,又被称为后验解释方法(post-hoc explanation methods)。
该平台提供了3种典型的证据抽取方法,分别是:基于注意力机制(attention-based)的解释方法、基于梯度(gradient-based)的解释方法,和基于线性模型(linear-based)的解释方法:
Attention-based(Jain and Wallace, 2019):
将注意力分数作为词重要度。注意力分数的获取取决于具体模型架构,我们提供了基于LSTM和transformer框架的提取方法,见每个具体任务下的saliency_map目录。
Gradient-based(Sundararajan et al., 2017):
基于梯度给出每个词重要度。我们这里给出了integrated gradient计算方式,具体见saliency_map目录或论文Axiomatic attribution for deep networks。
Linear-based(Ribeiro et al.. 2016):
使用线性模型局部模拟待验证模型,线性模型学习到的词的权重作为该词对预测结果的重要度,详细见论文" why should i trust you?" explaining the predictions of any classifier。
为验证模型复杂度、参数规模对可解释的影响,针对每个任务,我们分别提供了基于LSTM(简单结构)的模型、及Transformer-based预训练模型(复杂结构),其中,对于预训练模型,提供了base版本和large版本。
模型代码位置:/model_interpretation/task/{task}/,({task}可取值为["senti","similarity","mrc"],其中senti代表情感分析,similarity代表相似度计算,mrc代表阅读理解)
模型运行及依赖环境请参考下方的“平台使用”。
代码运行需要 Linux 主机,Python 3.8(推荐,其他低版本未测试过) 和 PaddlePaddle 2.1 以上版本。
除此之外,需要使用支持 GPU 的硬件环境。
需要安装GPU版的PaddlePaddle。
# GPU 版本
pip3 install paddlepaddle-gpu
更多关于 PaddlePaddle 的安装教程、使用方法等请参考官方文档.
除 PaddlePaddle 及其依赖之外,还依赖其它第三方 Python 库,位于代码根目录的 requirements.txt 文件中。
可使用 pip 一键安装
pip3 install -r requirements.txt
中文推荐使用ChnSentiCorp,英文推荐使用SST-2。本模块提供的中英文情感分析模型就是基于这两个数据集的。若修改训练数据集,请修改/model_interpretation/task/senti/pretrained_models/train.py (RoBERTa) 以及 /model_interpretation/task/senti/rnn/train.py (LSTM)。
中文推荐使用LCQMC,英文推荐使用QQP。本模块提供的中英文相似度计算模型就是基于这两个数据集的,若修改训练数据集,请修改/model_interpretation/task/similarity/pretrained_models/train_pointwise.py(RoBERTa)以及/model_interpretation/task/similarity/simnet/train.py(LSTM)。
中文推荐使用DuReader_Checklist,英文推荐使用SQUDA2。请将阅读理解训练数据放置在/model_interpretation/task/mrc/data目录下。
使用paddlenlp框架自动缓存模型文件。
请运行download.sh自动下载
评测数据样例位于/model_interpretation/data/目录下,每一行为一条JSON格式的数据。
id: 数据的编号,作为该条数据识别key;
context:原文本数据;
sent_token:原文本数据的标准分词,注意:golden证据是基于该分词的,预测证据也需要与该分词对应;
sample_type: 数据的类性,分为原始数据(ori)和扰动数据(disturb);
rel_ids:与原始数据关联的扰动数据的id列表(只有原始数据有);
id:数据的编号,作为该条数据识别key;
query(英文中为sentence1):句子1的原文本数据;
title(英文中为sentence2):句子2的原文本数据;
text_q_seg:句子1的标准分词,注意:golden证据是基于该分词的,预测证据也需要与该分词对应;
text_t_seg:句子2的标准分词,注意:golden证据是基于该分词的,预测证据也需要与该分词对应;
sample_type: 数据的类性,分为原始数据(ori)和扰动数据(disturb);
rel_ids:与原始数据关联的扰动数据的id列表(只有原始数据有);
id:数据的编号,作为该条数据识别key;
title:文章标题;
context:文章主体;
question:文章的问题;
sent_token:原文本数据的标准分词,注意:golden证据是基于该分词的,预测证据也需要与该分词对应;
sample_type: 数据的类性,分为原始数据(ori)和扰动数据(disturb);
rel_ids:与原始数据关联的扰动数据的id列表(只有原始数据有);
model_interpretation/task/{task}/run_inter_all.sh (生成所有结果)
model_interpretation/task/{task}/run_inter.sh (生成单个配置的结果,配置可以选择不同的评估模型,以及不同的证据抽取方法、语言)
(注:{task}可取值为["senti","similarity","mrc"],其中senti代表情感分析,similarity代表相似度计算,mrc代表阅读理解)
cd model_interpretation/rationale_extraction
./generate.sh
model_interpretation/evaluation/plausibility/run_f1.sh
model_interpretation/evaluation/consistency/run_map.sh
model_interpretation/evaluation/faithfulness/run_newp.sh
中文情感分析评估报告样例:
模型 + 证据抽取方法 | 情感分析 | |||
Acc | Macro-F1 | MAP | New_P | |
LSTM + IG | 56.8 | 36.8 | 59.8 | 91.4 |
RoBERTa-base + IG | 62.4 | 36.4 | 48.7 | 48.9 |
RoBERTa-large + IG | 65.3 | 38.3 | 41.9 | 37.8 |
👑 Easy-to-use and powerful NLP library with 🤗 Awesome model zoo, supporting wide-range of NLP tasks from research to industrial applications, including 🗂Text Classification, 🔍 Neural Search, ❓ Question Answering, ℹ️ Information Extraction, 📄 Documen
Python C++ Cuda Shell Markdown other
Dear OpenI User
Thank you for your continuous support to the Openl Qizhi Community AI Collaboration Platform. In order to protect your usage rights and ensure network security, we updated the Openl Qizhi Community AI Collaboration Platform Usage Agreement in January 2024. The updated agreement specifies that users are prohibited from using intranet penetration tools. After you click "Agree and continue", you can continue to use our services. Thank you for your cooperation and understanding.
For more agreement content, please refer to the《Openl Qizhi Community AI Collaboration Platform Usage Agreement》