跳转至

Fundamental Limits of Community Detection in Contextual Multi-Layer Stochastic Block Models

讲者: Zhangsong Li
会场: 复杂数据学习理论与算法
报告题目: Fundamental Limits of Community Detection in Contextual Multi-Layer Stochastic Block Models
链接: arXiv
来源: JCSDS 2026 · 返回会议总览


一、领域脉络与小综述

这个方向是什么

这个子方向研究的是从多个数据源(多层网络 + 高维协变量)中检测和恢复共同的潜在社区结构的根本统计问题。其核心是刻画“信息整合”带来的增益:当每个单独的数据源(单层网络或协变量矩阵)的信号强度都低于可检测阈值时,联合利用它们能否实现检测与恢复?当前成熟度处于从“单源”到“多源”的过渡期:单层SBM的相变理论已基本完备([Abbe18]),而多源模型(多层网络、上下文SBM)的精确阈值正在被逐步建立,但大多局限于“发散度”或“高斯近似”的设定。

发展脉络(history)

奠基工作:单层SBM的相变理论。 [DKMZ11] 基于统计物理的cavity方法,首次预测了稀疏SBM中社区检测的Kesten-Stigum (KS) 阈值 \( \epsilon^2 \lambda = 1 \)。[MNS15] 严格证明了该阈值以下检测的信息论不可能性。[MNS18] 和 [Mas14] 则分别通过计数自避路径和非回溯矩阵,证明了阈值以上的算法可达性,从而完整建立了单层SBM的弱恢复相变。同时,[BBP05] 为“spiked matrix”模型(如协变量矩阵Y)建立了BBP相变阈值 \( \mu^2/\gamma = 1 \)

主要进展:上下文SBM与多层SBM。 [DMMS18] 开创性地将单层SBM与高维高斯协变量结合(上下文SBM),在发散度(平均度→∞)下推导了信息论阈值,并指出整合信息的必要性。[LS23] 将这一阈值推广到常度数(稀疏)情形。[MN23] 进一步将模型推广到多层网络+协变量(上下文多层SBM),但仍假设网络平均度发散。在纯多层网络(无协变量)方面,[YLS25] 研究了具有相关标签的多层SBM,在发散度下推导了阈值,并猜想该阈值在常度数下依然成立。[CLM22] 则关注高SNR下的精确恢复。

当前frontier与本文位置。 当前前沿是在稀疏(常度数)且带噪声(标签不完全相关)的设定下,建立上下文多层SBM的精确相变。本文直接填补了 [MN23] 留下的两个缺口:稀疏性(常度数)和噪声(标签为全局标签的带噪版本)。同时,本文证实了 [YLS25] 在常度数下的猜想(当网络层数L为常数时)。作者的核心论点是:在稀疏且带噪声的设定下,不存在统计-计算差距

子线索聚类

  1. 单层SBM的相变与算法:以 [DKMZ11, MNS15, MNS18, Mas14, BLM15, MSS25a] 为代表。核心问题是:给定一个稀疏随机图,何时能检测/恢复其社区结构?主要方法包括计数自避路径/循环、非回溯矩阵谱方法、信念传播。这是整个领域的基石。
  2. 多层/多视图网络社区检测:以 [PC20, LCL20, MN23, YLS25, CLM22] 为代表。核心问题是:当观测到多个共享(或相关)社区结构的网络时,如何整合信息?主要方法包括张量分解、联合谱聚类、近似消息传递(AMP)。[YLS25] 在发散度下给出了精确阈值,[CLM22] 关注高SNR精确恢复。
  3. 上下文SBM(网络+协变量):以 [DMMS18, LS23] 为代表。核心问题是:当同时观测到一个稀疏网络和一个高维协变量矩阵(均编码同一社区结构)时,检测阈值如何被联合信号强度决定?[DMMS18] 在发散度下给出阈值,[LS23] 推广到常度数。
  4. 子图计数方法:以 [MNS15, BDER16, Ban18, BM17, MWXY24] 为代表。这是一种用于网络假设检验和参数估计的通用技术。核心思想是:通过计数特定子图(如循环、树)的个数来构造检验统计量,其信噪比由子图长度和模型参数决定。本文的算法属于这一线索,但创新性地引入了“装饰图”(decorated graphs)的概念。

