定义一个策略网络,来接受输入,并决定什么输出
不断的在环境和执行的action之间切换,最后获得一个总的reward(每一步的reward加起来),是我们要最大化的东西。
reward是一个function,把s1(observation)和a1(action)当作输入,r1当作输出
我们要learn network里的参数,让R越大越好
但是RL没有一般的深度学习那么简单,主要难在以下几点:
所以没办法用梯度下降的方式来训练
定义Loss为输出的 α \alpha α,与我们想要他进行的 α ^ \hat{\alpha} α^(比如这里是希望他向左),计算交叉熵,其结果就是loss,然后我们希望actor中的参数能让loss最小
这样用一个训练分类器的方法,大致就是可以去控制actor
这里就是给定s1和a1后,给出一个参数A1,用于判断a1这个行为对于当前s1这个环境,是正确的决定,还是不要执行的决定。而且有一个正确/错误的程度。
前面这个A的值只是±1,现在有大小区别
至于这个数据是如何产生的,这是后面要讨论的问题
跑很多个episode,然后进行每个pair的评估,将对应reward的值作为评估结果。
不过这样有个问题,这样是一个短期的评估,他没有长期的规划,只知道“一时爽”。
具体的操作
data collection是在for循环,这个训练里面的
一个重要的技巧
与环境互动的这个actor的随机性非常重要,这个actor多尝试,我们才能获取更大范围的资料,行为对应的reward,更好的训练。
全视频最好笑的地方
配音大师 39:39
Critic 是 Actor-Critic 方法中的一部分,主要用于评估给定的Actor(即策略)的性能
对于同一个s,不同的actor θ \theta θ,其V值不同
值函数:这是一个由Critic学习的函数,用来估计在策略θ下,在状态s开始并遵循该策略能获得的折扣累积奖励。这个值函数预测了从当前状态s开始,未来所有可能收到的奖励的当前价值。
值函数表示一个策略在特定状态s下的期望收益。它是一个平均的结果,因为它试图总结在该状态下,遵循特定策略可能导致的所有可能的未来路径的预期回报。
对于一个s,一个a会得到多种可能的汇报,而V是一个期望值
选择MC方法还是TD方法取决于应用的特定需求,包括环境的特性、是否有明确的episode边界、以及学习的速度需求等。在实际中,强化学习的策略往往需要根据具体问题进行调整和优化。一些高级的算法如Actor-Critic方法,实际上结合了两种方法,使用TD方法来估计Critic的价值函数,同时使用Policy Gradient方法(可能基于MC的思想)来更新Actor的策略。
对于version3来说,如何设置b的值。这里给他设置为V(s)
learn出一个Critic后,对应每个s,都有V值
为什么这样做
Version 4
根据训练好的Critic(相当于预测模型),可以直接根据 s t + 1 s_{t+1} st+1得到 V θ ( S t + 1 ) V^{\theta}(S_{t+1}) Vθ(St+1)
这个版本与前面版本的主要区别在于它不等待整个序列(或episode)结束来计算回报 、G,而是使用当前步骤的即时奖励和对下一个状态的值估计来更新。
意思是什么呢
有一些我对概念的困惑,问了问gpt。
Actor:强化学习算法中的决策实体,负责根据当前环境状态选择动作。在Actor-Critic架构中,actor是指那部分网络,其目标是通过学习来优化策略参数 ( θ \theta θ ),以最大化期望奖励。
**Action ( $a_t KaTeX parse error: Can't use function '\)' in math mode at position 1: \̲)̲**:在每个时间步 \( t $) 智能体所执行的具体操作。动作是智能体与环境交互的手段,智能体的目标是通过选择最优动作来最大化其长期奖励。
- Actor像是一个分类器,要经过训练,最后输出多个可能的Actions,并且带有每种Action 的概率。最后决定使用的Action是从中sample出来的。
策略参数 ( $\theta $):定义智能体策略的参数集,通常在基于模型的强化学习中,( θ \theta θ ) 表示神经网络的权重和偏置。这些参数确定了智能体在特定状态下各个动作的选择概率。
动作选择过程:智能体(actor)观察当前环境状态 ($ s_t $),并使用其策略参数 ( $\theta KaTeX parse error: Can't use function '\)' in math mode at position 1: \̲)̲ 来决定动作 \( a_t $) 的概率分布。然后智能体从这个概率分布中采样,以选择下一步要执行的具体动作。
总结如下:
智能体(Actor)使用其策略参数 ($ \theta$ ) 来决定在特定环境状态 ( s t s_t st ) 下的动作概率分布,并从中选择动作 ( a t a_t at ),这个动作随后会影响环境,产生新的状态和奖励。这些信息被用来更新策略参数 ($ \theta$ ),从而优化未来的动作选择。
如果有某些observation是没观察到过的话,就没办法训练
训练技巧
在Actor-Critic强化学习架构中,"Actor"和"Critic"是两种不同的网络组件,但它们可以共享一些参数:
Actor:负责选择动作的网络部分,它输出在给定状态下执行每个可能动作的概率。在上图中,Actor根据输入的状态 ( s ) 输出三个动作:“left”, “right”, 和 “fire”。
Critic:评估当前策略价值的网络部分,它输出一个标量值,表示当前状态或者状态-动作对的预期回报。Critic的输出有助于指导Actor的训练,通过评价Actor选取动作的好坏。
共享参数:Actor和Critic可以共享一些底层的网络参数。在这种情况下,一个单独的网络会首先处理输入状态 ( s ),然后分别为Actor和Critic生成特征表示。这种共享结构的好处是可以减少模型的总参数数量,同时让Actor和Critic能从相同的状态表示中学习,这可能会导致更快的学习和更好的泛化能力。
图中所示的“Tip of Actor-Critic”表明,在设计Actor-Critic网络时,可以让Actor和Critic共享一些(通常是底层的)网络层。这种方法被认为可以提高学习效率和减少所需的计算资源。
在RL中,有一种犀利的做法,是只知道Critic就可以决定Action。其中最知名的就是DQN
对于某些任务,假设reward几乎都是0,只有某些情况有巨大的reward。这时候我们就提供格外的reward帮助训练,叫做Reward Shaping。类似望梅止渴
再举一个例子
所以reward shaping需要较强的domain knowledge,对问题本身和环境有足够的见解。才能更好的使用。
有时候人定的reward不见得是最好的,容易让机器产生出人类意想不到的结果。
所以在没有reward的时候,有一种训练方式Imitation Learning。
但是如果只是单纯的让机器模仿人类的动作,在机器能力有限的情况下,容易造成更大的问题,机器不知道哪些该学哪些不该学。
于是又有一个新的技术Inverse reinforcement learning,让机器自己定reward。
反转的
举一个算法例子
更加形象的表达这个过程
专家 ( π ∗ \pi^* π∗ ):这是执行任务的最佳方式的模型或实体。专家的策略 ( π ∗ \pi^* π∗ ) 生成了优化的轨迹集合 ( { τ 1 ∗ , τ 2 ∗ , . . . , τ K ∗ } \{\tau_1^*, \tau_2^*, ..., \tau_K^*\} {τ1∗,τ2∗,...,τK∗} ),这些轨迹表示在特定任务中的最佳行为序列。
奖励函数 R:IRL的目标是从专家的轨迹中推断出这个函数。奖励函数是一个映射,它将每一个轨迹映射到一个数值上,该数值表示轨迹的好坏。在这个框架中,我们希望找到一个奖励函数,使得专家轨迹的总奖励大于其他可能的轨迹 ($ \tau$ ) 的总奖励。
Actor ( $\pi $):一旦获得了奖励函数,就会使用强化学习来训练一个智能体(Actor),使其能够基于这个奖励函数采取行动。Actor在这里充当了Generator的角色,尝试生成与专家轨迹相似的行为。
生成器和鉴别器:这个概念类似于生成对抗网络(GAN)中的概念。智能体(Actor)作为生成器尝试生成数据(轨迹),而奖励函数在这里可以看作是鉴别器,用于区分生成的轨迹和专家轨迹的质量。