- 博客(34)
- 资源 (3)
- 收藏
- 关注
原创 强化学习论文(PPO)
在强化学习中,经常会面临梯度更新过大,导致训练不稳定,甚至崩溃的问题。为了解决该问题,诞生了TPRO(Trust Region Policy Optimization,TRPO)算法。TPRO算法实现起来比较复杂,需要二阶优化,并且与包括噪声(诸如丢弃)或参数共享(在策略和值函数之间,或与辅助任务)的架构不兼容。针对这些问题,本论文提出了PPO算法。
2026-04-21 10:40:21
412
原创 强化学习论文(A3C)
摘要:A3C(异步优势演员-评论家)算法采用多线程并行探索策略,通过在线学习替代传统DQN/DDPG的回放缓冲区机制。多个agent在独立环境中异步探索,产生多样化数据并避免互斥锁问题。算法核心包括全局网络和线程本地网络,采用n步更新策略,其中优势函数计算和策略熵正则化(通过超参数β控制)增强了探索能力。该框架可适配多种算法变体,如异步Q学习、SARSA等,通过差异化的TD目标计算实现高效学习。
2026-04-18 20:58:27
205
原创 强化学习论文(DDPG)
DDPG(深度确定性策略梯度)是一种适用于连续动作空间的强化学习算法,结合了DQN和Actor-Critic方法。它通过四个神经网络(critic、actor及其目标网络)实现端到端学习,特别适合高维输入(如图像)的直接动作输出(如自动驾驶)。算法采用经验回放机制,通过soft update渐进更新目标网络参数以保证稳定性。与DQN不同,DDPG直接输出连续动作值(如电机扭矩),避免了离散动作空间的限制。其创新点包括:经验回放缓冲区的动态管理、critic网络的梯度下降更新和actor网络的梯度上升优化。
2026-04-17 15:06:17
61
原创 强化学习(10)--Actor-Critic方法
本文总结了赵世钰老师《强化学习数学基础》课程中关于策略梯度方法的进阶内容。主要包括三类Actor-Critic算法:1)QAC算法,通过神经网络分别近似策略和Q值;2)A2C算法,引入优势函数作为baseline降低方差,提升收敛性;3)Off-policy Actor-Critic算法,结合重要性采样等技术实现异策略学习;4)确定性策略梯度方法,处理确定性策略场景。文章详细推导了各类算法的数学原理,包括优势函数的引入动机、最优baseline设计等,并给出了伪代码实现。
2026-04-14 10:09:51
364
原创 强化学习(9)--策略梯度方法
本文介绍了基于策略梯度的强化学习方法。首先提出两种评估策略的指标:平均状态价值和平均奖励,并证明其等价性。然后推导出策略梯度的统一计算公式,并给出蒙特卡罗策略梯度(REINFORCE)算法的实现。该算法通过随机梯度上升优化策略参数,既能利用高回报动作(exploit),又能探索低概率高回报动作(explore)。最后展示了REINFORCE算法的伪代码实现,该算法通过调整动作选择概率来平衡探索与利用。
2026-04-12 15:41:47
397
原创 强化学习(8)--值函数近似
本文总结了强化学习从表格法到函数近似法的转变过程。首先介绍了传统表格法在状态空间较大时的局限性,进而提出使用函数近似(如线性函数或神经网络)来表示价值函数的方法。重点讨论了基于时序差分(TD)的价值函数近似、Q-learning的函数近似实现,以及深度Q网络(DQN)的关键技术,包括双网络结构、经验回放机制等。文章通过对比表格法和函数法的差异,阐述了函数近似在泛化能力和计算效率上的优势,并给出了相应的伪代码实现。最后指出,虽然线性近似易于理解,但神经网络在处理复杂任务时更具优势。
2026-04-12 09:24:05
344
原创 强化学习(7)--时序差分方法
本文基于赵世钰《强化学习数学基础》课程,系统总结了TD算法的推导与应用。首先从贝尔曼公式出发,推导出TD0算法的基本形式,指出其model-free特性及只能估计状态值的局限性。随后介绍了Sarsa算法及其n-step扩展,以及Q-learning的核心思想。文章重点分析了on-policy和off-policy的本质区别:前者行为策略与目标策略相同(如Sarsa),后者则不同(如Q-learning)。通过伪代码对比,阐明了两种策略在算法实现上的差异,并探讨了将算法改写为不同策略形式的可能性。
2026-04-10 16:55:59
398
原创 强化学习(6)--一些基础理论
说明:本系列文章是我在学习了西湖大学赵世钰老师的《Mathematical Foundations of Reinforcement Learning》一书后的学习笔记,在B站上有赵老师的完整课程视频。本文介绍了一些强化学习依赖的重要理论工具,包括前面提到的压缩映射和在后文中要用到的重要性采样等理论,我都放在了这篇文章内。
2026-04-09 08:37:11
383
原创 强化学习(5)--蒙特卡罗方法
本文介绍了基于赵世钰《强化学习数学基础》的蒙特卡洛学习方法。当环境模型未知时,需依靠数据实现model-free学习。MCBasic算法通过采样episode估计动作价值函数(而非状态价值),避免了依赖环境模型。进阶方法MC Exploring Starts通过every-visit采样提高数据利用率,采用epsilon-greedy策略平衡探索与利用,并通过衰减系数逐步降低探索率以稳定收敛。这些方法在缺乏环境模型时,通过数据驱动方式有效求解最优策略。
2026-04-08 09:58:06
475
原创 强化学习(4)--值迭代算法&策略迭代算法
本文总结了强化学习中的值迭代、策略迭代和截断策略迭代算法。值迭代通过直接求解贝尔曼最优方程(BOE)来获得最优策略;策略迭代则先评估给定策略的状态值,再通过贪婪策略改进,交替进行直至收敛;截断策略迭代在策略评估阶段采用有限步数近似。文章分析了三种算法的异同:值迭代直接计算max(q),策略迭代使用mean(q)计算状态值后改进策略。同时解释了策略改进的有效性证明和算法收敛性保证。这些方法都通过计算状态值来获取贪婪策略,最终实现最优策略的求解。
2026-04-07 14:50:21
414
原创 强化学习(3)--最优状态价值&最优策略
本文基于西湖大学赵世钰老师的强化学习课程,探讨了最优状态价值和最优策略的定义与求解方法。最优策略要求在所有状态下其state value都不低于其他策略。通过贝尔曼最优方程(BOE)可求解最优状态价值,该方程具有唯一解且可通过值迭代方法求解。值得注意的是,最优状态价值唯一但最优策略可能不唯一,且最优策略可以是确定性或随机性的。文章还分析了影响最优策略的三个关键因素:即时奖励(线性影响)、折扣率(权衡近期与长期收益)和系统模型。
2026-04-07 10:18:59
325
原创 强化学习(2)--状态值&贝尔曼方程
本文摘要: 文章主要讨论了强化学习中的几个核心概念:returns的重要性、状态价值(state value)和贝尔曼方程(Bellman equation)。首先通过实例比较了不同策略的优劣,指出returns是评估策略效果的关键指标。其次详细解释了状态价值的计算方法,特别是在随机策略下需要通过期望值来评估。然后重点介绍了贝尔曼方程的推导过程,包括其矩阵形式和迭代求解方法。最后讨论了行动价值(action value)的概念及其与状态价值的关系,并给出了action value形式的贝尔曼方程表示。
2026-04-06 20:08:58
427
原创 强化学习(1)--基本概念
本文是作者学习西湖大学赵老师《Mathematical Foundations of Reinforcement Learning》一书的学习笔记。文章以gridworld为例,探讨如何找到从任意位置到达目标区域的最佳策略。强化学习的核心是让智能体(agent)通过在不同状态下选择动作,与环境交互获得奖励,从而学习最优策略(policy)。书中内容和配套视频课程可在B站观看。
2026-04-06 10:53:45
365
转载 【BLDC驱动】分析同步续流与体二极管续流
驱动方式大致可以描述为,高电压端PWM驱动上桥,且高电压端以反向PWM驱动下桥,低电压端以普通IO口驱动下桥。电机转动线圈切割永磁体的磁场,在U、V、W三端产生相对电压,如果将2端或3端连接,形成回路,动能就可以转化为电能然后转化为热能,仍然以A-B相导通为例,在一个PWM周期内,当PWM由高电平进入低电平,也就是Q1由导通变为关断,此时原回路消失,仍然以A-B相导通为例,在一个PWM周期内,当PWM由高电平进入低电平,也就是Q1由导通变为关断,此时原回路消失,大前提,采用二二导通,六步电流换向驱动。
2022-10-21 10:28:10
7435
1
原创 嵌入式Linux开发环境搭建
Samba服务器的工作原理是:客户端向Samba服务器发起请求,请求访问共享目录,Samba服务器接收请求,查询smb.conf文件,查看共享目录是否存在,以及来访者的访问权限,如果来访者具有相应的权限,则允许客户端访问,最后将访问过程中系统的信息以及采集的用户访问行为信息存放在日志文件中。使用NFS可以使应用程序的开发变得十分方便, 客户端不需要大容量的存储器,更不需要进行映像文件的烧录和下载,只要mount到服务器端的特定目录下,然后运行该目录下的程序即可观察到结果。工欲善其事,必先利其器。
2022-09-12 07:35:42
2712
原创 FreeRTOS学习总结 (二)
软件计时器由FreeRTOS内核实现,并在其控制之下。它们不需要硬件支持,也与硬件计时器或硬件计数器无关。软件计时器功能是可选的。要使用软件计时器功能:1、构建FreeRTOS源文件 FreeRTOS/Source/timers.c作为项目的一部分。2、在FreeRTOSConfig.h中将configUSE_TIMERS设置为1。软件计时器回调函数从开始执行到结束尾执行,并以正常方式退出。它们应保持短小,并且不能进入阻塞状态。软件定时器的回调函数,是在一个FreeRTOS调度器启动时,
2022-09-07 13:05:15
1015
原创 STM32,FreeRTOS,Tracealyzer,J-link RTT流模式,无数据上传问题解决
哈,xPortSysTickHandler()和SysTick_Handler()的这两个函数都是systick 的中断处理函数,为了保险起见,在工程中搜索这两个函数,发现没有任何其他引用,果断注释掉FreeRTOSConfig.h文件中#define xPortSysTickHandler SysTick_Handler。至于为什么FreeRTOSConfig.h中会这么定义,下次再研究,晚上12点了,睡觉!4、我的J-LINK一直提示clone,但能正常使用,我为了排除硬件原因,新买了一个,还是不行。
2022-09-06 23:50:39
1244
2
原创 FreeRTOS学习总结 (一)
上图是从FreeRTOS官网下载的源文件目录,移植所需要的文件都在Source文件夹下如上图,在工程文件夹下创建FreeRTOS文件夹,子文件夹和相应文件,均从Source文件夹下直接copy即可。FreeRTOS的内核文件,新手直接无脑copy。(对于熟手如果你的工程不需要用到队列,或者事件组等,可以不需要相关文件)硬件相关,在Source\portable[IDE][Target Device]文件夹下先找到你用的IDE工具文件夹,在里面再找到目标硬件的文件夹,直接COPY。
2022-09-06 08:10:30
1029
原创 FeeRTOS在STM32中是如何使用内存的
在使用STM32编程时,一般情况下我们不会关注堆栈空间的大小,因为在STM32的启动文件中,已经帮我们预先设置好了堆栈空间的大小。以上关系搞清楚,那么又该如何定heap的空间大小呢,可以先进行一个粗略的计算,假设任务1分配2kbytes栈,任务2分配3kbytes栈,队列大概占1k,用户malloc大概2k,这么算一共就是8k。运行freertos系统的大部分都是资源有限的MCU,所以对于ram我们都要考虑尽量的节省,避免资源浪费,从而也可以针对项目选择性价比更好的mcu。RAM可读可写,掉电清零。
2022-09-02 14:59:37
1964
1
转载 FreeRTOS移植
FreeRTOS包含Demo例程和内核源码(比较重要,我们就需要提取该目录下的大部分文件)。Source文件夹里面包含的是FreeRTOS内核的源代码,我们移植FreeRTOS的时候就需要这部分源代码;Demo 文件夹里面包含了FreeRTOS官方为各个单片机移植好的工程代码,FreeRTOS为了推广自己,会给各种半导体厂商的评估板写好完整的工程程序,这些程序就放在Demo这个目录下,这部分Demo非常有参考价值。...
2022-08-26 21:51:53
3841
原创 FreeRTOS 教程指南 学习笔记 第九章 任务通知
我们已经看到,使用FreeRTOS的应用程序被构建为一组独立的任务,这些自主任务很可能必须相互通信,以便它们能够共同提供有用的系统功能。
2022-08-26 11:50:47
467
1
原创 FreeRTOS 教程指南 学习笔记 第八章 事件组
人们已经注意到,实时嵌入式系统必须对事件采取相应的行动。前几章描述了FreeRTOS允许事件和任务之间通信的特性。它们允许任务在阻塞状态下等待单个事件的发生。他们在事件发生时解除阻塞单个任务——解除阻塞的任务是等待该事件的最高优先级任务。事件组是FreeRTOS的另一个特性,它允许事件通信给任务。事件组允许任务在阻塞状态下等待其中一个事件的组合发生。事件发生时,事件组取消阻塞等待同一事件或事件组合的所有任务。
2022-08-24 10:05:27
478
原创 FreeRTOS 教程指南 学习笔记 第七章 资源管理
在多任务处理系统中,如果一个任务开始访问一个资源,但在切换出运行状态之前没有完成其访问,则可能会出现错误。如果任务使资源处于不一致的状态,那么通过任何其他任务或中断访问同一资源都可能导致数据损坏或其他类似问题。访问外设请考虑以下场景,其中两个任务试图写入液晶显示器(LCD)。1.1 任务A执行并开始将字符串“Hello world”写入LCD。1.2 任务A在输出字符串“Hello w”后被任务B抢占。1.3 任务B在进入阻塞状态之前将“Abort, Retry, Fail?”写入LCD。
2022-08-23 15:00:59
808
原创 FreeRTOS 教程指南 学习笔记 第六章 中断管理(二)
xQueueSendToFrontFromISR()是xQueueSendToFront()的中断安全版本,xQueueSendToBackFromISR()是xQueueSendToBack()的中断安全版本,xQueueReceiveFromISR()是xQueueReceive()的中断安全版本。在某些处理器上,分配给中断的数字优先级越高,中断的逻辑优先级就越高,而在其他处理器架构上,分配给中断的数字优先级越高,中断的逻辑优先级就越低。当使用这样的函数时,图62中所示的优先级必须指定为十进制5。
2022-08-21 11:42:05
1102
原创 FreeRTOS 教程指南 学习笔记 第六章 中断管理(一)
嵌入式实时系统必须响应来自环境的事件。例如,到达以太网外围设备(事件)上的数据包可能需要传递给TCP/IP栈以进行处理(操作)。非平凡的系统将不得不服务于来自多个来源的事件,所有这些事件都将有不同的处理开销和响应时间要求。应该如何检测到该事件?通常使用中断,但输入也可以进行轮询。当使用中断时,应在中断服务例程(ISR)内部执行多少处理,以及在外部执行多少处理?通常希望保持每个ISR尽可能短。如何将事件通信到主(非ISR)代码,以及如何构建这些代码以最好地适应潜在异步发生的处理?
2022-08-21 08:29:53
300
原创 FreeRTOS 教程指南 学习笔记 第五章 软件计时器
软件计时器用于在未来设定的时间,或以固定的频率定期安排功能的执行。由软件计时器执行的函数称为软件计时器的回调函数。软件计时器由FreeRTOS内核实现,并在其控制之下。它们不需要硬件支持,也与硬件计时器或硬件计数器无关。请注意,根据FreeRTOS使用创新设计以确保最大效率的理念,软件计时器不占用任何处理时间,除非软件计时器回调函数实际执行。软件计时器功能是可选的。构建FreeRTOS源文件 FreeRTOS/Source/timers.c作为项目的一部分。
2022-08-19 16:34:13
1494
原创 FreeRTOS 教程指南 学习笔记 第四章 队列管理
如何创建一个队列。队列如何管理其包含的数据。如何将数据发送到队列。如何从队列中接收数据。在队列上阻塞的含义。如何在多个队列上阻塞。如何覆盖队列中的数据。如何清除一个队列。写入队列和阅读队列时任务优先级的影响。本章中只介绍了任务到任务的通信。第6章介绍了任务中断和中断到任务通信。
2022-08-19 12:26:04
1092
原创 FreeRTOS 教程指南 学习笔记 第一章 简介
本章包含的内容有:1. 帮助用户使用FreeRTOS文件和目录,提供FreeRTOS目录结构的顶级视图。2. 描述任何特定的FreeRTOS项目实际上需要哪些文件。3. 介绍了演示应用程序。4. 提供有关如何创建新项目的信息。...
2022-08-18 18:24:55
1145
原创 FreeRTOS 教程指南 学习笔记 第三章 任务管理(二)
实际正在运行的任务(使用处理时间)处于“正在运行”状态。在单核处理器上,在任何给定时间只能有一个处于运行状态的任务。未实际运行但未处于阻止状态或挂起状态的任务处于“就绪”状态。调度程序可以选择处于就绪状态的任务作为进入运行状态的任务。调度程序将始终选择优先级最高的就绪状态任务以输入正在运行的状态。任务可以在“阻止”状态下等待事件,并在事件发生时自动移动回“就绪”状态。时间事件发生在特定的时间,例如,当阻塞时间超时溢出时,通常用于实现周期性或超时行为。......
2022-08-18 18:10:31
977
原创 FreeRTOS 教程指南 学习笔记 第三章 任务管理(一)
FreeRTOS如何为应用程序中的每个任务分配处理时间。FreeRTOS如何选择在任何给定时间应该执行的任务。每个任务的相对优先级如何影响系统行为。任务可以存在的状态。如何实现任务。如何创建一个或多个任务的实例。如何使用任务参数。如何更改已经创建的任务的优先级。如何删除一个任务。如何使用任务实现周期性处理(软件计时器将在后面的一章中讨论)。空闲任务的执行时间以及如何使用它。.........
2022-08-18 15:49:54
260
原创 FreeRTOS 教程指南 学习笔记 第二章 内存管理
本书的以下章节将介绍内核对象,如任务、队列、信号量和事件组。为了使FreeRTOS尽可能容易使用,这些内核对象不是在编译时静态分配,而是在运行时动态分配;FreeRTOS在每次创建内核对象时分配RAM,并在每次删除内核对象时释放RAM。此策略减少了设计和规划工作,简化了API,并最小化了RAM占用。本章讨论了动态内存分配。动态内存分配是一个C语言编程的概念,而不是一个特定于FreeRTOS或多任务处理的概念。......
2022-08-18 09:41:29
658
论文翻译MD2E: Modeling Depth-to-Edge Cues for Monocular Metric Depth Estimation
2026-08-27
哈工大 IC设计工具原理 cadence 教程
2012-11-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