强化学习——简单解释

一、说明

        最近 OpenAI 上关于 Q-star 的热议激起了我温习强化学习知识的兴趣。这是为强化学习 (RL) 新手提供的复习内容。

二、强化学习的定义

        强化学习是人类和其他动物用来学习的学习类型。即,通过阅读房间来学习。(从反馈中学习)。让我解释。

        作为一个幼儿,你正在积极地探索你的环境,在这个探索过程中,你采取一些行动,例如,你尝试站起来,你尝试爬行,行走,接触火,吞下泥土,(在那个年龄,我们尝试吞下一切)。我们微笑并做出可爱的鬼脸,这给我们带来了父母的拥抱和微笑的回报。我们可能会大喊大叫、发脾气,这会让我们的父母生气,甚至会导致我们暂停、延迟玩游戏。因此,我们通过我们的行动收到的反馈来学习。这就是你教你的狗行为举止的方式。通过奖励来强化其良好行为,并通过“Nooooo”来阻止不良行为。

        

来源: https: //www.wikihow.com/Teach-Your-Dog-to-Speak

        强化学习 (RL) 是机器学习 (ML) 的一种,涉及从环境收到的反馈进行学习,而不是从标记数据(如监督学习)或数据的固有属性(如无监督学习)中学习。

三、强化学习框架

        强化学习框架涉及多个方面。让我们一一看看:

        强化学习框架的重要元素来源:强化学习:简介,Richard Sutton 和 Andrew G. Barto

        代理人——行动者或决策者

        在强化学习中,学习者被称为“代理”。代理可以是一个软件,也可以是软件和硬件的组合,例如机器人。学习任务中可能有一个或多个代理。

        环境——周围环境或代理人的世界

        代理驻留在“环境”中并在其中导航。“环境”是指与代理交互的外部系统或周围环境。

        来源:抱脸深度强化学习课程

        环境状况

        在任何时候,代理都可以查看完整的配置或其环境的状态。(例如,游戏特定阶段的完整棋盘的快照)。

        在某些强化学习任务中,代理无法看到其环境的整个配置,只能看到其中的一部分(例如,在超级马里奥游戏中,代理(即玩家)无法看到整个环境,只能看到其中的一部分在特定时间。)在这种情况下,我们说智能体看到了来自环境的观察结果。

        报酬

        奖励是智能体在采取行动后从环境收到的反馈。奖励是一个数字。代理的目标是积累最大的累积奖励。

        价值

        价值是智能体从处于特定环境状态并采取特定行动时获得的累积长期奖励。因此,强化学习代理的目标是最大化其价值。

        折扣未来奖励

        对于我们人类来说,有即时的满足感,也有长期的价值。同样,对于 RL 代理来说,它在环境状态下采取行动后会立即收到奖励。并且它期望通过未来采取的行动获得累积的未来奖励(其行动的长期后果(业力,你看)。

        RL 中的折扣因子(Gamma , γ)平衡即时奖励与未来奖励。它通过确定未来奖励的权重来帮助智能体决定在任何状态下采取哪些行动。

        状态转移概率

        状态转换概率是当智能体采取特定动作时从环境的一种状态转移到另一种状态的概率。在这里,我们需要谈谈强化学习中的确定性和随机环境。

        确定性环境是指代理在特定状态下只能采取一个预先确定的操作,并且该操作会将您引导到预先确定的下一个状态。例如,如果你当前的状态是你在学校,那么唯一可能的行动就是学习。

        随机环境是代理可以选择采取多种可能行动之一的环境。每个动作都有一个代理执行的相关概率。例如,你在学校,你有 90% 的概率可以学习,你有 5% 的概率可以做运动,你有 5% 的概率可以和朋友聊天。在随机环境中,状态之间的转换存在不确定性或随机性。

        表示为P ( s '∣ s , a ) 的状态转换概率是在智能体当前处于状态s采取动作a 的情况下转换到状态 ' s ' 的概率。该概率函数捕获特定 RL 任务中代理环境的动态。

        马尔可夫性质

        在强化学习中,我们假设状态表现出马尔可夫性质。马尔可夫性质意味着系统的未来状态仅取决于当前状态和操作,而不取决于之前的事件顺序。这使得对状态转换建模变得更加容易。

        状态值函数 (V(s))

        状态价值函数V ( s ) 计算代理可以从给定状态s并采取后续行动中获得的预期累积奖励(回报或价值)。即,它衡量代理的状态价值。

        动作值函数 (Q(s, a))

        动作价值函数Q ( s , a ) 计算智能体从处于状态s、采取动作a,然后遵循特定的动作序列(策略)可以获得的预期累积奖励(回报或价值) 。它衡量在给定状态下采取特定行动的质量。

价值函数和行动价值函数帮助智能体决定进入什么状态以及采取什么行动来最大化其整体奖励。

四、笔记 

        成功的代理人是实现其目标的代理人。代理的目标是最大化其长期奖励(价值/回报)。为了实现其目标,智能体需要学习在其环境中的每个连续状态下采取最佳行动(一系列最佳/最佳行动)。最佳的行动序列是最大化累积奖励的行动序列。因此,RL 的重点是让智能体了解每一步要采取什么行动来实现其目标。关于每一步要采取什么行动的知识称为策略。

        政策

        策略(π)定义了代理用来决定在不同状态下采取哪些操作的策略或规则。它本质上是从状态到动作的映射。有两种类型的政策:

  • 确定性策略 ( π ( s )→ a ):在确定性策略中,对于每个状态,该策略精确指定要采取的一个操作。
  • 随机策略 ( π ( a ∣ s )):在随机策略中,对于每个状态,该策略定义了许多可能操作的概率分布。

        状态价值函数和行动价值函数经常用于 Q-learning 和 SARSA 等算法中,而策略在 RL 中的策略梯度方法和行动者批评方法中发挥着核心作用。

        代理必须在其环境中学习自身的最优策略。即,它需要学习在不同环境状态下的多个时间步长采取的最佳行动顺序。

        “学习”是指学习如何就在环境中采取什么行动做出正确的决策顺序。这种学习是通过从环境收到的反馈与环境交互来实现的。

        从命中和尝试开始,智能体采取行动,如果行动好,智能体会收到奖励形式的反馈,如果行动不好,智能体会受到环境的惩罚。代理的目标是最大化其累积奖励。这很像一个幼儿通过跌倒和爬起来来学习走路。或者一只狗从父母的对待或责骂中学习表现良好。

        其中心思想是让代理探索其环境,从其行为的后果中学习,并调整其行为以实现特定目标。

        因此,代理可以从随机策略开始,随机采取任何可能的动作,然后根据获得的奖励的比较,下次调整其策略。迭代细化一直持续到智能体学会了最佳的动作序列,从而在其环境中获得最大的奖励。(政策优化)。

        解决强化学习问题的两种方法是基于策略的方法和基于价值的方法。

        在基于策略的方法中,代理学习针对每种环境状态的一组可能操作的概率分布。在基于价值的方法中,代理学习一个价值函数,该函数将状态映射到该状态的期望值,然后根据贪婪策略采取行动(进入最高价值的状态)。

        政策迭代

        策略迭代是一种用于寻找最优策略的迭代方法。关键思想是交替执行两个步骤:政策评估和政策改进。

        政策评估

  • 在策略评估步骤中,评估当前策略以估计其值(),即当前策略下每个状态的预期回报。此步骤涉及迭代更新状态值,直到它们收敛到准确表示当前政策下每个状态的预期回报的稳定值。

        政策改进:

  • 在策略改进步骤中,策略被更新为相对于当前价值函数更加贪婪。考虑到在策略评估步骤中获得的估计值,选择每个状态的操作以最大化预期回报。然后将更新后的策略用于下一轮策略评估,并重复该过程。

        策略迭代将持续进行,直到策略在策略改进步骤中不再发生变化。至此,国家价值观和政策已经收敛到最优值。

五、基于模型和无模型的强化学习

        有两种不同的方法来学习代理的最佳策略,具体取决于代理是否具有环境模型。

        基于模型的强化学习

        在基于模型的强化学习中,代理构建环境的内部模型(马尔可夫决策过程,MDP)。该模型包括有关环境中可用状态、代理可能采取的操作、状态转换概率、奖励函数、未来奖励的折扣因子的信息。代理使用其学习的模型来模拟未来可能的场景,并根据这些模拟来计划其行动。代理通过根据其内部模型选择预计会产生有利结果的行动来做出决策。模型中的不准确可能会导致性能不佳。

        无模型强化学习:

        在无模型强化学习中,代理直接与环境交互,无需显式构建模型。代理不是学习环境的动态,而是通过反复试验来学习策略(策略)或价值函数(预期累积奖励)。

        无模型强化学习的关键步骤包括:

  • 探索:智能体通过采取行动来探索环境并观察结果。
  • 策略或价值函数学习:代理学习将行为与期望的结果关联起来,而无需显式地对环境进行建模。这可能涉及 Q 学习、SARSA 或策略梯度方法等技术。
  • 适应:代理根据观察到的奖励调整其策略,不断改进其决策。

        无模型强化学习在处理复杂和未知的环境方面更加灵活,但可能需要更多的探索才能发现有效的策略。

        这些方法之间的选择通常取决于问题的特征以及环境的准确模型的可用性。

        时间差分学习(TD Learning)

        时间差分(TD)学习用于训练智能体在动态环境中做出决策。它是一种无模型强化学习,代理可以从其经验中学习,而不需要环境模型。TD 学习涉及根据未来奖励的预测值和观察值之间的差异来更新价值估计。

        预测值是学习算法对某些状态或状态-动作对估计的值( Vs)或Qsa ))。真正的价值是通过与环境的相互作用获得的。在某个状态采取行动后,代理会收到奖励并转换到新状态。观察到的奖励和结果状态构成了真实值。学习算法通过将预测与实际结果进行比较来调整其预测,旨在随着时间的推移减少差异并改进决策。

        时间差异误差是预测值与真实值之间的差异,用于迭代更新预测值。更新基于当前时间步的预测值与观察到的奖励和下一时间步的预测值的组合之间的差异。

        例如,在 TD(0) 学习中,状态值函数V ( st ​) 的更新公式可能如下所示:V ( st ​)← V ( st ​)+ α [ Rt +1​+ γV ( st +1​)− V ( st ​)] 这里,α是学习率,Rt +1​是观察到的奖励,γ是折扣因子,V ( st +1​) 是下一个状态的预测值。

