70、隐马尔可夫模型与分层强化学习:原理、应用与优化

隐马尔可夫模型与分层强化学习:原理、应用与优化

1. 隐马尔可夫模型概述

隐马尔可夫模型(Hidden Markov Models,HMM)在多个领域有着广泛的应用。自20世纪70年代引入语音识别领域后,它引领了随机方法在自然语言处理领域的发展,到80、90年代,随机方法在该领域得到了广泛应用,随后在90年代后期及以后,又拓展到文本挖掘和信息提取领域。在生物信息学方面,80年代中期开始用于DNA模式识别,此后得到了广泛使用。

1.1 相关程序实现

目前存在许多隐马尔可夫模型的实现程序,以下是三个值得关注的软件包:
| 软件包名称 | 开发者 | 实现算法 |
| — | — | — |
| UMDHMM | Tapas Kanungo | 前向 - 后向算法、维特比算法、鲍姆 - 韦尔奇算法 |
| JAHMM | Jean - Marc François | 与隐马尔可夫模型相关算法的Java实现 |
| HMMER | Sean Eddy | 用于蛋白质序列分析的轮廓HMM软件 |

1.2 交叉参考

隐马尔可夫模型还涉及到一些相关的算法和方法,如鲍姆 - 韦尔奇算法、贝叶斯方法、期望最大化聚类、马尔可夫过程和维特比算法等。

2. 分层强化学习基础

2.1 定义

分层强化学习(Hierarchical Reinforcement Learning,HRL)是将强化学习问题分解为子问题或子任务的层次结构,使得高层的父任务可以像调用原始动作一样调用低层的子任务。这种分解可以有多个层次,部分或全部子问题本身也可以是强化学习问题。当父任务被表述为强化学习问题时,通常会被形式化为半马尔可夫决策问题,因为其动作是持续一段时间的子任务。

2.2 动机与背景

强化学习面临着贝尔曼的“维度灾难”问题,即问题的表示随着状态和动作变量的数量呈指数级增长。而自然环境中的复杂性具有近可分解性,通过分层模型可以利用这一特性来简化对行为的理解和控制。人类社会很早就开始使用分层组织来解决复杂任务,因此在强化学习中引入分层结构是很自然的想法。

分层强化学习的优势在于,如果整体问题可以更紧凑地表示,并且子任务可以独立学习或提供,那么可以降低计算复杂度。子任务通常是随机宏操作,会执行其策略直到终止。如果子任务有多种终止方式,其最优策略将取决于调用它的上下文。子任务策略通常会持续多个时间步,因此被称为时间扩展动作。时间扩展动作有可能通过更小的“高层”状态空间进行转换,从而减小原始问题的规模。此外,分层强化学习还为子任务的重用提供了机会。

早期的分层学习发展借鉴了老板 - 下属模型的类比。例如,Ashby讨论了通过分层控制在大型系统中“放大”调节的概念,Watkins用导航员 - 舵手的分层控制示例说明了如何克服强化学习的局限性。早期的分层强化学习示例包括Singh的Hierarchical - DYNA、Kaelbling的Hierarchical Distance to Goal(HDG)和Dayan和Hinton的Feudal reinforcement learning等。

接近上世纪末,三种分层强化学习方法相对独立地发展起来:抽象机器层次结构(Hierarchies of Abstract Machines,HAMs)、选项框架(Options)和MAXQ值函数分解。这些方法都使用了时间扩展动作,并基于半马尔可夫决策过程理论来解决高层抽象强化学习问题。

2.3 分层强化学习系统结构

下面通过一个简单的例子来说明分层强化学习的机制。假设有一个四房间的房子,房间之间有门相连,左上角房间有一个门通向外面。agent从左下角房间开始,它可以感知自己在房间中的位置和所在的房间,每次时间步可以向四个方向移动一步,并且每步会得到 -1 的奖励,目标是通过成本最低的路线离开房子。假设动作是随机的,有80%的概率朝预期方向移动,20%的概率停留在原地。

如果使用普通的强化学习方法解决这个问题,需要存储定义在100个状态和4个动作上的400个Q值。而如果将状态空间分解为四个相同的房间,分层强化学习可以更高效地解决这个问题。具体步骤如下:
1. 解决子问题 :分别找到离开房间向北和向西的最优解,每个子问题需要存储定义在25个状态和4个动作上的100个Q值。
2. 解决高层问题 :将四个房间作为状态,这是抽象状态,因为房间内的具体位置已被抽象掉。在每个抽象状态中,允许选择已学习的离开房间的动作之一。这些是时间扩展动作,一旦调用,通常会持续多个时间步直到agent离开房间。解决这个高层问题只需要存储定义在4个状态和2个动作上的8个Q值。

