本节摘要:学习让智能体从经验中提升,进化让智能体在种群层面优化结构——这是智能体「越用越强」的两条通道。本节先讲监督学习、无监督学习、强化学习三条学习路径的原理与应用,再用遗传算法(选择-交叉-变异)演示进化机制,最后讨论神经进化、进化强化学习等学习与进化的结合方向。
阅读完本节,你应当能够:
第 2.3 节的智能体会做决策了,但它的决策能力是「出厂设置」——要么靠人写规则,要么靠人设计效用函数。真实世界的智能体需要自己变强:下棋输了一盘,下次知道别这么走;机器人抓了几次杯子摔了几次,慢慢学会用力大小。这就是学习。而如果把这套「适应」放到种群层面——不是单个智能体变强,而是一代一代的「智能体方案」被优胜劣汰——这就是进化。
SOUCE 原文把两者的定位讲得很清楚:学习侧重于在个体生命周期内的经验积累和策略优化,进化侧重于在种群层面上的长期优化和结构演变。 一个智能体活一辈子能学会很多;但要换掉「骨架」(神经网络该有几层、决策该用什么结构),单靠学习改不动,得靠进化在代际间搜索。前者是「开卷考试里越做越熟」,后者是「重新出题、选更好的考生」。
监督学习基于标注数据——给一组「输入-输出」对,学一个映射函数。分类(图像识别、情感分析)和回归(房价预测)是两大任务。代表算法有线性回归、逻辑回归、SVM、决策树、随机森林、神经网络。
SOUCE 用 sklearn 的线性回归演示了标准流程:train_test_split 划分训练测试集 → LinearRegression() 建模型 → model.fit(X_train, y_train) 训练 → mean_squared_error 评估 → 对新数据预测。这个「准备数据→划分→训练→评估→预测」的五步流程,是监督学习在智能体里落地的通用骨架。智能体里监督学习的典型用途:训练感知模块(图像分类器、语音识别器)、学习用户偏好模型。缺点是依赖人工标注——标注成本高,且数据分布变了模型就失效。
这里有两个工程细节容易被忽略。第一,数据划分的比例和随机种子:SOUCE 里 test_size=0.2, random_state=42,前者保证「两成数据做考试」,后者保证「每次考同一套卷」——random_state 固定下来,实验结果才可复现,这是团队协作的底线。第二,评估指标的选择:回归任务 SOUCE 用 MSE(均方误差),但 MSE 对大误差敏感(平方放大),如果你的业务更在意「差一点点没关系、差很多要命」,MSE 合适;如果所有误差一视同仁,MAE 更公平。评估指标选错,模型「好坏」的判断就失真了——第 4.3 节性能评估会系统展开这层。
无监督学习只用输入数据,自己发现结构。两大任务:聚类(把相似样本分组)和降维(压缩数据维度)。代表算法 K-均值、层次聚类、PCA、自编码器。
SOUCE 的 K-均值示例值得拆解:make_blobs(n_samples=300, centers=4) 生成 4 簇数据 → KMeans(n_clusters=4) 聚类 → silhouette_score 算轮廓系数评估聚类质量(越接近 1 越好)→ 可视化。工程要点:K 值(簇数)是超参数,SOUCE 提醒「调整 K 值以优化结果」——选 K 没有标准答案,常用肘部法则或轮廓系数辅助判断。智能体里无监督学习常用于:用户画像、异常检测、数据可视化前的降维。它的价值在于不需要标注,能从海量原始数据里自动提取结构。
强化学习通过与环境交互学习最优策略,核心是奖励信号。第 2.3 节已经讲过 Q-Learning 的原理,这里从「学习」视角再看一遍它的机制:智能体在状态 s 选动作 a,环境回奖励 r 和下一状态 s',Q 表按 Q(s,a) ← Q(s,a) + α·[r + γ·max Q(s',a') − Q(s,a)] 更新。注意两点:一是时序差分思想——用「当前奖励 + 未来最优 Q 的折扣」作为目标值,把长期收益一步步从终点往回「传播」;二是epsilon-greedy——以 ε 概率探索随机动作,以 1−ε 概率利用已知最优,平衡「多试」和「用熟」。
SOUCE 的伪代码给出了 Q-Learning 的训练骨架:
初始化 Q 表 for 每个 episode: 初始化状态 s while s 不是终止状态: a = epsilon-greedy 选动作 s', r = environment.step(a) Q(s,a) += alpha * (r + gamma * max Q(s',a') - Q(s,a)) s = s'
强化学习的魅力在于不需要标注数据——奖励信号就是「免费的老师」。代价是样本效率低、训练慢,在真实环境里试错有成本(机器人摔坏了、交易亏钱了),所以实践中常用仿真环境预训练(第 1.2 节讲过)。
进化算法模拟自然选择,核心是「优胜劣汰」。五大要素:种群(一组候选解,每个叫个体)、适应度函数(评价个体好坏)、选择(按适应度挑优秀个体繁殖)、交叉(交换父代基因产生后代)、变异(随机修改基因引入新变化)。
SOUCE 用遗传算法做字符串匹配演示,非常直观:目标是拼出 "HELLO WORLD",每个个体是一串随机字符。适应度 = 匹配上的字符数;选择用轮盘赌(适应度高的个体被选概率大);交叉用单点交叉(随机选个位置,交换两父代前后段);变异以 1% 概率随机替换字符。核心循环:
for generation in range(generations): fitness = [calc_fitness(ind) for ind in population] selected = selection(population, fitness) # 轮盘赌选择 next_pop = [] for i in range(0, len(selected), 2): c1, c2 = crossover(selected[i], selected[i+1]) # 单点交叉 next_pop += [mutation(c1), mutation(c2)] # 变异 population = next_pop
几代之后,种群里的字符串会「进化」得越来越像目标串。这个例子揭示了进化的三个特性:并行搜索(整个种群同时探索解空间)、无需梯度(只要能给个体打分就能进化,不需要可微)、能优化结构(个体可以是架构、规则集,不只是数值参数)。这三点正是进化在神经网络架构搜索(NAS)、超参数优化里的用武之地。
| 维度 | 监督学习 | 无监督学习 | 强化学习 |
|---|---|---|---|
| 数据 | 标注数据 | 无标注数据 | 交互奖励 |
| 目标 | 学输入输出映射 | 发现数据结构 | 学最优决策策略 |
| 智能体用途 | 感知、偏好建模 | 画像、异常检测 | 决策、控制 |
| 典型算法 | 线性回归、SVM | K-均值、PCA | Q-Learning、DQN |
| 主要成本 | 标注 | 调参 | 样本/训练时长 |
⚠️ 常见坑:把监督学习当成智能体学习的全部。很多任务(决策、控制、导航)根本没有「标准答案」可标——最优动作本身未知,只能靠强化学习从奖励里学。先判断任务性质:有标准答案用监督,没标准答案要探索用强化,只是找结构用无监督。
💡 关键直觉:三类学习对应三种「老师」——监督学习的老师是标注,无监督学习的老师是数据内在结构,强化学习的老师是奖励信号。选方法前先想清楚「这个任务的老师是谁」。
SOUCE 列出了三个结合方向:
结合的价值在于优势互补:学习擅长在给定结构下精调(个体层面),进化擅长在结构空间里搜索(种群层面)。一个常见流水线是「进化选结构 + 学习调参数」——先用进化找到好架构,再用梯度下降把参数训到位。
说个 SOURCE 里没直说但值得点透的实践判断:进化的评估成本是它最大的拦路虎。遗传算法里每个个体都要跑一次完整评估——在字符串匹配这种廉价任务上无所谓,但放到深度学习里,评估一个「网络结构个体」就得训练一次完整模型,代价极高。所以工程上进化用得最顺手的场景,恰恰是评估便宜的地方:超参数组合、轻量规则集、奖励函数设计。遇到「评估一次就要训一整天模型」的任务,先想清楚进化要跑多少代、每代多少人——预算算不过来,就是方向错了。这也呼应了前面的时间尺度标尺:进化只配得上「评估便宜且环境稳定」的任务。
这是工程上最容易忽略的一点。学习的更新是「每步或每 episode」的在线过程,适合响应环境渐变;进化是「代际」的离线过程,一代动辄评估几十上百个个体,只适合环境变化慢、评估成本可控的场景。如果一个任务的环境每天都在变,进化还没评估完一轮,环境已经面目全非——这时用学习(尤其是持续学习、元学习,见第 6 章)更合适。反过来,如果任务的环境基本稳定、但需要搜出好的结构配置,进化是利器。时间尺度匹配,是学习与进化选型的隐藏标尺。
还有一个容易被误解的点:进化 ≠ 强化学习。两者都「靠试错」,但机制不同。强化学习学的是「策略」(一个状态到动作的映射),个体在生命周期内靠奖励信号逐步调整;进化改的是「基因组」(编码方案),靠种群代际间的选择压整体变迁。也可以说,强化学习是对单个策略的「精调」,进化是对解空间的「广搜」。实践中两者能结合——比如用进化搜索神经网络的权重初始化,再用强化学习微调——但先分清机制,才能谈结合。SOUCE 的表述很到位:「学习是经验积累,进化是结构演变」,一个是纵向(时间上的个体成长),一个是横向(群体中的代际更替)。
学会变强了,下一节看智能体怎么真正「动手」——行动与执行。