王德生、张琼 著 · 第398卷 · 修订版v3.0

← 第二十章 拆封、失效与再生第二十二章 判断粒度怎样改变 →

第二十一章 层级、粒度与频率

一、三个问题为什么不能只用一个“细”字

讨论判断时,我们常说某人看得不够细,或者某个系统检查得更细。但这里可能混有三种不同要求:把任务内部的结构展开,把同一对象分辨得更精确,以及更频繁地检查当前状态。三者都重要,却不能互相代替。

层级说明任务之间怎样承接。例如,一项局部推导进入一个引理,引理进入证明,证明进入研究计划。粒度说明当前判断保留哪些差异,例如只看引理结论,还是连同前提、依赖及具体推导一起展开。频率则说明检查在时间或事件序列中发生多少次。层级、粒度和频率可以相关,但没有简单的一一对应。

一个高层任务可以需要非常细的区别。原命题中的“任意”与“存在”只差一个量词,检查它却可能决定整个研究是否完成。一个低层任务也可以整体调用成熟模块,不必时时展开。频繁查看进度则可能始终只看到同一个粗粒度的百分比,完全没有检查决定结论的条件。

本章建立这些区别,是为了让灵活判断有具体对象。若概念不清,增加频率会被误当成增加深度,要求领导参与会被误当成提高层级,增加输出长度又会被误当成提高分辨率。实际判断可能没有改变,负担却不断增加。

二、层级首先是任务关系,不是人的等级

本书所说上层与下层,不是把人按地位、聪明程度或价值高低排列。上层任务调用下层能力,下层结果参与上层判断,这是一种功能关系。某个下层计算可以非常复杂,某个上层选择可以很简单;它们在任务中的位置不能被误读为智力排名。

以乘车思想实验说明,乘客判断是否到达目的地,属于出行任务层;运行系统内部的检测与控制属于承接这段出行的另一层。乘客不因此比工程系统更会判断所有事情,工程判断也不因为在下层就较少价值。不同任务需要不同依据,层级只是帮助说明它们如何连接。

数学研究同样如此。一个形式检查器可以承担细致而严格的推导核验,研究者选择下一项问题时也可以借助AI与文献系统。不能由此固定“人永远最高、机器永远最低”。某一次工作安排可以由人主导上层任务,判断的本体构成却不应被该安排永久锁定。

此外,任务关系未必是一棵没有回路的树。一个引理的失败会返回修改证明目标,一个新证明又会改变研究计划,计划调整再改变需要哪些引理。为了管理可以画出层级,为了发生分析则必须保留反馈与跨层重组,不能让图上的箭头方向取代实际互动。

三、粒度是选择保留哪些差异

粗粒度判断并不是把细节全部忘记,而是在当前任务中把某些不同状态作为同一种情况处理。研究者调用一个已经证明的引理时,不必区分它内部每一项表达变化,只要这些变化不影响当前结论、条件与使用依据。粒度选择因此始终相对于任务。

可以用集合语言把这一点说清。设X是一组可能的详细状态,α把每个详细状态映射为一个较粗的表示z。所有被映射到同一个z的状态,在这层表示中暂时不作区分。它们内部可以有很多差异,问题是当前判断是否需要这些差异。

这个抽象模型不意味着现实中的X能够被全部列举,也不意味着E就是一个状态清单。它只是把“哪些差异被折叠”变成可以分析的关系。具体应用仍需说明详细状态包含什么、粗表示保存什么,以及实际条件如何改变这些差异的作用。

粒度的好坏不能脱离这个关系判断。为了决定一本书是否包含四十章,只需适当读取章节结构;为了判断第二十九章的证明是否成立,则需要不同表示。把全部正文展示出来可能信息很多,却未必比一个准确结构记录更适合第一个任务。

四、何时可以在粗表示上作出同样判断

设当前任务的判断由函数r表示,它把详细状态x映射为某个判断结果。我们希望只根据粗表示α(x)作判断,即存在一个粗层判断函数r粗,使r(x)=r粗(α(x))。这在什么条件下可能?答案是:被α归为同一粗表示的任意两个状态,必须具有相同的r结果。

必要性很直接。如果α(x一)=α(x二),而判断完全依据这一粗表示,那么r粗接收到相同输入只能给出相同输出,于是r(x一)必须等于r(x二)。若两者不同,任何只看粗表示的确定判断都会在其中至少一种状态上出错。

充分性也直接。若同一粗表示下的所有详细状态具有相同判断结果,就把r粗(z)定义成其中任一状态的r值。由于结果一致,这个定义不依赖所选状态,从而得到所需关系。对没有实际对应状态的表示,不必赋予当前任务中的含义,或者另行规定不适用状态。

