当前位置: 首页 > article >正文

基于西湖大学强化学习课程的笔记

放在前面 课程链接
2024年12月30日
前言:强化学习有原理部分的学习,也有与实践相关的编程部分。我认为实践部分应该是更适合我的,不过原理部分也很重要,我目前是准备先过一过原理。
应该花多少时间学习这部分呢?
但是这个视频强调了, 放弃速成的想法。把时间线放长,给自己更充裕的时间。
强化学习的数学性比较强,系统性比较强。
在学习的时候不要带着问题去学习,停下来多想想,放松心态。
给自己二十天的时间去学习(如果每天能学习两三个小时)。学得快不是目的:把基础打牢,让自己对强化学习的理解尽可能深刻一些,然后在配上一些实践,就可以去阅读论文了。据说这样就不会有很大的障碍了。
扎扎实实的往前走,其实才是更高效的。

第一天的学习:

一、脉络图

这个图包含了基础的工具以及方式

第一章:

基础概念介绍

第二章:贝尔曼公式

需要搞明白一个概念:state value
和一个工具:贝尔曼公式(求解贝尔曼公式,进而得到一个策略所对应的状态值,这个过程就是策略评价)
一个很基础的概念:我评价一个策略,得到它的值-》基于这个值-》改进策略-》循环———得到一个最优的策略。
第三章:MC
贝尔曼最优公式:其实是贝尔曼公式的一个特殊情况。每一个贝尔曼公式都对应一个策略,最优公式也对应了一个策略——最优策略。我们研究贝尔曼公式就是 因为他和最优策略有关系
强化学习的终极目标: 求解最优策略。
学习第三章需要掌握两个概念:optimal policy(定义:沿着它能得到最大的状态值)和optimal state value
和一个工具: 贝尔曼最优公式。要花比较多的精力去学习理解这个概念, 越深刻越好
分析这个式子用了用到了不动点原理——>告诉了我们这个式子两个方面的性质:
  • 最优策略是否存在的问题——一定是存在的(最优的策略不一定是唯一的,但是最优的状态值是唯一的——最优的策略有可能是确定性的,也有可能是随机性的。但是一定会存在最优策略)

第四章

第一批能够求解最优策略的方法:
  • 值迭代(该算法就是能求解贝尔曼最优公式的算法)
  • 策略迭代
  • 统一的表达方式(上面的两个情况是这个的极端情况)
这三个算法的共同特点:他们是迭代式的算法,并且在每个迭代步骤中都有两个子步骤:
策略迭代(通过一个值进行策略评价,来改进这个策略)和值迭代。 这两个步骤会不断地迭代,最后找到最优策略。
这样的思想不仅仅是在第四章当中,所有的强化学习算法都在这样做。只不过具体的算法形式可能不同。
这个算法是需要模型的,但是没有模型怎么办呢?这样就来到的第五章。

第五章:蒙特卡洛

