强化学习 1

以下是对李宏毅老师 youtube视频-【机器学习2021】概述增强式学习一、二、三简要记录

https://www.youtube.com/watch?v=XWukX-ayIrs
https://www.youtube.com/watch?v=US8DFaAZcp4
https://www.youtube.com/watch?v=kk6DqWreLeU

什么是Reinforcement Learning(RL)?

  先回顾一下Supervised Learning,以图像分类任务为例,图像有标注的标签,如下图第一行所示。要训练的模型,输入Input是一张猫咪图片,输出Output是“Cat”。有十分明确的输出信息。(这里需要提到Autoencoder任务,实际上该类任务的输出与输入是一样,其实也是一种SP任务,只不过该类任务不需要标注数据而已。)

  如下图第二行所示。以下围棋为例,输入一张当前围棋局,即使对于人来说,下一步该怎么走是对的或者是最好的,这些都不确定。 当遇到类似问题,可以考虑使用强化学习,其特点是很难标注数据或者获得正确的标签,但是执行某个操作后,机器是知道结果是好的或者坏的。

RL构成

  RL系统:2个对象与3种行动,如下图所示。

  • 2个对象:Actor, Environment
  • 3种行动:Actor进行观察Observation, Actor采取行动 Action;Environment进行奖励或惩罚Reward。

  以太空入侵者游戏为例,Actor就是玩家,观察Obversation就是观看当前游戏界面,行动Action就是左移右移或者开火;Environment就是游戏机,游戏机的奖励就是界面左上角显示的分数。游戏结束条件:所有外星人都被杀死或者我方宇宙飞船被摧毁。

注:以太空入侵者为例,Actor每一步行动都会有明确的reward;而如下围棋游戏,并不是每一步都有reward,只有到游戏结束后才能知道最终的reward输或赢。

RL三步走

ML问题都可以通过以下三个步骤来完成

  • Step1: function with unknown
  • Step2: define loss from training data
  • Step3: optimization

同样的,RL也可以分解为这三个步骤。

定义函数

  以太空入侵游戏为例,最简单的一种方式,可以将要建模的任务看做是一个分类任务。输入一帧当前游戏画面,训练一个CNN网络,网络输出左移、右移、开火三种动作的概率值。

定义损失

  从游戏开始到游戏结束,称之为一个episode,整个过程中所有的奖励之和 R=t=1Trt,将负的total reward作为RL损失

优化

  Actor依次观察到的状态s和接下来采取的行动a,依次记为s1,a1,s2,a2,,在一个episode中,这些有序的状态和行动构成序列{s1,a1,s2,a2,},用字母 τ来表示,即τ={s1,a1,s2,a2,}.
  在一个episode过程中,要求总reward之和最大。优化的困难点在于

  • Actor采取的action有随机性,即使是完全相同的输入
  • Environment与Reward计算都是黑盒,也可能具有随机性

如何控制Actor的行动

  仍以太空入侵游戏来说明,如果要采取某个行动,则让对应类别概率满足交叉熵最小,反之则要最大。如下图所示。

数据是如何收集

Version 0:
  执行的at对应的那步reward值 rt 作为At。但是这种方法很短视没有考虑长远影响,比如太空入侵游戏,虽然当前的左移或者右移没有杀死外星人,但是间接带来后续行动杀死了外星人。

注:强化学习任务往往具有下述特点:

  • 一个action 影响了接下来的observation 和接下来的reward
  • 奖励延迟:Actor必须牺牲当前的reward来获取更多的长期reward

Version 1:
  针对Version 0的问题进行优化,将Actor 第t步行动 at 当前及后续所有行动的reward之和作为At. 即At=n=tTrn

Version 2:
  Version 0,Version 1可以看出两种极端。一种是当前action仅影响当前reward,一种是当前action对后续所有action产生的reward也都要归功于当前action。Version 2就是不左不右。给予越远的action产生的reward赋予越小的累加和系数,即At=n=tTγntrn

Version 3:
之前的Version0-2 还存在一个问题,就是reward没有进行归一化或者标准化。

Policy Gradient

  • 构建Actor网络参数并初始化参数为θ0
  • 迭代训练 i=1,2,,T
    • 使用actor在参数取值为θi1时去与environment进行交互
    • 获得交互数据 s1,a1,s2,a2,,sN,aN
    • 计算每步reward值A1,A2,,AN
    • 计算损失值L
    • 更新参数 θiθi1ηΔL

注:数据收集在循环内 s1,a1,s2,a2,,sN,aN是在 θi1 下收集的。这种参数下,a1,a2,,aN 产生的reward可以用于更新 θi1。当进行到θi,上次收集的s1,a1,s2,a2,,sN,aN都不适合了,即使是相同的状态s,actor采取的action也可能不同。所以要重新收集。 也正是如此,policy gradient 很耗时。

On-Policy/Off-Policy

  • On-policy: The actor to train and the actor for interacting is the same
  • Off-policy: The actor to train and the actor for interacting is different

Off-policy方法就是为了解决上述问题,使得θi1 条件下收集到的数据也可以用于更新θi,从而缓解每一次迭代都要重新收集数据问题。

PPO 视频链接: https://www.youtube.com/watch?v=OAKAZhFmYoI

Critic

Value function Vθ(s) : 在actor 参数为θ时,当观察到environment的状态s,打折扣的累积reward。这个function的目的是预测,不必等玩完整个游戏才能获得。
Vθ(s) 含义: 在观察到状态st, 后续采取的action及reward,有多种可能,对应所有可能的最终reward求期望值,这个就是Vθ(s)

如何估计Vθ(s)

基于MC方法
直接观察,但要游戏玩到结束

基于Temporal-difference TD 方法

不需要玩完整个游戏,仅仅知道st,at,rt,st+1 就可以更新参数

使用打折扣的累积reward作为当前action的奖励,因此有

Vθ(st)=rt+γrt+1+γ2rt+2+

Vθ(st+1)=rt+1+γrt+2+

由上面两个公式,可以得到相邻两次行动at,at+1的产生的reward之间关系式,即

Vθ(st)=γVθ(st+1)+rt

做一道作业

如下图所示,分别进行了8轮游戏。 观察到sb采取行动后有6次reward为1,有2次reward为0,因此期望是34,即Vθ(sb)=34。那么Vθ(sb)应该是多少呢?

  • 基于MC
    因为就观察到一次sa,且对于reward为0. 因此Vθ(sa)=0
  • 基于TD
    由于只有第1个episode同时出现了sa,sb, 而且Vθ(sa)=Vθ(sb)+r,此时r=0,因此Vθ(sa)=34
posted @   星辰大海,绿色星球  阅读(33)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示