这是一条基本的集合论分解事实,本书不将其宣称为原创数学定理。它的用途,是明确粗粒度判断的一个逻辑条件:可以折叠内部实现,但不能把会改变当前判断的区别一并折叠。可靠封装应当保存足够的任务相关信息,或者在不足时要求展开。

现实任务的r有时尚未完全知道,因此不能直接用该条件给所有封装开合格证。它更适合作为设计与反例寻找的原则:尝试找到两个看起来相同、却应当得到不同判断的状态。一旦找到,就说明当前粗表示不足,需要增加条件或改变返回方式。

五、两个很小的例子

若任务是判断一个十进制整数是否为偶数,保留个位数字就足以区分相关情况,因为整数可以写成十倍的另一整数加个位数,前一项为偶数,奇偶性由后一项决定。这里可以给出明确推理,支持在较粗表示上完成判断,不必读取全部数字。

但若任务是判断正整数是否为素数,只保留个位数字就不够。十三与三十三都以三结尾,前者没有二或三这样的不超过其平方根的整数因子,因而为素数;后者等于三乘十一,是合数。同一粗表示对应不同判断,必须进一步展开。不是个位数字没有用,而是它不足以承担这项任务的全部判断。

在证明模块中,也可以构造类似差别。两个输出都写“通过”,一个表示形式语法通过,另一个表示完整证明已经核验。若上层界面把它们视为同一种状态,便无法仅凭该表示决定原命题是否获得支持。需要增加的是完成范围和证据身份,而不一定是展示所有底层代码。

这些例子说明,细粒度并不总意味着更多文字。一个额外状态位、一项前提说明或一个单位标记,可能比几千行日志更能保存当前判断所需的差异。适当粒度是任务相关性问题,不是信息数量竞赛。

六、三种合法反应:整体判断、局部展开、暂不裁决

粗表示不足时,不必立刻展示全部细节。可以先增加最能区分候选状态的信息。例如,证明模块先显示是否存在未完成依赖;若有,再展开相关子证明;其他已经独立获得支撑的部分仍可保持封装。这样的定向展开,比全量重做更接近灵活判断。

另一种反应是暂缓裁决。当前信息不能支持“成立”或“不成立”,可以明确返回“证据不足,需进一步检查”。这不是把真假变成第三种真值,而是对当前知识状态作出区分。命题可能有确定真值,系统却未必已经掌握足够依据。

第三种反应是改变任务。在某些情境中,当前只需要判断是否值得继续探索,而非最终证明是否完成。较粗信息可能足够支持前者,却不足以支持后者。任务变化必须公开,不能把适合探索的依据偷换成适合最终验收的依据。

由此,粒度机制可以同时保护探索与完成标准。它允许在有限依据下开始研究,也要求在宣称完成时满足相应证据。灵活的是展开程度与任务安排,不是把未证明结论按场合随意算成已证明。

七、频率回答的是何时再看,不是看到了什么

设想乘客每分钟看一次窗外,始终问列车是否正常。这是高频检查,但其信息粒度可能很粗。某项运行系统对相关变量进行更细致监测,则承担不同的判断工作。不能把乘客的担忧次数加总成工程检测能力,也不能因乘客没有频繁查看就推断系统缺乏判断。

在文稿审校中,反复打开同一份进度报告,也可能只增加频率而不增加依据。若报告没有保存关键依赖,刷新再多次仍看不到条件遗漏。改变粒度需要取得不同信息,改变频率则需要说明哪些状态可能在两次检查之间发生有意义变化。

检查频率可以按事件组织,而不只按钟表时间。修改了定义、加入了新数据、更换了模型版本或收到反例,都可以触发相关复检。没有变化时,不必重复执行全部高成本检查;存在变化却没有触发,定时检查也可能来得过晚。具体安排要根据任务的变化机制决定。

频率同样有成本。过密检查可能切断探索的连续性,使使用者疲于回应不重要变化;过疏检查则可能让关键错误传播。判断需要比较这些代价,不能以最多或最少作为统一目标。第五编所谓灵活,正包括让频率随相关条件变化。

八、频率替代:担忧不是判断粒度

导论里有一句话一直没有被展开:高频担忧与细粒度专业判断不是一回事。本节给这件事一个名字。高频的担忧不是细粒度的判断,而是尚未封装的频率——我们称之为频率替代。

操作定义:在一段时间内,某人对同一对象的检查次数上升,而他每次检查能够区分的状态数没有增加——每次得到的仍是同一组粗区分,例如“还好”和“不对劲”——这样的检查就是频率替代:用检查次数去填补表示单位没有组织好的空缺。判据可以写成两列:检查次数,可区分状态数。前一列上升而后一列不动,是频率替代;两列一起上升,才是粒度在变细。