六、Q-学习

        Q-learning 是一种无模型 RL 算法,用于为给定的有限马尔可夫决策过程 (MDP) 寻找最优策略(为智能体提供最大奖励的策略)。Q-learning 首先估计在特定状态下采取特定行动的质量,并根据观察到的奖励更新这些估计。该算法是离策略的,这意味着它在遵循另一个(探索性)策略的同时学习单独的策略(Q 函数)。

        Q-learning的更新规则为:

        Q ( s , a )← Q ( s , a )+ α [ R + γ max ​Q ( s ′, a )− Q ( s , a )]

        这里,Q ( s , a ) 是在状态s下采取动作a的估计质量,R是观察到的奖励,γ是折扣因子,s ' 是下一个状态,α是学习率。

        深度 Q 学习(深度 Q 网络 (DQN))

        深度 Q 网络将 Q 学习与深度神经网络(深度 Q 学习)相结合,使算法能够处理具有大量状态的 RL 环境,例如图像。DQN 使用神经网络来近似 Q 函数。DQN 使用经验重放,其中过去的经验存储在重放缓冲区中,并在训练期间随机采样以打破数据中的相关性。

        DQN中的损失函数定义为:

        损失=E[( Q ( s , a )−( R + γ max a ′​ Q ( s ′, a ′)))2]

        网络经过训练,可以通过调整其参数来最小化这种损失。

        Q*(Q 星)

        Q*旨在找到最优动作价值函数Q*(s, a),它表示在状态“s”下采取动作“a”然后遵循最优策略可以获得的最大预期累积奖励。

        SARSA(状态-行动-奖励-行动-状态)

        SARSA 是另一种无模型强化学习算法。与 Q-learning 不同,SARSA 是一种在策略算法,这意味着它可以学习当前正在使用的策略的价值。

        SARSA的更新规则是:

        Q ( s , a )← Q ( s , a )+ α [ R + γQ ( s ' , a ' )− Q ( s , a )]

        这里,Q ( s , a ) 是在状态s下采取动作a的估计质量,R是观察到的奖励,s ' 是下一个状态,a ' 是下一个动作,γ是折扣因子,α是学习率。

        策略梯度法

        策略梯度方法是一类直接学习策略的强化学习算法。与旨在估计价值函数(状态值或行动值)的基于价值的方法不同,策略梯度方法直接参数化策略并更新其参数以最大化预期累积奖励。

        在策略梯度方法中,策略由一组由神经网络表示的可学习参数参数化。该策略将状态作为输入并输出动作的概率分布。随着时间的推移,对参数进行调整以提高策略的性能。

        目标函数是需要最大化的奖励总和的期望值。

        计算相对于策略参数的预期累积奖励的梯度。该梯度用于更新策略参数,以增加导致更高奖励的行动的可能性。策略优化是通过梯度上升来执行的,即更新策略参数以朝着增加预期回报的配置移动。

        为了防止过早收敛到次优策略并鼓励探索更多样化的行动空间,在目标函数中添加了与策略分布的负熵成比例的项。它被称为熵正则化。

