文章

借助 AI 工具快速上手一个开源项目

用命令行工具把开源项目说明文档变成电子书,再用 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)求解:

  1. 用普通最小二乘计算系数的初始估计
  2. 根据残差计算每个数据点的权重
  3. 求解加权最小二乘问题更新系数
  4. 重复直到收敛

若在最大迭代次数内未收敛,函数返回 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_olsgsl_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 的话,由于解析存在问题,总是会缺失某些章节。

本文由作者按照 CC BY 4.0 进行授权