利用google地图标注做网站施工企业2024年市场开发工作思路
利用google地图标注做网站,施工企业2024年市场开发工作思路,秦皇岛网站,网站开发不用框架?1. 从蒙特卡洛到TD学习#xff1a;那道令人困惑的鸿沟
如果你刚开始学习强化学习#xff0c;很可能和我当初一样#xff0c;被一个巨大的“知识断层”给卡住了。前一章还在学蒙特卡洛方法#xff0c;感觉挺直观#xff1a;要估计一个状态的价值#xff1f;简单#xff0…1. 从蒙特卡洛到TD学习那道令人困惑的鸿沟如果你刚开始学习强化学习很可能和我当初一样被一个巨大的“知识断层”给卡住了。前一章还在学蒙特卡洛方法感觉挺直观要估计一个状态的价值简单让智能体多跑几圈把得到的回报平均一下就行了。这就像你想知道抛一枚硬币正面向上的概率那就多抛几次数一数正面朝上的次数然后除以总次数。蒙特卡洛方法就是这种“算总账”的思路等一局游戏或一个回合彻底结束了再回头来更新所有经历过的状态的价值。但紧接着课本或课程就跳到了时序差分学习。好家伙公式一下子变了样。它不等游戏结束每一步都在更新它用一个“估计”去更新另一个“估计”。第一次看到TD更新公式V(S_t) ← V(S_t) α [R_{t1} γV(S_{t1}) - V(S_t)]时我脑子里全是问号凭什么为什么这个看起来像“猜谜”的算法能收敛到正确的值它和蒙特卡洛的本质区别到底在哪为什么它通常学得更快这个困惑非常普遍因为它背后隐藏着一个深刻的数学框架转换。蒙特卡洛是纯粹的“均值估计”而TD学习则是一种“增量式、自举式”的更新。连接这两者的桥梁就是我们今天要深入探讨的随机近似理论。可以说不理解随机近似TD学习对你而言就永远是个黑箱魔法而一旦掌握了它你不仅能看懂TD更能理解Q-learning乃至众多现代无模型强化学习算法的核心引擎。这篇文章我就想带你一起亲手拆开这个黑箱看看里面的数学齿轮是如何精密咬合的。2. 基石从“算总账”到“来一笔记一笔”的均值估计让我们从最基础、也最根本的问题开始如何估计一个随机变量X的期望值E[X]这是强化学习里估计价值函数、优势函数、梯度等几乎所有量的基础。2.1 非增量式方法蒙特卡洛的直觉最直接的方法就是我们熟悉的蒙特卡洛。假设我们独立重复实验收集了N个样本x1, x2, ..., xN。那么对期望E[X]的自然估计就是样本均值w_N (x1 x2 ... xN) / N这个方法非常完美大数定律保证了当N趋向无穷时w_N会几乎必然地收敛到E[X]。但它的缺点在实战中很突出你必须等所有样本都收集齐了才能算出这个估计值。在强化学习里这意味着你必须等到一个完整的回合episode结束才能更新这个回合中所有状态的价值。对于长回合或持续型任务学习速度会非常慢而且无法实现“在线学习”。2.2 增量式方法随机近似的雏形有没有一种方法来一个样本就更新一次我的估计让估计值“滚动”起来呢有的而且公式出乎意料地简洁w_{k1} w_k α_k (x_k - w_k)这里w_k是我们对E[X]的第k次估计x_k是第k个新观察到的样本α_k是一个步长或学习率参数。我第一次看到这个公式时觉得它简直太符合直觉了它的逻辑是我用新的样本x_k和我当前的估计w_k做个比较。如果x_k比w_k大说明我可能低估了那就把w_k往上调一点如果x_k小说明可能高估了那就往下调一点。调整的幅度由步长α_k和新旧差异(x_k - w_k)共同决定。2.3 为什么这个“滚动更新”是有效的我们来做个简单的思想实验。假设真实的期望E[X] 5。我们初始猜测w_1 0并设α_k 1/k。第一个样本x_1 4w_2 0 (1/1)*(4-0) 4第二个样本x_2 6w_3 4 (1/2)*(6-4) 4 1 5第三个样本x_3 5w_4 5 (1/3)*(5-5) 5看仅仅三个样本我们的估计w_k就已经在真实值5附近了。更重要的是你可以数学证明当α_k 1/k时w_k恰好就是前k个样本的算术平均值也就是说这个增量式算法和“算总账”的蒙特卡洛方法在结果上是等价的。但它具备了蒙特卡洛没有的实时性。然而真正的力量在于α_k不一定非得是1/k。它可以是一个很小的常数比如0.01。当α_k为常数时算法对新样本永远保持一定的敏感性能够持续跟踪一个缓慢变化的期望这在非平稳环境中非常有用。但这时w_k就不会精确等于历史均值了它还能收敛吗这就引出了我们更一般的理论框架。3. 核心引擎Robbins-Monro算法与随机近似上面那个均值估计算法其实是一个更宏大、更强大的算法家族——随机近似——的一个特例。而随机近似理论的奠基之作便是Robbins-Monro算法。3.1 RM算法要解决什么问题想象一个黑盒子。你输入一个参数w它会输出一个值g(w)但你无法直接观测到g(w)只能观测到带有噪声的测量值g̃(w) g(w) 噪声。我们的目标是找到那个使得g(w) 0的w*。换句话说我们要在不知道函数g具体表达式、只能通过带噪声的测量来试探的情况下解一个方程。这个问题在机器学习中无处不在。例如在优化一个目标函数J(w)时我们寻找其极小值点这通常需要求解梯度∇J(w) 0。这里g(w)就是梯度∇J(w)。但我们往往无法精确计算整个数据集的梯度那需要遍历所有数据只能基于一个或一小批数据样本计算一个带噪声的“随机梯度”g̃(w)。这不正是我们面临的问题吗3.2 RM算法如何工作RM算法的迭代公式简洁而深刻w_{k1} w_k - a_k * g̃_k(w_k)其中g̃_k(w_k)是在点w_k处对g(w_k)的一个带噪声的观测测量a_k是步长。这个算法在直觉上很好理解如果当前的测量值g̃_k是正的意味着g(w_k)很可能为正那么函数g在w_k处大于零。为了让它趋向于零我们需要减小w的值所以用w_k减去一个正数。反之如果测量值为负我们就增加w。步长a_k控制着调整的幅度。3.3 连接均值估计与RM算法现在让我们把最初的均值估计问题“包装”成一个RM问题。我们的目标是找到E[X]。定义函数g(w) E[X - w] E[X] - w。那么使得g(w) 0的解w*正是E[X]。我们对g(w)的带噪声观测是什么很简单就是g̃(w) x_k - w其中x_k是来自X分布的一个随机样本。因为E[g̃(w)] E[x_k - w] E[X] - w g(w)所以x_k - w是g(w)的一个无偏估计。把这个g̃(w)代入RM算法公式w_{k1} w_k - a_k * g̃_k(w_k) w_k - a_k * (x_k - w_k) w_k a_k * (x_k - w_k)看这正是我们之前推导出的增量式均值估计算法。原来我们一直在用的这个直观的滚动平均法其背后站着的就是强大的Robbins-Monro随机近似理论。3.4 收敛的保证步长a_k的条件RM算法不是在任何情况下都能收敛的。它对步长序列{a_k}有两个关键要求∑ a_k ∞步长之和要发散∑ a_k^2 ∞步长平方之和要收敛第一个条件确保算法有足够的“能量”探索整个空间最终到达解w*即使初始值离得很远。第二个条件确保随着迭代进行步长不断减小噪声的影响被逐渐平均掉算法最终能稳定在解附近而不是一直震荡。经典的a_k 1/k序列就完美满足这两个条件。但在实际强化学习中我们经常使用一个很小的常数步长如α0.1。这违反了第二个条件平方和发散理论上算法不会“收敛”到一个固定点而是在最优解附近做一个微小的、有界的随机游走。但这在实践中往往是可接受的甚至是有益的因为它能让算法持续探索适应环境的变化。这可以看作是一种“近似收敛”或“在最优解邻域内徘徊”。4. 特例与推广随机梯度下降理解了RM算法随机梯度下降就变得一目了然了。SGD可以说是RM算法在优化问题领域最著名、应用最广泛的特例。4.1 从梯度下降到随机梯度下降假设我们要最小化一个目标函数J(w) E[f(w, X)]其中期望是对随机变量X取的。标准的梯度下降更新是w_{k1} w_k - α * ∇J(w_k) w_k - α * E[∇_w f(w_k, X)]这里∇J(w_k)是真实梯度True Gradient。问题在于计算这个期望通常需要遍历所有可能的数据或状态在大规模问题中代价高昂。SGD做了一个大胆的近似用单个样本或一个小批量样本计算的梯度来代替真实的期望梯度。即w_{k1} w_k - α * ∇_w f(w_k, x_k)其中x_k是第k步采样得到的数据。∇_w f(w_k, x_k)就被称为随机梯度。4.2 SGD作为RM算法现在我们把SGD要解决的问题映射到RM框架。我们的目标是最小化J(w)这等价于求解方程g(w) ∇J(w) 0。函数g(w)就是真实梯度。我们对g(w)的带噪声观测是什么正是随机梯度g̃(w_k) ∇_w f(w_k, x_k)。因为E[g̃(w_k)] E[∇_w f(w_k, X)] ∇J(w_k) g(w_k)所以随机梯度是真实梯度的无偏估计。于是求解g(w)0的RM算法是w_{k1} w_k - a_k * g̃(w_k) w_k - a_k * ∇_w f(w_k, x_k)这正是SGD的公式。因此SGD是RM算法在目标函数梯度为零这个寻根问题上的直接应用。RM算法的收敛性条件自然也就为SGD的收敛提供了理论保证。4.3 再看均值估计它也是SGD让我们回到最初的均值估计问题。我们可以把它构造为一个优化问题最小化目标函数J(w) (1/2) * E[(X - w)^2]。这个函数衡量的是估计值w与随机变量X的均方误差。可以证明使J(w)最小的w正是E[X]。对这个目标函数求梯度∇J(w) E[w - X] w - E[X]。 使用梯度下降w_{k1} w_k - α * (w_k - E[X])。但我们不知道E[X]。 使用SGD用单个样本x_k代替E[X]得到随机梯度w_k - x_k。 于是SGD更新为w_{k1} w_k - α * (w_k - x_k) w_k α * (x_k - w_k)。看兜了一大圈我们又回到了最初的增量式均值更新公式。这完美地证明了简单的滚动平均、强大的RM算法、以及深度学习的基石SGD在数学本质上是同源的。它们都是随机近似思想在不同层面的体现。4.4 SGD的收敛模式一个有趣的现象SGD的收敛行为非常有意思。当当前参数w_k离最优解w*很远时随机梯度∇f(w_k, x_k)的方向虽然嘈杂但大体上指向真实梯度∇J(w_k)的方向即下山的方向。此时SGD的行为很像标准的梯度下降能快速向最优解区域靠近。但是当w_k非常接近w*时真实梯度∇J(w_k)本身已经接近于零。此时随机梯度中的噪声成分相对占比就变大了。这导致SGD在最优解附近会表现出明显的随机游走而不是精确地停在w*上。这解释了为什么在使用常数步长时SGD的最终结果总在一个区域里震荡。要减少这种震荡要么使用衰减步长要么在最后阶段切换为批量梯度下降。5. 知识鸿沟的弥合再看时序差分学习铺垫了这么多现在我们终于可以回到最初那个令人困惑的TD学习了。你会发现它的形式突然变得非常亲切。5.1 TD更新一个熟悉的“配方”回顾一下TD(0)算法更新状态价值函数的公式V(S_t) ← V(S_t) α [R_{t1} γV(S_{t1}) - V(S_t)]让我们稍微改写一下突出其结构新估计 ← 旧估计 步长 * [目标值 - 旧估计]这个结构是不是似曾相识把它和我们增量式均值估计的公式对比一下w_{k1} ← w_k α_k * (x_k - w_k)以及RM算法的公式w_{k1} ← w_k - a_k * g̃_k(w_k)注意符号这里g̃对应的是-(目标值-旧估计)本质上TD学习是在对一个“期望”进行增量式的、自举式的估计。它估计的不是简单的E[X]而是状态价值的期望V(s) E[R_{t1} γV(S_{t1}) | S_t s]。5.2 将TD学习映射到随机近似框架我们要解的“方程”是什么是贝尔曼方程V(s) - E[R γV(S‘) | s] 0。对于给定的策略真实的V(s)应该满足这个方程。定义函数g(V(s)) V(s) - E[R γV(S’) | s]我们的目标是找到使g(V(s))0的V(s)。我们对g(V(s))的“带噪声观测”是什么我们无法直接计算期望E[R γV(S‘)]但我们在环境中实际走一步会得到一个具体的即时奖励r和下一个状态s‘。于是我们可以得到一个观测/样本g̃(V(s)) V(s) - [r γV(s‘)]。注意r γV(s‘)被称为TD目标它是真实价值E[R γV(S’)]的一个有噪声、但无偏的样本估计假设V(s‘)是当前的价值函数估计值。应用RM算法为了求解g(V(s))0RM算法告诉我们应该按照以下方式更新V(s) ← V(s) - a_k * g̃(V(s)) V(s) - a_k * ( V(s) - [r γV(s‘)] )化简后得到V(s) ← V(s) a_k * ( [r γV(s‘)] - V(s) )这正是TD(0)更新公式步长a_k就是我们的学习率α。5.3 豁然开朗通过随机近似理论的透镜TD学习的奥秘被解开了蒙特卡洛目标是估计E[G_t]从当前状态开始的完整回报。它使用完整的回报G_t作为g̃来更新V(s)。它也必须等到回合结束才能获得这个样本。时序差分目标是求解贝尔曼方程V(s) E[R γV(S‘)]。它使用即时奖励和下一状态价值的估计值r γV(s‘)作为对期望E[R γV(S’)]的一个单步采样来构造g̃。它可以在每一步即时更新。两者都是随机近似算法的具体实例。蒙特卡洛求解的是“完整回报的均值”方程而TD求解的是“贝尔曼”方程。TD之所以能“边走边学”正是因为它利用了RM算法的思想用当前估计V(s‘)和即时观测r来构造一个对目标期望的有偏但可用的估计并通过迭代不断修正。6. 总结与实战启示走完这一趟从均值估计到RM算法再到SGD最后到TD学习的旅程我们最初面对的那个“知识鸿沟”已经被随机近似理论这座坚实的桥梁所弥合。理解这一点对于深入强化学习至关重要。对我个人而言想明白这一点后再看Q-learning、SARSA乃至Actor-Critic算法感觉就通透多了。它们无非是在更复杂的问题动作选择、最优策略等上应用同样的随机近似思想来求解相应的贝尔曼最优方程或策略梯度方程。噪声环境交互的随机性不再是一个需要克服的障碍而是算法迭代更新中固有的、并被理论所包容的一部分。在实战中这个理论也给了我们重要指导学习率的选择它对应RM算法中的步长a_k。衰减的学习率如1/k能保证严格收敛但可能学习太慢常数学习率能快速响应并适应非平稳环境但最终会在最优解附近波动。你需要根据问题性质做权衡。对“噪声”的平常心SGD和TD学习在收敛后期的震荡是正常现象这是用随机样本来代替精确期望所必须付出的代价。只要震荡范围在可接受区间内算法就是有效的。算法设计的通用模式当你遇到一个需要求解某个期望方程E[某种东西]0但又只能通过采样来获取信息的问题时就应该立刻想到随机近似框架。设计一个对该期望的无偏或有偏但渐进无偏的样本估计然后套用RM算法的更新格式一个实用的学习算法很可能就诞生了。随机近似理论远不止于此它还有更深入的收敛性分析、加速方法等。但对于强化学习入门者和实践者来说抓住其“用带噪声的增量更新来求解期望方程”的核心思想就足以打通从蒙特卡洛到TD学习、乃至到更高级模型无关算法的任督二脉。下次当你看到TD误差在训练曲线中跳动时你会知道那不仅是智能体在学习更是数学理论中那些优雅的随机过程在稳健地工作。