强化学习入门

news2024/11/28 14:50:26

简介

什么是强化学习

强化学习是一种机器学习方法,它可以帮助计算机学会在不断尝试和经验积累中做出最佳决策。用通俗的方式来说,强化学习就像是训练一只宠物狗学会做任务一样。

想象一只狗要学会取球。一开始,它可能不知道该怎么做,但主人可以使用奖励和惩罚来引导它学习。如果狗成功地取到球,主人就会给它一些小吃作为奖励。狗会记住这个行为,并在未来更努力地去取球,因为它知道这会带来奖励。如果狗一次次试图但没有成功,它可能会明白自己需要改变策略。

强化学习中的计算机也是这样学习的。它通过不断地尝试各种行动,观察结果,并根据奖励或惩罚来调整策略,逐渐学会如何在特定环境中做出最好的决策。这种方法在自动驾驶、游戏中的人工智能,以及其他需要智能决策的领域都有广泛的应用。就像训练一只宠物一样,强化学习是通过实践和反馈来提高机器的能力,使其能够在复杂的环境中做出明智的选择。

和监督学习的区别

监督学习和强化学习是两种不同的机器学习方法,它们之间有一些重要的区别:

  1. 数据标签的存在与否:

    • 监督学习:在监督学习中,存在带有明确标签或答案的训练数据。模型的任务是学习如何从输入数据中预测或分类这些标签。例如,给定一组图片和相应的标签(猫或狗),模型要学会将新的图片正确分类为猫或狗。
    • 强化学习:在强化学习中,没有明确的标签或答案。代替标签,模型需要通过与环境的互动来学会在不同的情境下做出决策,以最大化一个奖励信号。
  2. 学习方式:

    • 监督学习:监督学习是通过提供输入数据和相应的正确答案来训练模型。模型根据这些答案进行调整,目标是最小化预测错误。训练数据对模型的性能至关重要。
    • 强化学习:强化学习是通过与环境的互动和试错来学习的。模型采取行动,观察结果,然后根据获得的奖励或惩罚来调整策略。模型需要在不断的尝试中逐渐优化其行为策略。
  3. 应用领域:

    • 监督学习:监督学习通常用于分类、回归和识别任务,例如图像分类、自然语言处理中的文本分类等,其中有明确的标签可供训练。
    • 强化学习:强化学习更适用于需要做出一系列决策的任务,如自动驾驶、机器人控制、游戏玩法等。它在没有明确答案的情况下,通过学习如何最大化奖励来解决问题。
  4. 反馈类型:

    • 监督学习:监督学习依赖于明确的正误反馈,即模型的预测与真实标签之间的差异。这种反馈通常是离散的,可以明确地告诉模型何时出错。
    • 强化学习:强化学习依赖于稀疏的奖励信号,这些信号可能不是在每个时间步都提供的,而是在完成一系列动作后才出现。这种反馈通常是连续的,模型需要通过多次尝试来推断出哪些动作导致了更好的奖励。

总之,监督学习和强化学习是两种不同的学习范式,适用于不同类型的问题和应用领域。监督学习依赖于有标签的数据和明确的正误反馈,而强化学习则依赖于与环境的互动和稀疏的奖励信号来学习如何在复杂任务中做出决策。

强化学习方法汇总

Modelfree和Modelbased