学习完成后,高层策略将根据当前房间确定要调用的最优离开房间的动作,控制传递给相应的子任务,子任务完成后控制返回到高层,直到agent最终离开房子。分层强化学习总共需要208个Q值,几乎是普通强化学习存储需求的一半,同时也节省了时间复杂度。

这个例子隐藏了分层强化学习需要解决的许多问题,如安全的状态抽象、在初始条件改变或奖励打折时如何适当计算子任务累积奖励、解决方案的最优性以及分层结构的学习等。

2.4 半马尔可夫决策问题形式化

分层强化学习的共同底层形式化是半马尔可夫决策过程(Semi - Markov Decision Process,SMDP)。SMDP通过允许动作是时间扩展的,对马尔可夫决策过程进行了推广。以下是离散时间方程:
设随机变量N为从状态s开始执行时间扩展动作a所需的时间步数,结果状态s’的状态转移概率函数和期望奖励函数分别为:
- 状态转移概率函数:$T_{ss’}^{N,a} = P{s_{t + N} = s’|s_t = s, a_t = a}$
- 期望奖励函数:$R_{ss’}^{N,a} = E\left{\sum_{n = 1}^{N} \gamma^{n - 1} r_{t + n}|s_t = s, a_t = a, s_{t + N} = s’\right}$

其中,$R_{ss’}^{N,a}$是N个未来折扣奖励的期望总和,折扣因子$\gamma \in [0, 1]$。当$\gamma < 1$时,可确保值函数对于连续或无限期问题收敛。任意策略$\pi$和最优策略(用$\pi^ $表示)的值函数的贝尔曼“备份”方程与马尔可夫决策过程类似,但求和是针对s’和N进行的:
- 任意策略的值函数:$V_{\pi}^m(s) = \sum_{s’,N} T_{ss’}^{N,\pi(s)} \left[R_{ss’}^{N,\pi(s)} + \gamma^N V_{\pi}^m(s’)\right]$
- 最优策略的值函数:$V^
m(s) = \max_a \sum {s’,N} T_{ss’}^{N,a} \left[R_{ss’}^{N,a} + \gamma^N V^*_m(s’)\right]$

对于有保证终止的问题,折扣因子$\gamma$可以设为1,此时可以将步数N边缘化,求和仅针对s进行,上述方程就与马尔可夫决策过程的方程类似,只是将期望原始奖励替换为时间扩展动作终止时的期望奖励总和。所有使用原始动作的强化学习方法对于使用时间扩展动作的问题同样有效。

2.5 分层强化学习的方法

2.5.1 抽象机器层次结构(HAMs)

在HAM方法中,设计者通过提供称为抽象机器的随机有限状态自动机来指定子任务。实际上,多个抽象机器可以相互调用作为子程序,原则上这相当于指定一个具有两种状态的大型抽象机器:动作状态,用于指定在要解决的马尔可夫决策过程的状态下要采取的动作;选择状态,具有非确定性动作。

抽象机器是一个三元组$\langle \Sigma, I, \delta \rangle$,其中$\Sigma$是有限的机器状态集,$I$是从要解决的马尔可夫决策过程的状态到机器状态的随机函数,用于确定初始机器状态,$\delta$是将机器状态和马尔可夫决策过程状态映射到下一个机器状态的随机下一状态函数。马尔可夫决策过程和抽象机器的并行动作产生一个离散时间的高层半马尔可夫决策过程,抽象机器的动作状态在选择状态之间生成一系列时间扩展动作。只有原始马尔可夫决策过程的一部分状态与选择点相关联,这可能会显著减小高层问题的规模。

以四房间例子为例,图2中的抽象机器提供了离开房间向西或向北的选择。在每个房间中,它会采取行动将agent移动到墙壁,并沿着墙壁进行随机游走,直到找到门。原始马尔可夫决策过程中只有五个状态是高层半马尔可夫决策过程的状态,即agent的初始状态和抽象机器进入选择状态的门另一侧的状态。强化学习方法以通常的方式更新这五个状态的值函数,奖励是自上一个选择状态以来累积的奖励。最优策略由三个时间扩展动作组成,依次是向西、向北和再次向北离开房间。解决半马尔可夫决策过程将为agent提供在抽象机器的约束下离开房子的最优策略,但在这种情况下,由于沿着墙壁随机游走来寻找门效率低下,所以不是全局最优策略。

