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

强化学习 DAY1:什么是 RL、马尔科夫决策、贝尔曼方程

第一部分 RL基础:什么是RL与MRP、MDP

1.1 入门强化学习所需掌握的基本概念

1.1.1 什么是强化学习:依据策略执行动作-感知状态-得到奖励

强化学习里面的概念、公式,相比ML/DL特别多,初学者刚学RL时,很容易被接连不断的概念、公式给绕晕,而且经常忘记概念与公式符号表达的一一对应。

为此,学习RL的第一步就是一定要扎实关于RL的一些最基本的概念、公式(不要在扎实基础的阶段图快或图囵吞枣,不然后面得花更多的时间、更大的代价去弥补),且把概念与公式的一一对应关系牢记于心,这很重要。

下面进入正题,且先直接给出强化学习的定义和其流程,然后再逐一拆解、说明。

所谓强化学习(Reinforcement Learning,简称RL),是指基于智能体在复杂、不确定的环境中最大化它能获得的奖励,从而达到自主决策的目的。

经典的强化学习模型可以总结为下图的形式(你可以理解为任何强化学习都包含这几个基本部分:智能体、行为、环境、状态、奖励):

                  

逐一解释每个概念

  • Agent,一般译为智能体,就是我们要训练的模型,类似玩超级玛丽的时候操纵马里奥做出相应的动作,而这个马里奥就是Agent
  • action(简记为),玩超级玛丽的时候你会控制马里奥做三个动作,即向左走、向右走和向上跳,而马里奥做的这三个动作就是action
  • Environment,即环境,它是提供reward的某个对象,它可以是AlphaGo中的人类棋手,也可以是自动驾驶中的人类驾驶员,甚至可以是某些游戏AI里的游戏规则
  • reward(简记为),这个奖赏可以类比为在明确目标的情况下,接近目标意味着做得好则奖,远离目标意味着做的不好则惩,最终达到收益/奖励最大化,且这个奖励是强化学习的核心
  • State(简介为),可以理解成环境的状态,简称状态

总的而言,Agent依据策略决策从而执行动作action,然后通过感知环境Environment从而获取环境的状态state,进而,最后得到奖励reward(以便下次再到相同状态时能采取更优的动作),然后再继续按此流程“依据策略执行动作-感知状态--得到奖励”循环进行。 

1.1.2 RL与监督学习的区别和RL方法的分类
此外,RL和监督学习(supervised learning)的区别:

  • 监督学习有标签告诉算法什么样的输入对应着什么样的输出(譬如分类、回归等问题)
    所以对于监督学习,目标是找到一个最优的模型函数,使其在训练数据集上最小化一个给定的损失函数,相当于最小化预测误差
    最优模型 = arg minE {  [损失函数(标签,模型(特征)] }

    RL没有标签告诉它在某种情况下应该做出什么样的行为,只有一个做出一系列行为后最终反馈回来的reward,然后判断当前选择的行为是好是坏
    相当于RL的目标是最大化智能体策略在和动态环境交互过程中的价值,而策略的价值可以等价转换成奖励函数的期望,即最大化累计下来的奖励期望
    最优策略 = arg maxE {  [奖励函数(状态,动作)] }

  • 监督学习如果做了比较坏的选择则会立刻反馈给算法
    RL的结果反馈有延时,有时候可能需要走了很多步以后才知道之前某步的选择是好还是坏

  • 监督学习中输入是独立分布的,即各项数据之间没有关联
    RL面对的输入总是在变化,每当算法做出一个行为,它就影响了下一次决策的输入

进一步,RL为得到最优策略从而获取最大化奖励,有

  • 基于值函数的方法,通过求解一个状态或者状态下某个动作的估值为手段,从而寻找最佳的价值函数,找到价值函数后,再提取最佳策略
    比如Q-learning、DQN等,适合离散的环境下,比如围棋和某些游戏领域
  • 基于策略的方法,一般先进行策略评估,即对当前已经搜索到的策略函数进行估值,得到估值后,进行策略改进,不断重复这两步直至策略收敛

比如策略梯度法(policy gradient,简称PG),适合连续动作的场景,比如机器人控制领域
以及Actor-Criti(一般被翻译为演员-评论家算法),Actor学习参数化的策略即策略函数,Criti学习值函数用来评估状态-动作对,不过,Actor-Criti本质上是属于基于策略的算法,毕竟算法的目标是优化一个带参数的策略,只是会额外学习价值函数,从而帮助策略函数更好的学习

此外,还有对策略梯度算法的改进,比如TRPO算法、PPO算法,当然PPO算法也可称之为是一种Actor-Critic架构,下文会重点阐述

可能你还有点懵懵懂懂,没关系,毕竟还有不少背景知识还没有交待,比如RL其实是一个马尔可夫决策过程(Markov decision process,MDP),而为说清楚MDP,得先从随机过程、马尔可夫过程(Markov process,简称MP)开始讲起,故为考虑逻辑清晰,我们还是把整个继承/脉络梳理下。

1.2 什么是马尔科夫决策过程

1.2.1 MDP的前置知识:随机过程、马尔可夫过程、马尔可夫奖励

如HMM学习最佳范例中所说,有一类现象是确定性的现象,比如红绿灯系统,红灯之后一定是红黄、接着绿灯、黄灯,最后又红灯,每一个状态之间的变化是确定的

  

但还有一类现象则不是确定的,比如今天是晴天,谁也没法百分百确定明天一定是晴天还是雨天、阴天(即便有天气预报)

对于这种假设具有M个状态的模型

  1. 共有M^{2}个状态转移,因为任何一个状态都有可能是所有状态的下一个转移状态
  2. 每一个状态转移都有一个概率值,称为状态转移概率,相当于从一个状态转移到另一个状态的概率
  3. 所有的M^{2}个概率可以用一个状态转移矩阵表示

下面的状态转移矩阵显示的是天气例子中可能的状态转移概率:

       

也就是说,如果昨天是晴天,那么今天是晴天的概率为0.5,是多云的概率为0.375、是雨天的概率为0.125,且这三种天气状态的概率之和必为1。

接下来,我们来抽象建模下。正如概率论的研究对象是静态的随机现象,而随机过程的研究对象是随时间演变的随机现象(比如天气随时间的变化):

  • 随机现象在某时刻t的取值是一个向量随机变量,用S_t表示
    比如上述天气转移矩阵便如下图所示

                                         

 

在马尔可夫过程的基础上加入奖励函数R 和折扣因子\gamma,就可以得到马尔可夫奖励过程(Markov reward process,MRP)。其中 

奖励函数有点像贪心算法,只考虑下一步的影响

为什么使用期望呢?

奖励可能是随机的

在强化学习或马尔可夫过程的实际应用中,同一个状态 St=s 可能对应不同的奖励,因为环境是随机的(stochastic)。例如:

  • 你在游戏中进入一个房间(状态 St​=“进入房间”)。
  • 可能有 3 种情况(不同的奖励):
    • 你发现 10 个金币(奖励 Rt+1=10)。
    • 你发现 5 个金币(奖励 Rt+1=5)。
    • 你什么都没找到(奖励 Rt+1=0)。
  • 你无法确定具体会得到哪个奖励,但可以计算它们的期望值

假设 3 种情况的概率分别是 50%、30%、20%,那么状态 St​ 的期望奖励就是:

                                                 R(s)=0.5×10+0.3×5+0.2×0=6.5

这就是为什么我们定义奖励函数 R(s) 时,使用期望值(Expectation)。

回报有点像动态规划,是上面奖励的优化。从贪心算法 —> 动态规划。 

可以说奖励是一个时刻的,用大写字母R(reward)表示。回报是一整个过程的,用大字母G(Goal或者是Get)表示

举个例子,一个少年在面对“上大学、去打工、在家啃老”这三种状态,哪一种更能实现人生的价值呢?

奖励函数(基于奖励):只看一瞬间,那就会选择去打工(贪心算法)
价值函数(基于回报):看的比较长远,选上大学,因为上了大学,后面就会好事连连,比如读研读博留学深造、进入大厂、娶个漂亮老婆、生个聪明孩子(动态规划)


http://www.kler.cn/a/527252.html

相关文章:

  • C#方法(练习)
  • 理解神经网络:Brain.js 背后的核心思想
  • 16 分布式session和无状态的会话
  • C#面试常考随笔4:int? 和 int的区别,以及int?的运用场景?
  • RK3568中使用QT opencv(显示基础图像)
  • Nuxt:利用public-ip这个npm包来获取公网IP
  • 反向代理模块jmh
  • 《DeepSeek手机版:开启AI移动新时代》
  • 使用where子句筛选记录
  • C++ 7
  • 【Go语言圣经】第六节:方法
  • Python实现基于TD3(Twin Delayed Deep Deterministic Policy Gradient)算法来实时更新路径规划算法
  • 第05章 17 Contour 过滤器介绍与例子
  • yolov11、yolov8部署的7种方法(yolov11、yolov8部署rknn的7种方法),一天一种部署方法,7天入门部署
  • Java中的getInterfaces()方法:使用与原理详解
  • 寒武纪MLU370部署deepseek r1
  • 【Java计算机毕业设计】基于Springboot的物业信息管理系统【源代码+数据库+LW文档+开题报告+答辩稿+部署教程+代码讲解】
  • 一起学SysML v2规范(01)
  • 【Vite + Vue + Ts 项目三个 tsconfig 文件】
  • Github 2025-01-31Java开源项目日报 Top10
  • 国产之光DeepSeek架构理解与应用分析
  • 【llm对话系统】大模型 Llama 源码分析之 Flash Attention
  • OPENGLPG第九版学习
  • Baklib对比其他知识管理工具的优势及应用效果全面分析
  • 数模测评:doubao1.5>deepseek-v3>gpt-o1
  • C# 实现 “Hello World” 教程