2.4 强化学习

2.4.1、强化学习概念

什么是强化学习?

维度说明
通俗定义强化学习就像训练一只小狗——做对了给零食(奖励),做错了不理会或轻微惩罚。小狗通过不断尝试,慢慢学会“做什么能拿到零食,做什么不能做”
学术定义强化学习是一种智能体(Agent)在与环境(Environment)的交互过程中,通过不断试错,依据获得的奖励或惩罚信号来学习最优策略的机器学习方法
核心思想“试错学习”——没有标准答案,只有行动后的反馈(奖励或惩罚),智能体需要自己探索什么样的行为能带来最大的累积奖励
起源强化学习的概念最早源于心理学中的“操作性条件反射”——动物通过尝试不同行为,根据结果(奖励/惩罚)来调整自己的行为策略

一句话总结:强化学习不是“教机器怎么做”,而是“让机器自己去试,做得好给奖励,做得不好给惩罚,让它自己摸索出最优做法”。

监督学习 vs 无监督学习 vs 强化学习(三大范式对比)

对比维度监督学习无监督学习强化学习
是否有标签✅ 有标签(标准答案)❌ 无标签❌ 无标签(只有奖励信号)
学习方式从“题目+答案”中学习映射关系自主发现数据中的隐藏结构通过“试错+反馈”学习最优策略
反馈形式即时反馈(每个样本都有正确答案)无反馈(探索性分析)延迟反馈(行动后才知道结果)
数据来源静态数据集静态数据集动态交互数据(边做边学)
类比学生跟着老师学,有标准答案科学家观察自然,自己总结规律训练小狗:做对给零食,做错不理会
核心问题“这个是什么?”(识别/预测)“这些数据有什么规律?”(发现结构)“下一步该怎么做?”(决策/控制)
典型算法线性回归、决策树、SVM、神经网络K-Means、PCA、DBSCANQ-Learning、SARSA、DQN、PPO

强化学习的核心特点

特点说明案例(训练小狗)
试错学习(Trial and Error)智能体通过不断尝试不同的动作来学习,犯错是学习过程的一部分小狗尝试用鼻子顶、用爪子扒、用嘴巴咬——有些行为被奖励,有些被忽略
延迟奖励(Delayed Reward)行动带来的奖励可能不是立即出现的,可能需要多步之后才知道结果小狗“坐下→等待→吃到零食”——坐下和吃到零食之间有时差,但坐下是最终获得奖励的关键动作
探索 vs 利用(Exploration vs Exploitation)智能体需要在“尝试新方法(探索)”和“使用已知好方法(利用)”之间取得平衡小狗已经知道“坐下”能得到零食,但今天它尝试“装死”——这是探索,可能会发现更好的方法
序列决策(Sequential Decision Making)智能体做的每个决策都会影响未来的状态和奖励,需要规划多步小狗在迷宫找零食:每一步选择走哪条路,都会影响最终能否找到零食

为什么需要强化学习?

原因说明案例
没有标准答案很多场景无法提供“正确做法”的标签,只有“做得好不好”的反馈自动驾驶:没有“完美驾驶”的标准答案,只有“安全到达”的奖励
需要序列决策很多任务需要多步规划,不能一步到位下围棋:每一步走法会影响后续几十步的局面
需要动态适应环境会变化,智能体需要持续学习和适应股票交易:市场时刻变化,策略需要动态调整
超越人类能力在某些复杂领域,强化学习能发现人类未想到的策略AlphaGo下出了人类棋谱中从未出现过的走法

2.4.2 强化学习核心要素

强化学习有五个核心要素,它们构成了强化学习系统的基本框架。

五个核心要素总览表

核心要素定义通俗理解案例(下棋)
智能体(Agent)学习和决策的主体“谁在做决策?”下棋的AI程序
环境(Environment)智能体交互的外部世界“跟谁打交道?”棋盘、对手、规则
状态(State)环境的当前情况“现在是什么局面?”当前棋盘上所有棋子的位置
动作(Action)智能体可以采取的行为“可以做什么?”走一步棋(如“马二进三”)
奖励(Reward)动作后获得的反馈信号“做得好不好?”赢棋+1分,输棋-1分,每一步0分

智能体(Agent)

智能体是强化学习系统中的“决策者”——它观察环境,做出决策,并根据环境的反馈调整自己的策略。

维度说明
定义智能体是学习和决策的主体,它接收环境的状态信息,选择要执行的动作,并根据环境返回的奖励来更新自己的策略
智能体的核心能力观察:获取当前状态 ② 决策:选择执行哪个动作 ③ 学习:根据奖励更新策略
类比训练小狗时,小狗就是“智能体”——它看到你的手势(观察),决定坐下还是趴下(决策),获得零食后下次更愿意做同样的动作(学习)