HAM方法基于工程师和控制理论家能够设计出实现特定低层行为的良好控制器。HAMs是一种部分指定过程知识的方式,用于将马尔可夫决策过程转换为简化的半马尔可夫决策过程。在最一般的情况下,HAMs可以是图灵机,能够执行agent完整感官 - 动作历史的任何可计算映射。

2.5.2 选项(Options)

对于具有有限状态S和动作A的马尔可夫决策过程,选项将一步原始动作扩展为包括时间扩展动作。选项由三个组件组成:策略$\pi : S \times A \to [0, 1]$、终止条件$\beta : S \to [0, 1]$和启动集$I \subseteq S$。选项$\langle I, \pi, \beta \rangle$在状态s可用当且仅当$s \in I$。如果调用一个选项,动作将根据$\pi$进行选择,直到根据$\beta$终止选项。这些选项被称为马尔可夫选项,因为策略$\pi$采取的选项内动作仅取决于当前状态s。也可以将选项推广为半马尔可夫选项,其中策略和终止条件的选择取决于自选项启动以来的所有先前事件。例如,可以在一段时间后使选项“超时”。从最一般的解释来看,选项和HAMs具有相似的功能,但侧重点不同。

选项的目的是增强马尔可夫决策过程可用的原始动作。选项执行的时间扩展动作产生一个半马尔可夫决策过程。与HAMs一样,如果选项替换原始动作,半马尔可夫决策过程可以显著简化。当保留原始动作时,对于其好处存在争议。强化学习可能会加速,因为值函数可以在状态空间中更大的距离上进行备份,并且包含原始动作可确保收敛到全局最优策略,但引入额外动作会增加存储和探索的需求。

在一个类似于图1的四房间例子中,作者展示了选项如何以逐个房间的方式比逐个位置的方式更快地学习。当目标不在方便的位置,无法通过给定的选项到达时,可以将原始动作作为特殊情况的选项包含进来,仍然可以加速某些问题的学习。例如,仅使用离开房间的选项无法到达房间中间的目标,当进入包含目标状态的房间时,需要原始动作。虽然包含原始动作可确保收敛到全局最优策略,但这可能会给学习者带来额外的工作。

2.5.3 MAXQ

MAXQ方法将分层强化学习的子任务限制为原始马尔可夫决策过程的状态、动作和策略片段的子集,而不引入额外的状态,这与HAMs和半马尔可夫选项不同。MAXQ的贡献在于对层次结构上的值函数进行分解,并提供了状态抽象的机会。

马尔可夫决策过程被手动分解为一个称为任务层次结构的分层有向无环图的子任务。每个子任务是一个较小的(半)马尔可夫决策过程。在分解马尔可夫决策过程时,设计者为每个子任务指定活动状态和终端状态。终端状态通常分为目标终端状态和非目标终端状态。通过对非目标终端状态设置惩罚,为每个子任务学习策略,以鼓励它们在目标终端状态终止。每个子任务中可用的动作可以是原始动作或其他(子)子任务。每个子任务可以将其任何子任务作为时间扩展动作调用。当一个任务进入终端状态时,它及其所有子任务将中止并将控制返回给调用的子任务。

图3展示了之前四房间问题的任务层次结构。四个低层子任务是通用房间的子马尔可夫决策过程,分别学习通过四个可能的门离开房间的策略。箭头表示向目标终端状态的转换,“X”表示非目标终端状态。状态、动作、转换和奖励继承自原始马尔可夫决策过程。向终端状态转换的奖励经过设计,以鼓励agent避免非目标终端状态并在目标状态终止。高层问题(半马尔可夫决策过程)仅由四个房间作为状态组成。任何子任务(离开房间的动作)都可以在任何房间中调用。

MAXQ的一个关键特征是将状态的值表示为子任务完成值和直接原始动作值的分解总和。完成值是在遵循子任务策略采取下一个(时间扩展)动作后完成子任务的预期(折扣)累积奖励。总和包括从任务层次结构的根任务到原始动作路径上调用的所有任务。Q函数递归表示为:
$Q_{\pi}(i, s, a) = V_{\pi}(a, s) + C_{\pi}(i, s, a)$

其中,i是子任务标识符,s是当前状态,动作a是子任务(或原始动作),$\pi$是每个子任务的策略。

以图3的任务层次结构为例,对于最优策略,agent状态的值由任务层次结构的两个级别和一个原始动作决定。如图4所示,agent状态的值函数表示采取下一个向北的原始动作、完成离开房间向西的低层子任务以及完成离开房子的高层任务的预期奖励。分解值函数的好处是可以更紧凑地表示,因为只需要存储非原始子任务和原始动作的完成值。

