标签: markov-chains

马尔可夫链是否与有限状态机相同?

有限状态机只是马尔可夫链的实现吗?两者有什么不同?

math statistics markov-chains state-machine fsm

71
推荐指数
4
解决办法
2万
查看次数

马尔可夫链聊天机器人如何运作?

我正在考虑使用马尔可夫链等创建一个聊天机器人,但我不完全确定如何让它工作.根据我的理解,您可以根据具有给定单词的数据创建表格,然后根据后面的单词创建表格.在训练机器人时是否可以附加任何类型的概率或计数器?这是一个好主意吗?

问题的第二部分是关键字.假设我已经可以从用户输入中识别关键字,如何生成使用该关键字的句子?我并不总是想用关键字开始这个句子,那么如何为马尔可夫链种子?

artificial-intelligence probability markov-chains chatbot

70
推荐指数
2
解决办法
5万
查看次数

在Python中实现“波浪折叠函数”算法的问题

简而言之:

我在Python 2.7中执行Wave Collapse Function算法的实现存在缺陷,但是我无法确定问题所在。我需要帮助来找出我可能会丢失或做错的事情。

什么是波崩函数算法?

它是Maxim Gumin在2016年编写的一种算法,可以从样本图像生成程序模式。您可以在此处(2D重叠模型)和此处(3D切片模型)看到它的实际效果。

实施目标:

将算法(2D重叠模型)简化为本质,并避免原始C#脚本的冗长和笨拙(令人惊讶的是,它很长且难以阅读)。这是尝试使该算法更短,更清晰和pythonic版本。

此实现的特征:

我正在使用处理(Python模式),这是一种用于视觉设计的软件,可简化图像处理(没有PIL,没有Matplotlib等)。主要缺点是我仅限于Python 2.7,并且无法导入numpy。

与原始版本不同,此实现:

  • 不是面向对象的(处于当前状态),因此更易于理解/更接近伪代码
  • 使用一维数组而不是二维数组
  • 使用数组切片进行矩阵处理

算法(据我了解)

1 /读取输入位图,存储每个NxN模式并计数它们的出现。(可选:具有旋转和反射的增强图案数据。)

例如,当N = 3时:

在此处输入图片说明

2 /预计算并存储模式之间的所有可能的邻接关系。在下面的示例中,图案207、242、182和125可以与图案246的右侧重叠

在此处输入图片说明

3 /创建一个具有输出尺寸的数组(称为Wwave)。这个阵列的每个元素是一个数组保持状态(TrueFalse每个图案的)。

例如,假设我们在输入中计算了326个唯一模式,并且希望输出尺寸为20 x 20(400个单元)。然后,“ Wave”数组将包含400个(20x20)数组,每个数组包含326个布尔值。

开始时,所有布尔值都设置为,True因为在Wave的任何位置都允许使用每个模式。

W = [[True for pattern in xrange(len(patterns))] for cell in xrange(20*20)]
Run Code Online (Sandbox Code Playgroud)

4 /使用输出的尺寸创建另一个数组(称为H)。该数组的每个元素都是一个浮点数,在输出中保留其对应单元格的“熵”值。

此处的熵是指香农熵,它是根据Wave中特定位置的有效模式数量来计算的。单元格的有效模式(True在Wave中设置为)越多,其熵就越高。 …

python algorithm markov-chains procedural-generation

52
推荐指数
2
解决办法
966
查看次数

马尔可夫链和隐马尔可夫模型有什么区别?

马尔可夫链模型和隐马尔可夫模型有什么区别?我在维基百科上读过,但无法理解这些差异.

markov-chains markov hidden-markov-models

44
推荐指数
4
解决办法
2万
查看次数

何时使用某种强化学习算法?

我正在学习强化学习和阅读萨顿的大学课程.除了经典的PD,MC,TD和Q-Learning算法之外,我还在阅读有关决策问题解决的政策梯度方法和遗传算法.我之前从未有过这个主题的经验,而且我很难理解何时应该优先选择一种技术.我有一些想法,但我不确定.有人可以简单解释或告诉我一个来源,我可以找到一些应该使用某些方法的典型情况吗?据我所理解:

  • 仅当MDP具有很少的动作和状态并且模型已知时才应使用动态编程和线性编程,因为它非常昂贵.但是当DP比LP好?
  • 当我没有问题模型但我可以生成样本时使用蒙特卡罗方法.它没有偏见,但有很大的差异.
  • 当MC方法需要太多样本以具有低方差时,应使用时间差异方法.但是什么时候我应该使用TD和Q-Learning?
  • Policy Gradient和Genetic算法适用于连续MDP.但是当一个比另一个更好?

