Package: trustai
安装|快速开始|可信分析功能|可信增强功能|应用案例|评测榜单|学术文献TrustAI是基于深度学习平台『飞桨』(PaddlePaddle)开发的集可信分析和增强于一体的可信AI工具集，助力NLP开发者提升深度学习模型效果和可信度，推动模型安全、可靠的落地于应用。News 📢🔥 2022.10.30可解释评测数据集入驻千言，部分数据提供人工标注证据，欢迎大家使用。🔥 2022.8.29PaddleNLP分类系统已经接入TrustAI能力，欢迎大家试用。🔥 2022.8.20 TrustAI发布可信增强能力及应用案例。🎉 2022.5.20 TrustAI首次发布！👏可信分析功能TrustAI提供特征级证据和实例级证据分析方法，全方位解释模型的预测，帮助开发者了解模型预测机制，以及协助使用者基于证据做出正确决策。特征级证据分析根据模型预测结果，从输入文本中提取模型预测所依赖的证据，即输入文本中支持模型预测的若干重要词。应用示例见AI Studio -基于TrustAI的特征级证据分析示例-中文情感分析任务关于方法更多详细内容可参考 -特征级证据分析文档实例级证据分析从训练数据中找出对当前预测文本影响较大的若干训练样本作为模型预测依赖证据。应用示例见AI Studio -基于TrustAI的实例级证据分析示例-中文情感分析任务关于方法更多详细内容可参考 -实例级证据分析文档💥可信增强功能基于对模型预测依赖证据的分析，TrustAI提供了模型缺陷识别和对应的优化方案，即可信增强功能。当前，从训练数据和训练机制优化角度，TrustAI开源了针对3种数据缺陷的识别方案和优化方案，希望能够帮助开发者以最小成本解决训练数据缺陷问题。同时，TrustAI开源了一种基于证据指导的预测机制优化方案，用来解决长文本理解问题。训练数据中脏数据自动识别TrustAI提供了脏数据（即标注质量差的数据）自动识别功能，帮助降低人工检查数据的成本。如下图所示，在两个公开数据集上，TrustAI自动识别的脏数据比例远高于随机选择策略。图1 不同策略的脏数据识别效果应用示例见AI Studio -训练数据中脏数据自动识别示例训练数据覆盖不足识别及有效数据增强训练数据覆盖不足会导致模型在对应的测试数据上表现不好。基于实例级证据分析方法，TrustAI可识别训练数据覆盖不足的测试数据（这些数据构成的集合称为目标集），模型在目标集上效果降低20%左右。进一步地，为降低标注成本，TrustAI提供有效数据选择策略，即从未标注数据中选择可以提高训练数据覆盖度和模型效果的数据进行标注。如下图所示，在两个公开数据集上，TrustAI提供的有效数据增强策略对模型在目标数据上的效果提升远高于随机选择策略。图2 目标集提升的效果应用示例见AI Studio -训练数据覆盖不足识别及有效数据增强示例训练数据分布偏置识别及偏置缓解神经网络模型会利用数据集中的偏置做预测，这会导致模型没有学会理解语言，鲁棒性差。TrustAI提供了分布修正和权重修正两种策略，在不需要人工介入的条件下，有效缓解数据偏置对模型训练的影响。如下图所示，在两个公开的鲁棒性数据集上，TrustAI的权重修正和分布修正策略分别取得明显提升。图3 偏置修正后模型在鲁棒性数据集上的效果应用示例见AI Studio -数据分布偏置缓解策略-数据权重修正示例和数据分布偏置缓解策略-数据分布修正示例证据识别及基于证据的预测 - 预测机制优化在长本文理解任务中，输入中的冗余信息往往会干扰模型预测，导致模型鲁棒性差。TrustAI提供了“证据识别-基于证据的预测”两阶段预测方案，显著提升长文本任务上的模型效果，尤其是模型的鲁棒性。以DuReader-robust数据集的训练数据训练模型，在DuReader-robust验证集、测试集以及DuReader-checklist测试集上进行了效果验证，分别验证模型的基本效果、鲁棒性效果、领域泛化效果，各数据集上的答案精准匹配率均取得显著提升。图4 证据识别及基于证据预测的两阶段策略在阅读理解任务上的效果应用示例见AI Studio -证据识别及基于证据的预测示例-中文阅读理解任务关于可信增强更多内容请阅读tutorials。安装依赖python: >=3.6.2paddlepaddle: >=2.0pip 安装# 依赖paddlepaddle，推荐安装CUDA版本pipinstall-Upaddlepaddle-gpu
pipinstall-Utrustai源码编译gitclonegit@github.com:PaddlePaddle/TrustAI.gitcdTrustAI
pythonsetup.pyinstall快速开始特征级证据分析以Integrated Gradient方法为例，其调用方法如下所示：fromtrustai.demoimportDEMOfromtrustai.interpretationimportIntGradInterpreterfromtrustai.interpretationimportvisualizedemo=DEMO('chnsenticorp')# init demo modelmodel=demo.get_model()tokens,model_inputs=demo("这个宾馆比较陈旧了")# tokens: List[List[str]], [['[CLS]', '这', '个', '宾', '馆', '比', '较', '陈', '旧', '了', '[SEP]']]# model_inputs: List[Paddle.Tensor]，满足`logits = model(*model_inputs)`# init interpreterinterpreter=IntGradInterpreter(model)result=interpreter(model_inputs)# result: List[IGResult], result[0].attribtions与tokens[0]一一对应，表示每一个token对预测结果的支持程度，即证据的支持度分数。# result[0].attributions: [ 0.04054353,  0.12724458, -0.00042592,  0.01736268,  0.07130871, -0.00350687,#                           0.01605285,  0.04392833,  0.04841821, -0.00514487,  0.13098583]# 可视化结果html=visualize(result,words=tokens)# TrustAI提供可视化输出，即根据输入特征的支持度，以不同颜色深度展示结果。颜色越深表示支持度越大，越浅表示支持度越小。更多详情 -特征级证据分析文档实例级证据分析以Feature Similarity方法为例，其调用方法如下所示：fromtrustai.demoimportDEMOfromtrustai.interpretationimportFeatureSimilarityModeldemo=DEMO('chnsenticorp')# init demo modelmodel=demo.get_model()tokens,model_inputs=demo("房间设备比较陈旧，没五星标准 客人非常不满意")# tokens: List[List[str]]# model_inputs: List[Paddle.Tensor]，满足`logits = model(*model_inputs)`# get dataloader of train data, 满足`logits = model(*next(train_data_loader))`train_data,train_dataloader=demo.get_train_data_and_dataloader()# init interpreterinterpreter=FeatureSimilarityModel(model,train_dataloader,classifier_layer_name='classifier')result=interpreter(model_inputs)# result: List[ExampleResult], [ExampleResult(pred_label=0, pos_indexes=(7112, 1757, 4487), neg_indexes=(8952, 5986, 1715), pos_scores=(0.9454082250595093, 0.9445762038230896, 0.9439479112625122), neg_scores=(-0.2316494882106781, -0.23641490936279297, -0.23641490936279297))]# ExampleResult.pos_indexes: List[int], 支持当前预测的训练数据在训练集中的索引# ExampleResult.neg_indexes: List[int], 不支持当前预测的训练数据在训练集中的索引# ExampleResult.pos_scores: List[float], 支持当前预测的训练数据的支持度# ExampleResult.neg_scores: List[float], 不支持当前预测的训练数据的支持度更多详情 -实例级证据分析文档关于接口使用的更多样例见examples目录🚀应用案例自动识别脏数据，降低人力检查成本训练数据中脏数据自动识别示例以一半标注成本，带来更大效果提升训练数据覆盖不足识别及有效数据增强示例缓解数据集偏置，提升模型鲁棒性数据集分布偏置缓解 - 数据权重修正策略示例数据集分布偏置缓解 - 数据分布修正策略示例证据识别及基于证据的预测，提升模型鲁棒性证据识别及基于证据的预测示例关于应用案例的更多说明，请参考tutorials目录评测榜单评测数据集下载：千言数据集-可解释性评测限时赛2022 CCF BDCI 基于文心NLP大模型的阅读理解可解释评测，比赛时间：2022/08/29 - 2022/12/31兴智杯-深度学习模型可解释性赛事，已结束2022 CCF BDCI 基于文心NLP大模型的阅读理解可解释评测，已结束。常规赛千言数据集：情感分析可解释性评测（中文）千言数据集：情感分析可解释性评测（英文）千言数据集：文本相似度可解释性评测（中文）千言数据集：文本相似度可解释性评测（英文）千言数据集：阅读理解可解释性评测（中文）千言数据集：阅读理解可解释性评测（英文）学术文献评测参考论文（数据集和评测指标）Dataset:A Fine-grained Interpretability Evaluation Benchmark for Neural NLP, Wang Lijie, et al. 2022Dataset:A Fine-grained Interpretability Evaluation Benchmark for Pre-trained Language Models, Shen yaozong, et al. 2022Dataset:Benchmarking and Survey of Explanation Methods for Black Box ModelsDataset:ERASER: A Benchmark to Evaluate Rationalized NLP ModelsMetrics:On the Sensitivity and Stability of Model Interpretations in NLPMetrics:Towards Faithfully Interpretable NLP Systems: How Should We Define and Evaluate Faithfulness?可信分析参考论文IntegratedGraients:Axiomatic Attribution for Deep Networks, Mukund Sundararajan et al. 2017GradientShap:A Unified Approach to Interpreting Model Predictions, Scott M. Lundberg et al. 2017Lime:"Why Should I Trust You?": Explaining the Predictions of Any Classifier, Marco Tulio Ribeiro et al. 2016NormLime:NormLime: A New Feature Importance Metric for Explaining Deep Neural Networks, Isaac Ahern et al. 2019Attention:Attention is not explanation, S Jain et al. 2019Representer Pointer:Representer point selection for explaining deep neural networks, Chih-Kuan Yeh et al. 2018Similarity based Instance Attribution:An Empirical Comparison of Instance Attribution Methods for NLPSimilarity based Instance Attribution:Input Similarity from the Neural Network Perspective可信增强参考论文Bias:Towards Debiasing NLU Models from Unknown BiasesBias:Towards Interpreting and Mitigating Shortcut Learning Behavior of NLU ModelsBias:Learning to Learn to be Right for the Right ReasonsRobustness:Can Rationalization Improve Robustness端到端可解释性模型参考论文Self-explaining:Self-explaining deep models with logic rule reasoning进阶学习材料tutorials:ACL 2020 tutorial: Interpretability and Analysis in Neural NLP|Videotutorials:EMNLP 2020 Tutorial on Interpreting Predictions of NLP Models|Videotutorials:NAACL 2021 tutorial：Fine-grained Interpretation and Causation Analysis in Deep NLP Models|VideoSurvey:Teach Me to Explain: A Review of Datasets for Explainable Natural Language ProcessingSurvey:A Survey on the Explainability of Supervised Machine LearningWorkshop:ICML 2022 Workshop: Interpretable Machine Learning in Healthcare各赛事优秀方案分享情感可解释:情感可解释前三方案分享（需报名）引用要引用 TrustAI 进行研究，请使用以下格式进行引用。@article{wang2022fine,
  title={A Fine-grained Interpretability Evaluation Benchmark for Neural NLP},
  author={Wang, Lijie and Shen, Yaozong and Peng, Shuyuan and Zhang, Shuai and Xiao, Xinyan and Liu, Hao and Tang, Hongxuan and Chen, Ying and Wu, Hua and Wang, Haifeng},
  journal={arXiv preprint arXiv:2205.11097},
  year={2022}
}致谢我们实现的可信分析方法参考和依赖了InterpretDL项目，在此向InterpretDL的作者表示感谢。LICENSETrustAI遵循Apache-2.0开源协议。