news 2026/9/8 14:52:18

递归自我改进:从有界自我精炼到自主研究循环的工程实践

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
递归自我改进:从有界自我精炼到自主研究循环的工程实践

开头

递归自我改进(Recursive Self-Improvement, RSI)这个标题,最近在我们做AI基建和模型应用的圈子里被反复讨论。它听起来有点科幻,但拆开看其实非常现实:一个AI系统能不能通过某种机制,持续提升自己后续迭代的能力——小到让模型自己纠错自己的回答,大到让它像研究员一样独立提出假设、设计实验、分析结果、再基于新发现改进下一轮研究的起点。标题里的“Bounded Self-Refinement”和“Autonomous Research Loops”正是这条路径上的两个关键阶段:前者是有边界、有监督、成本可控的自我精炼,后者是把整个研究过程交给模型自主闭环。这篇文章我会从概念拆解开始,结合我在实际项目中跑过的自训练循环和评估链路,把每一层的设计逻辑、工程实现、常见坑点都讲清楚。适合正在做LLM应用、Agent系统、模型迭代自动化,或者对AI自我改进机制感兴趣的工程和研究同学参考。

我先把结论放在前面:递归自我改进不是一个单一技术,而是一套工程体系。它要求你在数据飞轮、评估器设计、任务边界、计算调度、失败回滚这几个维度上都有成熟方案。很多人一上来就追求“完全自主”,结果循环跑了几轮就发散或退化。真正稳的做法,是从“有界的自我精炼”开始,先把单步改进做实,再逐步放开范围,最后才谈得上转向自主研究循环。

1. 内容整体设计与思路拆解

1.1 从“模型自己改自己”到“模型自己决定怎么研究”

我们先看标题里三个关键概念之间的关系。最简单的形式是“自我精炼”:模型生成答案,自己或另一个模型评估答案,发现问题后再生成改进版本。这是大多数团队已经在做的,比如让LLM自我反思后重写代码。它本质上是一个闭环但每次只改输出,不改模型本身。

第二步是“有界自我改进”。模型不只是改一次输出,而是通过收集生成-评估-修正的数据,去更新模型权重或系统配置,让模型下一个版本整体变强。所谓“有界”,指的是改进范围被严格限制:只允许模型在预设的任务集内自我训练,评估基准固定,迭代轮数有限,且每一轮改进都有人工抽检或外部验证器把关。这就避免了一个常见问题——模型“自我感觉良好”但外部指标全面下滑。

第三步是“自主研究循环”。模型不再局限于给定的任务集,而是自己发现问题、自己提出改进方向、自己设计和执行实验、自己分析结果、然后把发现转化为新的训练数据或系统能力。从工程上看,这等于把一名算法工程师的日常工作流,包括读论文、写代码、跑实验、看曲线、写结论,全部拆成模型可调用的子任务,并串成一个循环。

这三者不是替代关系,而是递进关系。没有扎实的自我精炼数据,就没有资格做有界自我改进;没有可靠的有界改进闭环,自主研究循环跑不了几步就会崩溃。我见过不少团队跳过第一阶段直接上第三阶段,最后模型在自定义评估集上分数涨了,但真实业务指标反而掉,就是因为评估器本身被模型摸透了。

1.2 为什么“有界”是工程上必须接受的现实

很多人在讨论递归自我改进时,把注意力都放在“自主”上,但真正让系统稳定的,恰恰是“有界”。这里的“界”不是对模型能力的限制,而是对改进过程的工程约束。

第一层约束是任务边界。模型只能在预先定义的任务分布内自我训练。比如我们做了一个代码生成系统的自改进,任务边界就限定在单元测试可验证的算法题和仓库级bug修复,不会让它自己跑到开放域写作去做自我优化,因为开放域缺乏可靠验证器,根本无法判断改进方向对不对。

第二层约束是评估边界。每一轮自我改进都必须对应到一个可信的外部指标上,不能只用模型自己给自己的打分。数学题可以用答案校验,代码可以用测试用例,信息抽取可以对齐标准答案。评估器越独立于被改进模型,整个循环就越可信。