环境(Environment)

环境是智能体所处的外部世界——智能体通过动作影响环境,环境通过状态和奖励来回应智能体。

维度说明
定义环境是智能体交互的外部系统,它接收智能体的动作,更新自身状态,并返回新的状态和奖励信号
环境的特点动态性:环境会因智能体的动作而改变 ② 不确定性:相同动作可能产生不同结果 ③ 部分可观测:智能体可能无法看到环境的全部信息
类比训练小狗时,你和周围的空间就是“环境”——小狗冲你叫(动作),你给零食(奖励),环境(你的态度、房间的布置)也在不断变化

状态(State)

状态是环境的“快照”——描述了在某一时刻环境的全部(或部分)情况,是智能体做决策的依据。

维度说明
定义状态是智能体在某一时刻对环境的观测,包含了智能体做决策所需的信息
状态的类型完全可观测(MDP):智能体能看到环境的全部信息
部分可观测(POMDP):智能体只能看到部分信息
类比下棋时,当前棋盘上所有棋子的位置就是“状态”;你开车时,路况、车速、位置就是“状态”

动作(Action)

动作是智能体可以执行的操作——智能体在每个状态下选择并执行一个动作,从而影响环境。

维度说明
定义动作是智能体在某个状态下可以采取的行为,是智能体影响环境的唯一方式
动作的类型离散动作:有限数量的选择(如:上/下/左/右)
连续动作:无限连续的选择(如:方向盘转角0°~360°)
类比训练小狗时,“坐下”“趴下”“转圈”就是动作;自动驾驶时,“加速”“刹车”“左转”“右转”就是动作

奖励(Reward)

奖励是环境对智能体动作的“评价”——它告诉智能体“刚才做得好不好”,是指引智能体学习的唯一信号。

维度说明
定义奖励是环境在智能体执行动作后返回的即时反馈信号,用于评价该动作的好坏
奖励的特点即时 vs 延迟:有些奖励立即出现,有些要过好几步才出现 ② 稀疏 vs 密集:有些任务每一步都有奖励,有些任务只有到最后才有奖励
强化学习的核心目标强化学习的核心目标是最大化长期累积奖励(Return),而不仅仅是单步奖励
类比训练小狗时,给零食就是“正奖励”,拍桌子说“不行”就是“负奖励”(惩罚)

2.4.3 强化学习交互循环

强化学习的核心是智能体与环境的持续交互循环。这是强化学习与监督学习最本质的区别——监督学习处理的是静态数据,强化学习处理的是动态交互序列。

2.4.3.1 交互循环图解
┌─────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                    强化学习交互循环                                              │
├─────────────────────────────────────────────────────────────────────────────────────────────────┤
│                                                                                                 │
│                              ┌───────────────────────────────────────┐                          │
│                              │               环境(Environment)       │                          │
│                              │  · 提供当前状态                       │                          │
│                              │  · 接收动作并更新                     │                          │
│                              │  · 返回奖励信号                       │                          │
│                              └───────────────────┬───────────────────┘                          │
│                                                    │                                            │
│                     ┌──────────────────────────────┼──────────────────────────────┐             │
│                     │                              │                              │             │
│                     ▼                              ▼                              ▼             │
│           ┌─────────────────┐            ┌─────────────────┐            ┌─────────────────┐      │
│           │  状态 (State)   │            │  奖励 (Reward)  │            │   动作 (Action) │      │
│           │  环境当前情况   │            │  做得好不好?   │            │   智能体做什么   │      │
│           └────────┬────────┘            └────────┬────────┘            └────────┬────────┘      │
│                    │                              │                              │              │
│                    └──────────────────────────────┼──────────────────────────────┘              │
│                                                   │                                             │
│                                                   ▼                                             │
│                              ┌───────────────────────────────────────┐                          │
│                              │           智能体(Agent)              │                          │
│                              │  · 观察状态                           │                          │
│                              │  · 根据策略选择动作                    │                          │
│                              │  · 根据奖励更新策略                    │                          │
│                              └───────────────────────────────────────┘                          │
│                                                                                                 │
│                         ┌───────────────────────────────────────┐                              │
│                         │  循环序列:状态 → 动作 → 奖励 → 新状态 │                              │
│                         │  S₀ → A₀ → R₁ → S₁ → A₁ → R₂ → S₂ → ...                            │
│                         └───────────────────────────────────────┘                              │
│                                                                                                 │
└─────────────────────────────────────────────────────────────────────────────────────────────────┘
2.4.3.2 单步交互拆解(5步循环)
步骤角色做什么通俗理解
智能体观察当前状态 ( S_t )小狗看到你手里有零食
智能体根据策略选择一个动作 ( A_t )小狗决定“坐下”
环境接收动作,更新状态 ( S_t \rightarrow S_{t+1} )你看到小狗坐下了,环境(你的态度)变了
环境计算并返回奖励 ( R_{t+1} )你给小狗一颗零食(正奖励)
智能体根据奖励更新策略小狗知道“坐下→有零食”,下次更愿意坐下
2.4.3.3 Python代码模拟单步交互
import random

class SimpleAgent:
    """简单智能体:小狗"""
    def __init__(self):
        self.strategy = {'坐下': 0.3, '趴下': 0.2, '转圈': 0.1, '汪汪叫': 0.4}  # 初始偏好概率

    def observe(self, state):
        """观察当前状态"""
        print(f"小狗观察到:{state}")

    def choose_action(self):
        """根据当前策略选择动作"""
        actions = list(self.strategy.keys())
        probabilities = list(self.strategy.values())
        action = random.choices(actions, weights=probabilities, k=1)[0]
        print(f"小狗决定:{action}")
        return action

    def update_strategy(self, action, reward):
        """根据奖励更新策略(奖励越高的动作,下次被选择的概率越高)"""
        # 简单更新:奖励为正,提升该动作的概率;奖励为负,降低该动作的概率
        if reward > 0:
            self.strategy[action] = min(1.0, self.strategy[action] + 0.1)
        else:
            self.strategy[action] = max(0.01, self.strategy[action] - 0.1)

        # 归一化,确保概率之和为1
        total = sum(self.strategy.values())
        for key in self.strategy:
            self.strategy[key] /= total
        self.strategy = {k: round(v, 3) for k, v in self.strategy.items()}

class Environment:
    """环境:训练小狗的主人"""
    def __init__(self):
        self.state = "主人拿着零食,等待小狗动作"

    def get_state(self):
        return self.state

    def respond(self, action):
        """根据动作返回奖励和下一状态"""
        reward_map = {
            '坐下': 1.0,
            '趴下': 0.8,
            '转圈': 0.5,
            '汪汪叫': -0.5
        }

        # 如果小狗做对了动作,主人心情变好;做错了,主人心情变差
        reward = reward_map.get(action, 0)
        self.state = "主人心情愉快" if reward > 0 else "主人有些不满意"

        # 返回奖励和新状态
        return reward, self.state


# --- 模拟5轮交互 ---
print("=" * 50)
print("强化学习交互模拟:训练小狗")
print("=" * 50)

# 创建智能体和环境
dog = SimpleAgent()
owner = Environment()

# 5轮交互循环
for episode in range(1, 6):
    print(f"\n--- 第 {episode} 轮 ---")

    # ① 智能体观察状态
    current_state = owner.get_state()
    dog.observe(current_state)

    # ② 智能体选择动作
    action = dog.choose_action()

    # ③ 环境响应(④ 返回奖励和新状态)
    reward, next_state = owner.respond(action)

    # ⑤ 智能体根据奖励更新策略
    dog.update_strategy(action, reward)

    print(f"主人反馈:{'给了零食 👍' if reward > 0 else '没有零食 👎'}")
    print(f"奖励值:{reward}")
    print(f"下一状态:{next_state}")
    print(f"更新后的策略:{dog.strategy}")

print("\n" + "=" * 50)
print("训练结束!小狗的最终策略:")
print(dog.strategy)

运行结果示例:

==================================================
强化学习交互模拟:训练小狗
==================================================

--- 第 1 轮 ---
小狗观察到:主人拿着零食,等待小狗动作
小狗决定:汪汪叫
主人反馈:没有零食 👎
奖励值:-0.5
下一状态:主人有些不满意
更新后的策略:{'坐下': 0.333, '趴下': 0.222, '转圈': 0.111, '汪汪叫': 0.333}

--- 第 2 轮 ---
小狗观察到:主人有些不满意
小狗决定:坐下
主人反馈:给了零食 👍
奖励值:1.0
下一状态:主人心情愉快
更新后的策略:{'坐下': 0.423, '趴下': 0.192, '转圈': 0.096, '汪汪叫': 0.288}

--- 第 3 轮 ---
小狗观察到:主人心情愉快
小狗决定:坐下
主人反馈:给了零食 👍
奖励值:1.0
下一状态:主人心情愉快
更新后的策略:{'坐下': 0.5, '趴下': 0.167, '转圈': 0.083, '汪汪叫': 0.25}