第一个案例:新手父母。婴儿睡着了,新手父母夜里每十分钟去看一次。每次看到的是什么?在呼吸,脸色正常,没有被被子盖住。第一次看和第十次看,能分辨的是同样几种状态。检查次数多了几倍,能分辨的状态没有多一种。设想一位有经验的儿科护士,她可能只在固定时间看一次(这是说明性的设想,不是观察记录),但她看的时候分得出呼吸节律、肤色、体温的几种不同状态,并知道哪一种需要叫醒、哪一种可以接着睡。前者是频率替代,后者是粒度。家长的问题不在于不够关心,而在于“孩子在睡觉”这一段还没有被组织成一个可以暂时放下的单位:不知道哪些信号出现时必须去看,只好靠时钟去看。一旦父母掌握了几条明确的触发信号——呼吸声变了、监护器报警、某种特定的哭声——检查就从按钟表转为按事件,次数下降,能区分的状态反而增加。

第二个案例:第一次用导航开车的人,每个路口都要看一眼手机。看的内容只有一个:“还在路线上吗?”答案只有是或否。熟悉导航的人只在语音提示前后看一眼,但看时能区分“该变道了”“下一个路口才转”“前方拥堵已改道”等几种状态。前者看得多,后者分得细。还要注意,频率替代有代价:新手每个路口低头看手机,看路的时间被挤掉,真正需要细看的路况反而分辨得更粗。高频检查不只是多花力气,还可能挤占细粒度判断需要的注意。

导论中王德生使用 GPT 的自述,可以用同一组判据重新读。2023 年他几乎每次都查看输出,这时的检查可能有相当一部分是频率替代:每次看的是“这次有没有离谱”,能区分的状态不多。后来他不再逐句阅读,若同时形成了几条明确的触发信号——例如涉及具体数字、引文、专有名词时才展开细看——那么检查次数下降,而能区分的状态反而增加了:他分得出“这类内容可以整体接受”和“这类内容必须展开”。这只是用本节的判据重新描述一段自述,不证明这一转变确实如此发生;要确认它,需要记录每次查看时实际区分了什么。

重组表示单位在实践中意味着三步。第一,把原来连续的一段过程,切成有明确出口的段落:婴儿的一夜、一段车程、一次 AI 对话。第二,为每一段写出少数几条触发信号,出现时必须展开,不出现时可以放下。第三,在信号出现时,展开的不是“再看一眼”,而是一组更细的区分。这三步做完,检查就从时钟驱动变成事件驱动,这与本章第七节所说“检查频率可以按事件组织”是同一件事从使用者一侧看。

与最近邻的分离线在这里很清楚。信任校准理论 [R19] 会把这两个案例里的高频检查解释为信任不足:使用者对系统的信任低于系统的实际能力,开出的药是提供更多可靠性证据——让家长了解婴儿睡眠中真实的风险水平,让新手看到导航一路都没出错。本书的诊断是:频繁检查说明表示没有被组织成可暂时放下的单位,开出的药是重组表示单位——给出触发信号,把“一段路”划分成几个有明确出口的段落。要承认重合处:Lee 与 See 也讨论信任的“分辨率”与“具体性”,即信任能否随具体情境区分,这与本书的粒度说法相当接近。本书的增量只在于把问题放在表示单位上,而不是放在信任这个态度变量上。

两种药什么时候效果不同?只给可靠性证据、不重组单位:家长知道统计上风险很低,却仍不知道今晚哪些信号该起身,结果要么检查次数下降不明显,要么下降了却连真正的异常也错过——这恰好是信任校准理论自己所担心的过度信任。只重组单位、不给可靠性证据:导航新手学会了“听到提示再看”,即使对软件仍半信半疑,预期检查次数也会下降,且不增加漏看,这是待检验的预测,不是已有结果。由此得到一个可以检验的分歧:在信任水平(自评或行为测量)保持不变的条件下,重组表示单位能否降低检查频率而不增加漏检?若能,频率替代就不能被还原为信任不足。

可裁决预测:若在某类任务中,检查频率上升总是伴随可区分状态数上升,即频率与粒度在该类任务中不可分,那么本区分在该类任务中不成立,应当收回“频率替代”的说法,承认那里的高频检查就是在变细。应当观察的是:对每次检查,记录检查者能够报告的状态类别——可以事先给一张状态清单让其勾选,也可以事后编码其描述——再比较不同检查频率下状态类别数的分布。

这个判据也可以用在机器一侧。一个监控系统把采样频率从每分钟一次提高到每秒一次,若每次采样只报告“正常”或“异常”两种状态,它增加的是频率;若同时开始区分几种不同的异常,它增加的才是粒度。在评价一项“加强监控”的方案时,先问它增加的是哪一列,能省去不少争论。