是最简单也是第一个不需要模型就能找到最优策略的方法。
从第四章到第五章有一个鸿沟:我第一次要面对没有模型的情况,没了模型我应该怎么办呢?
这三个算法难度依次增加。
  • MC Basic:实际上是把第四章中的Policy Iteration依赖于模型的那部分拿掉,换成依赖于数据的,放进去就得到了MC Basic。但是这个算法实际中不能用,因为效率非常低。(强化学习真的是一环扣一环,学MC需要先学Policy iteration,然后还要先学Value iteration,还要先学贝尔曼最优等等递归——所以要打好基础

第六章:随机近似理论

  • 在学习的时候会有一个鸿沟:从非增量(将所有的数据都采集到了再求平均,)到增量(一开始会有一个估计,得到一个采样就用一个采样来跟新这个估计,慢慢的估计就会越来越准,这样就不用等待大量数据收集齐了再用,这样在收集信息的时候就可以有一些信息来使用)
  • 估计一个随机变量(用这个例子来理解什么事增量什么是非增量)
  • 介绍了三个算法:
  • RM算法:实际上是在求解一个简单的g(w)=0的一个方程,但是不需要知道g(w)长什么样
  • SGD:随机梯度下降。SGD其实是一个特殊的RM算法
  • 比较SGD,BGD,MBGD算法之间进行了比较
  • 第六章需要掌握:增量式算法的思想以及SGD算法思想。

第七章:时序差分方法

时序差分方法是强化学习中非常经典的方法
  • 用TD的方法来学习state values(之前是用MC的方法来学习,第四章是用模型计算state value)
  • 用TD的思想来学习action value(Sarsa),通过这个得到action value-》通过这个value来跟新策略-》循环
  • Q-learning算法:是一个off-policy算法(behavior policy是不同的,好处就是可以用别的策略生成的数据拿过来学习,得到最优的策略)
  • 介绍一个统一化的视角(我们所学算法的类似的)

第八章:value-gradient

第八章引入了一个函数进来, 神经网络就是函数的一个很好的表达方式,首次将神经网络引入到强化学习中。
  • 有一个比较大的鸿沟:从表格类型的数据到函数类型的数据
  • (value function approximation近似)VFA算法(实现state estimation):1、明确一个目标函数 2、求这个目标函数的梯度 3、通过梯度上升或者下降来对目标函数进行优化(找到一个最优的w,使得函数能够很好的表达近似真实的vpi(s))
  • VFA算法与sarsa算法结合
  • 与Qlearning结合
  • 与deep Qlearning结合(DQN)

第九章:policy-gradient

gap:第八章往前都是value-based的方法,第九章到第十章变成了policy-based的方法。第八章的目标函数是值函数j(w),我要跟新值函数的参数使这个值函数能很好的近似估计出来一个策略的值,在这个基础之上我再跟新策略,得到新的策略(循环)。
而policy-Gradient的目标函数使J(theta),这里是直接去优化这个theta,也就是直接改变策略,慢慢的找到最优的策略
  • 第九章的基本思路就是:找目标函数,求他的梯度,然后用梯度去优化目标函数。这里的目标函数是有两个
  • 这节课的一个重要目标是熟悉策略梯度的表达式(推导比较复杂)。
  • 获得了梯度,我就要通过这个梯度去优化这个最大目标函数,介绍一个算法叫(REINFORCE算法)

第十章:Actor-Critic算法

gap:将policy-based+value-based的方法结合。将第九章和第八章的内容结合起来。其实actor-critic算法就是第九章的policy-gradient的方法。
actor对应policy-gradient,critic对应value-gradient。
如何理解这个actor-critic呢:
就是用上一个策略(theta)来跟新一个新的策略,通过这个式子策略就会逐渐变好。 简单说:通过q来求出值,再用这个值跟新策略,策略得到新的值,然后再跟新策略,以此循环
  • 第十章介绍了几种算法:
  • 1、最简单的算法就是actor-critic算法——简称QAC
  • 2、Advantage actor critic(A2C)——实际上是引入了一个base-line来减小估计的方差
  • 3、off-policy actor-critic(ac算法本质上是一个on-policy算法,但是可以变成off-policy——通过importance sampling重要性采样算法)
  • 4、前三个的要求策略是随机的(在每一个状态都有可能选择到所有的action),也可以用确定性的策略:deterministic actor-critic(DPG)

二、这门课程的特点

这门课程是关于原理部分而不是编程实践部分。想学习编程的框架可以配合很多非常好的资料结合学习。
这门课程偏向于通过数学的方式去讲述。而不是通过语言的描述去讲述,这样可以了解这个问题最本质的数学原理,之后就可以360°无死角的理解这个问题。
更偏向于对强化学习希望有更深刻理解的同学,需要对原理部分有比较深的理解。 如果要以此为生,强化学习就是我的饭碗,要牢牢抓住!!!
要相信自己,从数学的方式是学习强化学习最高效的方式。学学学!
学完这个课程之后应该学什么呢: 实践!理论与实践相结合!再之后就可以去读论文了

http://www.kler.cn/a/459599.html

相关文章:

  • 周末总结(2024/01/04)
  • ScheduledExecutorService详解
  • windows 图形基础架构简介
  • vim 的基础使用
  • Vue3 内置组件之component
  • 设计心得——流程图和数据流图绘制
  • C语言 练习
  • THM:Mouse Trap[WriteUP]
  • sentinel集成nacos启动报[check-update] get changed dataId error, code: 403错误排查及解决
  • 路由器OSPF动态路由配置
  • 解锁动态规划的奥秘:从零到精通的创新思维解析(3)
  • qt5.12.11+msvc编译器编译qoci驱动
  • 改进爬山算法之三:最陡上升爬山法(Steepest-Ascent Hill Climbing,SAHC)
  • 「下载」“一机游”智慧旅游平台解决方案:智慧文旅4大应用8大特色,实现旅游监管、营销与服务的全面升级
  • 基于Docker+模拟器的Appium自动化测试(一)
  • React组件化开发
  • 力扣 2080. 区间内查询数字的频率 离散化 二分 开区间 左闭右开区间 lowerBound
  • Linux下编译 libwebsockets简介和使用示例
  • GPUStack v0.4.1 单节点与多节点安装与部署指南 Docker PowerShell
  • 2. FPGA基础了解--全局网络
  • 18.springcloud_openfeign之扩展组件二
  • Prometheus学习笔记
  • 【鸿蒙NEXT】鸿蒙里面类似iOS的Keychain——关键资产(@ohos.security.asset)实现设备唯一标识
  • ES6模块化:JavaScript中的导入与导出详解
  • TypeScript一些新概念
  • leetcode 9.回文数(整数不转成字符串)