借助 AI 工具快速上手一个开源项目
用命令行工具把开源项目说明文档变成电子书,再用 AI 工具形成知识库。
借助 AI 工具快速上手一个开源项目
直接阅读开源项目的文档让人摸不着方向,现在有了 AI 工具,可以将文档传给 AI 工具解析,有问题和想法直接向 AI 工具提问和讨论就可以。
以 GSL 和腾讯 ima 为例
GSL(GNU Scientific Library)是一个非常大型的开源项目,内容十分丰富。尽管 GSL 提供了在线文档,从庞杂的文档中要找到自己需要的内容依然是一个挑战。
阅读在线文档的网页可以得知,GSL 的文档是用 Sphinx 制作的。因此,我可以用 Sphinx 制作一个 epub 文档文件,再将文档文件上传到 ima。使用 GSL 的时候,如果遇到问题就问 ima 就好了。
要在 Ubuntu 上制作 epub 文档,需要安装下列工具:
- git
- make
- python3-sphinx
- python3-sphinx-rtd-theme
- texlive
- texlive-latex-extra
- dvipng
其中后三个是为了正确生成数学公式。
克隆 GSL 的仓库之后,进入 doc 文件夹,运行命令:
1
sphinx-build -b epub . _build/epub
等待一段时间之后,_build 文件夹下就会出现一个 GSL.epub 文件。将文件上传到 ima,解析完成后就可以展开问答。
下面测试一下。向 ima 提问“怎样做稳健线性回归”,
ima 回答:
稳健线性回归(Robust Linear Regression)
根据 GSL 2.8 文档,稳健线性回归用于处理含离群点的数据。普通最小二乘(OLS)会严重受离群点影响,而稳健回归能抵抗离群点的干扰。
基本原理
GSL 中最常用的稳健回归是 M-估计,最小化目标函数:
其中
ρ(y_i − y(x_i; c))是残差的函数,满足:
ρ(0) = 0ρ为非负偶函数ρ随|y|单调不减由于权重依赖于残差,残差又依赖于系数,因此采用迭代重加权最小二乘(IRLS)求解:
- 用普通最小二乘计算系数的初始估计
- 根据残差计算每个数据点的权重
- 求解加权最小二乘问题更新系数
- 重复直到收敛
若在最大迭代次数内未收敛,函数返回
GSL_EMAXITER,此时仍会返回当前系数和协方差矩阵估计。可用的稳健估计函数类型
类型 说明 gsl_multifit_robust_default默认(通常是 bisquare) gsl_multifit_robust_bisquareTukey 双权函数,通用性好,推荐首选 gsl_multifit_robust_cauchyCauchy/Lorentzian 函数,不保证唯一解,需谨慎使用 gsl_multifit_robust_fairFair 函数,保证唯一解,有三阶连续导数 gsl_multifit_robust_ols普通最小二乘(用于对比) 基本用法
1 2 3 4 5 6 7 8 9 10 11 12 /* 分配稳健回归工作空间 */ gsl_multifit_robust_workspace *w = gsl_multifit_robust_alloc(gsl_multifit_robust_bisquare, n, p); /* 执行稳健拟合 */ gsl_multifit_robust(X, y, c, cov, w); /* 对比:普通最小二乘 */ gsl_multifit_robust(gsl_multifit_robust_ols, ...); /* 释放 */ gsl_multifit_robust_free(w);拟合后可使用估计函数计算预测值及标准差:
1 gsl_multifit_robust_est(x, c, cov, &y, &y_err);文档中的示例同时用
gsl_multifit_robust_ols和gsl_multifit_robust_bisquare拟合同一数据并对比输出,直观展示稳健方法对离群点的抵抗效果。参考文献
GSL 实现主要基于:
- DuMouchel & O’Brien (1989), “Integrating a robust option into a multiple regression computing environment”
- Street, Carroll & Ruppert (1988), “A note on computing robust regression estimates via iteratively reweighted least squares”
尽管 ima 的回答可能存在偏差,上述内容已经足够使用者对 GSL 中的稳健线性回归有一个基本的了解。
为什么不使用 pdf ?
对于 ima 来说,epub 比 pdf 更容易解析,更加稳健(对其他 AI 工具可能也是)。GSL 提供的 pdf 文档有七百多页,直接传给 ima 的话,由于解析存在问题,总是会缺失某些章节。