🩴一、强化学习基础
2024-7-1
| 2024-9-3
0  |  阅读时长 0 分钟
type
status
password
date
slug
summary
category
URL
tags
icon

强化学习

强化学习(reinforcement learning,RL)讨论的问题是智能体(agent)怎么在复杂、不确定的环境(environment)中最大化它能获得的奖励。如图 1.1 所示,强化学习由两部分组成:智能体和环境。在强化学习过程中,智能体与环境一直在交互。智能体在环境中获取某个状态后,它会利用该状态输出一个动作 (action),这个动作也称为决策(decision)。然后这个动作会在环境中被执行,环境会根据智能体采取的动作,输出下一个状态以及当前这个动作带来的奖励。智能体的目的就是尽可能多地从环境中获取奖励。
notion image

强化学习的挑战

如下图是一个打砖块的游戏,强化学习的训练数据就是一个玩游戏的过程。我们从第 1 步开始,采取一个动作,比如我们把木板往右移,接到球。第 2 步我们又做出动作,得到的训练数据是一个玩游戏的序列。比如现在是在第 3 步,我们把这个序列放进网络,希望网络可以输出一个动作,即在当前的状态应该输出往右移或者往左移。这里有个问题,我们没有标签来说明现在这个动作是正确还是错误的,必须等到游戏结束才可能知道,这个游戏可能 10s 后才结束。现在这个动作到底对最后游戏是否能赢有无帮助,我们其实是不清楚的。这里我们就面临延迟奖励(delayed reward)的问题,延迟奖励使得训练网络非常困难。
打砖块的游戏,控制木板左右移动从而把球反弹到上面来消除砖块。
打砖块的游戏,控制木板左右移动从而把球反弹到上面来消除砖块。

强化学习和监督学习的区别

  1. 学习器并没有告诉我们每一步正确的动作应该是什么,学习器需要自己去发现哪些动作可以带来最多的奖励,只能通过不停地尝试来发现最有利的动作。
  1. 强化学习智能体会从环境里面获得延迟的奖励。即环境会在很久以后告诉我们之前我们采取的动作到底是不是有效的。因为我们没有得到即时反馈,所以智能体使用强化学习来学习就非常困难。当我们采取一个动作后,如果我们使用监督学习,我们就可以立刻获得一个指导,比如,我们现在采取了一个错误的动作,正确的动作应该是什么。而在强化学习里面,环境可能会告诉我们这个动作是错误的,但是它并没有告诉我们正确的动作是什么。而且更困难的是,它可能是在一两分钟过后告诉我们这个动作是错误的。所以这也是强化学习和监督学习不同的地方。
  1. 在强化学习的使用的是有时间关联的数据(sequential data), 而不是独立同分布的数据。在机器学习中,如果观测数据有非常强的关联,会使得训练非常不稳定。这也是为什么在监督学习中,我们希望数据尽量满足独立同分布,这样就可以消除数据之间的相关性。
  1. 智能体的动作会影响它随后得到的数据,这一点是非常重要的。在训练智能体的过程中,很多时 候我们也是通过正在学习的智能体与环境交互来得到数据的。所以如果在训练过程中,智能体不能保持稳定,就会使我们采集到的数据非常糟糕。我们通过数据来训练智能体,如果数据有问题,整个训练过程就会失败。所以在强化学习里面一个非常重要的问题就是,怎么让智能体的动作一直稳定地提升。

强化学习的组成

奖励是由环境给的一种标量的反馈信号(scalar feedback signal),这种信号可显示智能体在某一步采取某个策略的表现如何。强化学习的目的就是最大化智能体可以获得的奖励。

Agent

从环境中观测到状态(state)并执行某个动作(action)的对象。比如在马里奥游戏中,我们控制的马里奥角色就是智能体。
  • Policy策略函数:策略是智能体的动作模型。它的输入就是智能体观测到的状态state,然后输出各个动作的概率。策略通常用一个神经网络表示,其参数为

环境

智能体所处的环境。比如在马里奥游戏中,就是指马里奥当前所处在的游戏环境。它由状态转移概率和奖励函数两个部分组成。
  • 环境的奖励 时刻个体在状态 采取的动作 对应的奖励 会在 时刻得到。
  • 环境的状态转化模型,即在状态 下采取动作 ,转到下一个状态 的概率,表示为 。比如在马里奥游戏中,为马里奥站在砖块下面,动作为马里奥跳起,为画面中出现了蘑菇。