Model-Free(无模型)和Model-Based(有模型)是强化学习中两种不同的方法,用于解决决策问题。它们之间的主要区别在于如何处理环境和决策的方式。

  1. Model-Free(无模型)强化学习

    • 基本思想:Model-Free方法不试图建立关于环境的内部模型,而是直接学习从状态到动作的映射,并基于已经观察到的经验来做出决策。

    • 工作方式:模型无关的方法通常使用价值函数(Value Function)或策略函数(Policy Function)来表示决策策略。这些函数告诉智能体在给定状态下应该选择哪个动作以最大化累积奖励。

    • 优点:无模型方法通常更适用于复杂的、不确定的环境,因为它们不需要对环境的内部工作方式进行建模。它们可以通过不断尝试来学习最佳策略。

    • 示例应用:Q-learning、Deep Q-Networks(DQN)等都是无模型强化学习方法的示例。

  2. Model-Based(有模型)强化学习

    • 基本思想:Model-Based方法试图建立一个关于环境的内部模型,这个模型可以模拟环境的动态,包括状态转移和奖励的生成。

    • 工作方式:有模型方法首先学习环境模型,然后使用模型来进行规划和决策。通过模拟环境,它们可以在不实际执行动作的情况下预测未来可能的状态和奖励,并选择最佳的动作。

    • 优点:有模型方法通常更高效,因为它们可以使用模型来规划未来的决策,而不必在实际环境中进行大量的试错。这些方法通常在数据效率上表现较好。

    • 示例应用:Monte Carlo Tree Search(MCTS)、Model Predictive Control(MPC)等都是有模型强化学习方法的示例。

选择Model-Free还是Model-Based方法通常取决于问题的性质和可用的数据。在不确定性高、模型复杂或者数据稀缺的情况下,Model-Free方法可能更适合。而在可建模且可控制的环境中,Model-Based方法可能更有效。有时候,这两种方法也可以结合使用,以充分利用它们的优势。

基于概率和基于价值

在强化学习中,基于概率和基于价值是两种不同的方法,用于建立决策策略和指导智能体的行为。以下是它们的介绍:

  1. 基于概率的方法

    • 基本思想:基于概率的方法关注的是建立一个策略函数(Policy Function),该函数定义了在每个状态下采取每个可能动作的概率分布。智能体根据这个概率分布来选择动作。

    • 工作方式:策略函数可以是确定性策略,即给定状态总是选择相同的动作,也可以是随机性策略,即给定状态下选择动作的概率分布。智能体根据这些概率来做出决策。

    • 优点:基于概率的方法可以处理不确定性,并允许智能体在相同状态下采取不同的行动,以便更好地探索环境。它们也适用于连续动作空间的问题。

    • 示例应用:策略梯度方法(Policy Gradient Methods)是基于概率的方法的典型示例,它们通过最大化累积奖励来更新策略参数。

  2. 基于价值的方法

    • 基本思想:基于价值的方法侧重于估计每个状态或状态-动作对的价值,即它们对于实现累积奖励的贡献有多大。这些价值函数用于指导动作选择。

    • 工作方式:有两种主要类型的价值函数,一种是状态值函数(State Value Function),用于估计在某个状态下能够获得的期望累积奖励;另一种是动作值函数(Action Value Function),用于估计在某个状态下采取某个动作后能够获得的期望累积奖励。

    • 优点:基于价值的方法可以提供更具体的指导,告诉智能体在每个状态下应该采取哪个动作或者在哪个状态下更有价值。它们通常在数据效率上更高,因为它们可以使用状态的价值信息来规划决策。

    • 示例应用:Q-learning和Deep Q-Networks(DQN)是基于价值的方法的典型示例,它们估计状态-动作对的价值,并根据最大化估计的价值来选择动作。

选择基于概率还是基于价值的方法通常取决于问题的性质和需要。基于概率的方法适用于处理随机性较大的问题,而基于价值的方法更适合于需要具体的动作建议和规划的问题。有时候,这两种方法也可以结合使用,以充分利用它们的优势。

回合更新和单步更新

在强化学习中,回合更新(Episodic Updates)和单步更新(Online Updates)是两种不同的策略,用于更新智能体的学习模型(例如价值函数或策略函数)。它们有不同的更新时间点和应用场景:

  1. 回合更新(Episodic Updates)

    • 基本思想:回合更新是指在每个完整的任务或回合结束后才进行模型的更新。在这种方法中,智能体需要完成一个完整的任务,然后根据任务的结果来调整学习模型。

    • 工作方式:智能体收集经验并执行一系列动作,直到任务结束。一旦任务结束,智能体会回顾整个任务的经验,然后使用这些经验来更新模型参数,以改进未来的决策策略。

    • 应用场景:回合更新通常用于在每个任务或回合之后进行学习,适用于离散任务或那些可以分为不同回合的连续任务,例如棋类游戏或机器人导航。

  2. 单步更新(Online Updates)

    • 基本思想:单步更新是指在每一步操作后都对模型进行更新。在这种方法中,智能体在每个时间步都学习并更新模型,而不必等待整个任务结束。

    • 工作方式:智能体在执行每个动作后,会立即观察到奖励信号并更新模型参数。这样,模型可以在任务进行中实时地调整决策策略。

    • 应用场景:单步更新通常用于连续任务,尤其是那些需要实时决策的情况,例如自动驾驶或实时游戏。