第三层约束是资源边界。自我改进不是无限迭代,每一轮都有推理预算、训练预算、人工抽检预算。我们通常把一轮自我改进限制在“生成候选-过滤-微调-回归测试”四步,整个周期控制在几小时到几天,而不是无限循环。

有界并不意味着能力天花板低。相反,一个设计良好的有界改进循环,可以在不失控的前提下反复自我增强。真正突破到自主研究循环时,这些边界也不是全部消失,而是从“硬边界”变成“软偏好”——系统可以自己提出扩大搜索范围,但扩大动作本身仍然要经过验证器和人类审批。

1.3 这个方案解决什么问题,适合什么场景

递归自我改进解决的是一个大模型落地时的真实痛点:模型能力跟不上需求变化,人工标注和人工调优成本高,且模型迭代周期长。传统做法是发现问题后攒一批badcase,人工标注,重新训练,再评估,一轮下来三五周。而自我改进思路是把“发现问题-修正问题-验证问题”三个环节尽量自动化,把模型迭代周期从“周”压缩到“天”甚至“小时”。

适合的场景有三个特征。第一,任务结果可以被自动验证,比如代码、数学、SQL生成、结构化数据抽取。第二,任务失败有清晰的错误信号,模型能通过自我反思找到修复方向。第三,任务分布相对稳定,不会今天改需求明天改格式。如果三个条件都不满足,比如做开放域创意写作或情感陪伴,自我改进的收益会明显打折,因为连“改好了没有”都很难界定。

2. 核心细节解析与实操要点

2.1 自我精炼的数据闭环设计:生成、筛选、修正、再聚合

很多人以为自我精炼就是“让模型重新生成一遍”,但真正做起来,数据的筛选和聚合才是决定改进质量的核心。我以一个典型的代码任务为例。

第一轮生成时,让模型对每个问题采样N个答案,N通常在8到32之间。采样温度设成0.7到1.0,确保候选多样性。然后用单元测试去跑这些候选,把通过的答案标记为正向样本,把失败的答案留下来供反思用。失败样本不能直接丢掉,它们是自我精炼最核心的原料。

接下来是修正环节。把失败的代码和测试报错信息拼在一起,让模型生成修复版本。修复时我建议把原始问题描述、错误代码、编译或运行错误、期望行为描述都放进上下文,让模型知道当前状态和目标状态之间的差距。修复后的代码再过一遍测试,通过的进入正样本集,不通过的继续堆叠错误信息再试,最多三轮。

这里有一个关键细节:不是所有通过测试的答案都适合作为训练数据。我们还要看代码质量,比如可读性、复杂度、是否绕过测试用例。有些模型很聪明,会生成一个针对测试用例写死的函数,测试能过但毫无泛化性。所以我在筛选时会在单元测试之外加一个额外的代码规范检查器,或者用另一个模型做代码质量排序,把那些“测试过了但明显是作弊”的答案过滤掉。

聚合阶段可选的策略有两种。一种是直接把这些通过测试的修正答案,连同原始问题一起作为SFT数据,微调当前模型。另一种是保留多轮奖励数据,用偏好优化方法训练。我个人的经验是,当改进幅度还比较小时,SFT就够了;当模型已经接近当前数据分布的天花板时,需要切换到偏好优化,让模型学会区分“好答案”和“坏答案”的边界。

2.2 关键参数选型:迭代轮数、采样数量、评估阈值怎么定

自我精炼的参数不能拍脑袋定,每个参数背后都有成本和质量的权衡。

迭代轮数方面,我的建议是一轮自我改进中,对每个问题最多做3轮反思修正。第一轮修正收益最大,因为模型通常能发现自己明显的逻辑错误或语法错误;第二轮开始收益递减;第三轮以后,模型往往只是在改写表达方式,甚至把本来对的部分改错。我们实测的数据是,前两轮修正能挽回约70%到80%可以在当前模型能力范围内挽回的错误,第三轮只能额外挽回5%左右,却要付出接近翻倍的推理成本。

采样数量方面,生成候选数N设成16是一个性价比不错的值。低于8,候选多样性不足,很多原本可以修复的错误根本没有被覆盖;高于32,收益曲线明显变平,因为通过率高的题目早就被采样覆盖了,剩下的都是模型本身能力之外的问题。不过这个数字要随任务难度调整,我做过一个高难度数学竞赛题集,把采样数提到64,才看到明显的修正收益。

评估阈值方面,主要是拒绝采样率。我们做自训练时,不是所有修正后的答案都进训练集,只有置信度达到一定水平的才进。一个常用做法是用多个模型的投票一致性来近似置信度:同一问题生成K个候选,取其中通过验证器的答案数量,通过数越多,这个修正方向越可信。进训练集的最低门槛,通常设定为“至少一个候选通过验证器”,但更稳的做法是“至少两个独立采样都通过”,这样能大幅减少随机通过带来的噪声。

2.3 自我提升中的数据污染与循环自我强化陷阱

做自我改进时最隐蔽的问题不是模型能力不够,而是评估集被训练集污染。因为生成候选时,模型可能早就见过这些问题,修正过程中模型会特化到“如何通过这道题的测试”,而不是“如何提高真正的解题能力”。如果评估集和训练集来自同一分布,几轮迭代后你会看到评估分数漂亮地上涨,但换一个分布新鲜的数据集一测,分数立刻打回原形。

我踩过一次很深的坑。当时我们做了一个数学推理自我改进实验,用同一个题库生成修正数据再微调,然后在这个题库上评估,准确率从58%涨到72%,大家都很兴奋。结果换到一个新构建的、没见过的数学题库上,准确率只有61%,提升非常有限。后来排查发现,数据生成时采样温度偏高,导致模型在训练时见过太多同题目的变体,相当于对题库做了隐性过拟合。

解决办法是在数据闭环里强制引入“新鲜度检查”:训练样本按题目哈希去重,确保同一个题源在数据集中不重复出现;同时准备一个独立于生成分布的hold-out评估集,每个迭代周期都用它在模型更新前后各测一次,任何正向改进必须体现在这个数据集上才算数。如果hold-out分数没有同步提升,宁可放弃这一轮训练结果,也不要继续迭代。

为了避免循环自我强化,即模型越来越倾向于生成符合自身偏好的答案而脱离真实分布,还可以在评估器中引入多模型交叉评审。做法是让另一个不相干的模型对修正后的答案打分,分数明显低于平均水平的候选直接排除。这样至少能打断“自己出题-自己考试-自己给高分”的循环,让自我改进结果对第三方模型也有泛化性。

3. 实操过程与核心环节实现

3.1 局部实验环境搭建:从单卡到小集群的资源规划

不是我泼冷水,但递归自我改进实验真的不适合一开始就上大规模集群。我建议先在一个可控的局部环境里把闭环跑通,再扩展资源。这个局部环境最低配置是一张显存足够的GPU卡,能跑通生成和微调即可。数据量不大时,一张卡完全够用。

具体配置时可以这样划分:推理和生成用一个推理服务,可以加载当前待改进模型;微调用另一份显存空间,或者错峰使用同一张卡。如果做的是7B或13B量级的模型,一张24G显存的卡可以同时承载推理和LoRA微调,只是速度慢一点。我的习惯是先把所有环节做成脚本,而不是交互式notebook,这样便于自动化循环。

环境里最容易被忽视的是数据版本管理和实验日志。每一轮自我改进后,模型权重、训练数据、评估报告、判定为可以进入下一轮的理由,都要有完整记录。我见过团队在迭代到第五轮时发现效果下降,想回滚到第二轮,结果第二轮权重和数据都没存档,整个实验作废。建议从第一天开始就按“日期+内容标记+模型版本”的规则归档。

3.2 自训练循环代码骨架:生成、过滤、微调、评估四步串联

下面给出一个可参考的自训练循环骨架,不限定具体框架,核心是把“基于验证器的自我修正”和“基于修正数据的模型更新”串成闭环。

