Fast-DetectGPT:用“条件概率曲率”拆穿 AI 伪装的文本

1. 论文基本信息

  • 标题:Fast-DetectGPT: Efficient Zero-Shot Detection of Machine-Generated Text via Conditional Probability Curvature

  • 作者:Guangsheng Bao, Yanbin Zhao, Zhiyang Teng, Linyi Yang, Yue Zhang

  • 发表:ICLR 2024(含 arXiv 版本 arXiv:2310.05130)

  • 领域关键词:Large Language Models, Machine-Generated Text Detection, Zero-shot Detection, Probability Curvature, Conditional Probability

  • 论文链接:


2. 前言

这篇论文要解决的核心问题,是如何在零样本(zero-shot)条件下区分"人写的文字"和"大模型写的文字",同时还能跑得又快又准。现有最强的零样本检测器 DetectGPT 虽然效果不错,但代价是要对每一段文本做上百次模型调用,算一次检测就像跑了一个小型 benchmark,一点都不"工程友好"。

作者提出的 Fast-DetectGPT 给出的答案是:利用条件概率曲率(conditional probability curvature)来刻画"这段话在模型眼里是不是一个局部最优的选词结果"。直觉上,机器写的文本更偏向"统计上最优"的用词,而人类写的文本没那么"贪心"。围绕这个直觉,他们设计了一个新的特征,并据此构造了 Fast-DetectGPT 检测器。

在性能上,Fast-DetectGPT 相比 DetectGPT:

  • 在五个开源源模型上的 AUROC 从 0.9554 提升到 0.9887;
  • 对 ChatGPT / GPT-4 文本的检测 AUROC 从 0.72 左右提升到 0.93 左右;
  • 推理速度快了约 340 倍(在 XSum 数据集,Tesla A100 上测试)。

【插图:整体结果与速度对比表,对应论文 Table 1】

从应用视角看,这篇工作意义在于:第一次把"基于概率曲率的零样本检测"做到了既可落地、又在强模型上依然有效 ,而且给出了一个挺有意思的新假设------人和机器在"给定上下文的 token 选择行为"上存在统计上的可检测差异


3. 历史背景与前置技术:从"平均概率"到"概率曲率"

要理解 Fast-DetectGPT,得先回顾一下这条技术线的演化:

最早大家做机器文本检测,大多走的是监督学习路线:收集一批人类文本和一批模型生成的文本,训练一个分类器(比如 RoBERTa)来预测"human vs. machine"。这类方法在训练分布内表现很好,但一旦换模型、换领域,性能就崩得厉害------典型的过拟合问题。

于是另一条路线兴起:零样本检测(zero-shot detection)。核心思路是:既然语言模型本身就是一个强大的概率模型,那我们直接用它来给文本打分,不额外训练分类器。代表性的统计特征包括:

  • Likelihood / Perplexity:直接看平均 log 概率或困惑度;
  • Entropy:看预测分布的平均熵;
  • LogRank / LRR:看真值 token 在预测分布里的排名及其组合;
  • Completion Divergence(DNA-GPT 等):看截断后续写的多样性;
  • Probability Curvature(DetectGPT):这是本文的直接前辈。

DetectGPT 的核心设想是:如果一段文本是模型自己生成的,那么围绕它做一些小扰动,再让同一个模型打分,原文的 log 概率往往会高于这些"扰动版本";而人类文本则不一定。因此,它定义了一个"概率曲率":

d DetectGPT ( x ) = log ⁡ p θ ( x ) − E ∗ x ~ ∼ q ∗ ϕ ( ⋅ ∣ x ) [ log ⁡ p θ ( x ~ ) ] d_{\text{DetectGPT}}(x) = \log p_\theta(x) - \mathbb{E}*{\tilde x\sim q*\phi(\cdot\mid x)}\big[\log p_\theta(\tilde x)\big] dDetectGPT(x)=logpθ(x)−E∗x~∼q∗ϕ(⋅∣x)[logpθ(x~)]

这里 p θ p_\theta pθ 是打分用的模型, q ϕ q_\phi qϕ 是生成扰动文本的掩码语言模型(比如 T5)。如果 d d d 明显为正,就倾向判定为机器文本。问题在于:要估计这个期望,需要对每段文本生成几十甚至上百个扰动版本,并逐个调用打分模型,计算代价非常高。