选择回合更新还是单步更新取决于问题的性质和要求。回合更新通常对于离散任务或任务可以划分为不同回合的情况更为适用,因为它们在任务结束后才进行一次学习,可以更好地考虑长期的奖励。而单步更新适用于需要实时决策的连续任务,因为它们允许智能体在任务进行中及时适应变化的环境。在实际应用中,有时候也可以结合使用这两种更新策略,以兼顾长期和实时决策的需求。

在线学习和离线学习

在线学习(Online Learning)和离线学习(Offline Learning)是两种不同的机器学习方法,它们关注数据的获取方式和学习模型的时间点。以下是它们的介绍:

  1. 在线学习(Online Learning)

    • 基本思想:在线学习是一种持续学习的方式,模型会在不断产生新数据的情况下逐步更新自己。模型会在实时或连续产生的数据流中进行学习,而不需要事先存储所有数据。

    • 工作方式:在在线学习中,模型接收一个样本(数据点)后,立即进行学习和参数更新。然后,模型可以丢弃该样本,继续接收下一个样本。这个过程是连续的,模型不会停止学习,以适应新的数据和变化的环境。

    • 应用场景:在线学习适用于需要实时更新和适应性的任务,如在线广告点击预测、机器人控制、金融交易等领域。模型在不断变化的数据流中进行学习,以保持其性能。

  2. 离线学习(Offline Learning)

    • 基本思想:离线学习是一种批量学习的方式,模型在已经收集好的数据集上进行学习和训练。数据集通常是固定的,不再添加新数据。

    • 工作方式:在离线学习中,模型首先获取整个数据集,然后在这个数据集上进行批量学习。一旦模型完成了学习过程,它通常不会再使用这个数据集,除非需要重新训练。

    • 应用场景:离线学习适用于那些数据不再改变或只会定期更新的任务。例如,通过历史销售数据来预测未来销售趋势,或者通过固定的数据集进行图像分类。

选择在线学习还是离线学习取决于问题的性质和可用的数据。在线学习适用于需要实时性和持续适应性的任务,而离线学习适用于那些数据不再改变或只有周期性更新的任务。在实际应用中,有时候也可以将两者结合使用,例如,使用离线学习在静态数据集上进行预训练,然后通过在线学习来进行模型的在线微调。

Q-learning

什么是Q learning

行为准则

Q-learning的行为准则可以用一句通俗易懂的话来概括:

Q-learning告诉智能体在每种情况下,应该选择哪个动作以便获得最多奖励。

具体来说,Q-learning使用一个叫做Q值的表格,其中每一行表示一种情况(也叫状态),每一列表示可选的动作。每个单元格中的数字表示采取某个动作后,可以获得的奖励预期值。

智能体在每个时刻根据当前情况,查看Q值表格,然后选择具有最高Q值的动作。但为了探索新的可能性,有时候它也会随机尝试其他动作。随着不断的尝试和奖励的反馈,Q-learning会逐渐调整Q值,以便在每种情况下做出最优的动作选择。

通过这种方式,Q-learning可以帮助智能体在不断的学习和尝试中,逐渐学会如何在复杂的环境中做出明智的决策,以最大化累积的奖励。这就像是一个人在不断的试错中学会了在每种情况下采取最好行动一样。

Q表