REINFORCE算法是一种经典的策略梯度方法,它使用似然比技巧来估计预期回报的梯度。它按照梯度乘以与观察到的奖励相关的因子的比例更新策略参数。

        演员批评家方法

        Actor-Critic 方法结合了策略梯度和基于价值的方法的元素。这些算法有一个演员,它学习选择动作的策略,还有一个批评家,它评估这些动作或状态的价值。该行为者利用批评者的评估来指导其政策更新,旨在随着时间的推移改进决策。

        Actor-Critic 方法的优点是观察到的回报(实际累积奖励)与批评者估计的值之间的差异。

        Actor-Critic方法中的目标函数是Actor的策略梯度和Critic的价值函数的组合。更新参与者以最大化预期累积奖励,更新批评者以最小化其估计与观察到的回报之间的均方误差。Actor 使用策略梯度方法进行更新,例如 REINFORCE。更新与参与者参数的预期回报梯度成正比,并按优势缩放。批评者使用时间差(TD)学习进行更新。

七、强化学习的应用

        强化学习的概念可以应用于解决游戏、机器人和自动化等各个领域的问题,从而提高 ChatGPT 等大型语言模型的性能。

        有一些特定的框架和算法用于实现和训练 RL 模型,例如 Q 学习、深度 Q 网络 (DQN)、策略梯度方法等。这些算法提供了计算机制,使代理能够从经验中学习并提高决策能力。

        这是对强化学习的过于简单化的介绍。强化学习有着巨大的应用。请查看参考资料中的详细学习资料。

  1. 强化学习:简介,Richard Sutton 和 Andrew G Barto,Sutton & Barto Book: Reinforcement Learning: AnIntroduction
  2. David Sliver 的强化学习课程Teaching - David Silver
  3. 斯坦福大学强化学习课程: https: //web.stanford.edu/class/cs234/
  4. 深度 RL 拥抱脸部课程:https://huggingface.co/learn/deep-rl-course/unit0/introduction
  5. Deep Deterministic Policy Gradient — Spinning Up documentation

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/216335.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