这个方向在追问的核心问题

  1. 精确相变阈值:对于给定的多源模型,检测和弱恢复的精确信息论阈值是什么?它如何由各数据源的信号强度及其相关性决定?
  2. 统计-计算差距:在什么参数区域,信息论上可行但多项式时间算法不可行?在什么区域,两者一致?
  3. 最优算法:能否设计出达到信息论阈值的多项式时间算法?对于多源模型,最优算法应如何整合不同来源的信息?
  4. 噪声与相关性:当不同数据源(如不同网络层)的社区标签不完全一致(存在噪声)时,信息整合的增益如何量化?阈值如何变化?

已知瓶颈:在稀疏(常度数)设定下,传统的互信息计算方法(如 [DAM17, GMZZ17])依赖于高斯近似,在常度数下失效。同时,将恢复问题归约到树上的广播过程(如 [MNS15])在多源且带噪声的设定下变得极其复杂。

⚠️ 作者的 framing

作者将缺口 frame 成两个关键局限性:“(1) The sparse setting where the average degree of the networks remains constant; (2) The noisy measurement setting where the community labels of the networks are noisy versions of the labels indicated by the covariates.” 通过引入一个统一框架(定义1.2),作者将这两个缺口同时填补,使得本文成为“显然的下一步”。

被淡化或回避的竞争路线: - AMP/谱方法:作者在“Open problems”中承认,基于非回溯矩阵的谱方法(如 [KMM+13, BLM15])是更实用的算法,但将其扩展至上下文多层设定需要“substantial new insights”,并留作未来工作。这暗示了作者认为其子图计数方法在理论上更易分析,但实用性可能不如谱方法。 - 互信息方法:作者在“Recovery-to-detection reduction”中明确提到,计算极限互信息的方法(如 [DAM17, GMZZ17, MN23, YLS25])“are not straightforward to apply in our sparse and noisy setting”,因为其依赖高斯近似。作者转而采用一种“reduction-based approach”,将恢复下界归约到更易处理的检测问题。

什么明显该被引/该存在、却没出现在intro里? - 低度多项式(Low-degree)方法:考虑到研究者对“statistical-computational tradeoff”的兴趣,以及本文声称“no statistical-computational gap”,本文没有引用任何关于低度多项式障碍(low-degree polynomial barrier)或SQ下界的工作(如 [Hopkins17, Kunisky19] 等)。这些工作是证明“无计算差距”的现代标准工具。作者使用子图计数算法来证明可达性,但并未从计算复杂性理论角度(如低度似然比)证明不存在更高效算法的障碍。这是一个值得研究者去查的潜在缺口:本文的“无计算差距”结论是否在低度多项式框架下也成立?或者,是否存在一个低度多项式障碍,暗示了在某个参数区域,即使信息论可行,任何多项式时间算法(包括本文的)都无法达到阈值? 作者在证明下界时使用了卡方散度,这本质上是一个信息论下界,而非计算下界。因此,本文的“无计算差距”结论是算法层面的(存在一个多项式时间算法达到信息论阈值),而非复杂性理论层面的(证明了所有多项式时间算法都无法超越该阈值)。这是一个微妙的区别。

张力

未见明显对立引用。所有被引工作基本在同一个框架下(SBM及其变体)推进,结论相互补充而非矛盾。例如,[MNS15] 证明了下界,[MNS18] 证明了上界,共同完成了单层SBM的相变图景。

二、最核心、最简单的例子 / 数学问题