同时,已有工作也观察到:机器文本的平均 log 概率通常高于人类文本,但直接用平均 log 概率当特征,在面对更强的源模型、不同解码策略以及跨领域场景时,性能并不稳。DetectGPT 通过曲率把"局部形状"引入进来,是一大进步,但计算成本成了致命弱点。Fast-DetectGPT 正是在这个节点上提出的新方案。


4. 论文核心贡献:把"曲率"搬到 token 级的条件概率上

我自己的理解是,这篇论文的核心贡献可以浓缩成一句话:把 DetectGPT 的"全句概率曲率",重构成了"基于条件概率的局部曲率",并用一个极其高效的采样与打分流程实现出来

更细一点看,可以拆成几层:

首先,作者提出了一个新的假设:把文本生成看成一个按 token 的序列决策过程时,机器和人类在"给定上下文选择下一个 token"的方式有系统性差异 。机器因为在大规模语料上做过最大似然训练,更倾向于选"统计上最常见"的 token;而人更像是在按语义与意图组织语言,不会始终沿着最高概率的 token 走。这意味着:如果把"原文 token 的 log 概率"放入"同一上下文下所有备选 token 的分布"里,大模型生成的 token 更可能是这个分布中"凸起来"的那部分

其次,他们围绕这个假设定义了**条件概率曲率(conditional probability curvature)**这一新特征:不再看整条 Markov 链的概率变化,而是把"原文的 log 概率"和"在同一上下文下大量采样 token 的 log 概率分布"做标准化比较。

然后,以这个特征为基础,作者设计了 Fast-DetectGPT 检测器:只需要对原文做一次前向计算、一次大规模采样,就可以同时得到所有 token 的条件分布和样本得分,完全避免了 DetectGPT 中"对每一个扰动文本单独打分"的多次模型调用。

最后,通过一系列实验,他们展示了:在白盒和黑盒设置下,Fast-DetectGPT 在准确率上都显著优于 DetectGPT 和其他零样本方法,同时在 ChatGPT / GPT-4 这样的闭源大模型上也有很强的检测能力。


5. 方法详解:Fast-DetectGPT 是怎么"看曲率"的?

5.1 任务设定:白盒 vs 黑盒

论文仍然把任务定义成一个二分类问题 :给定一段文本 x x x,判断它是人写的还是由某个源模型生成的。

  • 白盒设定:可以访问源模型本身(比如要检测 GPT-J 生成的文本,就直接用 GPT-J 打分)。
  • 黑盒设定:不知道源模型,或者不能访问,只能选一个"代理模型"(surrogate model)来对文本打分,比如用 Neo-2.7 来检测 ChatGPT / GPT-4 的文本。

无论哪种设定,Fast-DetectGPT 都围绕**采样模型 q ϕ q_\phi qϕ + 打分模型 p θ p_\theta pθ**这对组合展开,只是白盒时两者往往就是同一个源模型,黑盒时则需要额外挑一个合适的 q ϕ q_\phi qϕ。


5.2 先回顾 DetectGPT 的三步走

【插图:DetectGPT 流程示意,对应论文 Figure 2(a)】

DetectGPT 的 pipeline 很经典,分三步:

  1. Perturb :用掩码语言模型(T5)对原文做轻微改写,生成若干个"扰动版本" x ~ \tilde x x~;
  2. Score:用打分模型(通常就是源 GPT)分别计算原文和每个扰动文本的 log 概率;
  3. Compare:把原文的 log 概率减去扰动文本 log 概率的平均值,得到一个"概率曲率"分数。

问题出在第二步:哪怕扰动文本只动了 15% 的 token,你仍然得对整句重新计算一次 log 概率,这意味着每个扰动都要一次完整前向;几十上百个扰动就对应几十上百次模型调用,成本极高。


5.3 条件概率曲率:把目光拉近到 token 级

【插图:Conditional Probability Curvature 分布,对应论文 Figure 1】

Fast-DetectGPT 的关键转折是:不再从"整条链的 joint 概率"出发,而是只看"给定原文上下文时,每个位置的条件分布"

定义一个条件概率函数:

p θ ( x ~ ∣ x ) = ∏ j p θ ( x ~ j ∣ x < j ) p_\theta(\tilde x\mid x) = \prod_j p_\theta(\tilde x_j \mid x_{<j}) pθ(x~∣x)=j∏pθ(x~j∣x<j)