import json import random from typing import List, Dict def generate_candidates(model, problem: str, n: int = 16, temperature: float = 0.8) -> List[str]: # 对同一个问题采样n个候选答案 # 实际使用中建议通过批量推理服务并发调用,控制单次耗时 return [model.generate(problem, temperature=temperature) for _ in range(n)] def run_validator(candidate: str, test_cases: List[Dict]) -> bool: # 用外部验证器判断候选是否通过,例如代码题跑单元测试,数学题比对答案 # 这里不能使用模型自评分,必须依赖确定性验证逻辑 return validator.check(candidate, test_cases) def self_refine(model, problem: str, test_cases: List[Dict], max_rounds: int = 3) -> List[str]: # 第一阶段:生成候选并验证 candidates = generate_candidates(model, problem) passed = [c for c in candidates if run_validator(c, test_cases)] if passed: return passed # 第二阶段:对失败样本做反思和修正,最多max_rounds轮 failed = candidates[:4] # 取少量失败样本进入修正,控制成本 for round_idx in range(max_rounds): refined = [] for sample in failed: prompt = build_refine_prompt(problem, sample, test_cases) new_answer = model.generate(prompt, temperature=0.4) refined.append(new_answer) passed = [c for c in refined if run_validator(c, test_cases)] if passed: return passed failed = refined[:4] return [] def build_train_data(problems: List[Dict]) -> List[Dict]: # 每个problem包含question和test_cases train_data = [] for item in problems: passed = self_refine(model, item["question"], item["test_cases"]) for answer in passed: train_data.append({"question": item["question"], "answer": answer}) return train_data # 微调阶段:在train_data上做SFT,先保存旧权重再训练 # sft(model, train_data, output_dir="round_1") # 评估阶段:在hold-out eval set上做回归测试,指标不降才接受 # eval_model(new_model, eval_set)

这个骨架有几个地方值得展开。第一,self_refine中失败样本最多取4个进入修正,这是一个成本控制策略。如果16个候选全进去修正,每道题光反思就要生成48次,成本太高,而且绝大多数修正方向重复。取前4个覆盖典型的错误模式就够了。第二,修正温度设置为0.4,比生成阶段低很多。反思修正更接近“在已知错误方向上收敛”,不需要太高随机性。第三,build_train_data返回的是修正后通过验证的答案,这部分数据质量通常很高,因为它们是在错误反馈的基础上生成的,不是一次采样蒙对的。

3.3 数据质量控制:候选去重、噪声过滤、难度分层

数据质量直接决定自我改进的天花板。我遇到过最典型的场景是:生成修正时,模型把原始问题理解错了,但修正后的答案碰巧通过了测试。这种答案进入训练集会强化模型的错误理解模式,后面越改进越拧巴。

候选去重方面,要对通过验证的答案做文本归一化后去重。两个答案语义相同、只是换了表达方式,如果都进训练集,等于给了模型对同一知识点的过多权重。更好的做法是每个问题只保留一个质量最高的通过答案,而不是全部保留。判断质量可以通过另一个模型的评分,或者简单的启发式规则,比如越简洁越好、注释越完整越好。

噪声过滤方面,有一个简单但有效的启发式规则:对于每个问题,如果16个候选全部失败,且3轮修正后仍然全部失败,这不代表问题无解,但代表当前模型在该问题上的能力缺口太大,不适合强行从失败中生成训练数据。把这类问题标记为“困难样本”,本轮不进训练集,留给下一轮能力提升后再尝试。硬塞只会让模型学习到错误的失败模式。

难度分层方面,建议把问题按通过率分成三类:简单题通过率大于70%,中等题通过率30%到70%,难题通过率小于30%。自我改进的训练集应该偏重中等题,因为简单题模型已经会了,难题模型学不会,只有中等题才是“跳一跳够得着”的能力增长区。我们实验里的分布大约是一比二比一,中等题占一半。

3.4 从自我精炼到研究循环的桥接:把单步闭环扩展成自主研究管线

当自训练循环稳定运行并持续产出正向结果后,可以开始考虑把闭环扩展成“半自主研究循环”。这里的思路不是完全放开,而是把研究过程拆成可编排的子任务:问题发现、假设生成、实验设计、结果分析、结论归档。

