自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(72)
  • 收藏
  • 关注

原创 《强化学习数学原理》学习笔记12——值迭代与策略迭代小结

价值迭代是求解贝尔曼最优方程的迭代算法:给定一个初始价值v0​,有vk1​πmax​rπ​γPπ​vk​策略更新(πk1​argmaxπ​rπ​γPπ​vk​价值更新(vk1​rπk1​​γPπk1​​vk​​。

2025-10-09 10:27:53 758

原创 《强化学习数学原理》学习笔记11——阶段策略迭代算法

阶段策略迭代算法是强化学习中一种灵活的策略优化方法,它处于价值迭代和策略迭代之间,既避免了策略迭代中策略评估的高计算成本,又弥补了价值迭代收敛速度慢的不足,在计算效率与收敛速度间取得了良好平衡,为解决强化学习中的策略优化问题提供了更高效的途径。

2025-10-09 10:12:48 591

原创 《强化学习数学原理》学习笔记10——策略迭代算法

本文介绍了策略迭代算法的核心思想与数学基础。该算法通过交替执行策略评估(计算当前策略的状态价值)和策略改进(基于价值更新策略)两个步骤求解最优策略。文章详细阐述了策略评估的两种求解方法(闭式解与迭代法),并证明策略改进步骤能严格提升策略性能。通过分析状态价值序列的单调收敛性,证明了算法最终会收敛到最优策略。此外,文章还揭示了策略迭代与价值迭代算法之间的收敛速度关系。

2025-10-06 19:20:29 1214

原创 《强化学习数学原理》学习笔记9——值迭代算法

值迭代算法通过“策略更新 - 价值更新”的迭代过程,利用压缩映射的收敛性,能从任意初始状态价值出发,逐步逼近最优状态价值和最优策略,且在简单场景下收敛速度较快,是理解强化学习中策略与价值交互优化的基础方法。

2025-10-06 12:17:47 726

原创 《强化学习数学原理》学习笔记8——贝尔曼最优公式小结

首先,为每一步引入额外的负奖励是对奖励的仿射变换,这不会改变最优策略。:如果我们希望最优策略在到达目标前能避免无意义的迂回,是否应该为每一步增加一个负奖励,以便智能体尽可能快地到达目标?:将所有奖励增加相同的量是对奖励的仿射变换,这不会影响最优策略。:如果一个策略对应的状态价值大于或等于其他任何策略的状态价值,那么这个策略就是最优的。贝尔曼最优方程是一种特殊的贝尔曼方程,其对应的策略是最优的。:最优策略可以是确定性的,也可以是随机的。根据对贝尔曼最优方程(BOE)的分析,最优策略始终存在。

2025-10-03 19:47:29 502

原创 《强化学习数学原理》学习笔记7——从贝尔曼最优方程得到最优策略

下面求解贝尔曼最优方程,从而得到最优状态价值v∗和最优策略π∗。

2025-10-03 19:36:56 691

原创 《强化学习数学原理》学习笔记6——贝尔曼最优方程的压缩性质

紧接着以及的内容,进一步证明贝尔曼最优方程右侧函数fv的压缩性。

2025-10-03 18:37:37 499

原创 《强化学习数学原理》学习笔记5——压缩映射定理的证明

紧接着vfv1为了分析式(1),首先需要介绍一下压缩映射定理(Contraction Mapping Theorem)。

2025-10-03 17:55:44 723

原创 《强化学习数学原理》学习笔记4——贝尔曼最优方程推理过程

在强化学习中,贝尔曼最优方程(BOE)是分析最优策略和最优状态价值的核心工具。通过求解这个方程,我们能得到最优策略与最优状态价值。接下来,我们一步步深入理解它。

2025-10-02 20:00:27 738

原创 《强化学习数学原理》学习笔记3——贝尔曼方程核心概念梳理

vπ​sEGt​∣St​s解释:策略π下,当前处于状态s时,从该状态往后所有回报的期望。

2025-09-30 16:34:12 861

原创 《强化学习数学原理》学习笔记2——贝尔曼方程matrix-vector形式解析解的可逆性证明

对于n阶复方阵Aaijn×nAaij​n×n​(其中aija_{ij}aij​表示第i行第j列的元素,ij12nij12...n圆盘中心:第i行的对角线元素aiia_{ii}aii​(复数,对应复平面上的一个点);圆盘半径:第i行所有非对角线元素的模长之和,记为rir_iri​,即:ri∑j1j≠in∣aij∣ri​j1ji​∑n​∣aij​∣。

2025-09-30 15:46:32 646

原创 《强化学习数学原理》学习笔记1——贝尔曼期望公式推导

式(10)的核心思想可以理解为:状态价值函数本身就是 “的价值,等于即时奖励 + 后续状态价值的折扣期望”。做全概率展开,我们需要考虑:从时刻。注意到式(8)右边的求和式,正是对。条件下的期望”,可得状态价值函数。(因为状态转移是随机的,依赖策略。由式(1),对两边取 “在。开始的累积奖励,仅依赖。(对所有可能的后续状态。再利用期望的简洁表示。

2025-09-25 17:32:07 720

原创 高性能服务器配置经验指南7——基于tar命令打包存储conda虚拟环境

由于虚拟环境的迁移需求,有时需要打包虚拟环境以实现环境在不同设备之间的快速迁移,本文记录通过tar打包conda虚拟环境并迁移到其他设备中的操作流程。

2025-09-23 15:17:42 455

原创 高性能服务器配置经验指南6——BIT校园网在ubuntu中的自动检查连接状况脚本使用

命令可以实现后台运行,但是如果服务器重启,脚本就不运行了,还需要手动运行,这明显不能完全满足我们的需求,所以需要加一个开机自启动功能,创建。总是要在又热又吵的机房里手动登录实在是难以忍受,所以需要一个自动登录的方法。该脚本可以实现在命令行模式下登录/登出校园网并查看校园网的状态。1、一段时间不在服务器上登陆校园网,校园网的登陆就自动掉了;表示脚本识别到未登录,所以启用登陆命令,实现自动登录。2、每个月网络账户刷新的时候,校园网需要手动登陆。检测校园网状态,断连后使用。表示脚本识别到已登录,

2025-09-18 10:46:01 875

原创 如何在两台电脑之间共享文件夹

Windows11自带共享文件夹功能,可以方便快捷地实现文件互通,而不需要依赖云盘、U盘等途径,本文介绍如何在Windows11中实现电脑间的文件夹共享。

2025-09-10 11:22:20 1378

原创 高性能服务器配置经验指南5——Gitee代码管理

摘要:本文介绍了如何使用Gitee平台实现代码的云存储备份。首先需在Ubuntu系统安装git工具,注册Gitee账号并创建仓库。通过git init初始化本地仓库,git add和git commit提交代码,git remote关联远程仓库,git push推送代码到Gitee。文章详细说明了账号认证、自动保存凭证的方法,以及后续更新代码的操作步骤。同时提供了实用的git命令,如查找大文件、清理仓库等,并解释了git文件夹中不同颜色的含义。该方法适合开发者进行代码版本管理,确保数据安全。

2025-07-21 17:18:11 1124

原创 视觉前沿算法复现环境配置1——2025CVPR风格迁移网络SaMam

风格迁移网络的目的是首先学习模板图像的风格样式,然后通过深度学习方法把待转换的图像转换成与模板图像相似的风格样式,这种方法可以考虑用在目标检测等场景中对数据集进行扩增,达到丰富数据集的目的。图中,cu12对应cuda12.x版本,torch2.2对应pytorch2.2.x版本,cp310对应python3.10.x版本。首先在官网下载好SaMam的代码,进入代码目录。本文记录2025CVPR风格迁移网络——SaMam的环境配置方法。在配置环境前,要确认自己的系统cuda版本也是12.1,也就是。

2025-06-05 16:00:02 745

原创 目标检测任务常用脚本1——将YOLO格式的数据集转换成VOC格式的数据集

在目标检测任务中,不同框架使用的标注格式各不相同。常见的框架中,YOLO 使用 .txt 文件进行标注,而 PASCAL VOC 则使用 .xml 文件。如果你需要将一个 YOLO 格式的数据集转换为 VOC 格式以便适配其他模型,本文提供了一个结构清晰、可维护性强的 Python 脚本。目前脚本默认处理 .bmp 图像并将其转为 .jpg,你可以根据需求修改扩展名以支持 .png、.jpeg 等格式。⚠️ 注意:你需要根据自己的项目路径和类别信息填写。✅ 输出目录结构(VOC 格式)

2025-05-13 21:07:34 599

原创 高性能服务器配置经验指南4——pycharm安装、压缩与解压、防火墙操作

PyCharm 安装与远程开发配置:适合在服务器环境中高效进行 Python 项目的开发与调试;常见压缩与解压操作:掌握 zip 和 gz 两种常用格式的基本命令,有助于提升文件管理效率;防火墙基础操作:学习使用 UFW 和 firewalld 进行端口管理和访问控制,增强服务器安全性。如果有其他常用技巧或遇到具体问题,欢迎留言交流!

2025-05-09 16:09:30 1150

原创 Leetcode刷题记录34——相交链表

其中 m 和 n 分别是两个链表的长度。这种方法的时间复杂度是。

2025-05-06 15:45:45 352

原创 Leetcode刷题记录33——二叉树的最小深度

递归遍历的解法,每当遍历到一条树枝的叶子节点,就会更新最小深度,当遍历完整棵树后,就能算出整棵树的最小深度。按照 BFS 从上到下逐层遍历二叉树的特点,当遍历到第一个叶子节点时,就能得到最小深度。

2025-05-05 17:34:09 382

原创 Leetcode刷题记录32——搜索二维矩阵 II

由于矩阵每一行和每一列都是有序的,我们可以利用这个特性,避免暴力遍历所有元素。这样我们就能像“走楼梯”一样,逐步逼近目标值。

2025-05-05 12:04:10 415

原创 Leetcode刷题记录31——旋转图像

这两个步骤组合起来,就等价于整个矩阵顺时针旋转了 90 度。对每一行进行翻转,从左到右变成从右到左。把矩阵的行和列交换,即。

2025-05-05 11:39:26 226

原创 Leetcode刷题记录30——螺旋矩阵

然后向内收缩边界,继续遍历下一层,直到所有元素都被访问完为止。

2025-05-05 10:41:27 248

原创 Leetcode刷题记录29——矩阵置零

但需要注意的是,第一行和第一列本身也可能被置零,所以我们需要用两个布尔变量来单独记录它们的状态。利用矩阵的第一行和第一列来标记对应的列和行是否需要置零,这样就不需要额外的空间了。同理,对每一个需要置零的列 j,我们从第 0 行到第 m-1 行依次设置为 0。对每一个需要置零的行 i,我们从第 0 列到第 n-1 列依次设置为 0。如果当前元素是 0,就把该行首和列首置零,表示这一行/列后续都需要置零。同理,只要第一行中有 0,就说明整行要置零。只要第一列中有一个 0,说明整列都要置零。

2025-05-03 20:19:26 1197

原创 Leetcode刷题记录28——缺失的第一个正数

这种思想的核心在于:将原始数组作为隐式的哈希表来使用,把每个数字放到它应该出现的位置上(如数字 x 放到索引 x - 1 处),这样就能通过一次遍历找到缺失的最小正整数。我们可以使用一个哈希集合(set)来记录nums中所有存在的整数,然后从 1 开始依次检查这些数字是否存在于集合中,一旦发现某个数字不存在,就返回它。这种方法虽然没有达到最优的空间复杂度(O(1)),但它的实现简单、逻辑清晰,适用于大多数场景,特别是对时间和思维成本有限制的情况下。:O(n),因为使用了一个哈希集合保存所有不重复的元素。

2025-05-03 12:09:23 1155

原创 Leetcode刷题记录27——除自身以外数组的乘积

改进一下代码,不再使用两个数组存储前缀乘积和后缀乘积,而是先用answer数组存储前缀乘积,然后用一个变量遍历后缀乘积,并实时地更新answer,这样可以只使用输出数组和一个变量,实现 O(1) 的额外空间复杂度。就表示了从 nums[0] 到 nums[i-1] 的乘积,即当前元素左边所有数的乘积。就等于 “左边乘积 × 右边乘积”,也就是题目要求的 “除自己外其余元素的乘积”。表示从 nums[i+1] 到 nums[-1] 的乘积。表示从 nums[0] 到 nums[i-1] 的乘积。

2025-05-03 10:52:29 418

原创 Leetcode刷题记录26——轮转数组

这个写法会直接替换 nums 列表的内容,而不是创建一个新的列表对象。这样就能确保外部看到的是我们修改后的结果。这行代码只是让变量 nums 指向了一个新的列表对象,而原来的列表没有被修改。因为当 k 大于数组长度 n 时,旋转 k 次和旋转 k % n 次的结果是一样的。这个技巧不仅适用于数组旋转问题,也广泛用于循环类题目中,用来简化逻辑、提高效率。的题目来说,这样的写法会导致函数外部看不到任何变化。这是本题最容易出错的地方!🔍 为什么要这么做?

2025-05-02 08:13:02 469

原创 Leetcode刷题记录25——合并区间

为了能顺利合并区间,首先我们要对所有区间按照起始点从小到大排序。这样我们可以确保在遍历时,所有可能重合的区间都排列在一起,方便处理。遍历结束后,我们还需要把最后合并的那个区间也加入结果集中。

2025-05-01 17:59:47 287

原创 Leetcode刷题记录24——最大子数组和

使用经典的动态规划算法——

2025-05-01 17:23:17 313

原创 Leetcode刷题记录23——最小覆盖子串

【代码】Leetcode刷题记录23——最小覆盖子串。

2025-04-30 21:06:51 371

原创 Leetcode刷题记录22——滑动窗口最大值

【代码】Leetcode刷题记录22——滑动窗口最大值。

2025-04-29 22:09:53 445

原创 Leetcode刷题记录21——和为 K 的子数组

本题可以通过前缀和(Prefix Sum)与哈希表(Hash Map)相结合的方法高效解决。这种方法的核心思想是利用前缀和来快速计算任意子数组的和,并通过哈希表记录每个前缀和出现的次数,从而快速找到符合条件的子数组数量。

2025-04-28 10:36:53 359

原创 Leetcode刷题记录20——找到字符串中所有字母异位词

用与字符串p相同长度的滑动窗口遍历字符串s,将窗口内的字符串排序,并与排序后的字符串p做对比,如果两者相同,就记录下当前的index,遍历结束后,返回索引列表。的方法来降低时间复杂度。具体来说,可以使用两个长度为26的数组(假设只包含小写字母)分别记录p中每个字符的出现次数以及当前考察的s子串中对应字符的出现次数。搜了一下,字符串排序操作的时间复杂度是O(nlogn),对每一个字符串进行这个操作时间复杂度较高,得换思路。好吧确实快多了,算法学习之路还很漫长啊。快了不少啊,应该能过。

2025-04-27 17:10:48 520

原创 Python学习记录7——集合set()的使用指南

本文记录集合的所有方法,通过代码示例帮助自己,也帮助读者查询学习这一重要数据结构。在Python中,集合(set)是一种。

2025-04-27 11:54:25 1682

原创 Leetcode刷题记录19——无重复字符的最长子串

通过两个指针,第一个指针指向字串的开头,第二个指针向后找,直到找到重复的字符或者到达字符的末尾,第二个指针每向后移动一位,当前的子串长度加一,然后与最大长度作比较,留下更大的那个作为最长子串长度。

2025-04-26 17:24:53 185

原创 Leetcode刷题记录18——接雨水

然后减去该木板的高度得到水量,那么指针的方法就是进一步简化了这个过程,在移动指针时,优先移动值较小的指针,假设值较小的指针是左指针,那么即便右指针所指数并不是严格的。此处最难想明白的可能是为什么这样移动指针是正确的,其实很简单,回想一下思路二,每到一块木板处,计算水量的方法都是找到这块木板。(1)通过i遍历数组,遍历到一个位置时,就找一遍左右两边的最高柱子left_max 和 right_max。(3)把每一次计算的结果累加在总数中,遍历完成后return即可。,所以用这个值计算水量是正确的。

2025-04-25 15:29:03 483

原创 高性能服务器配置经验指南3——安装服务器可能遇到的问题及解决方法

在完成和本文的主要目的是记录笔者遇到的一些小问题和解决方法,以后尽量持续更新遇到的问题。

2025-04-24 16:41:48 987

原创 高性能服务器配置经验指南2——深度学习准备(驱动安装,Anaconda安装,不同版本Cuda安装)

在,我们已经安装了必要的软件,建立好了不同用户,做好了远程连接和安全防护,接下来,就要为深度学习实验做准备了。

2025-04-24 16:32:02 1423

原创 Leetcode刷题记录17——三数之和

给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i!= k ,同时还满足 nums[i] + nums[j] + nums[k] == 0。(4)计算三个指针所指数字的和,如果大于0,说明此时数字大了,由于nums数组是升序排序好的,可以将right指针向左移一位,这样三个指针所指数字的和会变小。不同的三元组是 [-1,0,1] 和 [-1,-1,2]。输出:[[-1,-1,2],[-1,0,1]]输入:nums = [0,1,1]

2025-04-23 16:41:27 427

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除