这里 x < j x_{<j} x<j 是原文在位置 j j j 之前的前缀, x ~ j \tilde x_j x~j 是在这个上下文下采样得到的备选 token。注意一个细节:条件是在原文上,而不是在采样序列上 ,这意味着所有位置的采样都是条件独立的,后面会看到这点对效率影响巨大。

当 x ~ = x \tilde x = x x~=x 时,上式就退化成

p θ ( x ∣ x ) = p θ ( x ) p_\theta(x\mid x) = p_\theta(x) pθ(x∣x)=pθ(x)

也就是原文自身的概率。接下来,作者把 DetectGPT 的"概率曲率"改写成基于条件概率的标准化分数

d Fast ( x ) = log ⁡ p θ ( x ∣ x ) − μ ~ σ ~ d_{\text{Fast}}(x) = \frac{\log p_\theta(x\mid x) - \tilde\mu}{\tilde\sigma} dFast(x)=σ~logpθ(x∣x)−μ~

其中:

  • μ ~ \tilde\mu μ~ 是在同一条件 x x x 下,对大量采样文本 x ~ ∼ q ϕ ( x ~ ∣ x ) \tilde x\sim q_\phi(\tilde x\mid x) x~∼qϕ(x~∣x) 的 log 概率 log ⁡ p θ ( x ~ ∣ x ) \log p_\theta(\tilde x\mid x) logpθ(x~∣x) 的期望
  • σ ~ 2 \tilde\sigma^2 σ~2 是这些 log 概率的方差

直觉上,如果原文本身就是模型在这个上下文下"最自然"的输出,那么 log ⁡ p θ ( x ∣ x ) \log p_\theta(x\mid x) logpθ(x∣x) 在这个采样分布里会明显高于平均值 ,于是 d Fast ( x ) d_{\text{Fast}}(x) dFast(x) 会是一个正且绝对值较大的数;反之,人类文本更像是在这个分布中"既不特别突出,也不特别异常"的区域徘徊,曲率接近 0。

Figure 1 给出了一个非常直观的统计结果:在 XSum 上,四个源模型生成的文本的条件概率曲率大多集中在 3 左右 ,而人类写的文本则大多集中在 0 附近,两者的分布几乎没有重叠,这就为这个特征的有效性提供了强有力的经验支持。


5.4 条件独立采样:用一次前向生成一万条"虚拟候选"

【插图:Fast-DetectGPT vs DetectGPT 框架图,对应论文 Figure 2(b)】

有了条件概率曲率的定义,还差的就是如何高效地估计 μ ~ \tilde\mu μ~ 和 σ ~ \tilde\sigma σ~。这里作者用到了一个非常工程友好的 trick:条件独立采样

具体来说,对每个位置 j j j,我们从采样模型 q ϕ ( x ~ j ∣ x < j ) q_\phi(\tilde x_j\mid x_{<j}) qϕ(x~j∣x<j) 的预测分布中采样若干个 token。因为所有位置都是基于原文前缀 x < j x_{<j} x<j 独立抽样,我们可以:

  • 把整段原文喂给采样模型,拿到每个位置的 logits;
  • 然后直接用张量操作在每个位置上批量采样,比如"一口气抽 10,000 次";
  • 这一步只需要一次前向传播

随后,用打分模型 p θ p_\theta pθ 在同样的上下文 x < j x_{<j} x<j 下,对这些采样 token 计算条件 log 概率,同样可以通过一次前向把整个分布算出来,再用索引取出对应 token 的 log 概率。作者在论文中给了一个 PyTorch 示例:用 Categorical(logits=lprobs).sample([10000]) 就能实现"每个位置采一万次"。

Fast-DetectGPT 的完整检测流程在算法 1 中给出,大致是:

  1. Conditional sampling :在条件 x x x 下,从 q ϕ ( x ~ ∣ x ) q_\phi(\tilde x\mid x) qϕ(x~∣x) 抽样 N N N 个候选 x ~ i \tilde x_i x~i;
  2. Scoring :用 p θ p_\theta pθ 计算 log ⁡ p θ ( x ~ i ∣ x ) \log p_\theta(\tilde x_i\mid x) logpθ(x~i∣x) 的平均和方差,得到 μ ~ \tilde\mu μ~ 和 σ ~ \tilde\sigma σ~;
  3. Curvature :根据定义计算 d Fast ( x ) d_{\text{Fast}}(x) dFast(x);
  4. Decision :把这个分数与阈值 ϵ \epsilon ϵ 比较,超过则判为"机器文本"。