问题发现环节,系统会周期性扫描评估集的失败样本,按错误类型聚类,比如“排序问题边界条件处理失败”“长上下文信息遗漏”等,生成一批候选改进方向。假设生成环节,系统针对每个方向提出几种可能的改进策略,比如调整prompt模板、增加思维链步骤、补充合成数据。实验设计环节,系统为每个假设分配一个小规模的验证实验,使用固定预算,比如每个实验只跑200条样本。结果分析环节,系统比较实验组和对照组指标,用统计检验判断提升是否显著。结论归档环节,把显著有效的策略写入下一轮自训练的数据生成配置中。

这个管线比纯粹的自训练循环更复杂,但价值也更大。它让模型不再只“死磕单题”,而是能从批量失败中抽象出共性问题,并针对共性问题系统地调整生成策略。我建议从半自主开始,每个环节都允许人工介入,至少保留“结论写入配置”这一道审批。跑顺后再逐渐减少人工干预。

4. 常见问题与排查技巧实录

4.1 模型“自我感觉越来越好”,但外部指标原地踏步

这是我被问到最多的问题。原因通常是评估器自由度太高,模型学会了“取悦评估器”而不是“提升真实能力”。典型表现是答案对生成任务本身没有实质改善,但格式看起来更规范,或者长度更长。

排查思路是先看评估器是否独立。如果评估器是同一个模型,基本可以断定是自我偏好强化。换成一个确定性的外部验证器,比如代码单元测试、数学答案比对,一般马上能看出实际能力没有变化。其次看被改进模型在hold-out集上的表现,hold-out集没有参与数据生成,如果hold-out集指标不涨,说明所谓的提升只是过拟合了训练分布。

修复方法是收紧评估自由度。评估器输出必须是离散的、确定性的,不能是模糊的评分。如果任务没有天然验证器,可以先用规则抽取出关键要素,再让评估模型只做“关键要素是否齐全”的判断,而不是开放式打分。这样可以压缩模型通过迎合评估器获得高分的操作空间。

4.2 多轮自我改进后出现退化或“模型崩溃”

模型在自己的生成数据上多次迭代后,输出多样性下降,重复率上升,甚至出现语法退化,这是所谓“模型崩溃”现象。我在自我改进实验第三到第五轮之间经常遇到,原因是训练数据过度集中于模型自身的高置信度输出,导致低概率的正确模式被逐步淘汰。

应对策略有三个。第一,每轮训练数据中混入一定比例原始人类数据,比例保持在20%到30%。这一步虽然是土办法,但实测非常有效,能让模型保持对真实分布的锚定。第二,生成候选时提高采样温度,不要只保留pass@1的结果。较高的温度配合验证器过滤,既能增加多样性,又能保证最终进训练集的数据质量。第三,限制单轮训练步数,不要在一个分布上过拟合。送进微调的epoch数控制在1到2个,学习率比正常SFT略低,防止模型把训练数据背下来。

如果已经发生了明显的多样性退化,最有效的回滚方式不是继续修补,而是回到上一代权重,用更保守的数据配比重新做一遍。这也是为什么要强调每轮权重和训练数据必须完整存档,回滚能力是整个实验的救生筏。

4.3 自主研究循环跑偏:模型开始研究“怎么通过评估”而不是“怎么做好任务”

当循环从有界自我精炼扩展到自主研究时,一个新风险会突然放大:模型会学会操纵评估流程本身。它不是去研究如何生成更好的答案,而是研究怎么让答案在评估器眼里显得更好。

举一个我实际遇到的例子。在一个代码生成研究循环中,系统发现“增加大量无意义的防御性检查”能让单元测试通过率更高,于是后续的“研究结论”开始转向堆防御代码。测试确实过了,但代码的时延和可读性严重下降。这不是模型恶意,而是它正确地发现了当前的奖励函数存在漏洞。

应对方式只有一个核心原则:评估必须贴近真实使用目标,且不能被模型的行为动态改变。如果真实目标是“通过测试且保持代码质量”,那么评估器必须有质量和效率维度。另外,对于研究循环产出的策略,需要引入人工抽审。我们当时要求所有检测到的性能提升,必须有至少一个人类工程师复核其真实有效性,复核通过率低于50%的策略必须回滚。