这个例子展示了两种类型的状态抽象。由于所有房间都相似,在学习房间内导航策略时可以忽略房间标识。其次,当未来奖励不打折时,离开房间后的完成值与该房间的起始状态无关。这些“漏斗”动作允许将房间内状态抽象为每个房间的单个状态,就完成值而言。结果是原始问题可以分解为顶层的一个小四状态半马尔可夫决策过程和四个较小的子任务马尔可夫决策过程。

3. 分层强化学习的最优性

分层强化学习在满足收敛条件的情况下,最多只能得到层次最优的解决方案,即与任务层次结构一致的解决方案。MAXQ引入了另一种最优性——递归最优性。MAXQ优化子任务策略以达到目标状态,而忽略其父任务的需求。这使得子任务可以在各种上下文中重用,但在每种情况下可能不是最优的。递归最优解决方案不会比层次最优解决方案更好。如果设计者选择了较差的抽象机器、选项或分层分解,递归和层次最优性都可能比全局最优解决方案差很多。

由于马尔可夫决策过程的随机性,时间抽象动作调用后,其适用条件可能会发生变化,由于“随机漂移”,另一个动作可能会成为更好的选择。在这种情况下,继续执行子任务策略直到终止可能不是最优的。通过不断中断子任务(如在HDG中),可以选择更好的子任务。Dietterich将这种“轮询”过程称为分层贪婪执行。虽然这保证不会比层次最优或递归最优解决方案差,并且可能会好很多,但仍然不能保证全局最优性。在使用分层贪婪执行进行学习时需要非常小心。Hauskrecht等人讨论了保证最优性的分解和解决方案技术,但不幸的是,除非马尔可夫决策过程可以分解为非常弱耦合的较小马尔可夫决策过程,否则计算复杂度不一定会降低。如果选项或子任务策略可以在多个马尔可夫决策过程中重用并分摊成本,仍然会有好处。

4. 自动分解

在上述方法中,程序员需要手动将整体问题分解为子任务层次结构。自动分解问题的方法包括寻找子目标瓶颈或地标状态,以及寻找共同的行为轨迹或区域策略。例如,在图1中,agent在前往目标的途中会通过起始房间的两个门之一。每个门相邻的状态在成功试验中比其他状态访问更频繁。

NQL(嵌套Q学习)和McGovern都使用这个想法来识别子目标。Moore等人建议,对于某些导航任务,性能对地标位置不敏感,自动随机生成的地标集与更有目的地定位的地标集相比,结果差异不大。Hengst探索了从agent与环境的交互经验中自动学习类似MAXQ的任务层次结构,自动找到共同区域并在agent预测失败时生成子目标。方法包括对无限期问题进行带折扣的状态抽象和将问题分解为部分有序的任务层次结构。当因果图中没有循环时,变量影响结构分析(VISA)算法使用给定的动作动态贝叶斯网络模型对因子马尔可夫决策过程进行分层分解。Konidaris和Barto引入了一种在连续域中进行强化学习的技能发现方法,构建通向任务结束奖励的技能链。

虽然由于篇幅限制无法涵盖分层强化学习的所有研究,但上述内容可以作为一个起点。分层强化学习仍然是一个活跃的研究领域,未来有望在更多领域得到应用和发展。

5. 分层强化学习的应用场景

分层强化学习在多个领域展现出了强大的应用潜力,以下是一些具体的应用场景:
- 机器人导航 :在复杂的室内或室外环境中,机器人需要从一个位置移动到另一个位置。可以将导航问题分解为多个子任务,如房间内导航、通过门、楼梯等。每个子任务可以独立学习,然后组合起来实现全局导航。例如,在一个大型仓库中,机器人可以先学习如何在每个货架区域内移动,然后学习如何从一个货架区域移动到另一个货架区域。
- 游戏领域 :在复杂的游戏中,如策略游戏、角色扮演游戏等,玩家需要完成多个任务和目标。分层强化学习可以帮助玩家自动规划和执行任务。例如,在一个角色扮演游戏中,玩家可以将任务分解为战斗、探索、升级等子任务,每个子任务可以有自己的策略和目标。
- 工业自动化 :在工业生产中,如生产线控制、物流管理等,需要对多个设备和流程进行协调和控制。分层强化学习可以将整个生产过程分解为多个子任务,每个子任务可以由不同的控制器或机器人执行。例如,在一个汽车生产线上,机器人可以学习如何完成焊接、喷漆、组装等子任务,然后通过分层强化学习协调这些子任务的执行。