Q-learning 的行为准则 Q 表格是通过不断地在智能体与环境互动的过程中进行更新和提升的。下面是关于如何更新和提升 Q 表的整理:

  1. Q 表的初始化

    • 首先,Q 表格被初始化为初始值,通常可以将所有 Q 值初始化为零或其他合适的初始值。
  2. 智能体与环境的互动

    • 智能体从一个起始状态(s1)开始,根据当前的 Q 表格选择一个动作(a1或a2)并执行它。
    • 智能体观察到环境的反馈,包括奖励(reward)和新状态(s2),并将这些信息用于更新 Q 表格。
  3. Q 值的更新

    • 根据 Q-learning 更新规则,Q 表格中的 Q 值根据以下公式进行更新:
      在这里插入图片描述
  4. 重复迭代

    • 重复上述过程,智能体与环境不断互动,每一步都选择动作并更新 Q 表格。
    • 随着时间的推移,Q 表格会根据不断的经验更新,其中包含了在不同状态下采取不同行动的最佳策略。
  5. 探索和利用

    • 在更新 Q 表时,通常使用 ε-贪婪策略来平衡探索(尝试新动作)和利用(选择最佳动作)的需求。ε 表示在一部分时间内随机选择动作的概率,以便智能体可以继续探索环境。

通过这个过程,Q-learning 的行为准则 Q 表格逐渐收敛到最优策略,使智能体能够在不断的尝试和学习中,做出最优的决策以最大化累积的奖励。这就是 Q-learning 如何通过不断更新 Q 值来提升决策策略的方式。

Q-learning使用Q表格来记录每种情况下采取不同动作的预期奖励值。通过贝尔曼方程的迭代,可以将Q值向未来的状态传播,形成一个关于状态的长期奖励观念。

  • 初始时,Q值被初始化为一些初始值,通常为零。
  • 当智能体与环境互动时,它会选择动作并观察奖励和新状态。
  • 智能体使用贝尔曼方程来更新Q值,这个方程考虑了当前奖励以及在未来状态下选择最佳动作可能带来的奖励。
  • 贝尔曼方程的 γ(折扣因子)部分代表了时间的衰减效应。当 γ 为1时,Q值考虑未来所有奖励。当 γ 为0时,智能体只关注当前奖励。
  • 随着γ从0变化到1,可以将其视为机器人逐渐获得更好的“眼镜”,能够看到未来奖励,并逐渐变得有远见,不仅考虑眼前的奖励,还为自己的未来着想。

总之,Q-learning通过迭代地更新Q值,考虑未来奖励和折扣因子γ的影响,使智能体能够学会长期最优决策策略,类似于具有不同度数“近视”的机器人逐渐变得有远见,更好地规划未来行动。

举个小例子

-o---T
# T 就是宝藏的位置, o 是探索者的位置

有个大概的 RL 概念就行, 知道 RL 的一些关键步骤就行, 这节的算法不用仔细研究。

预设值

import numpy as np
import pandas as pd
import time

N_STATES = 6   # 1维世界的宽度
ACTIONS = ['left', 'right']     # 探索者的可用动作
EPSILON = 0.9   # 贪婪度 greedy
ALPHA = 0.1     # 学习率
GAMMA = 0.9    # 奖励递减值
MAX_EPISODES = 13   # 最大回合数
FRESH_TIME = 0.3    # 移动间隔时间

Q表

def build_q_table(n_states, actions):
    table = pd.DataFrame(
        np.zeros((n_states, len(actions))),     # q_table 全 0 初始
        columns=actions,    # columns 对应的是行为名称
    )
    return table

定义动作

# 在某个 state 地点, 选择行为
def choose_action(state, q_table):
    state_actions = q_table.iloc[state, :]  # 选出这个 state 的所有 action 值
    if (np.random.uniform() > EPSILON) or (state_actions.all() == 0):  # 非贪婪 or 或者这个 state 还没有探索过
        action_name = np.random.choice(ACTIONS)
    else:
        action_name = state_actions.argmax()    # 贪婪模式
    return action_name

b=choose_action(2,a)
print(b)