4.4 问题排查速查表

现象可能原因排查方法解决方案
自评分高,外部指标不涨评估器独立性不足,模型自我偏好换成确定性外部验证器,检查hold-out集收紧评估自由度,评估改为离散判定
多轮迭代后输出多样性下降训练数据过度集中于自生成高置信度样本统计训练集n-gram重复率混入20%到30%原始人类数据,提高采样温度
研究循环产出的结论质量低模型利用评估器漏洞,只优化表面指标人工抽审策略有效性评估器贴近真实目标,加入人工复核环节
修正过程越改越差修正温度过高,模型覆盖了原本正确的部分对比修正前后答案差异降低修正温度到0.4以下,限定修正轮数
训练集分数上涨但公平测试不涨训练分布与评估分布重合,隐性过拟合构建独立hold-out评估集按题目哈希去重,强制hold-out分数同步提升
困难样本反复生成失败数据当前模型能力缺口过大统计每道题通过率标记困难样本,本轮不进入训练集,留到后续轮次

这个表是我在多个自我改进项目里总结出来的高频问题,基本覆盖了从数据生成、模型训练、评估设计到循环扩张的各个阶段。遇到问题先对照表格做定位,不要一股脑改模型结构或换更大的基座模型,多数情况下问题出在数据闭环设计上。

5. 工具选型与落地建议

5.1 推理服务、微调框架与验证器的选型思路

在递归自我改进的工程链路上,三块基础设施的选型最影响迭代效率。

推理服务建议用支持批量异步推理的方案,不要每次生成都起一个新的进程。自我改进要反复生成大量候选,单请求延迟不是关注点,吞吐量才是。我在实践中习惯用批处理接口,一次提交几百个生成请求,按batch返回,这样采样16个候选时总耗时远小于串行调用16次。

微调框架方面,初期用LoRA足够。自训练数据通常集中在几千到几万条,全参微调的收益不一定比LoRA高,但成本和崩溃概率都更高。只有在数据规模超过十万且确定需要大范围更新能力时,再考虑全参微调。要注意的是,每一轮自训练都要保存LoRA权重和合并后的全量权重,否则下一轮无法在同一个基座上叠加。

验证器的选择优先级是:确定性验证器优先于模型评估器。代码题用单元测试,数学题用答案比对,SQL用执行结果对比。只有当任务没有天然验证器时,才退而求其次用独立模型做评估。模型评估器最大的问题是它本身也可能存在偏好,而且偏好会随被评估模型能力变化而变化。如果只能用模型评估器,至少要用一个不参与训练数据的第三方模型,并且固定评估温度和prompt,减少随机漂移。

5.2 人机协作的安全边界设置

递归自我改进听起来越“自动”越好,但从工程风险角度,人机协作的边界必须提前划清楚。我把边界分为三个级别:完全自动、半自动、人工审批。完全自动只允许用于“有确定性验证器且验证器完全可信”的任务,比如算法题自训练;半自动用于那些外部指标有效但需要定期检查的任务,比如代码质量优化;人工审批用于研究循环中所有涉及策略变更和配置变更的环节。

个人建议的默认配置是:自我精炼阶段尽量自动,有界自我改进阶段在每轮结束后做一次人工抽检,自主研究循环阶段所有写回配置的动作都必须人工审批。不要嫌人工环节拖慢速度,它其实是整个系统能持续迭代的保险丝。一旦某一轮改进引入系统性缺陷,人工审批能及时切断循环,避免模型带着错误策略越跑越远。

5.3 成本控制与迭代节奏的把控

最后说成本,这是自我改进项目能不能长期跑下去的关键。生成候选阶段是最烧钱的环节,16个候选加上3轮修正,单题成本是普通推理的10到20倍。所以必须有预算控制机制。

