问题标签 [markov-chains]
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.
matlab - Matlab - 稀疏矩阵系统分辨率
我参与了类型系统的解析Ax = b
,其中 A 是一个方形稀疏矩阵,x 是未知数的向量(我必须计算它),b 是最后一个元素的全零向量是 1。矩阵 A 的最后一行用于归一化,因此用 1 来满足。
该系统的解决方案是概率,因此0<x(i)<1
必须尊重条件。
为了解决这个系统,x = A \ b;
使用了 Matlab 命令。
该方法似乎运行良好,但有一种特殊情况,即向量 x 也包含负值。给矩阵A的任意元素加上一个很小的值(10^-6),分辨率回到满足条件。
我不是数学家,所以不知道是不是代码问题,还是矩阵 A 必须尊重一些属性才能保证解都在 0 到 1 之间。
artificial-intelligence - 使用马尔可夫链(或类似的东西)来生成 IRC-bot
我尝试了谷歌,发现我能理解的很少。
我对马尔可夫链的理解非常基本:它是一个数学模型,只依赖于先前的输入来改变状态......所以是一种带有加权随机机会而不是不同标准的 FSM?
我听说您可以使用它们来生成半智能的废话,给定现有单词的句子以用作各种字典。
我想不出搜索词来找到这个,所以任何人都可以链接我或解释我如何能产生一些给出半智能答案的东西吗?(如果你问它关于派,它不会开始谈论它听说过的越南战争)
我计划:
- 让这个机器人在 IRC 频道中闲置一段时间
- 从字符串中删除任何用户名并存储为句子或其他内容
- 随着时间的推移,以此为基础。
java - 借助马尔可夫链理论生成无限线
所以让我现在更好地解释我的问题(请重新打开这个问题)。在考虑一种生成程序线来构建地形的方法时,我听说了马尔可夫链理论。
生成的主要内容是可以无限延伸的地图。起初,我使用基于 perlin 的程序地图构建了一个演示,该程序地图具有许多不同的地形特征。它甚至是等距的,更像是哨兵。事实证明,这太令人困惑,无法使用我想到的运动机制。我不得不将它简化为一个更简单的基于瓷砖的系统。它不仅更容易掌握和导航,而且看起来也好多了。
地图是使用马尔可夫链生成的。该算法被输入一个简短的人造地形序列。然后它继续生成一个模拟输入结构的任意大小的映射。
因此,示例视觉输出可能如下图所示
实际上,我经历了类似的事情,引文中描述了以这些随机行结尾的事情:
因此,我没有使用这条随机线,而是寻找一种从第一张图片中创建小峡谷的解决方案。我第一次读到马尔可夫链时,我觉得哇,以人造线作为输入,让算法继续进行,听起来很棒。
那么马尔可夫链理论实际上如何帮助创建这种地形呢?如果您认为有更好的方法可以做到这一点,请提出建议。
地图是使用马尔可夫链生成的。
...让我感到困惑,我认为他们实际上是一个马尔可夫链算法。
java - 使用马尔可夫链时获取 ArrayIndexOutOfBoundsException
我有一个数组来存储一组用于绘制一条线的坐标。所以这里有一些示例坐标
下一步是创建一个二维的马尔可夫矩阵。
首先,我计算左列中的点后跟上列中的点的时间。因为我想要一条线,所以每个点后面跟着另一个单点。这意味着如果我们有 {10,20} 作为输入,{55,80} 成为下一个点的概率是 100%。
我不太确定这一切,所以请纠正我!
所以这是我的矩阵
我的算法:
我的问题是,ArrayOutOfBoundsException:7
当我尝试访问 plotMatrix 和 markovMatrix 时,我得到了一个。但是,在每个循环结束时输出设置为 0。任何想法如何解决这个问题?
c++ - 使用图形界面在 C++ 中实现离散马尔可夫链模拟
我只是想知道是否有人对支持马尔可夫建模和图形图形表示的一个或多个库有任何指针,至于一个项目,我必须模拟一个传输模型并能够为其开发一个接口。我对 c++ 比较陌生。
java - 马尔可夫链:SQL 数据库和 Java 表示
现在这个问题有点模糊。我有一个基于文本的马尔可夫链,它是通过解析用户输入的文本生成的。它用于生成几乎连贯的乱码字符串,并根据序列中的当前单词存储给定单词成为文本序列中下一个单词的概率。在 javascript 中,这个对象看起来像下面这样:
因此,例如,如果当前单词是变形金刚,那么我们生成的下一个单词将有 95% 的可能性是电影,并且分别有 2.5% 的可能性是猫或狗。
我的问题是双重的:
- 用 Java 表示这个对象的最佳方式是什么?最好的,我关心 50% 的快速访问和 50% 的内存使用
- 我如何将此对象存储在单个数据库表中(例如 MySQL)?
更新:为了回应@biziclop 的回答和@SanjayTSharma 的评论,在我的课堂下面我最终写了(这是一项正在进行的工作,麻省理工学院许可证。它目前只生成一阶马尔可夫链。
programming-languages - 将一阶逻辑转换为 CNF
C/c++/java 中是否存在将一阶逻辑转换为 CNF 的现有实现?
nlp - 重构现在著名的 17 岁基于马尔可夫链的信息检索算法“Apodora”
当我们都在玩弄大拇指时,一个 17 岁的加拿大男孩显然发现了一种信息检索算法:
a) 以两倍于当前广泛使用的向量空间模型的精度执行
b) 在识别相似词方面“相当准确”。
c) 使微搜索更准确
这是一个很好的采访。
不幸的是,我还没有找到发表的论文,但是,从我记得几年前学习的图形模型和机器学习课程的片段来看,我认为我们应该能够从他提交的摘要中重建它,以及他在采访中谈到它。
来自采访:
一些搜索会找到出现在相似上下文中的单词。这很好,但这是在第一级遵循关系。我的算法试图进一步跟踪连接。紧密的连接被认为更有价值。从理论上讲,它遵循无限程度的联系。
摘要将其置于上下文中:
引入了一种称为“Apodora”的新型信息检索算法,它使用马尔可夫链状矩阵的有限幂来确定文档的模型,并对单词的语义进行上下文统计推断。该系统被实现并与向量空间模型进行比较。特别是当查询很短时,新算法给出的结果大约是两倍的精度,并且在微搜索中具有有趣的应用。
我觉得知道类似马尔可夫链的矩阵或信息检索的人会立即意识到他在做什么。
所以:他在做什么?
javascript - javascript中的图形马尔可夫链
我有一个马尔可夫链,我想用 javascript 图形表示。我需要表示节点、链接和转换概率。也许类似于这两个图表之一:
找到一个好的图像库(如 Raphael)不是问题。对我来说,问题是找到一种方法来确保节点布局良好,在其他节点或线之前交叉的线最少。类似于 OmniGraffle 中的“布局图”选项(我确信 Visio 中有类似的功能)。
有没有可以为我做这件事的 JS 库,如果没有,有没有人知道如何解决这样的问题?请注意,我的马尔可夫链可能比上面的示例复杂得多。
c# - 计算函数合理性的算法/蒙特卡洛方法
我正在编写一个程序,试图复制本文开头讨论的算法,
http://www-stat.stanford.edu/~cgates/PERSI/papers/MCMCRev.pdf
F 是从 char 到 char 的函数。假设 Pl(f) 是该函数的“合理性”度量。算法是:
从对函数的初步猜测开始,比如说 f,然后是一个新的函数 f*——
- 计算 Pl(f)。
- 通过对 f 分配给两个符号的值进行随机转置来更改为 f*。
- 计算 Pl(f*);如果这大于 Pl(f),则接受 f*。
- 如果没有,则掷一枚 Pl(f)/Pl(f*) 硬币;如果出现正面,接受 f*。
- 如果抛硬币出现反面,则留在 f。
我正在使用以下代码实现这一点。我正在使用 c#,但试图使其对每个人都更加简化。如果有更好的论坛请告诉我。
我的问题基本上是这看起来是否是实现该算法的最佳方法。尽管实施了这种方法,但似乎我可能会陷入一些局部最大值/局部最小值。
编辑- 这是 Transpose() 方法背后的基本内容。我使用类型为 << char, char >> 的字典/哈希表,候选函数使用它来查看任何给定的 char -> char 转换。因此,转置方法只是交换字典中指示函数行为的两个值。
请记住,使用底层字典的候选函数基本上只是:
这是计算 Pl(f) 的函数: