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

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

放在前面 课程链接
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°无死角的理解这个问题。
更偏向于对强化学习希望有更深刻理解的同学,需要对原理部分有比较深的理解。 如果要以此为生,强化学习就是我的饭碗,要牢牢抓住!!!
要相信自己,从数学的方式是学习强化学习最高效的方式。学学学!
学完这个课程之后应该学什么呢: 实践!理论与实践相结合!再之后就可以去读论文了

相关文章:

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

放在前面 课程链接 2024年12月30日 前言:强化学习有原理部分的学习,也有与实践相关的编程部分。我认为实践部分应该是更适合我的,不过原理部分也很重要,我目前是准备先过一过原理。 应该花多少时间学习这部分呢? 但是这…...

瀚高数据库 问题: ERROR: operator does not exist: character varying = integer

错误信息: ERROR: operator does not exist: character varying integer建议:No operator matches the given name and argument types. You might need to add explicit type casts.位置:1073at 增加瀚高数据库转换函数解决该问题&#xff…...

冷链温度记录仪蓝牙应用案例

在现代冷链物流运输过程中,确保货物在运输过程中保持在适当的温度范围内是至关重要的。例如,水果、蔬菜、肉类、乳制品以及医疗用品等,这些产品对温度的敏感性要求运输过程中必须严格监控温度变化。RAMSUN介绍冷链温度记录仪蓝牙芯片应用案例…...

LeetCode - Google 校招100题 第7天 序列(数据结构贪心) (15题)

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/144744418 相关文章: LeetCode 合计最常见的 112 题: 校招100题 第1天 链表(List) (19题)校招100题 第2天 树(Tree) (21…...

深入理解Redis:从理论到实践的Java之旅

Redis,这个开源的内存数据结构存储系统,自2009年诞生以来,凭借其丰富的数据结构、快速的读写性能以及高度的可扩展性,迅速成为了分布式系统和高并发应用中的明星组件。本文将带你深入理解Redis,并通过Java语言的实践示…...

LabVIEW故障诊断中的无故障数据怎么办

在使用LabVIEW进行故障诊断时,可能会面临“无故障数据”的情况。这种情况下,缺乏明确的故障参考,使得系统难以通过传统对比法进行故障识别。本文将介绍应对无故障数据的关键策略,包括数据模拟、特征提取和基于机器学习的方法&…...

基于DIODES AP43781+PI3USB31531+PI3DPX1207C的USB-C PD Video 之全功能显示器连接端口方案

随着USB-C连接器和PD功能的出现,新一代USB-C PD PC显示器可以用作个人和专业PC工作环境的电源和数据集线器。 虽然USB-C PD显示器是唯一插入墙壁插座的交流电源输入设备,但它可以作为数据UFP(上游接口)连接到连接到TCD&#xff0…...

MySQL配置my.ini文件

my.ini文件中存储了数据库的文件地址,数据库数据存储地址以及登录密码等基础信息。在遇到忘记密码或者其他基础问题时,修改my.ini文件很方便。但是部分数据库版本默认不生成my.ini文件,需要自己进行配置。 1.停止数据库服务。在搜索框中输入…...

JVM常见排查问题的命令及可视化工具

前置: RMI协议:java的一个远程调用协议,在不同的JVM之间可以进行接口的调用,但数据不安全,且仅限java; 一、常见命令及用法 1、jps:与Linux的ps命令有点类似,查看系统中在运行的J…...

【python】matplotlib(moon cake)

文章目录 1、Style12、Style23、Style34、Style45、Style56、Style67、Style78、参考的库函数matplotlib.patches.Arcmatplotlib.patches.Wedge 9、参考 1、Style1 """ author: tyran """from numpy import sin, cos, pi import matplotlib.pyp…...

Pytorch使用手册-空间变换网络指南(专题十五)

在本教程中,您将学习如何使用一种称为空间变换网络(Spatial Transformer Networks, STN)的视觉注意力机制来增强您的网络。您可以在DeepMind的论文中了解更多关于空间变换网络的内容。 空间变换网络是可微分注意力的一种推广,可以应用于任何空间变换。空间变换网络(简称S…...

Vue 中el-table-column 进行循环,页面没渲染成功

文章目录 前言效果图代码示例可能出现的问题及原因**解决思路** 前言 实现效果:el-table-column 进行循环,使之代码简化 遇到的问题: data进行默认赋值,操作列的删除都可以出来,其他表格里面的数据没出来 效果图 示例…...

基于单片机的温湿度采集系统(论文+源码)

2.1系统的功能 本系统的研制主要包括以下几项功能: (1)温度检测功能:对所处环境的温度进行检测; (2)湿度检测功能:对所处环境的湿度进行检测; (3)加热和制冷功能:可以完成加热和制冷功能。 (4)加湿和除…...

使用envoyfilter添加请求头

该envoyfilter实现了这样一个功能,如果请求头中含有Sw8,则添加请求头HasSw8: true。 1. 内嵌lua脚本 apiVersion: networking.istio.io/v1alpha3 kind: EnvoyFilter metadata:name: add-header-filternamespace: demo-bookinfo # 可根据实际情况调整命…...

kafka开机自启失败问题处理

前言:在当今大数据处理领域,Kafka 作为一款高性能、分布式的消息队列系统,发挥着举足轻重的作用。无论是海量数据的实时传输,还是复杂系统间的解耦通信,Kafka 都能轻松应对。然而,在实际部署和运维 Kafka 的…...

优化站群SEO:使用苹果CMS泛目录插件实现泛目录页面刷新不变

优化站群SEO:使用苹果CMS泛目录插件实现泛目录页面刷新不变 在当今数字营销环境中,搜索引擎优化(SEO)是提升网站流量和可见性的关键策略。苹果CMS作为一款灵活的内容管理系统,提供了丰富的插件功能,尤其是…...

git clone 和 conda 换源

文章目录 git clone 通过 sshconda 创建虚拟环境通过 env.yml 文件conda 换源 git clone 通过 ssh git clone ssh://用户名IP地址:/仓库名字.gitconda 创建虚拟环境通过 env.yml 文件 conda env create -f environment.ymlconda 换源 Step 1 生成 .bashrc 文件在家目录下。…...

人工智能及深度学习的一些题目(二)

1、【单选题】 不属于语音识别预处理的步骤是哪个? 去重 2、HSV,H是色调,S是饱和度,V是亮度。 3、【填空题】 语音信号预处理中( 预加重 )的目的是为了对语音的高频部分进行加重,去除口唇辐射的…...

怎么在VMware Workstation上安装Win11虚拟机?

Windows11虚拟机是免费的吗? Windows 11 虚拟机本身并不是免费的。你需要一个合法的 Windows 11 许可证才能在虚拟机中运行。不过,许多虚拟机软件(如 VirtualBox 和 VMware Workstation Player)本身是免费的,允许你创…...

协程原理 函数栈 有栈协程

协程为什么开销小于线程 协程本质上是线程,将调度的代码在用户态重新实现,因为子程序切换不是线程切换而是由程序自身控制,没有线程切换的开销,所以执行效率高。协程通常是纯软件实现的多任务,与CPU和操作系统通常没有…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异&#xff…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)

前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块&#xff0c…...

C#中的CLR属性、依赖属性与附加属性

CLR属性的主要特征 封装性: 隐藏字段的实现细节 提供对字段的受控访问 访问控制: 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性: 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑: 可以…...

【JVM面试篇】高频八股汇总——类加载和类加载器

目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...

【Linux系统】Linux环境变量:系统配置的隐形指挥官

。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量:setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...