当前位置: 首页 > news >正文

强化学习极简入门笔记

强化学习极简入门笔记

前言

强化学习(RL)是机器学习的一个重要分支,它通过智能体与环境的交互来学习最优策略,以最大化累计奖励。本文将带你通俗理解强化学习的核心概念和算法,包括 MDP、DP、MC、TD、Q 学习、策略梯度和 PPO 等。

一、强化学习基础:RL 与 MRP、MDP

(一)强化学习的基本概念

  1. 智能体(Agent) :就像游戏玩家控制游戏角色一样,智能体是我们要训练的模型,它依据策略执行动作。
  2. 环境(Environment) :可以理解为智能体所处的场景,比如游戏中的关卡。智能体的动作会影响环境,环境会给予智能体反馈。
  3. 状态(State) :是环境在某一时刻的表现形式,比如游戏中角色的位置、生命值等。
  4. 动作(Action) :智能体在环境中可以执行的操作,比如游戏角色的移动、攻击等。
  5. 奖励(Reward) :智能体执行动作后从环境中获得的反馈信号,用于衡量动作的好坏。比如游戏中过关得到的分数。

例子 :训练小狗坐下。你(智能体)对小狗(环境)发出 “坐下” 的指令(动作),如果小狗坐下(状态改变),你给它一块零食(奖励),小狗就会逐渐学会 “坐下” 这个动作。

(二)RL 与监督学习的区别

  • 监督学习有明确的标签告诉模型什么是正确的输出,而强化学习没有现成的标签,只有在智能体执行一系列动作后获得的奖励,通过奖励来判断动作的好坏。
  • 监督学习的结果反馈是即时的,而强化学习的结果反馈有延时,可能需要很多步之后才能知道之前某个动作的好坏。
  • 监督学习的输入数据是独立分布的,而强化学习的输入数据是相互关联的,智能体的动作会影响后续的输入。

例子 :监督学习就像是老师手把手教你做数学题,每一步都告诉你对错;而强化学习就像是你自己做游戏,只有通关后才告诉你这一关你做得好不好。

(三)马尔可夫决策过程(MDP)

  • 马尔可夫过程 :是一个满足马尔可夫性质的随机过程,即当前状态只与上一时刻的状态有关。比如天气变化,今天的天气只与昨天的天气有关。
  • 马尔可夫奖励过程(MRP) :在马尔可夫过程的基础上增加了奖励函数,用于描述智能体在环境中获得的奖励。
  • 马尔可夫决策过程(MDP) :在马尔可夫奖励过程的基础上引入了智能体的动作因素,用于描述智能体如何根据当前状态选择动作,并获得相应的奖励和转移到下一个状态。

例子 :超级玛丽游戏中,马里奥(智能体)根据当前关卡的状态(如面对敌人、有道具等)选择跳跃、奔跑等动作(动作),然后游戏根据他的动作给予分数(奖励),并改变关卡状态(如过关、掉入坑里等)。

二、RL 进阶之三大表格求解法:DP、MC、TD

(一)动态规划法(DP)

  • 基本思想 :把复杂问题分解成多个小问题来求解,利用子问题的最优解来构建原问题的最优解。比如在解决 0-1 背包问题时,通过考虑是否放入第 n 个物品来将问题转化为前 n-1 个物品的问题。
  • 求解最优策略 :在已知环境模型(状态转移概率和奖励函数)的情况下,通过策略评估和策略改进来不断优化策略,直到得到最优策略。

例子 :你要去旅行,有一个背包和一堆物品,每个物品都有自己的重量和价值。你想带尽可能多价值的物品,但背包的重量有限。你可以用动态规划法来决定带哪些物品,先计算带第一个物品的情况下的最优解,再计算带前两个物品的最优解,依此类推,直到找到在背包重量限制下能带物品的最大价值。

(二)蒙特卡洛法(MC)

  • 基本思想 :通过大量的随机样本来估算或近似真实值。比如估算圆的面积时,可以通过随机投点,计算落在圆内的点数与总点数的比例来估算。
  • 在 RL 中的应用 :用策略在 MDP 上采样很多条序列,然后计算从某个状态出发的回报的期望来估计该状态的价值。

例子 :你要估算一个复杂形状的面积,你可以随机向这个形状所在的区域投很多点,统计有多少点落在这个形状内,用落在形状内的点数占总点数的比例乘以区域的面积,就能估算出这个复杂形状的面积。

(三)时序差分法(TD)

  • 基本思想 :结合了 DP 和 MC 的优点,既不需要像 DP 那样知道环境模型,也不需要像 MC 那样等待完整序列结束。TD 方法通过利用当前的估计值来更新状态价值函数,每过一个时间步就进行更新。
  • 与 DP 和 MC 的区别 :TD 与 DP 一样,可以基于下一个时刻的收益和估计值来更新当前状态的价值函数;与 MC 一样,可以直接从与环境的交互中学习策略,而不需要知道环境模型。

例子 :你正在玩一个闯关游戏,你在第一关卡的时候,不知道这一关能得多少分,但是当你打完第一关进入第二关的时候,你可以根据第二关的初始信息和你对第一关得分的预估,来更新你对第一关价值的估计,而不用等整个游戏通关之后再评估第一关的价值。

三、价值学习:从 n 步 Sarsa 算法到 Q-learning、DQN

(一)TD 控制与 Sarsa 算法

  • Sarsa 算法 :是一种同策略的时序差分控制算法,它通过更新动作价值函数来寻找最优策略。在 Sarsa 算法中,智能体根据当前策略选择动作,并用该动作来更新动作价值函数。

