共计 1904 个字符,预计需要花费 5 分钟才能阅读完成。
强化学习新手指南:从理论到实践
大家好!最近学习了 2025 年李宏毅老师的强化学习系列课程,收获颇丰。作为刚入门的小白,想和大家分享一些学习心得和实战经验,希望能帮助到同样在强化学习领域探索的朋友们。

什么是强化学习?
强化学习是机器学习的一个分支,它通过让智能体 (agent) 与环境交互来学习最优策略。就像训练小狗一样,做对了给奖励,做错了给惩罚,最终让它学会正确的行为。
李宏毅老师的课程中特别强调了几点核心概念:
- 状态(State):环境的当前情况
- 动作(Action):智能体可以采取的行为
- 奖励(Reward):环境对动作的反馈
- 策略(Policy):智能体决定动作的方式
强化学习在游戏 AI、机器人控制、推荐系统等领域都有广泛应用。
新手常犯的 5 个错误
根据课程内容和我自己的踩坑经验,总结了以下新手常见误区:
- 奖励函数设计不当
- 奖励设置太稀疏,智能体难以学习
-
奖励设置不平衡,导致智能体走捷径
-
忽视探索与利用的平衡
- 只利用已知最优策略,不探索新可能
-
过度探索导致收敛缓慢
-
状态表示不合理
- 包含无关信息干扰学习
-
遗漏关键信息导致策略不完整
-
超参数设置随意
- 学习率太高导致震荡,太低导致收敛慢
-
折扣因子选择不当影响长期规划
-
忽视环境随机性
- 在确定性环境中训练,无法应对真实世界的随机性
Q-learning 算法实现
下面是一个简单的 Q -learning 实现,使用 OpenAI Gym 的 FrozenLake 环境:
import numpy as np
import gym
import matplotlib.pyplot as plt
# 初始化环境
env = gym.make('FrozenLake-v1', is_slippery=True)
# 参数设置
alpha = 0.1 # 学习率
gamma = 0.99 # 折扣因子
epsilon = 0.1 # 探索率
episodes = 10000 # 训练轮数
# 初始化 Q 表
Q = np.zeros((env.observation_space.n, env.action_space.n))
# 训练过程
rewards = []
for episode in range(episodes):
state = env.reset()[0]
done = False
total_reward = 0
while not done:
# ε-greedy 策略
if np.random.random() < epsilon:
action = env.action_space.sample() # 探索
else:
action = np.argmax(Q[state]) # 利用
# 执行动作
new_state, reward, done, truncated, info = env.step(action)
# 更新 Q 值
Q[state, action] = Q[state, action] + alpha * (reward + gamma * np.max(Q[new_state]) - Q[state, action])
state = new_state
total_reward += reward
rewards.append(total_reward)
# 绘制奖励曲线
plt.plot(rewards)
plt.xlabel('Episode')
plt.ylabel('Total Reward')
plt.title('Training Progress')
plt.show()
这个实现包含了 Q -learning 的核心思想,通过不断更新 Q 表来学习最优策略。参数说明:
alpha:控制新信息的权重gamma:未来奖励的折扣因子epsilon:探索概率
算法对比:DQN vs Policy Gradient
李宏毅老师的课程中详细比较了不同算法的特点:
| 特性 | DQN | Policy Gradient |
|---|---|---|
| 适用场景 | 离散动作空间 | 连续 / 离散动作空间 |
| 输出 | 动作价值函数 | 直接输出策略概率 |
| 稳定性 | 需要目标网络 | 方差较大 |
| 样本效率 | 中等 | 较低 |
| 实现难度 | 中等 | 较简单 |
选择算法时需要考虑动作空间类型、训练稳定性需求和样本效率等因素。
生产环境避坑指南
在实际项目中,我总结了以下三个容易忽视的问题:
- 环境不一致问题
- 训练和测试环境存在差异
-
解决方案:使用环境封装器确保一致性
-
奖励塑形不当
- 人工设计奖励导致策略偏移
-
解决方案:从最终目标反向设计中间奖励
-
训练不收敛
- 学习过程波动大
- 解决方案:引入经验回放和目标网络
动手实践
建议大家尝试以下任务巩固所学知识:
- 在 OpenAI Gym 的 CartPole 环境中实现一个简单的强化学习控制器
- 尝试调整超参数(学习率、折扣因子等)观察对训练的影响
- 实现 ε -greedy 策略的可视化,观察探索与利用的平衡
强化学习入门不易,但通过实践可以快速掌握核心概念。李宏毅老师的课程提供了很好的理论框架,结合这些实战经验,希望大家都能顺利入门强化学习领域!
正文完
发表至: 机器学习
近两天内