这是一个选择动作的函数,根据 Q-learning 的 epsilon-greedy 策略来选择动作。让我解释其中的步骤:

  1. state_actions = q_table.iloc[state, :]:这一行代码从 Q 表格 q_table 中选取了给定状态 state 对应的行(即某个状态下所有可选动作的 Q 值)。

  2. (np.random.uniform() > EPSILON) or (state_actions.all() == 0):这是 epsilon-greedy 策略的一部分,它决定了在选择动作时是采取贪婪策略(根据 Q 值来选择最优动作)还是随机策略(随机选择动作)。

    • 如果 (np.random.uniform() > EPSILON) 为真,意味着以概率 1 - EPSILON 采取随机策略。这是为了探索新的动作。

    • 或者如果 (state_actions.all() == 0) 为真,意味着当前状态下的所有动作的 Q 值都是0,也采取随机策略。这是为了确保每个状态至少被探索一次,避免陷入局部最优解。

  3. 如果上述条件不满足,即既不是随机策略也不是贪婪策略,那么将采取贪婪模式,选择具有最高 Q 值的动作,即 action_name = state_actions.argmax()

总之,choose_action 函数根据 epsilon-greedy 策略来选择动作,平衡了探索(随机选择)和利用(选择最优动作)的需求。这是 Q-learning 算法中重要的一部分,有助于智能体在学习过程中逐渐优化决策策略。

环境反馈S_,R


环境更新


强化学习主循环

下面的内容, 大家大概看看就行, 这节内容不用仔细研究


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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

回顾Softing 2023工博之旅精彩瞬间

2023年9月23日,为期5天的第23届中国国际工业博览会(CIIF)于上海国家会展中心圆满落幕。Softing作为PROFIBUS创始人之一,德国工业4.0的领军企业之一,在本次展会上向大家呈现了众多工业自动化及IT网络方面的领先产品及方…

深度学习笔记之优化算法(四)Nesterov动量方法的简单认识

机器学习笔记之优化算法——Nesterov动量方法的简单认识 引言回顾:梯度下降法与动量法Nesterov动量法Nesterov动量法的算法过程描述总结 引言 上一节对动量法进行了简单认识,本节将介绍 Nesterov \text{Nesterov} Nesterov动量方法。 回顾:…

在SOLIDWORKS搭建一个简易的履带式机器人