交互序列

从一个特定的状态state出发,一直到任务的结束,被称为一个完整的eposide,在每一步,我们都能获得一个奖励,一个完整的任务所获得的最终奖励被称为。这样,一个有个时刻的eposide,Actor不断与环境交互,形成如下的序列
notion image
这样一个序列是不确定的,因为Actor在不同state下所采取的action可能是不同的,一个序列发生的概率为:

价值函数

它帮助智能体(agent)理解在不同的状态下,采取不同行动的优劣程度。例如,在一个游戏场景中,价值函数可以评估在某个特定的局面下,选择某个动作后最终获得胜利的可能性以及所能得到的奖励大小。价值函数通常分为两种类型:
  • 状态价值函数:表示处于某个特定状态的长期价值。用数学公式表示为 ,其中 表示状态。比如说,在一个迷宫游戏中,某个特定的房间位置就是一个状态,状态价值函数会告诉智能体处于这个房间位置时,未来可能获得的累积奖励的期望值。
  • 动作价值函数:表示在某个状态下采取特定动作的长期价值。用数学公式表示为 ,其中 是状态, 是动作。以驾驶汽车为例,在某个特定的路况(状态)下,选择加速(动作)的长期价值就可以用动作价值函数来评估。
💡
价值函数的计算和更新是强化学习算法的关键步骤,通过不断与环境交互、收集奖励信息,并根据这些信息来调整价值函数的估计,智能体能够逐渐学习到最优的策略,即知道在各种状态下应该采取什么样的行动以获得最大的累积回报。

强化学习分类

基于概率 和 基于价值

基于概率是强化学习中最直接的一种,他能通过感官分析所处的环境,直接输出下一步要采取的各种动作的概率, 然后根据概率采取行动,所以每种动作都有可能被选中,只是可能性不同。而基于价值的方法输出则是所有动作的价值,我们会根据最高价值来选着动作,相比基于概率的方法,基于价值的决策部分更为铁定,毫不留情,就选价值最高的,而基于概率的,即使某个动作的概率最高,但是还是不一定会选到他。
notion image

回合更新 和 单步更新

强化学习还能用另外一种方式分类,回合更新和单步更新,想象强化学习就是在玩游戏,游戏回合有开始和结束。 回合更新指的是游戏开始后,我们要等待游戏结束,然后再总结这一回合中的所有转折点,再更新我们的行为准则。而单步更新则是在游戏进行中每一步都在更新,不用等待游戏的结束,这样我们就能边玩边学习了。
再来说说方法, Monte-carlo learning 和基础版的 policy gradients 等 都是回合更新制,Qlearning, Sarsa,升级版的 policy gradients 等都是单步更新制。因为单步更新更有效率,所以现在大多方法都是基于单步更新。比如有的强化学习问题并不属于回合问题。
💡
回合制必须游戏结束,使用智能体与模型完整的交互序列,更新智能体参数;

在线学习 和 离线学习

所谓在线学习,就是指我必须本人在场,并且一定是本人边玩边学习;而离线学习是你可以选择自己玩,也可以选择看着别人玩,通过看别人玩来学习别人的行为准则,离线学习 同样是从过往的经验中学习,但是这些过往的经历没必要是自己的经历,任何人的经历都能被学习; 或者我也不必要边玩边学习,我可以白天先存储下来玩耍时的记忆,然后晚上通过离线学习来学习白天的记忆。那么每种学习的方法又有哪些呢?
最典型的在线学习就是 Sarsa 了, 还有一种优化 Sarsa 的算法,叫做 Sarsa lambda,最典型的离线学习就是 Q learning,后来人也根据离线学习的属性,开发了更强大的算法,比如让计算机学会玩电动的 Deep-Q-Network。
💡
在线学习必须智能体亲自与环境交互,并实时跟新智能体参数;离线学习可以根据其他智能体与环境交互的数更新智能体参数
 
  • 强化学习
  • 二、马尔科夫决策过程GLU 和 SwiGLU
    Loading...
    目录