第一步:把符号、模型、可观测数据交代清楚

  • 符号

    • \( n \):节点(个体)数量。
    • \( p \):协变量特征维度。
    • \( L \):网络层数。
    • \( x \in \{-1, +1\}^n \)潜在的真实社区标签向量(参数/estimand)。均匀随机生成。
    • \( x_\ell \in \{-1, +1\}^n \):第 \( \ell \) 层网络的带噪标签向量。定义为 \( x_\ell = x \odot z_\ell \),其中 \( z_\ell \) 是独立同分布的Rademacher噪声向量,\( P(z_\ell(i)=1) = (1+\rho)/2 \)\( \rho \) 衡量了 \( x_\ell \)\( x \) 的相关性。
    • \( Y \in \mathbb{R}^{n \times p} \)可观测的协变量矩阵
    • \( G_\ell \):第 \( \ell \)可观测的网络(邻接矩阵)。
    • \( u \in \mathbb{R}^p \):潜在信号向量,\( u \sim N(0, I_p) \)
    • \( Z \in \mathbb{R}^{n \times p} \):噪声矩阵,元素为i.i.d.标准正态。
    • \( \mu \):协变量矩阵的信号强度参数。
    • \( \lambda_\ell \):第 \( \ell \) 层网络的平均度。
    • \( \epsilon_\ell \):第 \( \ell \) 层网络的社区结构强度参数(\( \epsilon_\ell \in (0,1) \))。
    • \( \gamma = n/p \):样本量与特征维数的比例,为常数。
    • \( \rho \):标签相关性参数,\( \rho \in (0,1) \)
    • \( F(\mu, \rho, \gamma, \{\lambda_\ell\}, \{\epsilon_\ell\}) \)聚合信号强度,定义为三个项的最大值(见公式1.6)。这是本文的核心阈值函数。
  • 模型

    1. 生成潜在标签\( x \)\( \{-1,+1\}^n \) 中均匀随机采样。
    2. 生成带噪标签:对每层 \( \ell \),独立生成噪声 \( z_\ell \),得到 \( x_\ell = x \odot z_\ell \)
    3. 生成协变量矩阵\( Y = \sqrt{\frac{\mu}{n}} x u^\top + Z \)。这是一个“spiked matrix”模型,信号部分是一个秩为1的矩阵 \( x u^\top \)
    4. 生成网络:每层网络 \( G_\ell \) 独立地服从一个SBM,其标签为 \( x_\ell \),参数为 \( \lambda_\ell \)\( \epsilon_\ell \)。具体地,对于节点对 \( (i,j) \),若 \( x_\ell(i) = x_\ell(j) \),则连边概率为 \( (1+\epsilon_\ell)\lambda_\ell / n \);否则为 \( (1-\epsilon_\ell)\lambda_\ell / n \)
  • 可观测数据:研究者能观测到的是 \( (Y, G_1, \ldots, G_L) \)想要但观测不到的是潜在的真实标签 \( x \) 和带噪标签 \( x_\ell \),以及信号向量 \( u \)。所有推断都必须基于可观测数据。

第二步:讲最小内核

本文的核心数学问题可以归结为:在什么条件下,我们可以从“带噪声的秩-1矩阵”和“多个带噪声的SBM”中,检测或恢复出共同的秩-1信号 \( xx^\top \)

最简特例:\( L=1 \)(单层网络),且无协变量(\( \mu=0 \))。 此时模型退化为一个标准的单层稀疏SBM,其标签为 \( x_1 = x \odot z_1 \)。核心问题是:何时能从 \( G_1 \) 中检测/恢复 \( x \)

在这个特例下,\( F \) 函数退化为 \( \max(\epsilon_1^2 \lambda_1) \)。这就是经典的Kesten-Stigum (KS) 阈值。核心思路是:计数长度为 \( \aleph \) 的循环。在SBM下,循环的期望计数与在Erdos-Renyi (ER) 零模型下的期望计数之差,正比于 \( (\epsilon_1^2 \lambda_1)^{\aleph} \)。当 \( \epsilon_1^2 \lambda_1 > 1 \) 时,这个差异随 \( \aleph \) 指数增长,从而可以构造一个检验统计量来区分SBM和ER图。当 \( \epsilon_1^2 \lambda_1 < 1 \) 时,差异指数衰减,信息论上不可能检测。

本文的推广:本文的核心创新在于,当有多个数据源(\( L \ge 1 \) 层网络 + 协变量 \( Y \))时,仅仅计数单个数据源内的循环是不够的。必须计数跨越不同数据源的“装饰图”。例如,一个“装饰循环”可能包含来自协变量矩阵 \( Y \) 的边(“颜色0”)和来自不同网络层 \( G_\ell \) 的边(“颜色 \( \ell \)”)。这些装饰图的期望计数差异,其增长率由矩阵 \( P \)(公式3.13)的最大特征值 \( \sigma_+(P) \) 决定。而 \( \sigma_+(P) > 1 \) 的条件,恰好等价于 \( F > 1 \)。因此,本文的核心数学困难在于:如何计算和分析这些“装饰图”的计数,并证明其方差可控,从而构造出达到阈值 \( F=1 \) 的检验统计量和估计量。