例子 :你正在玩迷宫游戏,你现在所处的位置是状态 s,你根据当前的策略选择向左走(动作 a),然后你进入下一个状态 s’,得到奖励 r。根据 sarsa 算法,你将根据这个新的状态 s’ 和奖励 r 来更新原来在状态 s 向左走这个动作的价值估计,也就是更新 Q(s,a)。

(二)Q-learning

  • 基本思想 :是一种异策略的时序差分控制算法,它不依赖于行为策略,而是直接学习最优动作价值函数。Q-learning 通过选择下一个状态下的最大动作价值来更新当前状态下的动作价值函数。

例子 :还是玩迷宫游戏,你在状态 s,你通过探索发现向左走能让你更快地找到出口,能获得更多奖励。Q-learning 算法会更新状态 s 的动作价值函数,使得向左走这个动作的价值更高,即使你在实际游戏中可能因为探索而暂时没有选择向左走。

(三)DQN

  • 基本思想 :为了解决 Q-learning 在连续状态空间中的问题,DQN 使用深度神经网络来近似动作价值函数,并通过经验回放和目标网络来稳定训练过程。

例子 :在一个复杂的机器人控制任务中,机器人需要根据各种传感器数据(连续的状态空间)来决定动作。DQN 可以利用深度神经网络来学习如何根据这些传感器数据做出最优的动作决策,比如控制机器人的手臂去抓取物体,就像人类根据视觉信息来控制自己的手一样。

四、策略学习:从策略梯度、Actor-Critic 到 TRPO、PPO 算法

(一)策略梯度

  • 基本思想 :直接对策略参数进行优化,通过梯度上升来最大化期望奖励。策略梯度算法通过采样 trajectories(轨迹)来计算梯度,并用该梯度来更新策略参数。

例子 :你在炒股票,你的策略是根据股票的各种指标来决定买入还是卖出。策略梯度算法就像是一个导师,它会根据你过去一段时间的交易轨迹(比如什么时候买入、什么时候卖出)来评估你的策略的好坏,并指导你如何调整策略参数,以期望在未来获得更多的收益。

(二)Actor-Critic 算法

  • 基本思想 :结合了基于价值的方法和基于策略的方法。Actor 负责学习策略,Critic 负责评估策略,并为 Actor 提供反馈。通过这种互动,Actor 不断改进策略,以获得更高的奖励。

例子 :想象你是一个航海家(Actor),你根据自己的经验来驾驶船只(策略)。同时,你有一个导航员(Critic),他会根据你驾驶的结果(比如是否遇到了风暴、是否偏离了航线等)来评估你的驾驶策略,并给你建议。根据导航员的反馈,你不断调整自己的驾驶策略,以期望更顺利地到达目的地。

(三)TRPO 和 PPO 算法

  • TRPO :为了解决策略梯度算法中步长难以确定的问题,TRPO 引入了 KL 散度约束,确保策略更新不会偏离当前策略太远,从而提高训练的稳定性。
  • PPO :是 TRPO 的改进算法,通过裁剪或惩罚的方式来限制策略更新的幅度,使策略更新更加稳定和高效。PPO 有两个主要的变种:PPO-penalty 和 PPO-clip。

例子 :你正在登山,你想尽快到达山顶,但是山路很陡峭,也很危险。TRPO 算法就像是一个谨慎的向导,他会根据你当前的位置和体力情况,来确定你每一步可以迈多大,以确保你不会摔倒(策略更新不会偏离太远)。PPO 算法就像是一个既有谨慎一面又有灵活一面的向导,它既会约束你不要迈步太大,又会在合适的时机鼓励你大胆前进,以确保你既能安全地登山,又能尽可能快地到达山顶。

相关文章:

  • 技术文档撰写指南:从结构到细节的全流程解析
  • 小白玩串口控制的ASCII避坑
  • 计算机网络常见体系结构、分层必要性、分层设计思想以及专用术语介绍
  • MySQL 查询语句的执行顺序
  • 在 WSL Ubuntu-24.04 上安装 Nacos 2.5.1 并使用 MySQL 数据库
  • Knife4j框架的使用
  • HOW - 简历和求职面试宝典(二)
  • 基于MATLAB实现SFA(Slow Feature Analysis,慢特征分析)算法
  • 湖北理元理律师事务所债务优化实践:在还款与生活间寻找平衡支点
  • 网络摄像机POE交换机选型指南:技术参数与场景适配深度解析
  • 多语种OCR识别系统,引领文字识别新时代
  • 深入剖析网络协议:七层协议与四层协议详解
  • 本地socket间通信,可以直接使用read读取socket中的结构体
  • JAVA重症监护系统源码 ICU重症监护系统源码 智慧医院重症监护系统源码
  • SpringBoot 日志
  • Windows 下如何打开设置环境变量的对话框
  • 区间DP概述(JAVA)
  • 重说话题“如何写好一份技术文档”
  • 【电拖自控】转速检测数字测速(脉冲计数测速)
  • unordered_map与map之间的区别和联系
  • wordpress 短代码失效/seo关键词排名技术
  • 网站服务器空间/数字营销服务商seo
  • wordpress 音频主题/seo建站技术
  • 建设企业网站多少钱/有实力的网站排名优化软件
  • 淘宝店铺如何推广/哈尔滨网站优化
  • 做书籍封皮的网站/磁力猫torrent kitty