--- 第 4 轮 ---
小狗观察到:主人心情愉快
小狗决定:趴下
主人反馈:给了零食 👍
奖励值:0.8
下一状态:主人心情愉快
更新后的策略:{'坐下': 0.458, '趴下': 0.25, '转圈': 0.083, '汪汪叫': 0.208}

--- 第 5 轮 ---
小狗观察到:主人心情愉快
小狗决定:坐下
主人反馈:给了零食 👍
奖励值:1.0
下一状态:主人心情愉快
更新后的策略:{'坐下': 0.522, '趴下': 0.217, '转圈': 0.087, '汪汪叫': 0.174}

==================================================
训练结束!小狗的最终策略:
{'坐下': 0.522, '趴下': 0.217, '转圈': 0.087, '汪汪叫': 0.174}

📌 解读:小狗通过5轮交互学到了——“坐下”和“趴下”有高奖励(有零食),“汪汪叫”有负奖励(没零食且主人不开心)。因此,“坐下”的策略概率从初始的0.3逐步上升到了0.522。

2.4.3.4 探索 vs 利用(Exploration vs Exploitation)

这是强化学习中最核心、最经典的权衡问题。

概念定义通俗理解案例
探索(Exploration)尝试新的、未知的动作,以发现更好的策略“试新路子”——走出舒适区小狗今天不“坐下”,而是尝试“装死”,看看有没有更多零食
利用(Exploitation)使用已经验证有效的好动作,以最大化当前收益“吃老本”——做自己最擅长的事小狗已经知道“坐下”能拿到零食,于是每次都“坐下”
权衡策略太偏向探索会降低当前收益;太偏向利用会导致错失更好的策略找到最佳平衡80%的概率“利用”(选最优动作),20%的概率“探索”(随机尝试)

探索 vs 利用的平衡方法:

方法说明适用场景
ε-贪心(Epsilon-Greedy)以 ( 1-\varepsilon ) 的概率选择最优动作,以 ( \varepsilon ) 的概率随机探索(( \varepsilon ) 常取0.05~0.1)最常用,简单有效
衰减ε-贪心训练初期 ( \varepsilon ) 较大(多探索),后期逐渐减小(多利用)适合有足够训练时间的场景
置信上限(UCB)优先尝试“有潜力但还没充分验证”的动作理论更优,但计算复杂
玻尔兹曼探索根据动作的价值概率性选择,价值高的动作被选中的概率更高平滑、自然

2.4.4 强化学习典型应用场景

2.4.4.1 应用总览表
应用领域具体场景智能体状态动作奖励
游戏AIAlphaGo下围棋围棋AI棋盘局面落子位置赢棋:+1,输棋:-1
自动驾驶自动驾驶自动驾驶系统路况、车速、位置加速/刹车/转向安全到达:+1,事故:-10
机器人控制机器人行走机器人关节角度、重心关节力矩前行距离:+1,摔倒:-5
推荐系统新闻推荐推荐算法用户兴趣、历史推荐哪篇文章用户点击:+1,跳过:-0.5
金融交易股票交易交易AIK线、成交量买入/卖出/持有盈利:+,亏损:-
工业控制能源管理控制系统温度、能耗调整设备功率节能:+1,故障:-10
对话系统智能客服对话AI对话历史下一句回复用户满意:+1,用户投诉:-1
网络游戏游戏NPC游戏AI游戏状态NPC的下一步行动击败玩家:+1,被击败:-1
2.4.4.2 与数据标注工作的关联
关联方式说明具体应用
标注质量评估用强化学习训练模型,自动评估标注质量,对高质量标注给予“奖励”自动质检系统可以持续学习“什么样的标注是好的”,从而减少人工审核
半自动标注辅助强化学习智能体可以建议标注员下一步标哪条数据最“有价值”主动学习选择样本标注,减少标注量
标注流程优化用强化学习优化标注任务的分配顺序和分配方式将最难/最具代表性的任务优先分配给优秀标注员
动态标签规范强化学习可以动态调整标注标准在标注过程中根据标注员的表现和反馈,动态优化标注规范

2.4.5、总结速查表

知识点核心内容关键要点
强化学习的定义智能体通过与环境交互,依据奖励信号学习最优策略试错学习、延迟奖励、序列决策
与监督/无监督的区别无标签、无标准答案、动态交互、延迟反馈“做决策”而非“做预测”或“找规律”
五大核心要素智能体、环境、状态、动作、奖励缺一不可,构成完整循环
交互循环状态→动作→奖励→新状态核心是“S-A-R-S’”闭环
探索 vs 利用探索(尝试新动作)vs 利用(使用已知好动作)ε-贪心是最常用的平衡方法
典型应用游戏AI、自动驾驶、机器人、推荐系统一切需要“决策”的场景
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