还要说明,频率替代不是可以嘲笑的毛病。在表示单位尚未组织好的阶段,高频检查可能是唯一可行的保护。问题只在于不把它当作判断能力,也不把增加检查次数当作改进粒度的方案。

九、层级与粒度可以交叉

在高层研究目标中,一个很细的措辞变化可能决定任务性质;在低层计算中,一个完整算法可以作为整体调用。这说明层级与粒度不是同一条轴。设计判断机制时,需要分别记录当前处理哪个任务层、展开哪些差异,而不是把“上层”直接翻译成“只看大概”。

例如,研究负责人可以在总体方案阶段精确检查原命题的量词,但不展开每个局部代数步骤;一个专业验证模块可以在推导层整体接受已经核验的算术结果,却细查某项类型转换。不同角色在不同轴上的位置,可以随问题改变。

这种交叉使“每个人都应具备同样细致判断”失去必要性。更合适的是形成互相衔接的判断网络,让关键差异在适当位置显露。个人可以对自己的任务承担明确责任,同时借助其他机制处理超出其范围的细节。

但分布不能成为无人负责的借口。若一个差异决定上层结论,却没有任何下层模块保留它,上层粗判断就没有充分依据。连接检查需要追踪这种遗漏,并把它送回可以补位的环节。层级组织只有实际承接,才不是图纸上的分工。

十、粗粒度判断怎样保持可解释

整体调用以后,使用者常常不能复述全部内部理由。这不必取消其判断依据,但需要能够说明当前调用建立在什么上:适用范围、检验方式、完成状态以及异常处理。解释可以是分层的,简明说明与详细依据之间应有可行连接。

因此,可解释性不一定要求每个用户都阅读完整内部过程。一份可靠的封装说明,可以让他理解为什么当前任务适合调用,何时应停止,以及需要更多证据时能去哪里。若详细材料存在却无法找到,或者找到以后与当前版本不一致,解释链仍然断裂。

反过来,系统生成一篇很长的理由文本,也不保证解释已经获得支撑。理由可能只是在事后组织得合理,需要与实际记录和验证结果对照。解释的价值是帮助判断,而不是以语言顺畅替代判断。这个区分对生成式系统尤其重要,但并非只适用于AI。

本书主张在粗层保存的是有条件的可依赖关系,而不是对内部无所不知的幻觉。粗粒度判断可以有充分依据,同时承认自己没有展开全部细节;这种诚实比把有限检查说成全知更适合复合能力。

十一、怎样研究一次粒度迁移是否成功

一次迁移可以从逐项检查转向模块调用,也可以从整体判断转向局部展开。成功与否应当同时观察判断质量、资源使用和新能力。只减少检查时间,不能证明迁移成功;只提高错误发现而耗尽全部任务能力,也需要进一步比较其适用范围。

研究可以选择同一类任务,保持工具与目标尽量一致,比较不同粒度安排。需要记录哪些差异被省略、哪些仍然保留、异常如何触发,以及最终结果是否符合任务要求。若粗层遗漏了本来决定结果的差异,就应修改表示或限制调用,而不是责怪使用者没有猜到内部情况。

对于学习任务,还要增加迁移检查:参与者能否识别新任务超出旧封装,能否调用适当复核,是否能够解释关键条件。完成成品、个人理解与复合能力可以同时改善,也可能不同步。研究应分别报告,不把一个指标替代全部判断。

这项设计目前是本书的研究方案,不是已经取得的实验成果。它的意义在于使“判断升维”获得可检验内容:原来无法组织的关系是否开始可处理,而不是仅凭一种更宏大的任务名称宣布能力提高。

十二、从三个维度建立灵活机制

层级决定当前任务在哪里,粒度决定当前区分什么,频率决定何时重新检查。三者共同参与判断组织,却不能由任何一个单独代表全部能力。高频不等于细致,高层不等于高级,粗粒度也不等于粗糙。每一种安排都需要在具体SDE运行中接受价值评估。

本章的简单分解命题给出一个清楚底线:如果被折叠的差异会改变当前判断,系统必须保留足够信息,或者在不足时重新展开。它没有替现实任务完成全部建模,却使封装的判断义务不再只是“相信内部已经处理好了”。

层级说明任务之间怎样承接,粒度说明当前保留哪些差异,频率说明检查何时及多少次发生。把三者分开,才能避免用高频担忧代替专业分辨,也避免用整体满意代替内部依据。对一个封装而言,最基本的义务是:被折叠的差异若可能改变当前判断,就应有保留它、发现它或重新展开它的路径。动态判断从这里才有了明确对象。

← 第二十章 拆封、失效与再生第二十二章 判断粒度怎样改变 →