imodelsX

imodelsX

多功能文本模型分析与优化库

imodelsX是一个与Scikit-learn兼容的Python库,专注于文本模型和数据的解释、预测和优化。该库集成了多种可解释的建模技术,包括Tree-Prompt、iPrompt和Aug-Linear等。imodelsX还提供LLM封装器和数据集封装器等实用工具,简化文本数据处理流程。通过支持多种解释方法,imodelsX能够生成自然语言解释,并为用户提供易于实现的基线模型。

imodelsX文本模型可解释性机器学习自然语言处理Github开源项目
<p align="center"> <img src="https://microsoft.github.io/aug-models/embgam_gif.gif" width="18%"> <img align="center" width=40% src="https://yellow-cdn.veclightyear.com/ab5030c0/3ad73386-e642-4f9f-851f-bc4f7834f56f.svg?sanitize=True&kill_cache=1"> </img> <img src="https://microsoft.github.io/aug-models/embgam_gif.gif" width="18%"></p> <p align="center">一个用于解释、预测和引导文本模型/数据的Scikit-learn友好库。<br/>同时包含一些用于文本数据入门的实用工具。 </p> <p align="center"> <a href="https://github.com/csinva/imodelsX/tree/master/demo_notebooks">📖 演示笔记本</a> </p> <p align="center"> <img src="https://yellow-cdn.veclightyear.com/ab5030c0/e60fe96b-9248-4708-b906-9925b84f43c9.svg"> <img src="https://img.shields.io/badge/python-3.9+-blue"> <img src="https://img.shields.io/pypi/v/imodelsx?color=green"> </p>

可解释建模/引导