三、这篇论文做了什么

  • 三句话

    1. 研究了在同时观测到一个高维协变量矩阵和 \( L \) 个稀疏网络(均编码同一潜在社区结构)时,社区检测与弱恢复的精确信息论阈值
    2. 核心工具是基于“装饰图”(decorated graphs)计数的算法,通过计数跨越不同数据源的特定子图来整合信息。
    3. 主要结论是:当聚合信号强度 \( F > 1 \) 时,存在多项式时间算法实现强检测和弱恢复;当 \( F < 1 \) 时,信息论上不可能。不存在统计-计算差距
  • 关键设定与假设

    • 模型:定义1.2的上下文多层SBM。关键假设包括:
      • 平衡二社区\( x \in \{-1,+1\}^n \)
      • 标签相关性\( x_\ell = x \odot z_\ell \)\( z_\ell \) 为独立Rademacher噪声,相关性由 \( \rho \) 控制。
      • 稀疏网络\( G_\ell \sim S(n, \lambda_\ell, \epsilon_\ell) \),平均度 \( \lambda_\ell = O(1) \)(常数)。
      • 高维协变量\( p/n \to 1/\gamma \)\( \gamma \) 为常数。
      • 网络层数\( L = O(1) \)(常数)。下界证明可推广到 \( L = o(\log n) \)
    • 相比已有文献的放宽/强化
      • 相比 [MN23]:放宽了“发散度”假设,允许网络平均度为常数(稀疏)。
      • 相比 [YLS25]:放宽了“发散度”假设,证实了其在常度数下的猜想(当 \( L=O(1) \))。
      • 相比 [DMMS18, LS23]:将模型从单层网络+协变量推广到多层网络+协变量,并引入了带噪标签(\( x_\ell \)\( x \) 的带噪版本)。
  • 主要结果

    • 定理1.5:这是本文的核心定理。它指出:
      • 下界:若 \( F < 1 \),则强检测和弱恢复信息论上不可能。
      • 上界:若 \( F > 1 \),则存在多项式时间算法实现强检测和弱恢复。
    • 阈值函数 \( F \)(公式1.6):由三项组成:
      1. \( \mu^2/\gamma \):来自协变量矩阵 \( Y \) 的BBP阈值。
      2. \( \max_\ell \epsilon_\ell^2 \lambda_\ell \):来自单层网络 \( G_\ell \) 的KS阈值。
      3. \( \mu^2/\gamma + \sum_{\ell=1}^L \frac{\rho^4 \epsilon_\ell^2 \lambda_\ell}{1 - (1-\rho^4)\epsilon_\ell^2 \lambda_\ell} \)联合项,反映了信息整合带来的增益。当 \( \rho > 0 \) 时,即使前两项都小于1,联合项也可能大于1,使得检测/恢复成为可能。这是本文最重要的发现。
    • 推论:在无协变量(\( \mu=0 \))的纯多层网络设定下,阈值简化为公式(1.7),证实了 [YLS25] 的猜想。
  • 证明路线与技术技巧

    1. 信息论下界(Section 2): - 整体路线: 1. 检测下界:证明 \( F < 1 \) 时,\( \chi^2(\tilde{P} \| Q) = O(1) \),从而 \( TV(\tilde{P}, Q) = o(1) \),强检测不可能。这里 \( \tilde{P} \) 是截断后的 planted 分布,\( Q \) 是零分布。 2. 恢复下界:通过一个“恢复-检测归约”(Recovery-to-detection reduction)将恢复下界归约到检测下界。核心思想是:如果存在一个弱恢复估计量,则可以构造一个检测统计量,其优势(Advantage)会发散(\( \omega(1) \))。但检测下界已证明任何统计量的优势都有界(\( O(1) \)),从而产生矛盾,证明弱恢复不可能。 - 关键跳跃点: - 引理2.5(高斯比较不等式):这是证明检测下界的核心。需要计算 \( \chi^2 \) 散度,其中涉及 \( \langle x, x' \rangle \)\( \langle x_\ell, x'_\ell \rangle \) 的高阶矩。作者证明,这些Rademacher变量的联合矩,可以被一个具有相同协方差结构的高斯向量 \( (U, V_1, \ldots, V_L) \) 的矩所控制。这个引理使得复杂的组合计算变得可行。 - 引理2.9(构造检测统计量):这是恢复-检测归约的关键。假设存在一个弱恢复估计量 \( X \),作者通过引入外部随机性 \( W \),构造了两个新的协变量矩阵 \( Y_1, Y_2 \)。然后证明,内积 \( \langle X, Y_2 Y_2^\top - p I_n \rangle \) 在 planted 分布下“大”,在零分布下“小”,从而可以构造一个检测统计量。 - 技术技巧点名: - 卡方散度(\( \chi^2 \) divergence):用于证明检测下界。 - 截断(Truncation):通过条件于 \( \|u\|^2 \) 的事件 \( E_\diamond \) 简化计算。 - Replica trick:用于计算 \( \chi^2 \) 散度。 - 高斯比较不等式(Gaussian comparison inequality):引理2.5,用高斯矩控制Rademacher矩。 - 恢复-检测归约(Recovery-to-detection reduction):引理2.7-2.9,将恢复下界归约到检测下界。

    2. 算法上界(Section 3 & 4): - 整体路线: 1. 检测算法(Algorithm 1):构造一个基于“装饰循环”计数的统计量 \( f_H \)。证明在 \( F > 1 \) 时,其均值发散(\( \omega(1) \)),方差可控(\( o(1) \cdot \mathbb{E}[f_H]^2 \)),从而可以区分 planted 和 null 分布。 2. 恢复算法(Algorithm 2):构造一个基于“装饰路径”计数的矩阵 \( \Phi^J \)。证明其元素 \( \Phi^J_{u,v} \)\( x_u x_v \) 正相关(\( \mathbb{E}[\Phi^J_{u,v} \cdot x_u x_v] \ge \rho^2 \)),且方差有界。然后通过一个“相关性保持投影”(correlation preserving projection)步骤,将其转化为一个正定矩阵 \( \hat{\Phi} \),并证明 \( \hat{\Phi} \)\( xx^\top \) 的余弦相似度有正下界,从而实现弱恢复。 - 关键跳跃点: - 装饰图(Decorated graphs)的定义与加权方案:这是算法的核心。作者定义了“装饰图”,其边被标记为来自协变量(颜色0)或特定网络层(颜色 \( \ell \))。每个装饰图 \( H \) 被赋予一个权重 \( \Xi(H) \)(公式3.11),该权重精确地反映了该图在 planted 模型下的期望信号强度。这个加权方案是算法能够达到精确阈值的关键。 - 引理3.3 & 3.7(\( \beta_H \)\( \beta_J \) 的界):这些引理将装饰图计数的二阶矩(\( \beta_H, \beta_J \))与矩阵 \( P \) 的最大特征值 \( \sigma_+(P) \) 联系起来。证明的关键是将装饰循环/路径的计数问题转化为一个转移矩阵 \( P \) 的幂次问题。\( P \) 的特征值决定了信号的增长速率。当 \( F > 1 \) 时,\( \sigma_+(P) > 1 \),信号指数增长。 - 引理4.3(协方差界):这是控制算法方差的难点。需要计算两个不同装饰图 \( S, K \) 的计数的协方差。作者通过精细的组合分析,将协方差上界表示为 \( S \)\( K \) 的公共子图(\( S \Cap K \))的函数,并证明当 \( S \)\( K \) 不相交时协方差为0,从而使得总方差可控。 - 技术技巧点名: - 装饰图(Decorated graphs):核心创新,用于整合多源信息。 - 加权方案(Weighting scheme):公式(3.10)和(3.20)中的权重 \( \Xi(H) \)。 - 转移矩阵(Transition matrix):矩阵 \( P \)(公式3.13)及其特征值分析。 - 颜色编码(Color coding):用于在多项式时间内近似计算装饰图计数(Remark 3.6)。 - 相关性保持投影(Correlation preserving projection):用于将 \( \Phi^J \) 转化为正定矩阵 \( \hat{\Phi} \)(Theorem 3.9的证明)。

  • 真实例子与应用

    • 模拟实验(Section 5):论文包含数值实验,验证了理论结果。
    • 数据/场景:使用合成数据,设定 \( n=100, p=50, L=2, \rho=0.6, \mu=0.5, \epsilon_1=\epsilon_2=0.5 \),并变化 \( \lambda_1=\lambda_2 \) 以改变 \( F \) 值(0.75, 1.25, 1.75, 2.25)。
    • 方法应用
      • 检测:运行Algorithm 1,计算所有长度为4的装饰循环的计数作为检验统计量。绘制ROC曲线并与单色循环(仅来自协变量或单层网络)的计数进行比较。
      • 恢复:运行Algorithm 2,计算所有长度为4的装饰路径的计数,构建矩阵 \( \Phi^J \)\( \hat{\Phi} \)。计算 \( \hat{\Phi} \)\( xx^\top \) 的Frobenius余弦相似度,并与单色路径的结果进行比较。
    • 结果
      • 检测:图4显示,当 \( F < 1 \) 时,所有方法的AUC都接近0.5(随机猜测)。当 \( F > 1 \) 时,基于所有装饰循环的统计量的AUC显著高于单色循环,且随 \( F \) 增大而增大。这验证了 \( F=1 \) 是检测的相变点,且整合信息优于单源信息。
      • 恢复:图5显示,余弦相似度在 \( F < 1 \) 时很低,在 \( F > 1 \) 时显著增加。基于所有装饰路径的 \( \hat{\Phi} \) 的余弦相似度高于单色路径。这验证了 \( F=1 \) 是恢复的相变点。
    • 例子想说明什么:实验清晰地展示了本文理论结果的有效性:阈值 \( F=1 \) 是准确的,且基于装饰图的算法确实能够利用多源信息,在单源信号都低于阈值时实现检测和恢复。
  • 🔎 结论是否比证明窄

    • 关于 \( L \) 的范围:定理1.5明确假设 \( L = O(1) \)。但在Remark 1.7和Remark 2.10中,作者指出下界证明可推广到 \( L = o(\log n) \),上界算法也可推广到 \( L = o(\log n) \),但此时算法运行时间为伪多项式 \( n^{O(\log L)} \)。因此,定理1.5的结论(无统计-计算差距)在 \( L = \omega(1) \)\( L = o(\log n) \) 时,其“计算”部分(多项式时间)的声明是弱的,因为算法不再是严格多项式时间。作者在Remark 1.7中明确区分了 \( L=O(1) \)\( L=\omega(1) \) 的情形,并指出检测问题在 \( L=\omega(1) \) 时可能行为不同。这是一个重要的窄化。
    • 关于“无统计-计算差距”:如前所述,本文的“无差距”是算法层面的,而非复杂性理论层面的。作者没有使用低度多项式或SQ下界来证明不存在更高效算法的障碍。因此,结论“no statistical–computational gap”应被理解为“存在一个多项式时间算法达到信息论阈值”,而非“所有多项式时间算法都无法超越该阈值”。这是一个微妙的但重要的区别。

四、开放问题

  1. 多社区与不平衡社区:作者在“Open problems”中明确指出,将结果推广到 \( K \ge 3 \) 个社区或不平衡社区是自然延伸。他们预期算法技术仍适用,但阈值可能不再如此显式,且可能出现信息-计算差距。扎根点:论文Section 1.2 “Open problems”第一段。
  2. 更实用的算法:当前恢复算法(Algorithm 2)依赖于颜色编码,运行时间虽为多项式,但指数较高。作者提出,能否将基于非回溯矩阵的谱方法(如 [KMM+13, BLM15])扩展到上下文多层设定,是一个开放问题。扎根点:论文Section 1.2 “Open problems”第二段。
  3. \( L \) 增长时的检测行为:作者在Remark 1.7中暗示,当 \( L = \omega(1) \) 时,检测问题的行为可能与 \( L = O(1) \) 不同。理解这种差异,并刻画 \( L \) 增长时的相变,是一个开放问题。扎根点:论文Remark 1.7。
  4. 低度多项式框架下的“无计算差距”:本文的“无计算差距”结论是基于构造了一个具体的多项式时间算法。一个更深层的开放问题是:能否在低度多项式(low-degree polynomial)或统计查询(SQ)模型下,证明不存在计算障碍?即,是否所有达到信息论阈值的算法都必须具有与本文算法相当的复杂度?扎根点:论文声称“no statistical–computational gap”,但未使用现代计算复杂性理论工具进行证明。这是一个值得研究者去核实的潜在缺口。

Maintained by 陈星宇 · Homepage · Source on GitHub

评论