2 强化学习导论之强化学习与监督学习的区别
系列进度
强化学习入门 · 第 2 / 28 篇
整理说明
这篇内容怎么整理
郭震 · 2026-06-04
阅读路线
先按这条路线读
先抓住主线,再回到代码、配置和图文细节,读起来会更稳。
强化学习的核心是智能体在环境中试错,学习时要同时看状态、动作、奖励和策略更新。阅读时可以按「强化学习与监督学习的基本定义 -> 主要区别 -> 学习目标 -> 数据类型」建立结构,再回到正文里的代码、案例或指标做验证。
读完后,用一个真实小任务复查:输入是什么,处理环节在哪里,输出是否可验收;失败时先查「强化学习与监督学习的基本定义」,再查「主要区别」。
在上篇中,我们介绍了强化学习的基本概念和历史背景。在这一篇中,我们将深入探讨强化学习与监督学习之间的区别,以帮助读者更好地理解这两种机器学习范式的应用场景和适用条件。
强化学习与监督学习的基本定义
在进入详细比较之前,首先我们要明确这两种学习方式的基本定义:
比较强化学习和监督学习时,重点看数据怎样产生。监督学习依赖已有标签,强化学习依靠环境反馈和奖励信号逐步改进策略。
-
监督学习:在监督学习中,算法学习一个输入到输出的映射关系。训练数据通常包含输入特征和对应的标签,例如给定邮件的文本内容(输入),算法需要判断这封邮件是“垃圾邮件”还是“正常邮件”(输出)。
-
强化学习:强化学习则是一种基于环境反馈的学习过程,学习者(代理)与环境进行交互,通过试错误获得反馈(奖励或惩罚),从而制定出最优的策略以最大化累计奖励。例如,训练一个游戏代理在围棋中选择最佳的下一步.
主要区别
1. 学习目标
读完《强化学习导论之强化学习与监督学习的区别》不要只停在“看懂了”。回头挑一个步骤动手做一遍,再记录哪里卡住,后面的学习会更稳。
- 监督学习的目标是最小化预测误差,它通常侧重于对特定数据样本的准确预测。
- 强化学习的目标是最大化长期累计奖励,它更关注在整个决策过程中如何做出最佳选择。
2. 数据类型
- 在监督学习中,数据是已标注的,意味着每一个输入都有一个对应的输出标签。比如,图像分类中的每一张图像都有一个对应的标签。
- 而在强化学习中,代理通过与环境的交互获得奖惩信号,数据不是事先准备好的,而是通过代理的行为而动态生成的。
3. 反馈机制
- 监督学习中的反馈是直接的,模型在训练时会得到明确的正确答案(标签),例如在“猫”与“狗”的分类任务中,算法会直接知道它预测错误的图片。
- 在强化学习中,反馈是间接的,代理需要探索环境,行为的后果往往是延迟反馈。例如,在某个时刻采取的行动可能在后续多个时间步后才会知道其效果如何。
4. 环境交互
- 监督学习的训练一般是离线的,模型训练完成后再进行测试,模型不会在训练过程中与环境互动。
- 强化学习是在线的,模型在训练过程中就与环境交互,通过不断尝试不同的行动来学习。
案例分析
监督学习示例
考虑以下监督学习的Python代码示例,使用sklearn库进行简单的分类任务:
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
# 加载数据集
iris = load_iris()
X, y = iris.data, iris.target
# 切分训练集与测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 训练模型
model = RandomForestClassifier()
model.fit(X_train, y_train)
# 预测
y_pred = model.predict(X_test)
# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"准确率: {accuracy * 100:.2f}%")
强化学习示例
下面是一个使用OpenAI Gym和stable-baselines3库的强化学习示例,训练一个简单的代理在CartPole环境中保持平衡:
import gym
from stable_baselines3 import PPO
# 创建环境
env = gym.make('CartPole-v1')
# 创建代理
model = PPO("MlpPolicy", env, verbose=1)
# 训练代理
model.learn(total_timesteps=10000)
# 测试代理
obs = env.reset()
for _ in range(1000):
action, _states = model.predict(obs)
obs, rewards, done, info = env.step(action)
env.render()
if done:
obs = env.reset()
env.close()
学完《强化学习导论之强化学习与监督学习的区别》后,不妨换一个自己的场景试一次,重点观察输入、处理和输出是否能对应起来。
如果想把《强化学习导论之强化学习与监督学习的区别》用到自己的任务里,可以先缩小场景,只验证一个最关键的判断点。
总结
通过上述比较,我们可以看到强化学习与监督学习在多个方面的显著区别。这两种方法各有优势和应用场景,监督学习在数据相对容易获取和标注时表现优越,而强化学习则在需要与环境进行互动并依据反馈不断调整策略的场景中脱颖而出。在下一篇中,我们将探讨强化学习的应用领域,以进一步理解其实际用途和发展方向。
继续阅读
从这篇继续找到相关教程
常见问题
读前先确认这三点
强化学习导论之强化学习与监督学习的区别适合谁读?
这是 强化学习入门 系列第 2 / 28 篇,适合正在学习强化学习入门,并且需要把概念落到操作步骤或判断标准里的读者。
读这篇强化学习入门教程要多久?
按中文技术文章阅读速度估算,通读大约 4 分钟;如果要跟着复现,建议把命令、配置和结果检查分开做。
这篇文章里的图文节点怎么用?
正文里有 6 个图文节点,可以先用它们抓住流程、配置和判断点,再回到对应段落细读。
分享文章
转发到常用平台
微信/朋友圈可先复制链接
相关教程
从相近问题继续读
继续阅读