文章目录 前言一、构建模型基本单元二、搭建车体模块三.插入轮子4.构建履带 前言 趁着十一假期,在solidworks中搭建了一个履带式机器人小车,计划将其应用在gazebo中完成多机器人编队的仿真。 一、构建模型基本单元 构建底板(a面&#xff09…

第六讲:构建类的事件(下)

《VBA中类的解读及应用》教程【10165646】是我推出的第五套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。 类,是非常抽象的,更具研究的价值。随着我们学习、应用VBA的深入&#xff0…

.some方法、vh、多列布局、DNS域名解析过程、空页面文字内容渲染

nodeEndTime.some((time) > !!time) 这个方法主要用来判断nodeEndTime这个数组中是否有至少一个非假值的元素。它会遍历 nodeEndTime 数组中的每个元素,如果至少有一个元素是真值(不是 null、undefined、0、false 或空字符串等假值&#x…

Flutter学习笔记

此篇文章用来记录学习Flutter 和 Dart 相关知识 零.Dart基本数据类型 Dart 是一种静态类型的编程语言,它提供了一系列基本数据类型,用于存储和操作不同种类的数据。以下是 Dart 中的一些基本数据类型以及它们的详细介绍: 1. 整数类型&#…

python学习——各种模块argparse、os、sys、time、re、sched、函数体

python学习——各种模块argparse、os、sys、time、re、sched、函数体 各种模块学习1. python脚本2. argparse模块:撰写帮助文档,命令行参数定义等3. os模块:用于文件/目录路径或名字的获取4. sys模块:用于对命令行参数进行获取处理…

车企“新四化”之——安全高效的电动汽车和混动汽车高压测量方案

一 背景 汽车行业正经历着“新四化”从概念向实际转化的过程(新四化即电动化、智能化、网络化、共享化),各大车企也将调整发展布局,而混合动力及电动汽车自然就成为了主要关注点。 对于混合动力汽车(PHEV&#xff09…

ReentrantLock锁与AQS的联系

请先看——————>AQS的简单说明 ReentrantLock底层是基于AQS实现的,在并发编程中可以实现公平锁和非公平锁来对同步资源进行控制,默认是非公平锁,并且是可重入锁。 1.ReentrantLock的体系关联结构 2.构造方法 可以发现ReentrantLock…

Spring Security——基于前后端分离项目的使用(安全框架)

1.简介 Spring Security有一个过滤器链,也就是说原本在拦截器和过滤器里面做的事都可以用Spring Security完成,比如验证token和将用户id存入线程上下文局部变量等等。 入门案例 创建项目并勾选依赖 最基本的要这两个依赖即可 新建一个Controller层的…

Dubbo v Spring Cloud:两大技术栈如何选型?

Java全能学习面试指南:https://javaxiaobear.cn 提到微服务开源框架,不可不说的是 Dubbo 和 Spring Cloud,这两大框架应该是大家最熟悉的微服务解决方案,也是面试中的热点。今天我们梳理下 Dubbo 和 Spring Cloud 的应用特性&…

win10 U盘安装教程

一年内,第三次重装电脑了,我必须要写一份教程了。从制作U盘开始,到重装系统,全部都记录一下,以备不时之需。 首先,找一个U盘,如果U盘内有需要文件,请自行备份,因为这个U盘…

“双节”出游,VR智慧景区让你的旅游更具“心价比”

中秋国庆八天长假落幕,全国旅游消费市场人气旺、活力足,黄金周旅游消费的变化凝结成为新的文旅趋势,更多的游客会选择人少、景美、价优的错峰游,为了享受品质游玩,VR全景展示为众多游客带来旅游新体验,让你…

分类预测 | MATLAB实现KOA-CNN-BiLSTM开普勒算法优化卷积双向长短期记忆神经网络数据分类预测

分类预测 | MATLAB实现KOA-CNN-BiLSTM开普勒算法优化卷积双向长短期记忆神经网络数据分类预测 目录 分类预测 | MATLAB实现KOA-CNN-BiLSTM开普勒算法优化卷积双向长短期记忆神经网络数据分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.MATLAB实现KOA-CNN-BiLST…

洗地机怎么选?2023年洗地机推荐

洗地机结合洗地、拖地、扫地的功能,在日常生活中备受关注,他能帮助我们更加节省时间和节省体力,但是面对参差不齐的洗地机市场如何选到适合自己的呢,下文整理了几款非常值得入手的性价比型号,供大家选择参考。 一、CE…

SpringBoot项目创建

创建SpringBoot项目: 选择maven项目,选择Java版本 选择springboot版本(这里随便选择,后面会进行更改,用不到这么高的版本),选择所需要的对应工具。 然后下一步即可。 配置修改 ,结构…

7346-2015 控制电机基本外形结构型式

声明 本文是学习GB-T 7346-2015 控制电机基本外形结构型式.pdf而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了控制电机的机座号、外形及安装尺寸、轴伸型式、出线方式、标记及铭牌。 本标准适用于各类控制电机(以下简称电机),其…

漏洞复现--中远麒麟堡垒机SQL注入

免责声明: 文章中涉及的漏洞均已修复,敏感信息均已做打码处理,文章仅做经验分享用途,切勿当真,未授权的攻击属于非法行为!文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直…

性能监控-微服务链路追踪skywalking搭建

中文文档:hong设置 (skyapm.github.cio) 参考:微服务链路追踪SkyWalking的介绍和部署_skywalking部署_技术闲聊DD的博客-CSDN博客 参考:链路追踪SkyWalking整合项目以及数据持久化_skywalking 持久化_技术闲聊DD的博客-CSDN博客 Liunx部署skywalking以…

python每日一练(2)

🌈write in front🌈 🧸大家好,我是Aileen🧸.希望你看完之后,能对你有所帮助,不足请指正!共同学习交流. 🆔本文由Aileen_0v0🧸 原创 CSDN首发🐒 如…