首页 > 其他分享 >【无监督机器学习】10.强化学习

【无监督机器学习】10.强化学习

时间:2023-10-22 11:12:14浏览次数:31  
标签:10 函数 训练 状态 学习 强化 gamma

强化学习

强化学习概念

强化学习是一种无监督学习,它的目标是从环境中学习,以达成某种目标。强化学习的核心是奖励函数,通过与环境的交互,获得环境的反馈,从而学习到奖励函数,最终达成目标。

与监督学习不同的是,强化学习并未给出正确的答案,而是根据奖励一步步学习,因此强化学习的训练过程是一个不断试错的过程。

强化学习的回报

回报

强化学习的目标是最大化回报,回报的定义为:

\[R=R_1+\gamma R_2+\gamma^2 R_3+...=\sum_{t=1}^{\infty}\gamma^{t-1}R_t \]

其中,\(\gamma\)为折扣因子,\(0\leq\gamma\leq1\),\(\gamma\)越大,越重视未来的奖励,\(\gamma\)越小,越重视当前的奖励。

当激励为负值时,折扣因子会将负激励推的尽可能远。

策略

策略\(\pi\)是在每个状态下,采取哪个行动可以获得最大回报的概率,即:

\[a_t=\pi(s_t) \]

马尔可夫决策过程

马尔可夫决策过程(Markov Decision Process,MDP)是强化学习的数学框架,他说明了未来仅仅与当前状态有关,与过去无关。

马尔可夫决策过程由五元组\((S,A,P,R,\gamma)\)组成:

  • \(S\):状态集合
  • \(A\):行动集合
  • \(P\):状态转移概率矩阵,\(P_{ss'}^a=P(s_{t+1}=s'|s_t=s,a_t=a)\)
  • \(R\):奖励函数,\(R_s^a=E[r_{t+1}|s_t=s,a_t=a]\)
  • \(\gamma\):折扣因子

img

状态动作值函数

状态动作值函数定义

状态动作值函数(State-Action Value Function,Q函数)是在状态\(s\)下,采取行动\(a\),之后按最优策略继续执行,获得的回报值,即:

\[Q(s,a)=E[R_t|s_t=s,a_t=a] \]

期望的原因是:在同一个状态下,采取同一个行动,获得的回报值不一定相同,因为环境是随机的。例如:策略为左移,但是环境中的障碍导致无法左移而选择了其他行动。

贝尔曼方程

贝尔曼方程是状态动作值函数的递归表达式,它表示当前状态动作值函数等于下一个状态动作值函数加上当前的奖励,即:

\[Q(s,a)=R_{t+1}+\gamma E[\max_{a^{t+1}} Q(s_{t+1},a_{t+1}) \]

离散状态和连续状态

对于状态\(S\),有两种情况:

  • 离散状态:状态\(S\)是离散的,例如:棋盘游戏中的棋子位置
  • 连续状态:状态\(S\)是连续的,例如:机器人的位置

在离散状态里,状态可以直接记录为一个整数,例如:棋盘游戏中的棋子位置可以记录为棋盘上的行列坐标。

在连续状态里,状态可以记录为一个向量,包括当前位置以及趋势等信息。例如飞行中的直升机,可以记录坐标位、左右转向、上下转向、罗盘方向等,同时也可以记录速度等信息。

\[S=(x,y,\theta,\phi,\psi,\dot{x},\dot{y},\dot{\theta},\dot{\phi},\dot{\psi}) \]

深度强化学习

深度强化学习是强化学习和深度学习的结合,它的目标是使用深度学习来解决强化学习中的问题。

img

在深度深度学习中,可以将状态和行动映射为状态动作值函数,通过计算得到不同行动的状态动作值函数,然后选择状态动作值函数最大的行动,作为当前状态下的最优行动。

训练集的构建

利用贝尔曼方程,可以构建训练集,训练集的输入为状态\(s\),输出为状态动作值函数\(Q(s,a)\)。

通过不断的尝试,可以产生大量的状态\(s\)和行动\(a\),然后通过贝尔曼方程,计算状态动作值函数\(Q(s,a)\),从而构建训练集。

\[y^{(1)}=R^{(1)}+\gamma\max_{a^{(2)}}Q(s^{(2)},a^{(2)})\\ y^{(2)}=R^{(2)}+\gamma\max_{a^{(3)}}Q(s^{(3)},a^{(3)})\\ ...\\ \]

神经网络的构建

  1. 以一个随机的\(Q(s,a)\)初始化神经网络
  2. 创建训练集
    1. 采取行动,获得\((s,a,R(s),s')\)
    2. 记录最近的\(N\)个\((s,a,R(s),s')\)
  3. 训练神经网络
    1. 从最近的\(N\)个\((s,a,R(s),s')\)中选择训练集
    2. 训练得到\(Q_{new}(s,a)\)
  4. \(Q_{new}(s,a)\)替换\(Q(s,a)\)
  5. 重复2-4步骤

神经网络的优化

神经网络架构的优化

在上图中的神经网络架构中,输出为某一个动作的\(Q(s,a)\),但是这样的架构有一个缺点,就是每次只能计算一个动作的\(Q(s,a)\),而实际上,可以同时计算多个动作的\(Q(s,a)\),从而提高计算效率。

img

\(\epsilon\)-贪婪策略

在训练过程中,可以使用\(\epsilon\)-贪婪策略,即以\(\epsilon\)的概率随机选择行动,以\(1-\epsilon\)的概率选择最优行动。

采取这个策略的原因是:在训练过程中,需要一定的随机性,从而避免陷入局部最优。

小批量训练和软更新

当数据集很大时,每次更新神经网络的参数,需要计算所有的数据,这样的计算量很大,因此在训练过程中,可以使用小批量训练,即每次从训练集中随机选择一小批数据进行训练。

由于每次训练的数据都是随机选择的,因此每次训练的结果都不同,这样会导致训练结果不稳定,因此可以使用软更新,即每次更新时,使用一小部分的新参数,和一大部分的旧参数,从而保证训练结果的稳定性。

\[\theta_{new}=\tau\theta_{new}+(1-\tau)\theta_{old} \]

标签:10,函数,训练,状态,学习,强化,gamma
From: https://www.cnblogs.com/agitm/p/17780087.html

相关文章

  • Linux命令(100)之sz
    linux命令之sz1.sz介绍linux命令sz是用来把文件从Linux平台下载到Windows上2.sz用法sz[参数]filesz参数参数说明-b使用binary的方式下载,不解释字符为ascii-y相同文件名,覆盖-E相同文件名,不会将其覆盖,而是会在所上传文件后面加上.0,以此类推3.实例3.1.下载文件,相同文件名,进行覆盖命......
  • 防火墙命令学习笔记
    标准IP访问表和扩展IP访问表,区别主要是访问控制的条件不一样。标准IP访问表只是根据IP包的源地址进行标准IP防火墙标准访问控制规则格式:access-listlist-number{denylpermit}source[source-wildcard][log]而扩展IP访问控制规则的格式是:access-lis1ist-number{denylper......
  • 10-22|处理脏话其他方法
    当然,除了基本的词汇列表过滤方法,还有其他几种处理脏话的方法:1.**机器学习**: 使用机器学习模型进行文本分类,将文本分为"有毒"和"无毒"。这需要大量标注的数据,即已经被标记为有毒或无毒的文本。你可以使用开源数据集,例如Jigsaw的有毒评论分类挑战数据集。然后,可以使用模型如BER......
  • laravel:服务容器(10.27.0)
    一,相关文档:https://learnku.com/docs/laravel/10.x/container/14842二,php代码:假设我们有两种商品:虚拟商品如账号,实体商品如手办需要销售1,App\extend\mall\GoodsInterface.php1234567<?phpnamespaceApp\extend\mall;//接口interfaceGoodsInterfa......
  • laravel:服务提供者(10.27.0)
    一,相关文档:https://learnku.com/docs/laravel/10.x/providers/14843二,php代码:1,业务代码:App\extend\mall\GoodsInterface.php1234567<?phpnamespaceApp\extend\mall;//接口interfaceGoodsInterface{    publicfunctionsale();}......
  • 10.22算法
    有效的括号给定一个只包括'(',')','{','}','[',']' 的字符串s,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括号。 示例1:输入:s="()"输出:true示例 2:输入:s="()[]{}"输出:tru......
  • laravel:捕捉异常记录到日志(10.27.0)
    一,相关文档:https://learnku.com/docs/laravel/10.x/errors/14857#9e8f93二,php代码:1,代码:12345678910111213141516171819202122232425262728classNewsControllerextendsController{    //启用事务    publicfuncti......
  • laravel:定时任务(10.27.0)
    一,相关的文档:https://learnku.com/docs/laravel/10.x/scheduling/14875二,php代码:1,创建command:liuhongdi@lhdpc:/data/laravel/dignews$phpartisanmake:commandOrderStatus   INFO  Consolecommand[app/Console/Commands/OrderStatus.php]createdsucces......
  • laravel:使用tinker(10.27.0)
    一,启动与退出:liuhongdi@lhdpc:/data/laravel/dignews$phpartisantinkerPsyShellv0.11.22(PHP8.1.1—cli)byJustinHileman>exit   INFO  Goodbye.二,查询数据liuhongdi@lhdpc:/data/laravel/dignews$phpartisantinkerPsyShellv0.11.22(PHP8.1.......
  • 2023-2024-1 20231422 《计算机与程序设计》第四周学习总结
    这个作业属于哪个课程2023-2024-计算机基础与程序设计这个作业要求在哪里2023-2024-计算机基础与程序设计)这个作业的目标计算机科学概论第4章,第5章,《C语言程序设计》第3章并完成云班课测试作业正文(https://www.cnblogs.com/Augenstern4545/p/17779749.html)教......