1 强化学习导论:强化学习的基本概念和历史
系列进度
强化学习入门 · 第 1 / 28 篇
整理说明
这篇内容怎么整理
郭震 · 2026-06-04
阅读路线
先按这条路线读
先抓住主线,再回到代码、配置和图文细节,读起来会更稳。
强化学习的核心是智能体在环境中试错,学习时要同时看状态、动作、奖励和策略更新。阅读时可以按「基本概念 -> 关键组成部分 -> 奖励和惩罚 -> 历史背景」建立结构,再回到正文里的代码、案例或指标做验证。
读完后,用一个真实小任务复查:输入是什么,处理环节在哪里,输出是否可验收;失败时先查「基本概念」,再查「关键组成部分」。
基本概念
强化学习(Reinforcement Learning,RL)是一种机器学习的子领域,它关注如何通过与环境的互动来学习做出决策。强化学习的核心思想是通过试错(trial and error)的方法,让代理(agent)在给定的环境中进行探索,并根据环境反馈的奖励(reward)来优化其决策策略。
学习强化学习基本概念时,先把智能体和环境的交互画出来。状态、动作、奖励和策略之间的关系清楚后,算法细节才容易进入。
关键组成部分
强化学习的基本组成部分主要包括以下几个:
- 代理(Agent):执行动作并学习的实体。
- 环境(Environment):代理操作的外部系统,代理通过与环境的互动获得反馈。
- 状态(State):描述环境当前情况的信息。每个时间步,代理都会感知到当前的状态。
- 动作(Action):代理在当前状态下可以选择的行为。
- 奖励(Reward):环境对代理所采取动作的反馈,表明动作的好坏。
- 策略(Policy):代理在给定状态下选择动作的规则或函数。策略可以是确定的(deterministic)或随机的(stochastic)。
- 价值函数(Value Function):用于评估状态或状态-动作对的“好坏”,通常定义为从该状态或动作出发,未来所能获得的期望奖励。
奖励和惩罚
很重要的一点是,强化学习通过奖励和惩罚来引导代理的学习,从而提升决策的质量。例如,在一个经典的强化学习任务——迷宫问题中,代理需要找到从起点到终点的路径。每当它走出正确的路径时,就会获得正向奖励,反之则会受到负向惩罚。代理的最终目标是通过最大化累积奖励来找到最优策略。
历史背景
强化学习的起源可以追溯到20世纪的心理学和生物学研究,尤其是巴甫洛夫的经典条件反射理论和斯金纳的操作性条件反射理论。这些理论启示了如何通过奖励和惩罚来形成学习机制。
阅读《强化学习导论:强化学习的基本概念和历史》前,可以先用配图确认主线;读完后再检查哪些步骤能直接操作,哪些还需要补资料。
发展历程
-
1950年代:一些早期的研究集中在通过马尔可夫决策过程(MDP)来建模决策问题,奠定了强化学习的数学基础。
-
1980年代:随着计算机技术的发展,强化学习开始吸引研究者的注意。1989年,沃特金斯(Watkins)提出了
Q-learning算法,这是一个重要的无模型强化学习方法,能够通过学习状态-动作值函数来指导策略优化。 -
1990年代:
策略梯度方法和时间差分学习(TD Learning)等新方法相继出现,进一步丰富了强化学习的研究。 -
2010年代至今:强化学习结合深度学习(Deep Learning),形成了深度强化学习(Deep Reinforcement Learning),这一领域的突破性成果使得代理可以在复杂环境中成功学习。例如,2015年DeepMind的AlphaGo系统通过深度强化学习在围棋上战胜了人类顶尖选手。
经典案例
下面是一个简单的强化学习例子——网格世界(Grid World)问题的代码实现。这个例子体现了如何通过强化学习来学习策略。
import numpy as np
# 定义环境
class GridWorld:
def __init__(self, size):
self.size = size
self.grid = np.zeros((size, size))
self.state = (0, 0) # 初始状态
def reset(self):
self.state = (0, 0)
return self.state
def step(self, action):
if action == 0: # 向上
self.state = (max(self.state[0] - 1, 0), self.state[1])
elif action == 1: # 向下
self.state = (min(self.state[0] + 1, self.size - 1), self.state[1])
elif action == 2: # 向左
self.state = (self.state[0], max(self.state[1] - 1, 0))
elif action == 3: # 向右
self.state = (self.state[0], min(self.state[1] + 1, self.size - 1))
# 回合结束条件
if self.state == (self.size - 1, self.size - 1):
return self.state, 1, True # 到达目标,奖励+1
return self.state, -0.1, False # 每一步的惩罚
# 训练代理
def train(agent, env, episodes):
for episode in range(episodes):
state = env.reset()
done = False
while not done:
action = agent.select_action(state) # 代理选择动作
next_state, reward, done = env.step(action) # 环境反馈
agent.learn(state, action, reward, next_state) # 代理学习
# 代理定义略...
# 使用示例
grid = GridWorld(size=5)
# train(your_agent, grid, 1000)
通过这种方式,代理在多个回合(episode)中不断探索,通过获得的奖励来调整其策略,从而学习到如何在网格中达到目标。
复习《强化学习导论:强化学习的基本概念和历史》时,建议把关键概念、操作步骤和可见结果放在同一页里回看。
练习《强化学习导论:强化学习的基本概念和历史》时,建议把输入条件、处理动作和可见结果写在一起,方便下次复查。
总结
强化学习不仅是一种强大的学习机制,还在很多实际应用中得到了成功应用,如机器人控制、自动驾驶、游戏AI等。随着深度学习的发展,强化学习的应用前景越来越广阔,为我们提供了更多的可能性。下一篇,我们将探讨强化学习与监督学习的区别,以帮助读者更好地理解这两者之间的差异与联系。
继续阅读
从这篇继续找到相关教程
常见问题
读前先确认这三点
强化学习导论:强化学习的基本概念和历史适合谁读?
这是 强化学习入门 系列第 1 / 28 篇,适合正在学习强化学习入门,并且需要把概念落到操作步骤或判断标准里的读者。
读这篇强化学习入门教程要多久?
按中文技术文章阅读速度估算,通读大约 4 分钟;如果要跟着复现,建议把命令、配置和结果检查分开做。
这篇文章里的图文节点怎么用?
正文里有 6 个图文节点,可以先用它们抓住流程、配置和判断点,再回到对应段落细读。
分享文章
转发到常用平台
微信/朋友圈可先复制链接
相关教程
从相近问题继续读
继续阅读