更准确地说,我认为选择一种学习方法,程序员应该问自己以下问题:

  • 代理人在线或离线学习吗?
  • 我们可以分开探索和开发阶段吗?
  • 我们可以进行足够的探索吗
  • MDP的地平线是有限的还是无限的?
  • 国家和行动是否连续?

但我不知道问题的这些细节如何影响学习方法的选择.我希望有些程序员已经对RL方法有一些经验,可以帮助我更好地理解他们的应用程序.

algorithm artificial-intelligence machine-learning markov-chains reinforcement-learning

22
推荐指数
1
解决办法
3344
查看次数

简单随机英语句子生成器

我需要一个简单的随机英语句子生成器.我需要用自己的语言填充它,但它需要能够制作更长的句子,至少遵循英语规则,即使它们没有意义.

我希望那里有数百万人,所以不是重新发明轮子,我希望你知道一个人的资源,或者一个资源,它会给我足够的信息,我没有必要追捕我的生锈的英语技能.

random generator markov-chains

20
推荐指数
2
解决办法
4万
查看次数

使用马尔可夫链(或类似的东西)来生成IRC-bot

我试过google,发现我无法理解.

我理解马尔可夫链是一个非常基本的层次:它是一个数学模型,只依赖于以前的输入来改变状态......那么一种加权随机机会而不是不同标准的FSM?

我听说你可以用它们来产生半智能的废话,给出现有单词的句子用作种类的字典.

我无法想到搜索词来找到这个,所以任何人都可以链接我或解释我如何能够产生一个半智能答案的东西?(如果你问过馅饼,它就不会开始关于它听过的越南战争了)

我计划:

  • 让这个机器人在IRC通道中空闲一点
  • 从字符串中删除任何用户名并存储为句子或其他内容
  • 随着时间的推移,使用它作为上述的基础.

nlp artificial-intelligence markov-chains

20
推荐指数
1
解决办法
7898
查看次数

使用马尔可夫链的任何商业例子?

使用马尔可夫链的商业案例是什么?我已经看到马尔可夫链的某种游戏区应用于某人的博客上写一篇假帖子.我想要一些实际的例子吗?例如,在商业或股票市场预测等方面有用......

编辑:感谢所有举例的人,我赞成每一个,因为它们都很有用.
编辑2:我选择了最详细的答案作为接受的答案.所有答案我都投了赞成票.

artificial-intelligence markov-chains

19
推荐指数
8
解决办法
7460
查看次数

是否可以使用作者独特的"文学风格"来识别他/她作为文本的作者?

让我们想象一下,我有两个由同一个人写的英语文本.是否有可能应用一些马尔可夫链算法来分析每个:基于统计数据创建某种指纹,并比较从不同文本得到的指纹?比方说,我们有一个包含100个文本的库.有人写了第1号文字和其他一些文字,我们需要通过分析他/她的写作风格来猜测哪一个.有没有已知的算法呢?可以在这里应用马尔可夫链吗?

nlp machine-learning markov-chains data-mining

18
推荐指数
1
解决办法
4237
查看次数

解码GaussianHMM中的序列

我正在玩Hidden Markov模型来解决股市预测问题.我的数据矩阵包含特定安全性的各种功能:

01-01-2001, .025, .012, .01
01-02-2001, -.005, -.023, .02
Run Code Online (Sandbox Code Playgroud)

我适合一个简单的GaussianHMM:

from hmmlearn import GaussianHMM
mdl = GaussianHMM(n_components=3,covariance_type='diag',n_iter=1000)
mdl.fit(train[:,1:])
Run Code Online (Sandbox Code Playgroud)

使用模型(λ),我可以解码观察向量以找到对应于观察向量的最可能的隐藏状态序列:

print mdl.decode(test[0:5,1:])
(72.75, array([2, 1, 2, 0, 0]))
Run Code Online (Sandbox Code Playgroud)

在上面,我已经解码了观察向量O t =(O 1,O 2,...,O d)的隐藏状态序列,其包含测试集中的前五个实例.我想估计测试集中第六个实例的隐藏状态.想法是迭代第六个实例的一组离散的可能特征值,并选择具有最高似然性的观测序列O t + 1 argmax = P(O 1,O 2,...,O d + 1 |λ ).一旦我们观察到O d + 1的真实特征值,我们就可以将序列(长度为5)移动一次并重新执行:

    l = 5
    for i in xrange(len(test)-l):
        values = []
        for a in arange(-0.05,0.05,.01):
            for b in arange(-0.05,0.05,.01):
                for c in arange(-0.05,0.05,.01):
                    values.append(mdl.decode(vstack((test[i:i+l,1:],array([a,b,c])))))
     print …
Run Code Online (Sandbox Code Playgroud)

python markov-chains markov-models hidden-markov-models hmmlearn

16
推荐指数
1
解决办法
1157
查看次数