根据YOLOv5、v8、v7训练后生成的result文件用matplotlib进行绘图

1. 效果图 2. 认识result内容 2.1 YOLOv7的result.txt 参考链接:YOLOv7结果分析,txt文件内容 0/299 14.7G 0.07522 0.009375 0.02266 0.1073 58 640 0.0002958 0…

数据结构与算法(四)分治算法(Java)

目录 一、简介1.1 背景1.2 定义1.3 步骤1.4 时间复杂度 二、经典示例2.1 二分搜索2.2 快速排序2.3 归并排序(逆序数)2.4 最大子序列和 一、简介 1.1 背景 在学习分治算法之前,我们先来举一个例子。 假如你有一个存钱罐,过年家人…

【C++】开源:Boost进程间通信库InterProcess配置使用

😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍Boost进程间通信库InterProcess配置使用。 无专精则不能成,无涉猎则不能通。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一…

Java实现简单的王者荣耀游戏

一、创建新项目 首先创建一个新的项目,并命名为wangzherongyao。 其次在飞翔的鸟项目下创建一个名为img的文件夹用来存放游戏相关图片。详细如下图: 二、游戏代码 1、创建怪物类 1.bear: package beast;import wangzherogyao.GameFrame;…

听说这样寄快递会很省钱!速来收藏!便宜寄快递!

哈喽,小伙伴们,今天介绍一个寄快递省钱的小妙招。话不多说,小编直接开整! 在闪侠惠递这个快递折扣平台下单送快递,不仅方便,而且运费更便宜。平台整合了京东、顺丰、圆通、申通、极兔、等快递公司可供选择…

Oracle 中换行chr(10)、回车chr(13)

一、前言 chr(n):返回 ascii 值对应的字符。 ascii(char):返回字符 char对应的ascii 值。 chr(n) 和 ascii(char) 作用刚好是相反的。 SQL> select chr(65) from dual; 控制台显示:ASQL> select ascii(A) from dual; 控制台显示&am…

最受好评的 Android 数据恢复软件工具

