第134章 方法学习
134.1 提出背景
能力决定系统能够完成什么,而方法决定系统如何完成。
在认知系统运行过程中,同一个目标可能存在多个不同的方法。同一种方法在不同对象、不同状态、不同条件下,也可能产生不同结果。因此,系统不能仅仅保存一个固定的方法,还必须能够根据实际执行结果判断方法是否有效,并对方法进行调整、替换和验证。
例如:
目标G → 方法M1 → 结果R1
如果结果满足目标,则方法M1具有一定效果。
如果:
目标G → 方法M1 → 结果R2 → 失败
系统就需要进一步判断:
为什么失败?
是方法本身错误,还是当前条件不适合?
是否可以调整方法?
是否需要换成其他方法?
调整后的方法是否真正有效?
因此,方法学习(Method Learning)是指系统根据方法执行过程中的结果、反馈、经验、知识和条件变化,对已有方法进行效果判断、评价、调整、替换和验证,使方法逐渐适应任务目标和实际条件的过程。
方法学习可以表示为:
方法 → 执行 → 结果 → 反馈 → 方法评价 → 方法调整/替换 → 方法验证 → 新方法
方法学习的核心不是生成一个新的方法名称,而是改变方法的可用性、适用条件、执行参数、步骤结构和可靠性。
134.2 方法定义
方法(Method)是系统针对特定目标、对象和条件所采用的一组有序操作、规则、步骤和参数。
方法可以表示为:
M={G,O,C,S,R,A,P,E}M=\{G,O,C,S,R,A,P,E\}
其中:
- GG:Goal,目标;
- OO:Object,对象;
- CC:Condition,条件;
- SS:State,状态;
- RR:Rule,规则;
- AA:Action,动作;
- PP:Parameter,参数;
- EE:Expected Result,预期结果。
方法的基本结构可以表示为:
目标 → 条件 → 步骤 → 执行 → 结果
例如:
目标:完成对象分类
可以建立:
读取对象 → 获取属性 → 属性比较 → 分类规则匹配 → 输出分类结果
这就是一个完整的方法结构。
方法与能力之间具有明确关系:
Method→CapabilityMethod \rightarrow Capability
能力可以包含一个或者多个方法:
C={M1,M2,…,Mn}C=\{M_1,M_2,\ldots,M_n\}
因此:
能力决定“能够做什么”,方法决定“采用什么方式完成”。
134.3 方法效果
方法效果(Method Effect)是指某种方法实际执行后,对目标产生的实际结果及其与预期结果之间的符合程度。
基本过程:
方法 → 执行 → 实际结果 → 预期结果比较 → 方法效果
设预期结果为 ReR_e,实际结果为 RaR_a,则:
D=Compare(Ra,Re)D=Compare(R_a,R_e)
其中 DD 为实际结果与预期结果之间的差异。
如果:
D=0D=0
则说明结果完全符合预期。
如果:
D>0D>0
则存在一定程度的偏差,需要继续评价。
方法效果可以表示为:
EM=f(Ra,Re,F,C,T)E_M=f(R_a,R_e,F,C,T)
其中:
- RaR_a:实际结果;
- ReR_e:预期结果;
- FF:反馈;
- CC:执行条件;
- TT:执行时间。
134.3.1 方法成功
如果实际结果满足目标:
Goal(Ra)=TRUEGoal(R_a)=TRUE
则:
MethodSuccess=TRUEMethodSuccess=TRUE
方法成功并不意味着方法已经是最优方法。
例如:
方法M1 → 成功
并不能直接推出:
M1 = 最优方法
因为可能存在:
M2 → 更快成功
或者:
M3 → 资源消耗更低
因此需要进一步进行方法评价。
134.3.2 方法失败
如果:
Goal(Ra)=FALSEGoal(R_a)=FALSE
则方法执行失败。
但方法失败仍然需要进行原因分析。
可能是:
方法错误
也可能是:
条件不适合
还可能是:
资源不足
或者:
对象状态发生变化
因此:
MethodFailure≠MethodInvalidMethodFailure \neq MethodInvalid
一次失败不能直接证明方法本身无效。
134.4 方法评价
方法评价(Method Evaluation)是根据方法执行结果、目标符合程度、稳定性、资源消耗、执行时间和适用条件,对方法质量进行计算和判断的过程。
方法评价解决的问题是:
这个方法好不好?
可以定义方法评价函数:
ME=f(S,Q,E,C,R)ME=f(S,Q,E,C,R)
其中:
- SS:Success,成功程度;
- QQ:Quality,结果质量;
- EE:Efficiency,执行效率;
- CC:Coverage,条件覆盖范围;
- RR:Resource,资源消耗。
一个简单的评价模型可以表示为:
ScoreM=wsS+wqQ+weE+wcC+wrRScore_M=w_sS+w_qQ+w_eE+w_cC+w_rR
其中各权重满足:
ws+wq+we+wc+wr=1w_s+w_q+w_e+w_c+w_r=1
方法评价的结果可以分为:
EXCELLENT → 优秀
GOOD → 良好
NORMAL → 一般
WEAK → 较弱
INVALID → 无效
134.4.1 方法成功率
重复执行方法时,可以计算:
SuccessRate=SuccessCountTotalCountSuccessRate=\frac{SuccessCount}{TotalCount}
例如:
总执行次数为10次,成功8次:
SuccessRate=810=80%SuccessRate=\frac{8}{10}=80\%
成功率可以作为方法稳定性的重要依据。
134.4.2 方法稳定性
方法稳定性(Method Stability)表示方法在相似条件下重复执行时,结果是否保持一致。
可以表示为:
Stability=ConsistentResultCountTotalCountStability=\frac{ConsistentResultCount}{TotalCount}
稳定性高的方法更适合作为长期使用的方法。
因此:
成功一次 ≠ 方法稳定
多次成功且结果稳定 → 方法可靠性提高
134.4.3 方法效率
方法效率可以从执行时间和资源消耗进行评价。
例如:
Efficiency=f(Time−1,Resource−1)Efficiency=f(Time^{-1},Resource^{-1})
执行时间越短、资源消耗越低,在其他条件相近的情况下,方法效率越高。
因此方法评价不能只考虑结果,还需要考虑执行成本。
134.5 方法调整
方法调整(Method Adjustment)是指在原方法仍具有一定有效性的情况下,对方法的步骤、参数、条件、规则或者执行顺序进行局部修改。
基本过程:
方法执行 → 效果评价 → 发现偏差 → 调整方法 → 再次执行
可以表示为:
Mnew=Adjust(Mold,R,F,C)M_{new}=Adjust(M_{old},R,F,C)
其中:
- MoldM_{old}:旧方法;
- RR:执行结果;
- FF:反馈;
- CC:当前条件。
方法调整主要包括:
- 参数调整;
- 条件调整;
- 步骤调整;
- 顺序调整;
- 规则调整;
- 阈值调整;
- 资源配置调整。
134.5.1 参数调整
例如:
方法M → 参数P=10
执行结果不理想。
经过经验分析:
P=20
结果改善。
则:
P_old → P_new
形成方法参数更新。
134.5.2 步骤调整
原方法:
A → B → C → D
如果发现B步骤没有必要,可以形成:
A → C → D
如果发现必须增加步骤:
A → B → X → C → D
则方法结构发生调整。
134.5.3 条件调整
某方法原来适用:
C1
经过执行发现,只在:
C2
条件下稳定有效。
则可以修改:
Conditionold→ConditionnewCondition_{old}\rightarrow Condition_{new}
从而缩小或者重新定义方法适用范围。
134.6 方法替换
方法替换(Method Replacement)是指原方法无法通过局部调整恢复到要求水平时,选择其他已有方法代替原方法。
基本过程:
当前方法 → 效果评价 → 不满足要求 → 候选方法 → 方法比较 → 方法替换 → 新方法验证
设当前方法为 M1M_1,候选方法集合为:
M={M1,M2,…,Mn}M=\{M_1,M_2,\ldots,M_n\}
根据当前条件 CC 和目标 GG,选择:
M∗=argmaxMiScore(Mi,G,C)M^*=\arg\max_{M_i}Score(M_i,G,C)
其中 M∗M^* 为当前条件下评价最高的候选方法。
134.6.1 替换条件
方法替换可以在以下情况下发生:
- 方法持续失败;
- 方法效果低于最低标准;
- 方法依赖的知识已经失效;
- 方法适用条件发生变化;
- 方法资源消耗过高;
- 存在明显更好的替代方法;
- 方法结构已经无法通过调整恢复。
可以定义:
ReplaceAllowed=FailureHigh∨EffectLow∨DependencyInvalid∨BetterMethodExistsReplaceAllowed= FailureHigh \lor EffectLow \lor DependencyInvalid \lor BetterMethodExists
134.6.2 方法选择
替换方法不能随机选择。
候选方法需要进行:
对象匹配 → 条件匹配 → 目标匹配 → 经验匹配 → 效果比较 → 排序
最终:
候选方法 → 方法评价 → 方法排序 → 最优候选方法
134.7 方法验证
方法验证(Method Verification)是指对新建立、调整或者替换后的方法进行实际执行测试,并确认该方法是否真正达到预期目标。
验证过程:
新方法 → 测试条件 → 方法执行 → 实际结果 → 预期结果比较 → 验证结果
可以定义:
MV=Verify(M,C,G,R)MV=Verify(M,C,G,R)
其中:
- MM:方法;
- CC:条件;
- GG:目标;
- RR:实际结果。
方法验证结果可以分为:
VERIFIED → 已验证
PARTIAL → 部分验证
FAILED → 验证失败
UNKNOWN → 无法确定
134.7.1 结构验证
首先验证方法结构是否完整:
方法 → 步骤 → 顺序 → 参数 → 条件 → 规则
如果方法结构缺少必要步骤,则不能进入执行。
134.7.2 执行验证
方法能够实际执行:
Executable(M)=TRUEExecutable(M)=TRUE
但:
能够执行 ≠ 执行有效
因此还必须继续进行结果验证。
134.7.3 结果验证
最终检查:
ActualResult≈ExpectedResultActualResult \approx ExpectedResult
如果结果达到要求:
ResultValid=TRUEResultValid=TRUE
则方法验证成功。
完整条件为:
MethodValid=StructureValid∧Executable∧ResultValidMethodValid= StructureValid \land Executable \land ResultValid
134.8 方法学习统一模型
五个核心机制可以统一为:
ML=LearnMethod(M,R,F,C,E)ML=LearnMethod(M,R,F,C,E)
其中:
- MM:已有方法;
- RR:执行结果;
- FF:反馈;
- CC:执行条件;
- EE:经验。
统一过程:
方法 → 执行 → 结果 → 反馈 → 方法评价 → 调整判断 → 调整/替换 → 方法验证 → 新方法
如果效果良好:
方法 → 保持
如果效果下降:
方法 → 调整
如果调整仍不能满足要求:
方法 → 替换
如果新方法验证成功:
新方法 → 激活
如果验证失败:
新方法 → 返回评价
因此方法学习是一个循环过程,而不是一次性的修改过程。
134.9 方法学习与能力学习
第133章讨论的是能力变化,第134章进一步讨论能力内部的方法变化。
二者关系可以表示为:
方法形成 → 能力形成
方法增强 → 能力增强
方法下降 → 能力下降
方法失效 → 能力失效
方法恢复 → 能力恢复
因此:
Capability=f(Method,Knowledge,Rule,Condition)Capability=f(Method,Knowledge,Rule,Condition)
当方法发生变化时,能力质量也可能随之变化。
例如:
能力A
包含:
M1、M2
如果:
M1失效
但:
M2仍然有效
则能力A不一定完全失效,只是能力的可用方法集合发生变化:
M={M1,M2}→M={M2}M=\{M_1,M_2\} \rightarrow M=\{M_2\}
如果系统找到:
M3
则:
M={M2,M3}M=\{M_2,M_3\}
能力又得到恢复或者增强。
134.10 方法学习与经验
经验是方法学习的重要依据。
经验可以记录:
条件 → 方法 → 结果 → 反馈
例如:
条件C1 → M1 → 成功
条件C2 → M1 → 失败
系统可以发现:
Applicable(M1,C1)=TRUEApplicable(M1,C1)=TRUE
而:
Applicable(M1,C2)=FALSEApplicable(M1,C2)=FALSE
因此经验不仅可以评价方法效果,还可以重新确定方法的适用条件。
形成:
执行记录 → 经验 → 方法评价 → 条件调整
这使方法学习具有历史依据。
134.11 方法学习与知识更新
方法本身也是知识结构的一部分。
因此方法发生变化时,可能产生知识更新:
旧方法 → 方法评价 → 新方法 → 知识更新
例如:
对象A → 方法M1
经过多次验证发现:
M1效果下降
系统替换为:
对象A → 方法M2
则知识结构中的方法关系需要更新:
A → M1
变为:
A → M2
因此:
MethodLearning→KnowledgeUpdateMethodLearning\rightarrow KnowledgeUpdate
但二者职责不同:
方法学习改变方法结构。
知识更新维护知识结构。
134.12 方法学习工程对象
可以建立 Method 对象:
Method
├── methodId
├── methodName
├── targetObject
├── goal
├── conditions
├── steps
├── rules
├── parameters
├── expectedResult
├── status
├── score
├── successRate
├── stability
├── efficiency
├── usageCount
├── failureCount
├── version
├── createdAt
└── updatedAt
建立 MethodLearning 对象:
MethodLearning
├── learningId
├── methodId
├── learningType
├── experienceId
├── knowledgeId
├── oldMethod
├── newMethod
├── result
├── feedback
├── evaluation
├── verification
├── status
└── createdAt
其中:
learningType 可以包括:
EVALUATE
ADJUST
REPLACE
VERIFY
134.13 PHP OOP工程映射
在WSaiOS/ICAI中,可以将方法学习设计为独立的PHP OOP模块。
核心类包括:
MethodManager
MethodRepository
MethodExecutor
MethodEvaluator
MethodComparator
MethodAdjuster
MethodSelector
MethodReplacer
MethodVerifier
MethodLearning
MethodRecord
其中:
MethodExecutor 负责执行方法。
MethodEvaluator 负责评价方法效果。
MethodComparator 负责比较多个候选方法。
MethodAdjuster 负责局部调整方法。
MethodSelector 负责选择候选方法。
MethodReplacer 负责方法替换。
MethodVerifier 负责验证调整或者替换后的方法。
MethodLearning 负责统一管理方法学习过程。
整体过程:
Method → Execute → Result → Evaluate → Adjust/Replace → Verify → Method
134.14 方法学习状态模型
方法学习可以建立状态:
IDLE → EXECUTING → RESULT_RECEIVED → EVALUATING → ADJUSTING → VERIFYING → ACTIVE
如果方法效果不足:
EVALUATING → REPLACING
如果调整失败:
ADJUSTING → FAILED → REPLACING
如果替换失败:
REPLACING → FAILED → REDIAGNOSIS
验证成功:
VERIFYING → ACTIVE
验证失败:
VERIFYING → EVALUATING
由此形成:
执行 → 评价 → 调整/替换 → 验证 → 再执行
134.15 方法学习规则
方法评价规则:
IF MethodExecuted = TRUE
THEN EvaluateMethod
方法调整规则:
IF MethodEffect < Threshold
AND MethodAdjustable = TRUE
THEN AdjustMethod
方法替换规则:
IF MethodEffect < Threshold
AND MethodAdjustable = FALSE
THEN ReplaceMethod
方法验证规则:
IF MethodChanged = TRUE
THEN VerifyMethod
方法激活规则:
IF MethodVerified = TRUE
THEN SetMethodActive
验证失败规则:
IF MethodVerified = FALSE
THEN ReturnToEvaluation
这些规则使方法学习成为明确的离散机器逻辑。
134.16 方法学习记录
每次方法执行和学习都应保存记录:
MR={M,C,A,R,F,E,V,T}MR=\{M,C,A,R,F,E,V,T\}
其中:
- MM:方法;
- CC:条件;
- AA:动作;
- RR:结果;
- FF:反馈;
- EE:评价;
- VV:验证;
- TT:时间。
方法历史可以形成:
方法 → 执行记录 → 结果记录 → 反馈记录 → 方法评价 → 方法变化记录
因此系统可以追踪:
方法为什么被调整?
什么时候被调整?
调整之后是否有效?
为什么最终被替换?
134.17 方法学习闭环
方法学习形成完整闭环:
目标 → 方法 → 条件 → 执行 → 结果 → 反馈 → 方法评价 → 方法调整/替换 → 方法验证 → 新方法 → 再次执行
进一步与前面的能力学习连接:
经验 → 方法学习 → 方法变化 → 能力变化
再与知识更新连接:
方法变化 → 知识关系更新 → 能力更新 → 认知更新
整个过程形成:
行为 → 结果 → 反馈 → 记忆 → 经验 → 学习 → 方法学习 → 能力学习 → 知识更新 → 认知 → 决策 → 行为
134.18 本章总结
方法学习解决的是系统如何不断改善“做事方式”的问题。
方法效果回答:
这个方法执行以后产生了什么结果?
方法评价回答:
这个方法的质量怎么样?
方法调整回答:
原方法还能不能通过局部修改继续使用?
方法替换回答:
原方法已经不适合时应该换成什么方法?
方法验证回答:
调整或者替换后的方法是否真正有效?
完整模型为:
Methodt→Execute→Result→Feedback→Evaluate→Adjust/Replace→Verify→Methodt+1Method_{t} \rightarrow Execute \rightarrow Result \rightarrow Feedback \rightarrow Evaluate \rightarrow Adjust/Replace \rightarrow Verify \rightarrow Method_{t+1}
因此,方法学习不是简单地增加方法数量,而是建立一个持续的:
执行 → 比较 → 评价 → 调整 → 替换 → 验证
机器过程。
在WSaiOS/ICAI中,能力不是固定的,方法也不是固定的。
最终形成:
知识 → 方法 → 能力 → 执行 → 结果 → 反馈 → 经验 → 方法学习 → 能力变化
由此,系统不仅能够学习“知道什么”,还能够学习“采用什么方式完成任务”,使方法结构随着实际结果持续变化,并最终推动整个能力结构的持续演化。