admin 管理员组文章数量: 887021
【NLP
1.马尔科夫模型、马尔科夫网络、马尔科夫过程、贝叶斯网络的区别
前提条件:将随机变量作为节点,若两个随机变量相关或不独立,则将二者连接一条边;若给定的若干个随机变量,则构成一个有向图
- 若该网络是有向无环图,则为贝叶斯网络;
- 若这个图退化成线性链的方式,则得到马尔科夫模型(有向的);因为每个节点都是随机变量,将其看成各个时刻(或空间)的相关变化,以随机过程的视角,则可以看成是马尔科夫过程。
- 若2中的网络是无向的(即为无向图模型),可称为马尔科夫随机场或者马尔科夫网络;
2.定义:
隐马尔可夫模型是关于时序的概率模型,由一个隐藏的马尔科夫链随机生成不可观测的状态随机序列 ,再由各个状态序列生成一个观测从而产生观测随机序列的过程。一个隐马尔科夫模型由初始概率分布、状态转移概率分布、观测概率分布 所确定。
3.隐马尔可夫模型的前提假设:
- 假设隐藏的马尔可夫链在任意的时刻的状态只与它前一个时刻有关,与其他时刻的状态及观测无关,也与时刻无关:
- 假设任意时刻的观测只依赖于该时刻的马尔科夫链的状态,与其它观测及状态无关:
4. 隐马尔可夫模型一般有以下三个基本问题:
5.计算观测序列概率(上述问题1):
- 直接计算法:
思路:通过列举所有可能的长度为的状态序列,求各个状态序列与观测序列的联合概率,然后对所有的状态序列求和,最终得到。但计算量很大,时间复杂度达到
- 前向算法
步骤1.计算初值:
步骤2.递推计算
6.代码实现
class HMM(object):def __init__(self, N, M, A=None, B=None, pi=None, O=None):''':param N: 状态数量:param M:观测数量:param A:状态转移矩阵:param B:观测概率分布矩阵:param Pi:初始概率矩阵'''self.N = Nself.M = Mself.A = Aself.B = Bself.pi = Piself.O = Odef forward_evaluate(self):'''根据给定的参数计算条件概率O: 观测数据'''X = self.Oalpha = self.pi * self.B[:,X[0]]for x in X[1:]:# alpha_next = np.empty(self.N)# for j in range(self.N):# alpha_next[j] = np.sum(self.A[:,j] * alpha * self.B[j,x])# alpha = alpha_nextalpha = np.sum(self.A * alpha.reshape(-1,1) * self.B[:,x].reshape(1,-1), axis=0)return alpha.sum()
本文标签: nlp
版权声明:本文标题:【NLP 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1697338449h266767.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论