热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

强化学习(1):概述

一、强化学习描述1.算法定义强化学习算法是在不确定环境中,通过与环境的不断交互,来不断优化自身策略的算法。2.算法特点数据是序列分布而非独立同分

一、强化学习描述


1. 算法定义

强化学习算法是在不确定环境中,通过与环境的不断交互,来不断优化自身策略的算法。

2. 算法特点


  • 数据是序列分布而非独立同分布
  • agent的行为会影响后续的数据分布
  • 没有supervisor,仅仅是每幕最后的reword
  • 无法立即获得反馈,feedback是延迟的

整个过程是一个序列,比如金融投资,比如控制机器人移动等。整个决策序列最终是要实现综合的reward最大化。无法确定当前的每一步action,是否会在未来的某个时刻给你带来巨大的正向reward。在经过算法训练之后,可能出现牺牲当前的即时reward来谋取未来的长远reward.

强化学习问题定义在马尔可夫决策过程之上。一个MDP是<S,A,R,P,γ>的五元组。

关于马尔可夫决策模型&#xff0c;我们详细参见博客&#xff1a;link

3. 关于reward


特点


  • RtR_tRt是可以量化的回馈信号
  • 表示agent在该时刻动作的好坏
  • agent的任务是最大化累计reward

意义

整个强化学习的基础就是reward hypothesis

当前所有的强化学习研究目标&#xff0c;最终都可以用最大化期望累计reward来表示。

4. 关于state

在这里插入图片描述
agent依据当前环境的观测OtO_tOt &#43; 当前的rewardRtR_tRt&#xff0c;选择actionAtA_tAt去执行.

环境可以当作是互相博弈的另外一个agent&#xff0c;当AtA_tAt发生后&#xff0c;环境的state会变化&#xff0c;生成新的Ot&#43;1O_{t&#43;1}Ot&#43;1Rt&#43;1R_{t&#43;1}Rt&#43;1

state用来表示整个系统当前情况&#xff0c;包括过去发生的所有History&#xff0c;我们分别看下环境和agent的state变化。

对于一辆在路上行驶的车而言&#xff0c;在RL的世界&#xff0c;车本身属于agent&#xff0c;周围所有的其他车&#xff0c;人&#xff0c;建筑物都属于环境。

state通常可以用马尔可夫性进行处理。

4.1 environment state


  • 环境提供的observation与reward的信息的数据表示
  • 环境的state有时并不是agent可见的
  • 即使SteS_t^eSte对agent可见&#xff0c;其中也包含一些不相关或噪声信息

环境state没那么重要。相反&#xff0c;机器人本身观测到的环境状态才是最重要的。

4.2 agent state


  • StaS^a_tSta是agent内部状态的表示
  • agent选择用于action的信息
  • 用于强化学习算法的一些信息
  • 是基于历史information的一个函数 Sta&#61;f(Ht)S^a_t&#61;f(H_t)Sta&#61;f(Ht)

这个agent state才是最重要的。而且&#xff0c;我们到底如何model来实现最优的对环境state的表征&#xff0c;这件事情很难。也就是上述公式中的fff很难找到最好的符合agent需求的形式。

5. 关于观测


5.1 Fully Observable Environments

Ot&#61;Sta&#61;SteO_t&#61;S^a_t&#61;S^e_tOt&#61;Sta&#61;Ste

通常这是一个MDP的过程。如上说述&#xff0c;state的表征很重要&#xff0c;MDP在这里能够发挥巨大的作用。

5.2 Partially Observable Environments

ange必须自己构建属于自己的StaS^a_tSta&#xff0c;通常有如下的构建方法&#xff1a;

  • 直接用历史数据&#xff08;历史是已经发生的&#xff0c;是确定的&#xff09;&#xff1a; Sta&#61;Ht&#61;O1,R1,A1,...,At−1,Ot,RtS^a_t&#61;H_t &#61; O_1,R_1,A_1,...,A_{t-1},O_t,R_tSta&#61;Ht&#61;O1,R1,A1,...,At1,Ot,Rt
  • 使用环境的状态的置信度belief表示&#xff1a;Sta&#61;(P[Ste&#61;s1],...,P[Ste&#61;sn])S^a_t &#61; (P[S^e_t&#61;s^1],...,P[S^e_t&#61;s^n])Sta&#61;(P[Ste&#61;s1],...,P[Ste&#61;sn])
  • RNN网络&#xff1a; Sta&#61;σ(St−1aWs&#43;OtWo)S^a_t&#61;\sigma(S^a_{t-1}W_s&#43;O_tW_o)Sta&#61;σ(St1aWs&#43;OtWo)

二、强化学习中智能体的组成部分

第一部分的内容&#xff0c;我们还停留在强化学习的定义上。还在说明强化学习这个武器是怎样与现实生活中的应用场景进行配对的。这部分&#xff0c;我们来深入agent&#xff0c;思考面对建立好的强化学习&#xff0c;agent如何来解决问题。

Agent中可能有的三大组成部分&#xff1a;

  • Policy&#xff1a;智能体决策函数
  • Value Function&#xff1a;智能体action评价函数
  • Model&#xff1a;智能体对环境的建模

注意&#xff1a; 三个部分通常不是必须都要有。

1. policy

策略通常用π\piπ来表示&#xff0c;用来表征从state到action的函数映射

a&#61;π(s)a&#61;\pi(s)a&#61;π(s)

如果用概率语言来描述的话&#xff1a;
π(a∣s)&#61;p[At&#61;a∣St&#61;s]\pi(a|s)&#61;p[A_t&#61;a|S_t&#61;s]π(as)&#61;p[At&#61;aSt&#61;s]

2. Value Function

用于评价如果选择不同的action可能对应的不同state的好坏&#xff0c;从而依据状态来选择action. 本质上是在评价选取的策略的好坏。通过尽量把目光放长远来实现最优评价。

可以用如下公式描述&#xff1a;

vπ(s)&#61;Eπ[Rt&#43;1&#43;γRt&#43;2&#43;γ2Rt&#43;3&#43;...∣St&#61;s]v_{\pi}(s)&#61;E_{\pi}[R_{t&#43;1} &#43;\gamma R_{t&#43;2}&#43;\gamma ^2R_{t&#43;3}&#43;...|S_t&#61;s]vπ(s)&#61;Eπ[Rt&#43;1&#43;γRt&#43;2&#43;γ2Rt&#43;3&#43;...St&#61;s]

上述公式可以用文字表述&#xff1a;

基于当前状态StS_tSt&#xff0c;我们来判断如果选择policy π\piπ的话&#xff0c;可能获得的reward的总和。

具体的&#xff0c;我们可以将value function分别对应到state和action上&#xff0c;分别描述当前的state可能对应的value&#xff0c;以及具体采取某种action后对应的value.

需要注意的是&#xff0c;value function关注的总是future.

3. model

模型用来预测agent接下来的状态。其实就是对环境状态的观测StaS^a_tSta&#xff0c;它反映了从机器人视角出发的在进行action之后&#xff0c;env做出的回馈。用于机器人生成下一次的策略π\piπ

比如agent是飞机&#xff0c;model通过分析当前的飞机速度朝向&#xff0c;周围环境的风向等因素&#xff0c;判断下一时刻飞机可能的state.

PPP表示下一个机器人的状态&#xff1a;
Pss′a&#61;P[St&#43;1&#61;s′∣St&#61;s,At&#61;a]P^a_{ss&#39;}&#61;P[S_{t&#43;1}&#61;s&#39;|S_t&#61;s,A_t&#61;a]Pssa&#61;P[St&#43;1&#61;sSt&#61;s,At&#61;a]

R表示下一个状态的对应奖励
Rsa&#61;E[Rt&#43;1∣St&#61;s,At&#61;a]R^a_s&#61;E[R_{t&#43;1}|S_t&#61;s,A_t&#61;a]Rsa&#61;E[Rt&#43;1St&#61;s,At&#61;a]

三、强化学习的分类

第二节中&#xff0c;我们详细说明了agent可能有的三大模块&#xff1a;policy&#xff0c;value function&#xff0c;model

依据agent这三部分的有与无&#xff0c;我们可以将强化学习的各类方法做一些大致分类。

在这里插入图片描述

1. value or policy


  1. 基于value的RL
    表征agent内部state or action的value function.
    必须包含着value function&#xff0c;policy可有可无

  2. 基于policy的RL

  3. actor critic
    既有value 也有policy


2. model or model free

model free 表示我们并不是通过建立model来理解环境。而是直接建立policy或者value function来分析理解环境。

model based 的RL&#xff0c; 首先第一步需要建立对整个环境的model&#xff0c;用于说明环境的工作原理。

四、强化学习中的问题


1. learning and planning

在这里插入图片描述
learning问题&#xff0c;首先&#xff0c;在最开始的时候&#xff0c;环境对于agent而言是完全陌生的&#xff0c;agent需要不断与环境进行交互&#xff0c;不断了解、认识、与环境交互来提高policy的效果。

planning(规划)问题&#xff0c;环境的模型对agent是已知的&#xff0c;不变的。我们总是能准确get采取action后对应的环境状态&#xff0c;这其中就没有交互。就可以在第一步实现对整个全局的推演。

2. exploration vs exploitation

举例&#xff1a;

在这里插入图片描述
如何平衡EE是强化学习中的重要问题。

3. prediction and control

prediction&#xff1a;给出一个policy

control&#xff1a;在policy中寻找一个最优秀的

个人理解&#xff0c;control对应着value function&#xff0c;prediction对应着policy的生成。


推荐阅读
  • 云函数与数据库API实现增删查改的对比
    本文将深入探讨使用云函数和数据库API实现数据操作(增删查改)的不同方法,通过详细的代码示例帮助读者更好地理解和掌握这些技术。文章不仅提供代码实现,还解释了每种方法的特点和适用场景。 ... [详细]
  • Redux入门指南
    本文介绍Redux的基本概念和工作原理,帮助初学者理解如何使用Redux管理应用程序的状态。Redux是一个用于JavaScript应用的状态管理库,特别适用于React项目。 ... [详细]
  • 本文介绍了如何在React和React Native项目中使用JavaScript进行日期格式化,提供了获取近7天、近半年及近一年日期的具体实现方法。 ... [详细]
  • 本题探讨了在大数据结构背景下,如何通过整体二分和CDQ分治等高级算法优化处理复杂的时间序列问题。题目设定包括节点数量、查询次数和权重限制,并详细分析了解决方案中的关键步骤。 ... [详细]
  • 本文介绍了如何在多线程环境中实现异步任务的事务控制,确保任务执行的一致性和可靠性。通过使用计数器和异常标记字段,系统能够准确判断所有异步线程的执行结果,并根据结果决定是否回滚或提交事务。 ... [详细]
  • 2018-2019学年第六周《Java数据结构与算法》学习总结
    本文总结了2018-2019学年第六周在《Java数据结构与算法》课程中的学习内容,重点介绍了非线性数据结构——树的相关知识及其应用。 ... [详细]
  • Coursera ML 机器学习
    2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归![选择特征](https:static.oschina.n ... [详细]
  • 本文介绍如何使用MFC和ADO技术调用SQL Server中的存储过程,以查询指定小区在特定时间段内的通话统计数据。通过用户界面选择小区ID、开始时间和结束时间,系统将计算并展示小时级的通话量、拥塞率及半速率通话比例。 ... [详细]
  • Linux环境下C语言实现定时向文件写入当前时间
    本文介绍如何在Linux系统中使用C语言编程,实现在每秒钟向指定文件中写入当前时间戳。通过此示例,读者可以了解基本的文件操作、时间处理以及循环控制。 ... [详细]
  • 黑马头条项目:Vue 文章详情模块与交互功能实现
    本文详细介绍了如何在黑马头条项目中配置文章详情模块的路由、获取和展示文章详情数据,以及实现关注、点赞、不喜欢和评论功能。通过这些步骤,您可以全面了解如何开发一个完整的前端文章详情页面。 ... [详细]
  • 深入解析ESFramework中的AgileTcp组件
    本文详细介绍了ESFramework框架中AgileTcp组件的设计与实现。AgileTcp是ESFramework提供的ITcp接口的高效实现,旨在优化TCP通信的性能和结构清晰度。 ... [详细]
  • ElasticSearch 集群监控与优化
    本文详细介绍了如何有效地监控 ElasticSearch 集群,涵盖了关键性能指标、集群健康状况、统计信息以及内存和垃圾回收的监控方法。 ... [详细]
  • 由二叉树到贪心算法
    二叉树很重要树是数据结构中的重中之重,尤其以各类二叉树为学习的难点。单就面试而言,在 ... [详细]
  • SpringMVC RestTemplate的几种请求调用(转)
    SpringMVCRestTemplate的几种请求调用(转),Go语言社区,Golang程序员人脉社 ... [详细]
  • C语言入门精选教程与书籍推荐
    本文精选了几本适合不同水平学习者的C语言书籍,从基础入门到进阶提高,帮助读者全面掌握C语言的核心知识和技术。 ... [详细]
author-avatar
请允许我的每一天有你_248
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有