在本文中,您将找到适用于 Windows 的最佳 Android 数据恢复软件,以从 Android 恢复丢失或删除的文件。 Android 设备被广泛使用。但数据丢失在 Android 手机中也很常见。生活中,我们经常清理内存较小的安卓手机中的无效垃圾短信,…

Temu拼多多跨境电商,产品合规要求,需要的检测报告证书你了解多少?

Temu拼多多跨境电商,产品合规要求,需要的检测报告证书你了解多少?Temu 拼多多跨境电商 自拼多多Temu登录美国超级碗后,Temu已经超过亚马逊和沃尔玛,成为美国下载量最高的购物应用,Temu已然成为近期美国人民…

Netty网络编程

入门案例 1、服务器端代码 public class HelloServer {public static void main(String[] args) {// 1、启动器,负责装配netty组件,启动服务器new ServerBootstrap()// 2、创建 NioEventLoopGroup,可以简单理解为 线程池 Selector.group(n…

5. Jetson Orin Nano CUDA 配置

5. Jetson Orin Nano CUDA 配置 1:安装Jtop jtop安装主要有以下三个步骤: 安装pip3 我们需要使用pip3来安装jtop,所以先安装pip3 sudo apt install python3-pip安装jtop sudo -H pip3 install -U jetson-stats运行jtop服务 sudo -H pip3 in…

Temu数据面板:Temu商家必备的数据分析工具

在Temu这个电商平台上,越来越多的商家意识到数据分析的重要性。数据分析可以帮助商家更好地了解店铺的运营情况,从而制定更有效的运营策略,提高销售业绩。而在这个过程中,Temu数据面板成为了一个不可或缺的工具。 先给大家推荐一款…

软件测试具体人员分工

最近看了点敏捷测试的东西,看得比较模糊。一方面是因为没有见真实的环境与流程,也许它跟本就没有固定的模式与流程,它就像告诉人们要“勇敢”“努力”。有的人在勇敢的面对生活,有些人在勇敢的挑战自我,有些人在勇敢的…

springboot实现邮箱发送功能

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 邮箱效果图一、pom配置二、页面编写三、配置yml四、邮件工具类五、测试发送 邮箱效果图 1.可以利用在出现问题进行邮箱提醒 2.编写html 用于在邮箱中展示的样式 提示…

使用Java语言判断一个数据类型是奇数还是偶数

判断一个数字类型是奇数,还是偶数,只需要引入Scanner类,然后按照数据类型的定义方式进行定义,比较是按照与2进行整除后的结果;如果余数为零,则代表为偶数,否则为奇数。 import java.util.Scann…

大数据 - MapReduce:从原理到实战的全面指南

本文深入探讨了MapReduce的各个方面,从基础概念和工作原理到编程模型和实际应用场景,最后专注于性能优化的最佳实践。 一、引言 1.1 数据的价值与挑战 在信息爆炸的时代,数据被视为新的石油。每天都有数以百万计的数据被生成、存储和处理&…

微软推出AI助手Copilot的正式版本;ChatGPT:七位研究人员分享他们的观点

🦉 AI新闻 🚀 微软推出AI助手Copilot的正式版本 摘要:微软宣布其AI助手Copilot正式上线,此前Copilot的预览版已成为很多用户的日常AI伴侣。此次上线后,Copilot将继续提供AI驱动的网络聊天体验,并具备商业…

推荐系统-01-基于协同过滤的图书推荐系统(包括数据和代码)

文章目录 0. 数据下载1. 背景描述2. 预测目的3. 数据总览4. 开始处理4.1 图书4.1.1 yearOfPublication4.1.2 publisher 4.2 用户数据集4.2.1 userID4.2.2 Age 4.3 评级数据集4.3.1 统计 5. 基于简单流行度的推荐系统6. 基于协同过滤的推荐系统6.1 基于用户的协同过滤6.2 基于项…

LangChain学习指南(一)——Model IO

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、Langchain是什么?二、官方文档Langchain这么长,我怎么看?三、Model IO2.1.1prompt2.1.2LLM2.1.3 OutputParsers 前言 本…

Csharp(C#)无标题栏窗体拖动代码

C#(C Sharp)是一种现代、通用的编程语言,由微软公司在2000年推出。C#是一种对象导向的编程语言,它兼具C语言的高效性和Visual Basic语言的易学性。C#主要应用于Windows桌面应用程序、Windows服务、Web应用程序、游戏开发等领域。C…