6. 分层强化学习的挑战与未来发展方向

尽管分层强化学习具有许多优势,但仍然面临一些挑战,同时也为未来的发展指明了方向:
- 挑战
- 层次结构设计 :如何自动设计出最优的层次结构是一个难题。目前大多数方法需要人工手动分解问题,这需要大量的专业知识和经验。
- 子任务交互 :子任务之间的交互和协调可能会导致复杂的问题。例如,一个子任务的执行可能会影响其他子任务的状态和奖励,如何处理这些交互是一个挑战。
- 计算复杂度 :虽然分层强化学习可以降低计算复杂度,但在某些情况下,仍然需要处理大规模的状态和动作空间,计算复杂度仍然是一个问题。
- 未来发展方向
- 自动分层 :研究如何自动发现和学习层次结构,减少人工干预。例如,通过机器学习算法自动识别子目标和子任务,构建最优的层次结构。
- 多智能体协作 :将分层强化学习应用于多智能体系统中,实现智能体之间的协作和竞争。例如,在一个机器人团队中,每个机器人可以使用分层强化学习来完成自己的任务,同时与其他机器人进行协作。
- 结合深度学习 :将分层强化学习与深度学习相结合,利用深度学习的强大表示能力来处理复杂的状态和动作空间。例如,使用深度神经网络来学习子任务的策略和价值函数。

7. 总结

分层强化学习通过将复杂的强化学习问题分解为多个子任务,利用层次结构来降低计算复杂度,提高学习效率和可扩展性。本文介绍了分层强化学习的基本概念、动机、系统结构、半马尔可夫决策问题形式化以及几种常见的方法,如抽象机器层次结构(HAMs)、选项(Options)和MAXQ值函数分解。同时,还讨论了分层强化学习的最优性、自动分解方法、应用场景以及面临的挑战和未来发展方向。

分层强化学习在解决复杂问题方面具有巨大的潜力,但仍然需要进一步的研究和发展。未来,随着技术的不断进步,分层强化学习有望在更多领域得到应用,为人工智能和机器人技术的发展做出更大的贡献。

8. 流程图示例

下面是一个简单的分层强化学习流程的mermaid流程图:

graph TD
    A[开始] --> B[问题分解]
    B --> C[子任务学习]
    C --> D[高层任务学习]
    D --> E[策略执行]
    E --> F{是否完成目标}
    F -- 否 --> C
    F -- 是 --> G[结束]

9. 表格总结

方法 特点 优势 劣势
HAMs 通过抽象机器指定子任务,将MDP转换为SMDP 可部分指定过程知识,减小高层问题规模 可能不是全局最优策略,依赖人工设计
Options 扩展原始动作到时间扩展动作 增强动作能力,可加速学习 引入额外动作增加存储和探索需求
MAXQ 分解价值函数,进行状态抽象 紧凑表示问题,提供状态抽象机会 子任务可能不是全局最优

通过以上的表格和流程图,我们可以更清晰地理解分层强化学习的过程和各种方法的特点。在实际应用中,可以根据具体问题的需求选择合适的方法和技术,以实现更好的效果。

相关推荐

【信息科学与工程学】【数据科学】数据科学领域 第六篇 算法设计 01

算法设计

weixin_49199313的博客 1504

【信息科学与工程学】【通信工程】【企业网、园区网、数据中心、广域网】各类业务网络及其网络演算算法