【插图:Fast-DetectGPT 算法伪代码,对应论文 Algorithm 1】

论文还在附录中给出了一个解析解 :利用条件独立性,可以在词表上直接求和,精确计算 μ ~ \tilde\mu μ~ 和 σ ~ 2 \tilde\sigma^2 σ~2,而不必做蒙特卡洛采样。作者发现这个解析解在精度上几乎和 10,000 次采样一致,推理速度还能再快约 10%。


5.5 与 Likelihood / Entropy 的关系:一个"加一点归一化"的组合

还有一个有趣的点:当采样模型和打分模型相同,即 q ϕ = p θ q_\phi = p_\theta qϕ=pθ 时,条件概率曲率的分子

log ⁡ p θ ( x ∣ x ) − μ ~ \log p_\theta(x\mid x) - \tilde\mu logpθ(x∣x)−μ~

其实就是两个经典特征的组合:

  • log ⁡ p θ ( x ∣ x ) \log p_\theta(x\mid x) logpθ(x∣x) 可以看作 Likelihood baseline
  • μ ~ \tilde\mu μ~ 对应的是条件分布上的 负 entropy

也就是说,Fast-DetectGPT 在本质上是把 Likelihood 和 Entropy 两个老特征做了一个标准化的线性组合 ,再加上一个方差归一化 σ ~ \tilde\sigma σ~。作者在消融实验里发现,单独用 Likelihood 或 Entropy 都不够好,组合再标准化之后,检测性能会稳定地提升。

从直觉上看,这也合理:原始 log 概率在不同上下文里的方差很大,直接比较不够稳,而减去"该位置上所有候选 token 的平均 log 概率"相当于给每个位置做了一个动态基准,再除以标准差,则把不同句子、不同模型之间的尺度差异抹平,使得同一个阈值在跨模型、跨数据集时也更好用。


6. 实验结果

6.1 实验设置:数据集、源模型与对比方法

作者沿用了 DetectGPT 的实验框架,用六个数据集覆盖不同领域与语言:新闻(XSum)、Wikipedia 段落(SQuAD)、故事写作(WritingPrompts)、机器翻译基准 WMT16 英德双语,以及生物医学问答(PubMedQA)。每个数据集随机采样 150--500 个人工样本作为负例,再用各个源模型在相同前缀下生成等量的正例。

源模型方面,既包括 GPT-2、OPT-2.7B、GPT-Neo-2.7B、GPT-J、GPT-NeoX 等开源模型,也包括 GPT-3、ChatGPT(gpt-3.5-turbo)和 GPT-4;参数量覆盖 1.3B 到 175B 以上。大多数开源模型在本地 A100 上跑,闭源模型通过 OpenAI API 调用。

对比方法则覆盖了:

  • 零样本统计特征:Likelihood、Entropy、LogRank、LRR、DNA-GPT;
  • 概率曲率系的 DetectGPT 与 NPR;
  • 监督方法:RoBERTa-base / large GPT-2 detector、商用 GPTZero。

评测指标统一用 AUROC,并给出了"相对提升"(在当前分数到 1.0 的区间内提升的比例),方便比较不同基线上的相对收益。


6.2 核心结果:白盒与黑盒的全面胜出

【插图:五个源模型的平均 AUROC,对应论文 Table 2】

在白盒设定下,Fast-DetectGPT 在 XSum、SQuAD、WritingPrompts 三个数据集、五个源模型的平均 AUROC 达到 0.9887 ,相比 DetectGPT 的 0.9554 有明显提升,按论文的"relative↑" 计算约为 74.7% 的相对提升。在很多单模型上,它几乎达到"接近完美"的 0.99+。

在黑盒设定下,作者以 Neo-2.7 作为打分模型,用 GPT-J 作为采样模型来检测其他源模型的文本。即使如此,Fast-DetectGPT 仍然在平均意义上比 DetectGPT 高出 0.09 左右的 AUROC ,对应约 74.5% 的相对提升 。这表明条件概率曲率确实能作为一种跨模型的"普适特征"

更有意思的是,当检测 GPT-3 / ChatGPT / GPT-4 的生成时,Fast-DetectGPT 在纯黑盒条件下依然走在前面:

【插图:ChatGPT / GPT-4 检测结果表,对应论文 Table 3 和 Table 7】

  • 对 ChatGPT,平均 AUROC 约 0.96 ,比 DetectGPT 高出约 0.14
  • 对 GPT-4,平均 AUROC 约 0.91,同样显著优于 DetectGPT 和各类监督检测器;
  • 对 GPT-3,使用本地代理模型打分,也能明显超越 DetectGPT 和 RoBERTa 检测器。

从业务视角看,这意味着:即便你手头只有一个中等规模的开源模型,也能在没有标签数据、没有源模型访问权限的情况下,对主流闭源大模型的输出做出高质量的检测


6.3 速度:从"夜间批处理"到"实时调用"

作者在 XSum 上对五个源模型做了速度评估:

  • DetectGPT:即使使用 GPU 批处理,把 100 个扰动分成 10 个 batch 跑,完整检测一份数据也要 7.9 万秒(约 22 小时)
  • Fast-DetectGPT:同样的任务在 233 秒(约 4 分钟) 内完成,约 340 倍提速

这个数量级的差异,基本把 DetectGPT 从"线上不太现实"变成了"工程上可接受",尤其是考虑到很多场景需要对海量短文本(评论、答案、作文等)做检测。


6.4 可用性分析:ROC 曲线、长度鲁棒性与跨域表现

【插图:ROC 曲线,对应论文 Figure 3】

从 ROC 曲线来看,Fast-DetectGPT 在保持极低误报率时仍然有很高的召回:

  • 对 ChatGPT 文本,当误把人类文本判成机器文本的比例控制在 1% 时,Fast-DetectGPT 仍然能召回约 87% 的机器文本
  • 同样的假阳性率提高到 10% 时,召回率接近 98%;
  • 对 GPT-4,任务更难,但在 10% 假阳性率下仍能保持约 89% 的召回

【插图:不同长度的检测性能曲线,对应论文 Figure 4】

文本长度方面,Fast-DetectGPT 的表现也比较"符合直觉":

  • 随着文本从几十词增长到 180 词,AUROC 基本单调上升,短文本性能略低,长文本性能更稳定;
  • 相比之下,一些监督检测器在 GPT-4 场景下反而出现"文本越长越差"的现象,而 DetectGPT 在长文本时也出现了非单调的波动。

【插图:跨领域与跨语言对比柱状图,对应论文 Figure 5】

在跨领域、跨语言实验中,Fast-DetectGPT 在新闻(XSum)、英语 WMT、德语 WMT、PubMedQA 等多个数据集上:

  • 在分布内(新闻)表现与监督检测器相当甚至略优;
  • 在分布外(生物医学、德语)则明显领先 RoBERTa 与 GPTZero 等监督方法;
  • 同时在所有数据集上都比 DetectGPT 更稳。

结合上面的结果,可以说 Fast-DetectGPT 的"通用性"确实强:它不依赖特定领域、不依赖特定模型家族,更多是利用了"LLM 作为概率模型"的共性


6.5 消融实验:采样模型、归一化与解码策略

在附录中,作者做了几组有意思的消融:

  1. 采样模型的选择 :当用 GPT-J 作为通用采样模型,而打分仍然用源模型时,Fast-DetectGPT 的平均 AUROC 还能在原来的基础上再提升一点------约 0.002 的绝对提升,对应约 27% 的相对提升。说明一个更强、覆盖面更广的采样模型能帮助构造更"尖锐"的参考分布。

  2. 方差归一化 σ ~ \tilde\sigma σ~ 的作用:去掉归一化后,性能明显下降。对 DetectGPT 来说,归一化带来约 36% 的相对提升;对 Fast-DetectGPT 也有约 10% 的相对提升。

  3. 不同解码策略的鲁棒性:作者用 top-p、top-k 和不同 temperature(包括更"保守"的 p=0.9、k=30、T=0.6)生成文本,Fast-DetectGPT 在这些场景下依然稳定领先 DetectGPT,且在更"确定性"的生成设置下 AUROC 会进一步上升,符合"越像模板化输出越容易检测"的直觉。

  4. 对抗攻击 :在 paraphrase 攻击和作者提出的 decoherence 攻击(随机交换相邻词)下,所有方法都会掉点,但 Fast-DetectGPT 的性能降幅最小,整体仍优于其他零样本和监督方法。

【插图:对抗攻击结果表,对应论文 Table 11】


7. 创新点与不足

从创新性来看,我觉得值得记住的地方主要有三个层次:

第一,从"全句概率曲率"切换到"条件概率曲率",是一个颇具洞察力的视角变化。它把人机差异从"这段话整体是不是模型高概率输出"拉到了"在每一步 token 选择上,机器是否更倾向于局部最优"这一层,这和我们对 LLM 训练目标的理解是高度契合的。

第二,条件独立采样 + 单次前向求分布 这个工程设计把原本难以落地的 DetectGPT 变成了一个真正"可部署"的方案------在保持甚至提升检测性能的前提下,推理成本骤降两个数量级。这对于需要大规模文本审核或学术检测的系统非常关键。

第三,Fast-DetectGPT 在大量实验上表现出较强的跨模型、跨领域、跨语言鲁棒性,尤其是对 ChatGPT / GPT-4 等闭源模型仍然有效,这让它更像是一个"实用工具",而不是只在开源小模型上好看的研究玩具。

当然,论文也非常坦诚地谈到了局限:

  • 理论分析还比较初步:条件概率曲率为什么在统计上这么区分人机,其实还缺乏系统的理论证明,目前更多是经验与直觉支撑。作者也把深入的理论推导列为未来工作。
  • 黑盒设定下依赖代理模型的覆盖能力:不同语言、不同领域下,很难有一个"万能的代理 LLM",如果代理模型对某个领域的建模能力不足,那么它对条件概率曲率的估计也会打折扣。论文在额外模型(如 BLOOM、Llama、Llama-2)上的结果就展示了这种"训练语料不匹配"带来的性能波动。
  • 偏见与公平性问题:和所有 LLM-based detector 一样,它会继承底层模型在训练数据中的偏见(比如对非母语写作者的误报率更高)。作者在伦理章节里也专门提醒了这一点,建议未来用更包容的语料训练底层模型。

8. 总结

回到最开始的问题:怎么在不训练额外分类器的前提下,快速、稳健地检测出大模型写的文本? Fast-DetectGPT 的思路是:把文本生成看作一个按 token 决策的过程,利用机器和人类在"给定上下文时选词行为"上的统计差异,构造一个条件概率曲率特征,然后用高效的条件采样与打分流程,把这件事做成一个可用的检测器。

整体来看,Fast-DetectGPT 带来的观念变化主要有这几条:

  • 检测人机文本,不一定要看"整句概率有多高",更重要的是看"在候选空间里有多凸起"
  • 概率曲率这类原本昂贵的特征,可以通过条件独立假设和一次性采样被做得非常轻量
  • 一个设计得当的零样本特征,完全有机会在强源模型和现实场景中替代大部分监督检测器
  • 但只要底层 LLM 仍然带着偏见和覆盖不足,这类检测器也无法完全"中立",需要谨慎使用

如果只看这一节,我会这样概括这篇论文:Fast-DetectGPT 把 DetectGPT 的思路"重构"到 token 级的条件概率空间里,在保持甚至提升检测效果的前提下,把计算代价压到了实际可用的量级,从而让"概率曲率检测"真正有机会走出论文、进入产品。

相关推荐
兆。1 小时前
python全栈-人工智能基础-机器学习
人工智能·python·机器学习
魔镜前的帅比2 小时前
Few-shot / Chain-of-Thought 提示技巧
人工智能·chatgpt
深度学习lover2 小时前
<项目代码>yolo遥感航拍船舶识别<目标检测>
人工智能·python·yolo·目标检测·计算机视觉·遥感船舶识别
qy-ll2 小时前
最新MMO-IG生成图像论文学习(25/11/19)
图像处理·深度学习·学习·计算机视觉·论文学习·遥感
Coovally AI模型快速验证2 小时前
基于SimCLR的自监督 YOLO:YOLOv5/8也能在低标注场景目标检测性能飙升
人工智能·科技·yolo·目标检测·机器学习·计算机视觉
不老刘2 小时前
新一代图像生成工具:Nano Banana Pro 带来更自然的创作体验
人工智能·google·gemini·nano banana pro
袁庭新2 小时前
人人都能学AI,人人都要学AI
人工智能·aigc
Tzarevich2 小时前
前端调用大语言模型:基于 Vite 的工程化实践与 HTTP 请求详解
人工智能
8***B2 小时前
Python机器学习库Scikit-learn使用
python·机器学习·scikit-learn