Skip to main content

baidu TrustAI

Project description

安装 | 快速开始 | 可信分析功能 | 可信增强功能 | 应用案例 | 评测榜单 | 学术文献

TrustAI是基于深度学习平台『飞桨』(PaddlePaddle)开发的集可信分析和增强于一体的可信AI工具集,助力NLP开发者提升深度学习模型效果和可信度,推动模型安全、可靠的落地于应用。

News 📢

  • 🔥 2022.10.30 可解释评测数据集入驻千言,部分数据提供人工标注证据,欢迎大家使用。
  • 🔥 2022.8.29 PaddleNLP分类系统已经接入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

安装

依赖

pip 安装

# 依赖paddlepaddle,推荐安装CUDA版本
pip install -U paddlepaddle-gpu
pip install -U trustai

源码编译

git clone git@github.com:PaddlePaddle/TrustAI.git
cd TrustAI
python setup.py install

快速开始

特征级证据分析

 以Integrated Gradient方法为例,其调用方法如下所示:
from trustai.demo import DEMO
from trustai.interpretation import IntGradInterpreter
from trustai.interpretation import visualize

demo = DEMO('chnsenticorp')
# init demo model
model = demo.get_model()
tokens, model_inputs = demo("这个宾馆比较陈旧了")
# tokens: List[List[str]], [['[CLS]', '这', '个', '宾', '馆', '比', '较', '陈', '旧', '了', '[SEP]']]
# model_inputs: List[Paddle.Tensor],满足`logits = model(*model_inputs)`
# init interpreter
interpreter = 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方法为例,其调用方法如下所示:
from trustai.demo import DEMO
from trustai.interpretation import FeatureSimilarityModel
demo = DEMO('chnsenticorp')
# init demo model
model = 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 interpreter
interpreter = 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目录

评测榜单

评测数据集下载:千言数据集-可解释性评测

 限时赛
 常规赛

学术文献

 评测参考论文(数据集和评测指标)
 可信分析参考论文
 可信增强参考论文
  端到端可解释性模型参考论文
 进阶学习材料
 各赛事优秀方案分享

引用

要引用 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的作者表示感谢。

LICENSE

TrustAI遵循Apache-2.0开源协议

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

trustai-0.1.12-py3-none-any.whl (89.9 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page