首页 > 其他分享 >强化学习 1

强化学习 1

时间:2023-11-25 15:55:50浏览次数:37  
标签:游戏 Actor 学习 cdots action theta 强化 reward

以下是对李宏毅老师 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 =\sum_{t=1}^{T} r_t\),将负的total reward作为RL损失

优化

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

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

如何控制Actor的行动

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

数据是如何收集

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

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

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

Version 1:
  针对Version 0的问题进行优化,将Actor 第\(t\)步行动 \(a_t\) 当前及后续所有行动的reward之和作为\(A_t\). 即$$A_t = \sum_{n=t}^T r_n$$

Version 2:
  Version 0,Version 1可以看出两种极端。一种是当前action仅影响当前reward,一种是当前action对后续所有action产生的reward也都要归功于当前action。Version 2就是不左不右。给予越远的action产生的reward赋予越小的累加和系数,即$$A_t = \sum_{n=t}^T \gamma^{n-t} r_n$$

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

Policy Gradient

  • 构建Actor网络参数并初始化参数为\(\theta^{0}\)
  • 迭代训练 \(i={1,2,\cdots,T}\)
    • 使用actor在参数取值为\(\theta^{i-1}\)时去与environment进行交互
    • 获得交互数据 \({s_1,a_1, s_2, a_2, \cdots, s_N, a_N}\)
    • 计算每步reward值\(A_1, A_2, \cdots, A_N\)
    • 计算损失值\(L\)
    • 更新参数 \(\theta^i \leftarrow \theta^{i-1} - \eta \Delta L\)

注:数据收集在循环内 \({s_1,a_1, s_2, a_2, …, s_N, a_N}\)是在 \(\theta^ {i-1}\) 下收集的。这种参数下,\(a_1, a_2, \cdots, a_N\) 产生的reward可以用于更新 \(\theta^ {i-1}\)。当进行到\(\theta^i\),上次收集的\({s_1,a_1, s_2, a_2, …, s_N, a_N}\)都不适合了,即使是相同的状态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方法就是为了解决上述问题,使得\(\theta^{ i-1}\) 条件下收集到的数据也可以用于更新\(\theta^{i}\),从而缓解每一次迭代都要重新收集数据问题。

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

Critic

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

如何估计\(V^{\theta}(s)\)

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

基于Temporal-difference TD 方法

不需要玩完整个游戏,仅仅知道\(s_t, a_t, r_t, s_{t+1}\) 就可以更新参数

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

\[V^{\theta}(s_t) = r_t + \gamma r_{t+1} + \gamma^2 r_{t+2} + \cdots \]

\[V^{\theta}(s_{t+1}) = r_t+1 + \gamma r_{t+2} + \cdots \]

由上面两个公式,可以得到相邻两次行动\(a_t, a_{t+1}\)的产生的reward之间关系式,即

\[V^{\theta}(s_t) = \gamma V^{\theta}(s_{t+1}) + r_t \]

做一道作业

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

  • 基于MC
    因为就观察到一次\(s_a\),且对于reward为0. 因此\(V^{\theta}(s_a)=0\)
  • 基于TD
    由于只有第1个episode同时出现了\(s_a, s_b\), 而且\(V^{\theta}(s_a) = V^{\theta}(s_b) + r\),此时\(r=0\),因此\(V^{\theta}(s_a)=\frac{3}{4}\)

标签:游戏,Actor,学习,cdots,action,theta,强化,reward
From: https://www.cnblogs.com/wolfling/p/17795796.html

相关文章

  • 信息安全系统设计与实现 学习笔记11
    《Unix/Linux系统编程》13章学习笔记网络编程简介TCP/IP协议、UDP和TCP协议、服务器—客户机计算、HTTP和Web页面、动态Web页面的PHP和CGI编程TCP/IP协议TCP/IP是互联网的基础,TCP代表传输控制协议,IP代表互联网协议。TCP/IP的组织结构分为几个层级,通常称为TCP/IP堆栈。顶层时......
  • [笔记]加州大学公开课———学会如何学习(全)
    bilibili.com/video/BV1cy4y1p7TC1-5集:专注/发散,讲解了如何使用番茄时钟25分钟,解决拖延症。大脑是通过每天不断学习才能变的更聪明。第7集一天内重复练习20次还是很容易忘记。间隔练习则会长期记录下。第8集睡眠要保持充足,不然你的脑子还是处于高压工作状态,脑子里有毒不清醒......
  • 2023-2024-1 20231402《计算机基础与程序设计》第9周学习总结
    2023-2024-120231402《计算机基础与程序设计》第9周学习总结作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里2023-2024-1计算机基础与程序设计第9周作业这个作业的目标自学计算机科学概论第10章,《C语言程序设计》第8章教材学......
  • Spring MVC学习随笔-Spring MVC介绍
    学习视频:孙哥说SpringMVC:结合Thymeleaf,重塑你的MVC世界!|前所未有的Web开发探索之旅第一章、SpringMVC的引言1.1什么是SpringMVC概念:SpringMVC是基于SpringFramework衍生而来的MVC框架,主要解决了原有MVC框架开发过程中,控制器(Controller)的问题SpringMVC是一个MVC框架MVC......
  • 2023-2024-1 20231402《计算机基础与程序设计》第9周学习总结
    2023-2024-120231402《计算机基础与程序设计》第9周学习总结作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里2023-2024-1计算机基础与程序设计第9周作业这个作业的目标自学计算机科学概论第10章,《C语言程序设计》第8章作业......
  • django学习笔记05 跨域
    跨域指的是:浏览器不能执行其他网站的脚本,从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域。跨域是由浏览器的同源策略造成的,是浏览器施加的安全限制。a页面想获取b页面资源,如果a、b页面的协议、域名、端口、子域名不同,所进行的访问行动都是跨域的。在DJ......
  • 2023-2024-1 20232428 《网络空间安全导论》第二周学习总结
    1.教材学习内容总结2.基于AI的学习......
  • 2023-2024-1-20231317计算机基础与程序设计学习第九周总结
    作业信息这个作业属于哪个课程<班级的链接>(如2023-2024-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2023-2024-1计算机基础与程序设计第九周作业)这个作业的目标<《计算机科学概论第10,11章》《C语言程序设计第8章》>作业正文https://www.cn......
  • 前端学习笔记202307学习笔记第六十七天-前端面试-switch方法
      ......
  • 前端学习笔记202307学习笔记第六十七天-前端面试-map的使用1
      ......