模型参考输出描述
Tree-Prompt🗂️, 🔗, 📄, 📖,解释<br/>+ 引导生成提示树以<br/>引导LLM(官方
iPrompt🗂️, 🔗, 📄, 📖解释<br/>+ 引导生成解释数据模式的提示(官方
AutoPromptㅤㅤ🗂️, 🔗, 📄解释<br/>+ 引导使用输入梯度<br/>找到自然语言提示
D3🗂️, 🔗, 📄, 📖解释解释两个分布之间的差异
SASCㅤㅤ🗂️, 🔗, 📄解释使用LLM解释<br/>黑盒文本模块(官方
Aug-Linear🗂️, 🔗, 📄, 📖线性模型使用LLM提取嵌入<br/>以拟合更好的线性模型(官方
Aug-Tree🗂️, 🔗, 📄, 📖决策树使用LLM扩展特征<br/>以拟合更好的决策树(官方
QAEmb🗂️, 🔗, 📄, 📖可解释<br/>嵌入通过向LLM提问<br/>生成可解释嵌入(官方
KAN🗂️, 🔗, 📄, 📖小型<br/>网络拟合2层Kolmogorov-Arnold网络
<p align="center"> <a href="https://github.com/csinva/imodelsX/tree/master/demo_notebooks">📖</a>演示笔记本 &emsp; <a href="https://csinva.io/imodelsX/">🗂️</a> 文档 &emsp; 🔗 参考代码 &emsp; 📄 研究论文 </br> ⌛ 我们计划支持其他可解释算法,如<a href="https://arxiv.org/abs/2205.12548">RLPrompt</a>、<a href="https://arxiv.org/abs/2007.04612">CBMs</a>和<a href="https://arxiv.org/abs/2004.00221">NBDT</a>。如果您想贡献算法,欢迎提交PR 😄 </p>

通用工具

模型参考
🗂️ LLM包装器轻松调用不同的LLM
🗂️ 数据集包装器下载经过最小处理的huggingface数据集
🗂️ N元组包学习N元组的线性模型
🗂️ 线性微调在LLM嵌入之上微调单个线性层

快速入门

安装: pip install imodelsx(或者,为了更多控制,克隆并从源代码安装)

演示: 请参阅演示笔记本

自然语言解释

Tree-prompt

from imodelsx import TreePromptClassifier import datasets import numpy as np from sklearn.tree import plot_tree import matplotlib.pyplot as plt # 设置数据 rng = np.random.default_rng(seed=42) dset_train = datasets.load_dataset('rotten_tomatoes')['train'] dset_train = dset_train.select(rng.choice( len(dset_train), size=100, replace=False)) dset_val = datasets.load_dataset('rotten_tomatoes')['validation'] dset_val = dset_val.select(rng.choice( len(dset_val), size=100, replace=False)) # 设置参数 prompts = [ "这部电影是", " 积极还是消极?这部电影是", " 这部电影的情感是", " 这部电影的剧情真的是", " 这部电影的演技是", ] verbalizer = {0: " 消极。", 1: " 积极。"} checkpoint = "gpt2" # 拟合模型 m = TreePromptClassifier( checkpoint=checkpoint, prompts=prompts, verbalizer=verbalizer, cache_prompt_features_dir=None, # 'cache_prompt_features_dir/gp2', ) m.fit(dset_train["text"], dset_train["label"]) # 计算准确率 preds = m.predict(dset_val['text']) print('\nTree-Prompt 准确率 (验证集) ->', np.mean(preds == dset_val['label'])) # -> 0.7 # 比较单个提示的准确率 for i, prompt in enumerate(prompts): print(i, prompt, '->', m.prompt_accs_[i]) # -> 0.65, 0.5, 0.5, 0.56, 0.51 # 可视化决策树 plot_tree( m.clf_, fontsize=10, feature_names=m.feature_names_, class_names=list(verbalizer.values()), filled=True, ) plt.show()

iPrompt

from imodelsx import explain_dataset_iprompt, get_add_two_numbers_dataset # 获取一个简单的两数相加数据集 input_strings, output_strings = get_add_two_numbers_dataset(num_examples=100) for i in range(5): print(repr(input_strings[i]), repr(output_strings[i])) # 用自然语言提示字符串解释输入和输出之间的关系 prompts, metadata = explain_dataset_iprompt( input_strings=input_strings, output_strings=output_strings, checkpoint='EleutherAI/gpt-j-6B', # 使用哪个语言模型 num_learned_tokens=3, # 学习多长的提示 n_shots=3, # 每个示例的shot数 n_epochs=15, # 搜索多少轮 verbose=0, # 打印多少信息 llm_float16=True, # 是否以float16加载模型 ) -------- prompts是找到的自然语言提示字符串列表

D3 (DescribeDistributionalDifferences)

from imodelsx import explain_dataset_d3 hypotheses, hypothesis_scores = explain_dataset_d3( pos=positive_samples, # List[str]格式的正面示例 neg=negative_samples, # 另一个List[str] num_steps=100, num_folds=2, batch_size=64, )

SASC

这里我们解释一个模块而不是一个数据集

from imodelsx import explain_module_sasc # 一个对字符串长度做出响应的玩具模块 mod = lambda str_list: np.array([len(s) for s in str_list]) # 一个最长字符串是动物名称的玩具数据集 text_str_list = ["红色", "蓝色", "x", "1", "2", "河马", "大象", "犀牛"] explanation_dict = explain_module_sasc( text_str_list, mod, ngrams=1, )

Aug-imodels

像使用scikit-learn模型一样使用这些。在训练过程中,它们通过LLM拟合更好的特征,但在测试时它们非常快速且完全透明。

from imodelsx import AugLinearClassifier, AugTreeClassifier, AugLinearRegressor, AugTreeRegressor import datasets import numpy as np # 设置数据 dset = datasets.load_dataset('rotten_tomatoes')['train'] dset = dset.select(np.random.choice(len(dset), size=300, replace=False)) dset_val = datasets.load_dataset('rotten_tomatoes')['validation'] dset_val = dset_val.select(np.random.choice(len(dset_val), size=300, replace=False)) # 拟合模型 m = AugLinearClassifier( checkpoint='textattack/distilbert-base-uncased-rotten-tomatoes', ngrams=2, # 使用二元语法 ) m.fit(dset['text'], dset['label']) # 预测 preds = m.predict(dset_val['text']) print('验证集准确率', np.mean(preds == dset_val['label'])) # 解释 print('总n元语法系数数量:', len(m.coefs_dict_)) print('最正面的n元语法') for k, v in sorted(m.coefs_dict_.items(), key=lambda item: item[1], reverse=True)[:8]: print('\t', k, round(v, 2)) print('最负面的n元语法') for k, v in sorted(m.coefs_dict_.items(), key=lambda item: item[1])[:8]: print('\t', k, round(v, 2))

KAN

import imodelsx from sklearn.datasets import make_classification, make_regression from sklearn.metrics import accuracy_score import numpy as np X, y = make_classification(n_samples=5000, n_features=5, n_informative=3) model = imodelsx.KANClassifier(hidden_layer_size=64, device='cpu', regularize_activation=1.0, regularize_entropy=1.0) model.fit(X, y) y_pred = model.predict(X) print('测试准确率', accuracy_score(y, y_pred)) # 现在尝试回归 X, y = make_regression(n_samples=5000, n_features=5, n_informative=3) model = imodelsx.kan.KANRegressor(hidden_layer_size=64, device='cpu', regularize_activation=1.0, regularize_entropy=1.0) model.fit(X, y) y_pred = model.predict(X) print('测试相关性', np.corrcoef(y, y_pred.flatten())[0, 1])

通用工具

简易基准

遵循sklearn API的易于拟合的基准模型。

from imodelsx import LinearFinetuneClassifier, LinearNgramClassifier # 在LLM嵌入之上拟合一个简单的单层微调模型 m = LinearFinetuneClassifier( checkpoint='distilbert-base-uncased', ) m.fit(dset['text'], dset['label']) preds = m.predict(dset_val['text']) acc = (preds == dset_val['label']).mean() print('验证准确率', acc)

LLM包装器

用于调用不同语言模型的简易API,带有缓存功能(比langchain更轻量)。

import imodelsx.llm # 支持任何huggingface checkpoint或openai checkpoint(包括对话模型) llm = imodelsx.llm.get_llm( checkpoint="gpt2-xl", # text-davinci-003, gpt-3.5-turbo, ... CACHE_DIR=".cache", ) out = llm("愿原力与") llm("愿原力与") # 当再次计算相同字符串时,使用缓存

数据包装器

用于加载huggingface数据集并进行基本预处理的API。

import imodelsx.data dset, dataset_key_text = imodelsx.data.load_huggingface_dataset('ag_news') # 确保dset有名为'train'和'validation'的分割, # 且每个分割的输入数据包含在由{dataset_key_text}给定的列中

相关工作

  • imodels包(JOSS 2021 github)- 用于简洁、透明和准确预测建模的可解释ML包(兼容sklearn)。
  • 自适应小波蒸馏(NeurIPS 2021 pdf, github)- 将神经网络蒸馏为简洁的小波模型
  • 变换重要性(ICLR 2020 workshop pdf, github)- 使用简单的重参数化,允许计算输入变换的解耦重要性(例如,为不同频率分配重要性)
  • 分层解释(ICLR 2019 pdf, github)- 将CD扩展到CNN/任意DNN,并将解释聚合成层次结构
  • 解释正则化(ICML 2020 pdf, github)- 在训练期间惩罚CD/ACD得分,使模型泛化能力更强
  • PDR可解释性框架(PNAS 2019 pdf)- 用于指导和构建可解释机器学习的全面框架

编辑推荐精选

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

Refly.AI

Refly.AI

最适合小白的AI自动化工作流平台

无需编码,轻松生成可复用、可变现的AI自动化工作流

酷表ChatExcel

酷表ChatExcel

大模型驱动的Excel数据处理工具

基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。

AI工具酷表ChatExcelAI智能客服AI营销产品使用教程
TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
AIWritePaper论文写作

AIWritePaper论文写作

AI论文写作指导平台

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

AI辅助写作AI工具AI论文工具论文写作智能生成大纲数据安全AI助手热门
博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

AI办公办公工具AI工具博思AIPPTAI生成PPT智能排版海量精品模板AI创作热门
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

iTerms

iTerms

企业专属的AI法律顾问

iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。

SimilarWeb流量提升

SimilarWeb流量提升

稳定高效的流量提升解决方案,助力品牌曝光

稳定高效的流量提升解决方案,助力品牌曝光

Sora2视频免费生成

Sora2视频免费生成

最新版Sora2模型免费使用,一键生成无水印视频

最新版Sora2模型免费使用,一键生成无水印视频

下拉加载更多