Ecco 是一个 Python 库,用于通过交互式可视化来探索和解释自然语言处理模型。
Ecco 提供了多种接口来帮助解释和直观理解基于 Transformer 的语言模型。阅读: 解释 Transformer 语言模型的接口。
Ecco 运行在 Jupyter 笔记本中。它建立在 pytorch 和 transformers 之上。
Ecco 不关注训练或微调模型,只关注探索和理解现有的预训练模型。该库目前是一个研究项目的 alpha 版本。欢迎您贡献代码以改进它!
功能
- 支持多种语言模型 (GPT2, BERT, RoBERTA, T5, T0 及其他) [笔记本和添加更多模型的说明]。
- 能够添加您自己的 本地模型 (如果它们基于 Hugging Face 的 pytorch 模型)。
- 特征归因 (IntegratedGradients, Saliency, InputXGradient, DeepLift, DeepLiftShap, GuidedBackprop, GuidedGradCam, Deconvolution, 和 LRP 通过 Captum)
- 捕获神经元激活 在 Transformer 块的 FFNN 层中
- 确定并 可视化神经元激活模式 (通过非负矩阵分解)
- 使用 SVCCA, PWCCA, 和 CKA 来比较激活空间(请参阅 此视频 了解 CCA 检查神经网络)
- 可视化:
- 处理 token 在模型各层的演变 (Logit lens)
- 候选输出 token 及其概率(在模型的每一层)
安装
您可以使用 pip
或 conda
安装 ecco
。
使用 pip
pip install ecco
使用 conda
conda install -c conda-forge ecco
示例:
您可以从这些 [笔记本] | [colab] 跑所有这些示例。
这个电影评论的情感是什么?
使用一个大型语言模型(此处为 T5)来检测文本情感。除了情感之外,还可以看到模型将文本分解的 token(这有助于调试一些边缘案例)。
这篇评论中的哪些词语导致模型将其分类为“负面”情感?
使用 Integrated Gradients 进行特征归因,帮助您探索模型决策。在这种情况下,将“weakness”替换为“inclination”使模型正确地将预测切换为积极情感。
通过提出填空问题来探索 GPT 模型的世界知识。
GPT2 知道希思罗机场在哪里吗?是的,它知道。
除了伦敦之外,模型还考虑了哪些城市/词语?
可视化候选输出 token 及其概率分数。
哪些输入词语使它想到伦敦?
模型在哪些层次上增加了对伦敦是正确答案的信心?
模型在最后一层后通过使概率最高的 token(排名第一)选择了伦敦。每一层在增加伦敦排名中的贡献有多少?这是一种 logit lens 可视化,帮助探索不同模型层次的活动。
BERT在处理文本时的神经元激活模式是什么?
在BERT中,一组神经元往往会对逗号和其他标点符号做出反应。另一组神经元则倾向于对代词做出反应。使用这个可视化工具可以对单个FFNN层或整个模型中的神经元活动进行因子分解。
阅读论文:
Ecco: 解释型变换器语言模型的开源库 计算语言学协会(ACL)系统展示,2021
教程
- 视频:用Ecco观察语言模型. [Colab笔记本]
使用指南
API参考
画廊和示例
预测的标记:查看模型对下一个标记的预测(带概率分数)。观察预测如何通过模型的各层演变。[笔记本] [Colab]
各层排名:模型选择输出标记后,回顾每一层对该标记的排名。[笔记本] [Colab]
层预测:比较多个标记作为序列某个位置的候选项时的排名。[笔记本] [Colab]
主要归因:每个输入标记对产生输出标记的贡献是多少?[笔记本] [Colab]
详细主要归因:使用详细视图查看更精确的输入归因值。[笔记本] [Colab]
获取帮助
遇到问题?
引用的Bibtex:
@inproceedings{alammar-2021-ecco,
title = "Ecco: 解释型变换器语言模型的开源库",
author = "Alammar, J",
booktitle = "第59届计算语言学协会年会和第11届国际自然语言处理联合会议:系统展示",
year = "2021",
publisher = "计算语言学协会",
}