- 博客(94)
- 收藏
- 关注
原创 第8章 基于表格型方法的规划和学习(4) 期望更新与采样更新
本笔记系统梳理了强化学习中价值函数的七种单步更新方法,按更新对象($v$ 或 $q$)、目标策略($\pi$ 或 $*$)和更新方式(期望或采样)分类,并解释了被排除的 $v_*$ 采样更新的原因。重点对比了期望更新与采样更新:前者基于模型、精确但计算开销大($O(b)$),后者无模型、带噪声但计算高效($O(1)$)。结合实验指出,在大规模随机环境中,采样更新因能分散计算资源、快速传播价值改进,在单位计算量下通常更高效。
2025-10-17 15:42:57
759
原创 第8章 基于表格型方法的规划和学习(3) 优先遍历
优先遍历通过引入**反向聚焦**机制,显著提升了Dyna类智能体的规划效率。相比传统均匀采样策略,它依据TD误差的绝对值为状态-动作对分配优先级,仅对可能引发显著价值变化的前驱进行更新,并沿反向路径递归传播,避免了大量无效计算。该方法不依赖显式目标状态,适用于任意奖励结构,在迷宫和杆子操控等稀疏奖励、大规模状态空间任务中表现尤为突出,相较Dyna-Q提速5至10倍。后续可通过采样与局部回溯进一步优化随机环境中的计算效率。
2025-10-17 10:12:03
690
原创 第8章 基于表格型方法的规划和学习(2) Dyna-Q+:基于时间的探索奖励
Dyna-Q+ 通过引入基于时间的探索奖励(“计算好奇心”),对长期未访问的状态-动作对赋予额外激励,使其在环境变化时能主动探测新路径。在“屏障迷宫”(环境恶化)中,它更快发现替代路径;在“捷径迷宫”(环境改善)中,能有效突破模型盲区,抓住新机会。相比之下,Dyna-Q 依赖随机探索,难以应对非平稳环境。但在静态的第一阶段,Dyna-Q+ 因持续试探无效动作而略微牺牲效率,导致与 Dyna-Q 的性能差距收窄,体现了其为未来适应性预付的探索成本。
2025-10-17 08:24:38
1007
原创 第8章 基于表格型方法的规划和学习(1) 模型、规划与学习和Dyna-Q
本章探讨了强化学习中基于模型与无模型方法的统一框架,核心在于通过回溯操作计算价值函数。规划利用环境模型生成模拟经验,而学习依赖真实交互,二者共享“经验→价值函数→策略”的通用结构。Dyna-Q 作为集成范例,将动作执行、直接Q学习、模型学习与基于模型的规划紧密结合:模型从真实经验中学习(假设确定性),规划则在后台对已访问状态-动作对反复进行Q更新,显著加速价值传播,尤其在稀疏奖励任务中大幅提升样本效率。实验表明,即使少量规划步数也能极大缩短学习时间。
2025-10-16 15:57:04
1040
原创 第十三章 接口 协议和抽象基类
本章阐述了Python中接口编程的四种类型实现方式:鸭子类型(运行时结构)、大鹅类型(运行时名义,基于ABC)、静态鸭子类型(静态结构,基于Protocol)和静态类型(静态名义)。重点对比了动态协议与静态协议、结构类型与名义类型的差异,并通过序列协议、Tombola抽象基类及typing.Protocol等示例,说明如何在保持灵活性的同时实现接口契约与类型安全。
2025-10-16 11:15:46
295
原创 第十二章 序列的特殊方法
本章围绕实现一个支持高维向量的 `Vector` 类,通过组合模式使用 `array` 存储数据,完整实现了不可变扁平序列所需的特殊方法(如 `__len__`、`__getitem__`、切片、动态属性访问 `x/y/z/t`、哈希与高效等值比较、格式化输出等),并深入探讨了 Python 的协议、鸭子类型、惰性计算与内存优化等核心概念。
2025-10-15 17:04:15
564
原创 第7章 n步时序差分(5) n步树回溯
$n$步树回溯算法是一种无需重要度采样的离轨策略多步强化学习方法。它在更新动作价值时,除实际采样轨迹外,还对每个状态中未被选择的动作,按目标策略$\pi$的概率加权其估计价值,形成树状回溯结构。其$n$步回报通过递归方式融合即时奖励、未选动作的期望价值和后续回报,适用于估计$q_\pi$或$q_*$,是期望Sarsa的多步推广。
2025-10-15 15:11:55
682
原创 第十一章 符合 Python 风格的对象
本章通过实现 `Vector2d` 类,系统讲解了如何编写符合 Python 风格的对象:包括自定义 `__repr__`、`__str__`、`__bytes__`、`__format__` 等表示方法,使用 `@classmethod` 实现备选构造函数,通过 `@property` 和双下划线实现只读与“私有”属性,添加 `__hash__` 使其可哈希,利用 `__slots__` 节省内存,并支持模式匹配与类属性覆盖。所有设计均基于 Python 数据模型和鸭子类型,强调自然、一致的接口行为。
2025-10-15 11:45:47
930
原创 第十章 使用头等函数的设计模式
在Python中,头等函数为经典设计模式提供了更简洁、灵活的实现方式。策略模式无需定义抽象基类和多个子类,每个策略可直接写成独立函数,并通过`@promotion`装饰器自动注册到全局列表,实现“定义即可用”,避免手动维护策略集合的疏漏。命令模式同样可被函数或可调用对象替代——普通函数天然具备执行能力,复杂场景则借助实现`__call__`的类或闭包保存状态,甚至支持撤销操作。这种函数式重构不仅减少了样板代码,还提升了代码的可读性与可测试性,充分体现了Python“用简单方式解决复杂问题”的哲学。
2025-10-15 10:27:18
789
原创 第九章 装饰器与闭包
本章深入讲解了Python装饰器与闭包的核心机制:装饰器是接收函数并返回新函数的可调用对象,常用于日志、缓存等横切逻辑;闭包则通过嵌套函数捕获外层变量,实现状态保持。重点包括变量作用域规则、`nonlocal`声明的使用、带参数装饰器的三层结构,以及`functools.wraps`、`@lru_cache`和`@singledispatch`等标准库工具的应用。
2025-10-14 17:06:20
631
原创 第八章 函数中的类型提示
类型提示是Python可选的静态分析工具,不影响运行时行为。它通过注解提升代码可读性与安全性,支持泛型、Union、Protocol等机制,兼容鸭子类型与名义类型。合理使用抽象基类、TypeVar和协议,可在保持灵活性的同时实现精准类型检查。
2025-10-14 10:49:21
450
原创 第七章 函数是一等对象
本章阐述了Python中函数作为一等对象的特性,支持赋值、传参和返回。介绍了高阶函数、匿名函数(lambda)、可调用对象(含`__call__`)及灵活的参数机制(仅限位置/关键字参数)。并通过`operator`模块和`functools.partial`展示了函数式编程的实用技巧,强调用列表推导式替代`map`/`filter`以提升可读性。
2025-10-13 15:43:14
248
原创 第7章 n步时序差分(3) n 步离轨策略学习
本文介绍了离轨策略的n步时序差分学习方法,通过重要度采样校正行为策略与目标策略的差异,并以n=2的Sarsa为例,结合具体轨迹演示了各状态-动作对的更新过程及重要度采样比的影响。
2025-10-09 11:45:49
918
原创 第7章 n步时序差分(2) n步sarsa
n步Sarsa是SARSA算法的多步扩展,通过结合n步回报与自举,利用更长的轨迹信息加速学习。它在同策略下更新状态-动作价值函数,每次更新基于实际执行的动作序列,并在接近终止状态时切换为完整回报。相比单步SARSA,n步方法能将奖励信号向前传播n步,显著提升学习效率。
2025-10-09 10:54:49
358
原创 第六章 对象引用、可变性和垃圾回收
本文阐述了Python中对象引用的本质,强调变量是对象的“标签”而非“盒子”,深入讲解了身份(`is`)与相等性(`==`)的区别、浅复制与深复制的差异,并警示了可变对象作为默认参数和直接绑定外部可变参数带来的副作用。同时说明`del`仅删除引用,对象回收由垃圾回收机制自动处理。
2025-10-09 09:10:09
985
原创 第五章 数据类构建器
Python 提供三种数据类构建器:`collections.namedtuple`、`typing.NamedTuple` 和 `@dataclass`。前两者创建不可变的 tuple 子类,支持字段命名和类型注解;`@dataclass` 创建可变(或冻结)的普通类,功能更灵活,支持默认值、字段选项及初始化后处理。三者均通过元编程自动注入常用方法,提升代码简洁性与可读性,适用于构建轻量级数据容器。
2025-10-08 10:07:18
670
原创 第四章 Unicode 文本和字节序列
本文系统阐述了 Python 3 中 Unicode 文本与字节序列的核心概念与实践原则。强调了 Unicode 码位与编码(如 UTF-8、UTF-16)的区别,明确了 str 与 bytes 的转换机制及常见错误(如 UnicodeEncodeError 和 SyntaxError)。通过“三明治原则”指导开发者在输入端尽早解码、中间层纯文本处理、输出端延迟编码,以避免乱码。同时介绍了文本规范化(NFC/NFD)、排序(locale、pyuca)、编码检测及 BOM 处理等高级话题。
2025-10-07 12:23:37
1016
原创 第7章 n步时序差分(1) n步时序差分预测
n步时序差分(n-step TD)统一了蒙特卡洛与单步TD方法,通过灵活选择自举跨度,在偏差与方差之间取得平衡。它解耦了更新频率与信用分配范围,使早期状态能在单幕中直接接收远端回报信号。理论表明n步回报具有误差收缩性,而实验验证中等n值(如4或8)在19状态随机游走任务中表现最优,兼顾学习效率与稳定性,凸显其在长序列任务中的优势。
2025-10-06 22:05:05
929
原创 第三章 字典与集合
本章系统讲解了Python中字典与集合的核心机制与高级用法。二者均基于哈希表实现,要求键或元素必须可哈希,从而保障O(1)平均查找性能。内容涵盖现代字典操作(推导式、解包、合并、模式匹配)、映射API标准化(ABC、UserDict优势)、缺失键处理(defaultdict、__missing__)、特殊映射类型(OrderedDict、ChainMap、Counter)及不可变视图(MappingProxyType)。同时介绍了字典视图的动态特性、集合的去重与运算功能,以及底层实现对内存和性能的实际影响,
2025-09-30 11:10:57
762
原创 第二章 数组与序列
Python 的序列类型可分为容器序列(如 list、tuple,可包含任意对象引用)和扁平序列(如 str、bytes、array.array,直接存储原始值),后者内存更紧凑、类似 C 数组;结合列表推导式、生成器表达式、解包、模式匹配、切片等特性,Python 提供了高效且优雅的序列处理方式,而在处理大量同类型数据时,使用 array、memoryview 或 NumPy 等工具能显著提升性能与内存效率。
2025-09-25 16:41:24
941
原创 第一章 python数据模型
第一章系统地阐述了Python数据模型的核心概念,通过`FrenchDeck`和`Vector`等实例,展示了如何利用特殊方法(如`__len__`、`__getitem__`、`__repr__`)让自定义对象无缝集成到Python语言中,表现出与内置类型一致的行为。它强调了“鸭子类型”和协议的重要性:只要实现特定的特殊方法,对象就能被当作序列、可迭代对象等来使用,无需复杂的继承。
2025-09-23 14:27:25
702
原创 STS_Root_Cause_Analysis_Error.ipynb 工作流程解析
本文档旨在帮助理解 `STS_Root_Cause_Analysis_Error.ipynb` 的工作流程和各部分功能。主要面向2025 AI 原生编程挑战赛参与者和阿里云运维相关工作人员。
2025-09-12 11:30:32
956
原创 强化学习笔记(二)多臂老虎机(一)
本笔记系统讲解多臂老虎机问题,作为强化学习中评价性反馈的典型场景。内容涵盖动作价值估计、ε-贪婪策略、探索与利用的权衡,并通过10臂测试平台实验比较不同ε值的性能,验证探索对长期收益的关键作用。针对非平稳环境,引入常数步长更新法,赋予近期奖励更高权重,以适应价值变化。通过理论推导、算法实现和对比实验,说明采样平均法在动态环境中表现不佳,而指数加权平均更有效。练习题进一步深化对策略行为和权重结构的理解。整体内容为后续强化学习奠定坚实基础,强调适应性与探索机制在实际应用中的核心地位。
2025-09-09 16:19:23
779
原创 强化学习笔记(二):有限马尔可夫决策过程(二)
这段笔记系统地阐述了强化学习中的最优策略与最优价值函数的核心理论,围绕“智能体如何通过与环境交互来最大化长期累积奖励”这一目标展开。它首先定义了策略的优劣关系和最优策略 π 的存在性,引入了最优状态价值函数 v (s) 和最优动作价值函数 q (s,a) ,并推导出它们必须满足的贝尔曼最优方程,揭示了最优价值的递归结构。
2025-08-27 16:35:38
711
原创 强化学习笔记(二):有限马尔可夫决策过程(一)
介绍了有限马尔可夫决策过程(Finite MDP)的基本框架,阐述了智能体与环境在离散时间步下的交互机制,定义了状态、动作、奖励和转移概率等核心概念,并通过实例说明MDP如何建模序贯决策问题。重点强调奖励假说、回报的定义(包括回合制与折扣回报),以及马尔可夫性在状态设计中的关键作用,为强化学习问题提供了形式化的数学基础。
2025-08-27 10:59:37
894
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1