问题标签 [markov]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - list[-1] 在 python 程序中产生“列表索引超出范围”错误
我正在尝试构建一个马尔可夫生成器,它可以将任意长度的单词链作为编程练习,但我发现了一个我似乎无法修复的错误。当我运行 markov 函数时,列表索引超出范围。
我觉得我忽略了一些明显的东西,但我不确定是什么。回溯说错误在第 41 行,带有words[-1] = nextWords[random.randint(0, len(nextWords)-1)]
.
完整代码如下,如果缩进搞砸了,请见谅。
hidden - 预测下一次观察的隐马尔可夫模型
我对鸟的运动进行了 500 次观察。我想预测这只鸟的第 501 次运动会是什么。我在网上搜索,我想这可以通过使用 HMM 来完成,但是我在这个主题上没有任何经验。谁能解释用于解决此问题的算法的步骤?
r - R中的简单马尔可夫链(可视化)
我想在 R 中做一个简单的一阶马尔可夫链。我知道有像 MCMC 这样的包,但找不到一个以图形方式显示它的包。这甚至可能吗?如果给定一个转换矩阵和一个初始状态,那将是很好的,人们可以直观地看到通过马尔可夫链的路径(也许我必须手动这样做......)。
谢谢。
algorithm - 马尔可夫决策过程:价值迭代,它是如何工作的?
最近我读了很多关于马尔可夫决策过程(使用价值迭代)的文章,但我根本无法理解它们。我在互联网/书籍上找到了很多资源,但它们都使用了对我的能力来说太复杂的数学公式。
由于这是我在大学的第一年,我发现网络上提供的解释和公式使用的概念/术语对我来说太复杂了,他们假设读者知道某些我从未听说过的事情.
我想在 2D 网格上使用它(充满墙壁(无法到达)、硬币(理想)和移动的敌人(必须不惜一切代价避免))。整个目标是在不接触敌人的情况下收集所有硬币,我想使用马尔可夫决策过程 ( MDP ) 为主要玩家创建一个 AI。这是它的部分外观(请注意,与游戏相关的方面在这里并不是那么重要。我真的很想了解MDP):
据我了解,MDP的粗鲁简化是它们可以创建一个网格,该网格保持我们需要去的方向(一种“箭头”网格,指向我们需要去的地方,从网格上的某个位置开始) 达到某些目标并避免某些障碍。具体到我的情况,这意味着它可以让玩家知道往哪个方向去收集硬币并避开敌人。
现在,使用MDP术语,这意味着它为某个状态(网格上的位置)创建了一个状态集合(网格),其中包含某些策略(要采取的操作 -> 上、下、右、左) )。这些政策由每个州的“效用”价值决定,这些价值本身是通过评估到达那里的短期和长期收益多少来计算的。
这个对吗?还是我完全走错了路?
我至少想知道以下等式中的变量在我的情况下代表什么:
(摘自 Russell & Norvig 的《人工智能 - 一种现代方法》一书)
我知道这s
将是网格中所有方块的列表,a
将是一个特定的动作(上/下/右/左),但其余的呢?
奖励和效用函数将如何实现?
如果有人知道一个简单的链接,该链接显示伪代码以非常缓慢的方式实现与我的情况相似的基本版本,那就太好了,因为我什至不知道从哪里开始。
感谢您的宝贵时间。
(注意:随时添加/删除标签或在评论中告诉我是否应该提供有关某事或类似内容的更多详细信息。)
javascript - 马尔可夫聚类算法
我一直在研究马尔可夫聚类算法细节的以下示例:
http://www.cs.ucsb.edu/~xyan/classes/CS595D-2009winter/MCL_Presentation2.pdf
我觉得我已经准确地表示了算法,但我得到的结果与本指南至少在该输入中得到的结果不同。
当前代码位于:http: //jsfiddle.net/methodin/CtGJ9/
我不确定我是否只是错过了一个小事实,或者只是需要为此进行一些小调整,但我尝试了一些变化,包括:
- 交换通货膨胀/扩张
- 基于精度检查相等性
- 删除归一化(因为原始指南不需要它,尽管官方 MCL 文档声明在每次通过时对矩阵进行归一化)
所有这些都返回了相同的结果——节点只影响自己。
我什至在 VB 中找到了类似的算法实现:http: //mcl.codeplex.com/SourceControl/changeset/changes/17748#MCL%2fMCL%2fMatrix.vb
我的代码似乎与它们的编号(例如 600 - 距离)不同。
这是扩展功能
这就是膨胀函数
最后是主要的直通功能
process - 马尔可夫决策过程——如何使用最优策略公式?
我有一个任务,我必须在网格世界(代理电影左、右、上、下)中计算最优策略(强化学习 - 马尔可夫决策过程)。
在左表中,有最优值 (V*)。在右表中,有解决方案(方向),我不知道如何通过使用“最佳策略”公式获得。Y=0.9(折扣系数)
这是公式:
因此,如果有人知道如何使用该公式来获得解决方案(那些箭头),请提供帮助。
编辑:此页面上有完整的问题描述: http : //webdocs.cs.ualberta.ca/~sutton/book/ebook/node35.html 奖励:状态 A(第 2 列,第 1 行)后面是奖励+10 并转换到状态 A',而状态 B(第 4 列,第 1 行)之后是 +5 的奖励并转换到状态 B'。您可以移动:上、下、左、右。您不能移动到网格之外或留在同一个地方。
python - 用于在线机器学习 MDP 的 Python 库
我正在尝试在 Python 中设计一个具有以下特征的迭代马尔可夫决策过程 (MDP)代理:
- 可观察状态
- 我通过保留一些状态空间来回答 DP 进行的查询类型移动来处理潜在的“未知”状态(t+1 时的状态将识别前一个查询 [如果前一个移动不是查询,则为零] 以及嵌入式结果向量)这个空间用 0 填充到固定长度,以保持状态帧对齐,而不管查询是否回答(其数据长度可能会有所不同)
- 可能并非在所有州都可用的操作
- 奖励功能可能会随着时间而改变
- 策略收敛应该是增量的,并且只计算每次移动
因此,基本思想是 MDP 应该使用其当前的概率模型在 T 处做出最佳猜测优化移动(并且由于其移动的概率是预期的随机性,暗示可能的随机性),将 T+1 处的新输入状态与奖励相结合从上一次移动到 T 并重新评估模型。收敛不能是永久的,因为奖励可能会调整或可用的操作可能会改变。
我想知道的是是否有任何当前的python库(最好是跨平台的,因为我必须在Windoze和Linux之间改变环境)已经可以做这种事情(或者可以通过适当的定制来支持它,例如:派生类允许用自己的方式重新定义说奖励方法的支持)。
我发现有关在线每次移动 MDP 学习的信息相当稀缺。我能找到的大多数 MDP 使用似乎都集中在将整个策略作为预处理步骤来解决。
hidden-markov-models - P(λ) 是隐马尔可夫模型中的先验概率是什么意思?
给定以下参数:
- λ = (A,B,π)。
- A = 状态转移矩阵
- A = { a[i][j] } = { P(状态 q[i] at t | state q[j] at t+1) },
- B = 观察矩阵和
- π = 初始分布。
下面的句子对吗?(明确 λ 和 A 之间的关系):
a[i][j] = P(状态 q[i] at t | state q[j] at t+1) =P(state q[i] at t | state q[j] at t+1, λ )
请帮忙!
python - 哪个更快?Python中的铸造和减法或字典查找
所以为了好玩,我决定重温我以前的大学作业,其中给出了大约 75 个字符的密文,以及一个用三个字母签名的婴儿床(我老师的姓名首字母)
我做了什么:
- 将结果限制在那些有部分或全部婴儿床的人身上。
- 然后我开始对(1)中较小的结果子集进行一些字母频率分析。
现在的任务归结为编写一些语言识别软件,但首先要处理一些问题。我选择强制所有转子设置(类型,初始位置),因此其中包含部分或全部婴儿床的结果条目仍然有一些从插件板上交换的字母。
我知道我的下一步应该是制作两个矩阵并消化一个语料库,在第一个矩阵中,我会做一个计数,所以如果第一个字母是 A,在第一个矩阵中,我会在第 0 行,并且我要增加的列将是直接跟在 A 后面的字母,说它是 B。然后我会移动到 B 并看到下一个字母是 U,所以我会转到 B 行并增加 U 列的条目。在消化整个语料库后,我会将概率放入第二个矩阵。
使用第二个矩阵,我可以为整个句子分配得分值,并且可以对输出进行评分并进一步缩小结果,因此找到消息应该像在更小的大海捞针中找到针脚一样容易。
现在我在 python 中这样做,我想知道将字符转换为整数是否更好,减去最小的 char 'A',然后将其用作我的索引,或者我是否应该使用 dict 和每个letter 将对应于一个 int 值,因此在我的矩阵中查找该位置的索引将类似于LetterTally[dict['A']][dict['B']]
.
强制转换减法方法如下所示:
在这两种不同的方法中,哪种方法更快?
probability - 概率不均匀时的马尔可夫熵
我一直在考虑马尔可夫方程的信息熵:
H = -SUM(p(i)lg(p(i)),其中 lg 是以 2 为底的对数。
这假设所有选择 i 具有相等的概率。但是,如果给定的一组选择中的概率不相等怎么办?例如,假设 StackExchange 有 20 个站点,并且用户访问除 StackOverflow 之外的任何 StackExchange 站点的概率为 p(i)。但是,用户访问 StackExchange 的概率是 p(i) 的 5 倍。
马尔可夫方程在这种情况下不适用吗?还是有我不知道的高级马尔可夫变体?