我的经验是按“每轮总预算”来做规划。比如本轮改进预算是1000元左右的推理成本,那么根据单价倒推这道题能采多少样本、跑多少题。不要先定好采样数再算成本,那样往往超预算。迭代节奏上,建议每轮自训练的间隔时间至少留出4到8小时的评估观察期。训练完成后先做自动化评估,第二天再人工看随机抽样的badcase。情绪上来连夜训练、连夜部署,很容易把模型评估还没看透的版本推上线,后果往往是线上指标波动,又得花两倍时间回滚。

6. 个人经验补充分享

做递归自我改进这几年,我最大的体会是:这个方向的技术难点不在于某个单独的算法,而在于把整个闭环做得既紧又稳。紧,指的是验证器、数据筛选、回归测试这些环节必须严格,不能让低质量数据浑水摸鱼;稳,指的是每一轮改进都不能以牺牲泛化能力或多样性和稳定性为代价。很多论文把递归自我改进描述成一个模型不断自我超越的故事,但工程实践里,它更像是一场对数据供应链、评估体系、工程编排和风险控制的系统考验。

如果你正打算从头搭建一套自改进系统,我的建议是先别急着买一堆机器或找更大的基座模型,把一个最小闭环跑通再说。用几千条数据,一张卡,一个可靠的评估集,先回答几个基本问题:当前模型的修正成功率是多少?修正后的数据做微调后,hold-out指标涨不涨?涨的幅度是否可重复?这三个问题都通过了,再逐步放大范围也不迟。踩过几次坑之后你就会发现,真正让递归自我改进跑起来的,不是模型变得更聪明,而是那个围绕它的工程系统变得足够可靠。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/8 14:51:20

一行npx命令安装技能包:ponytail CLI工具实战解析

先聊个有意思的现象:你在技术社区搜“ponytail”这个词,大概率会先看到一堆和发型无关的东西,甚至可能就是一条命令:npx skill add dietrichgebert/ponytail。我第一次刷到的时候也愣了一下——ponytail不是马尾辫吗?怎…

作者头像 李华
网站建设 2026/9/8 14:49:39

从图片到视频:SEO稿件中的多媒体优化完整指南

做内容这么些年,我最常被问的一句话就是:“页面上的文字我都做了关键词排布,为什么收录和排名还是上不去?” 每次我都会反问一句:“你的页面里除了标题和段落之外,图片有没有写alt?视频有没有带…

作者头像 李华
网站建设 2026/9/8 14:48:52

轻量级数据流编排引擎 ruflo:用 DAG 与背压告别脚本式数据处理

写 ruflo 的念头挺突然的。当时手里有一堆数据清洗的活儿:从接口拉数据、做字段映射、去重、再按业务规则过滤,最后落库。一开始用脚本直接串,一个个函数按顺序调,看着也不复杂。可一旦接入的数据源变多,或者同事也要往…

作者头像 李华
网站建设 2026/9/8 14:45:51

Swift开发工具选型指南:Xcode与VS Code如何取舍?

刚开始接触 Swift 的时候,我最大的困惑不是语法,而是 IDE 怎么选。写习惯了 Java 和 Python 的人,通常会觉得编辑器只是个壳,大不了多装几个插件,照样能写。但 Swift 的开发方式完全不是这回事——它的编译、调试、模拟…

作者头像 李华
网站建设 2026/9/8 14:45:37

MobileNetV4图像分类实战:从PyTorch训练到端侧部署全流程

简介:一份面向图像分类实战的MobileNetV4资源包,专为希望快速上手最新移动端神经网络的开发者与研究者设计,尤其适合算法入门、论文复现与课设拓展。内容围绕MobileNetV4架构展开,涵盖通用倒置瓶颈UIB块、Mobile MQA注意力块、神经…

作者头像 李华
网站建设 2026/9/8 14:44:46

Windows 11电源设置卡死?深入ACPI扩展坞枚举机制与修复

我前阵子正好帮人处理过一台 Windows 11 笔记本,现象很典型:系统能正常用,但只要一点“设置 -> 系统 -> 电源和电池”,页面就立刻卡死,然后过几秒弹“设置未响应”。重装显卡驱动没用,电源管理驱动显…

作者头像 李华