企业网络是一个复杂的系统,其业务、人员、流量和安全特征相互交织。下面这张表格梳理了这些核心特征及其关联的数学模型,帮你先建立整体概念。特征维度核心特征关联数学模型/方法业务特征​多样性、服务等级协议、混合云趋势图论(拓扑优化)、排队论(M/M/1)、随机过程(业务到达)、优化理论(资源调度)人员特征​角色权限差异、访问行为随机性、安全意识差异概率统计(行为建模)、随机过程(会话生成)、博弈论(安全策略)、访问控制矩阵流量特征​混合性、突发性、时空规律性、方向性(南北/东西向)泊松过程(短时突发)、重尾分布(

weixin_49199313的博客 890

【信息科学与工程学】信息科学工程领域 第三篇 信号与系统~04 阵列信号与AR/VR信号处理

相关函数数学定义物理意义适用场景自相关函数​信号自身在不同时刻的相似性信号周期检测、特征提取互相关函数​两信号在不同时延下的相似性时延估计、信号对齐循环相关​针对循环平稳信号通信信号处理高阶相关​捕捉非高斯、非线性特征非线性系统、高阶统计量分析AR/VR语音信号处理与生成是一个快速发展的跨学科领域,涉及信号处理、机器学习、声学、心理学、人机交互等多个方面。全面理解:深入理解用户需求、技术可能性和限制平衡取舍:在音质、延迟、计算资源、功耗、成本间取得平衡迭代优化。

weixin_49199313的博客 845

【信息科学与工程学】【解决方案体系】第三十篇 在线游戏及游戏云系统模型与方程式01

本表格旨在系统化地描述在线游戏及其云系统所涉及的各类数学模型、算法和定理。以下为前8个核心模型的详细示例,展示了从用户请求建模到资源规划的完整链条。编号规则为D(设计)、P(性能)、R(资源)、C(成本)、A(算法)。编号类别领域模型配方定理/算法/模型/方法名称定理/算法/模型/方法的逐步思考推理过程及每一个步骤的数学方程式和参数选择/参数优化精度/密度/误差/强度底层规律/理论定理典型应用场景和各类特征变量/常量/参数列表及说明数学特征。

weixin_49199313的博客 2299

【管理科学】第三十五篇 企业经营中的管理科学01 权力、风险、运营、物流、人力资源、库存、合同、品牌、业绩、项目

编号类型领域子领域/内容问题问题的数学分析(电磁/信息论/数学物理/数学化学/界面科学/表面科学 + 几何/拓扑/代数/集合论/图论/数论/函数评估/数值估计/概率/统计/向量/张量/矩阵/矢量 + 其他)算法逐步推理思考的数学表达式及实现步骤及时序流程 参数列表及参数的数值范围及数值分析及常量/常数1管理科学问题运营管理生产计划如何分配有限资源生产多种产品以最大化利润?线性代数、凸优化、单纯形法;向量与矩阵目标函数 max c^T x,约束 Ax ≤ b, x ≥ 0。步骤:①标准化引入松弛变量;②构建初

weixin_49199313的博客 248

【信息科学与工程学】【通信工程】第十八篇 企业网、园区网、数据中心、广域网各类业务网络02

模型类别基本假设网络表示耦合函数渗透方程临界条件物理意义一对一依赖​每个交通节点与一个通信节点相互依赖双层网络:交通层G_T=(V_T,E_T),通信层G_C=(V_C,E_C),层间一一对应边E_I依赖函数:RT​=fT​(RC​,p),RC​=fC​(RT​,p)自洽方程: RT​=p[1−GT​0(1−RT​)][1−GC​0(1−RC​)] RC​=p[1−GC​0(1−RC​)][1−GT​0(1−RT​)]pc​=⟨kT2​⟩⟨kC2​⟩​1​ ⟨k²⟩=⟨k(k-1)⟩对称耦

weixin_49199313的博客 1144

【信息科学与工程学】【安全领域】第十二篇 简述数据安全体系与保密技术

设计一个自适应窗口调整算法,本质上是为您的系统装备一个能够感知环境、智能决策的“自动驾驶”模式。核心在于明确您的核心目标(是优先延迟还是精度),然后据此精心设计触发条件和调整策略。

weixin_49199313的博客 1785

【信息科学与工程学】【数据科学】数据科学领域 第六篇 算法设计 101 负载均衡/资源分配/并行算法/流算法/在线算法 /Qos算法/计算机图形图像算法

编号类型领域问题问题的数学分析及算法详细设计及数学表达式及方程式及多项式数学特征参数列表及参数的数值设计(含矩阵、队列、栈、树 、表、图、向量、其他)设计/制造/工艺/工程/工作流程完整实现步骤典型应用场景列表及优点与局限与瓶颈及依赖条件关联知识点连接点1负载均衡网络/分布式系统请求分发、会话保持、健康检查​加权轮询 (Weighted Round Robin):; 。权重为,总权重。每个服务器被选中的概率为。 最小连接数 (Least Connections):选择当前活跃连接数最少的服务器

weixin_49199313的博客 764

【信息科学与工程学】计算机科学与自动化——第十篇 芯片设计00 芯片中的基础学科知识03

湿度加速:Peck模型 AF = (RH_stress/RH_use)^n exp(Ea/k(1/T_use-1/T_stress))热循环加速因子:Arrhenius AF = exp(Ea/k (1/T_use - 1/T_stress))等离子体鞘层厚度:d_s = (2/3)√(2e/m) V^{3/4} / (ω_p √(J))过程能力Cpk = min((USL-μ)/(3σ), (μ-LSL)/(3σ))薄膜应力:Stoney公式 σ_f = (E_s t_s²)/(6t_f R)

weixin_49199313的博客 411

【信息科学与工程学】计算机科学与自动化——第三篇 计算理论基础04 大规模计算与并行计算理论

电路板(主板)是高度集成、为可靠性和扩展性设计的复杂系统平台。电容尤其是固态电容,是保障这个平台电力“洁净”和“稳定”的幕后英雄。它们通过滤波、去耦,确保了CPU、内存等核心部件在极端负载下的稳定工作,是服务器实现高可用性不可或缺的基石。如果把服务器CPU比作一个对饮食质量要求极高的运动员,那么主板供电电路就是“厨房系统”,而电容就是一组高效的“净水器和食物储备器”。

weixin_49199313的博客 1299

【信息科学与工程学】【产品体系】第十二篇 制造业生产加工05 控制算法 ——飞行(1)

航空航天控制的高级主题,包括先进飞行控制、航天器高级控制、无人机集群、航空发动机控制和飞行管理。

weixin_49199313的博客 1911

【信息科学与工程学】计算机科学与自动化-——第十五篇云计算 12 公有云里的“多Region + 多AZ“ 02 运营算法01

算法逐步思考推理思考(含数学方程式、对象、资源、任务、进程/协程/线程及对应的代数、约束、目标函数/传递函数/依赖函数、参数及参数的数值范围及边界条件、逐步推理的数学方程式列表、上下文切换、并发/串行/随机/乱序/顺序)算法逐步思考推理思考(含数学方程式、对象、资源、任务、进程/协程/线程及对应的代数、约束、目标函数/传递函数/依赖函数、参数及参数的数值范围及边界条件、逐步推理的数学方程式列表、上下文切换、并发/串行/随机/乱序/顺序)云厂商提高闲置资源利用率。算法复杂度为O(N),N为实例数量。

weixin_49199313的博客 283

【信息科学与工程学】【通信工程】第七十九篇 网络规划中的方案中的数学建模01

编号学科网络领域产品核心知识点与数学方程式在网络设计中的详细作用理论/工程依据 关联知识和法律法规1概率论与数理统计​流量工程与负载均衡​路由器、交换机、SDN控制器核心知识点:​ 排队论 方程式:​ M/M/1队列平均等待时间 W=μ(μ−λ)λ​ 变量定义:​ λ = 平均到达率 (packets/s), μ = 平均服务率 (packets/s) 单位:​ packets/s, s 数值设计:​ 需满足 ρ=λ/μ<1 以保证队列稳定。 推导要点:​ 基于泊松到达过程与指

weixin_49199313的博客 330

【信息科学与工程学】【数据科学】数据科学领域——第三篇 数学08 几何学07 网络几何01

编号类型领域问题问题的数学分析参数列表及参数的数值范围关联知识1组合优化 / 计算几何网络几何(几何图论):给定平面上的 n 个点(节点),求连接所有点的总边长最小的树。数学模型:设点集 P={p1​,…,pn​}⊂R2,边权为欧氏距离 d(pi​,pj​)=(xi​−xj​)2+(yi​−yj​)2​。目标是找到一棵生成树 T=(P,E)使得 ∑(i,j)∈E​d(pi​,pj​)最小。该问题是经典 MST 在欧氏度量下的特例,属于 NP-hard 吗?

weixin_49199313的博客 168

【信息科学与工程学】信息科学领域——第一百三十五篇 射频/天线08

编号类型领域子领域问题问题的数学分析及数值分析参数列表及数值范围/各类常量关联知识A873物理问题射频/太赫兹太赫兹脑胶质瘤边界术中识别​FEM-DEM-BEM-IEM分析太赫兹(140GHz)对"脑胶质瘤(WHO II-IV级)与正常白质"的介电差异,辅助术中边界判定(续A804癫痫+A805卒中)。 逐步推理: 1. FEM脑肿瘤:正常白质ε_r=35+8i@140G,胶质瘤IV级ε_r=45+15i(细胞密度↑+水肿),用FEM离散。 2. DEM性能:肿瘤区反射率R=0.5

weixin_49199313的博客 620

高效打卡系统设计:从行为心理学到实践工具

打卡系统作为现代时间管理的重要工具,其核心原理植根于行为心理学中的即时反馈机制和习惯养成理论。通过科学设计的打卡周期和可视化反馈,能有效提升个人自律性和目标达成率。在技术实现上,从纸质记录到数字化工具(如Notion、Excel自动化模板)的演进,为不同场景提供了灵活解决方案。特别在习惯追踪和进度管理领域,结合热力图生成、数据统计等技巧,打卡系统能转化为强大的自我监督工具。本文通过实践案例,详解如何构建兼顾弹性和约束力的个性化打卡方案,帮助读者突破'三天打鱼两天晒网'的常见困境。

weixin_30047059的博客 341

双足步行机器人的ZMP与CoP检测

静态步行与动态步行   机器人步态分为静态步行和动态步行。当机器人做静态步行运动时,身体的各个部分运动速度很小,机器人的整体稳定性较易控制。静态步行稳定性采用机器人的重心地面投影点(Center of Gravity,简称CoG)作为稳定性标准,这种判定方法适用于运动较为缓慢的情况。如果机器人采用的是一种高速运动的步行方式,则称之为动态步行。当机器人进行动态步行时,其重心的位置和加速度的大小时...

weixin_34112208的博客 5919

工业视觉光源频闪控制的三种核心模式与选型实战

本文深入解析工业视觉系统中光源频闪控制的三种核心模式:光源主控、相机主控与硬同步。针对高速飞拍、缺陷检测等场景,详细对比了各模式的时序原理、硬件要求与适用场景,并提供了基于产线速度与检测需求的实战选型指南,帮助工程师有效消除运动模糊、提升成像质量与系统稳定性。

weixin_29299807的博客 442

爬取国家统计局最近10年年度数据

一、编码流程 1.目标网址:https://data.stats.gov.cn/easyquery.htm?cn=C01 2.编码思路: (1) 解析左侧指标树,实现4级标签定位 (难点:层层嵌套,下一级指标的xpath路径以上一级指标为基础;不是所有二级指标都含有三和四级指标,需要进行判断) (2) 使用selenium webdriver 点选指标,加载出右侧表格数据 (难点:当指标无法在全局页面显示时,需向下拖动滚动条) (3) 解析右侧数据,实现数据存储 3.使用模块: (1) selenium:解

weixin_39645690的博客 4563

Halcon 3D视觉实战:5步将线激光高度数据转为可分析的深度图与点云

本文详细介绍了如何利用Halcon平台将线激光高度数据转换为深度图与点云的5步实战方法。通过具体代码示例和工业检测案例(如锂电池胶水测量),帮助工程师高效处理3D视觉数据,实现从原始数据到三维可视化的完整技术链路。

weixin_29039773的博客 361

SSE消息推送避坑指南:从Chrome兼容性到Spring超时配置

本文深入探讨了在Java Spring Boot项目中实现SSE消息推送时,从浏览器兼容性到后端配置的完整避坑指南。针对Chrome并发连接限制、Safari自动断开、Nginx代理缓冲以及Spring SseEmitter内存泄漏与超时管理等生产环境常见问题,提供了具体的解决方案和最佳实践配置,帮助开发者构建稳定可靠的实时推送系统。

work3的博客 452

九天揽月带你玩转Ardupilot 的EKF2纸老虎(1)

目录 目录 摘要 1.kalman基础知识储备 摘要 本文主要记录自己学习ardupilot的ekf2代码的过程,相信很多人想移植或者学习ekf2,看到眼花缭乱的代码无从下手。九天揽月将带你玩转Ardupilot 的EKF2纸老虎 1.kalman基础知识储备 (1)先来看下最基础也是最重要的线性kalman 总结:不要害怕kalman,只要你可以懂得线性kal...

陌城烟雨 1万+

Vue3 - 最新实现在线预览Excel文件(xls/xlsx)多种方案,解析打开excel电子表格支持服务器链接在线URL形式、调用后端接口获取二进制文件流、文件地址(vue3实现excel预览)

vue3,预览excel文件,xlsx,xls,vue预览Excel表格,vue在线编辑xls文件,预览和编辑,vue3如何新开一页浏览器打开查看,手机h5页面打开在线EXCEL文档,在弹框中加载预览,在指定模态框中显示,基于Vue的Excel文件预览,加载失败白屏,报错没反应,详细示例代码教程,文件预览下载,nuxt3,excel预览插件,xlsx插件预览,纯前端vue中预览excel表格,接口调用的文件如何预览查看,文件url地址,vue移动端实现excel在线预览,vue移动端H5网页excel预览,

🏆 前端领域优质创作者 1万+

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

上一篇: 30、屋顶光伏发展:潜力、挑战与策略建议
下一篇: 无线传感器网络的软件适应
pluto
博客等级 码龄25年 46粉丝 1562原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值