images/logo.jpg

枕石的个人博客

强化学习的数学原理(二):贝尔曼公式

强化学习核心:贝尔曼方程详解

在强化学习(Reinforcement Learning)中,我们的目标是让智能体(Agent)学会如何在一个环境中采取行动,以最大化累积奖励。为了评估一个策略(Policy)的好坏,我们需要一个标准来衡量在某个状态或采取某个动作后,未来可能获得的奖励总和。价值函数(Value Function)应运而生,而贝尔曼方程(Bellman Equation)则是连接价值函数的核心桥梁。

强化学习的数学原理(二):贝尔曼公式(笔记整理版)

贝尔曼方程笔记整理

一、基本过程与定义

1. 单步过程 (A single step process) $$S_t \xrightarrow{A_t} R_{t+1}, S_{t+1}$$

  • $t, t+1$: 离散时间步 (discrete time instances)。
  • $S_t$: 状态
  • $A_t$: 动作
  • $R_{t+1}$: 奖励
  • $S_{t+1}$: 下一状态

此过程由以下概率分布所决定:

  • $S_t \to A_t$ 由策略决定: $\pi(A_t=a | S_t=s)$
  • $S_t, A_t \to R_{t+1}$ 由环境动态决定: $p(R_{t+1}=r | S_t=s, A_t=a)$
  • $S_t, A_t \to S_{t+1}$ 由环境动态决定: $p(S_{t+1}=s’ | S_t=s, A_t=a)$

2. 多步轨迹 (Multi-step trajectory) $$S_t \xrightarrow{A_t} R_{t+1}, S_{t+1} \xrightarrow{A_{t+1}} R_{t+2}, S_{t+2} \xrightarrow{A_{t+2}} \dots$$

Go语言如何实现面向对象编程

Go 没有类(class),但它依然支持 封装、继承(组合)、多态 这些面向对象思想,只是实现方式和传统语言(Java/C++/Python)不同。


1. struct(结构体)代替 class ✅ 非常常用

Go 用 struct 表示对象的数据。 在所有实际项目中,几乎所有业务实体都要用 struct

Go变量声明完整总结

Go 是一门 静态类型语言,所有变量在 编译期 必须有确定的类型(可推断)。Go 提供了多种声明方式,既保持了静态语言的安全性,又在语法上简洁。


1. 使用 var 声明

基本语法:

var name type
var name type = value
var name = value // 类型自动推断

示例: