首页 > 编程知识 正文

Fisher信息矩阵,sobel算子例题

时间:2023-05-05 11:24:17 阅读:56167 作者:3543

cs188Inference in Bayes Nets贝叶斯网络推理question1(3点):Bayesnetstructurequestion2点):Bayesnetprobabilitiesquestion3 ) s question4(4点) eliminatequestion5) 4点) Normalizequestion6) 4点) Variable EliminationQuestion1~6至6的结果:

question1(3点):Bayes Net Structure

这个问题需要建立贝叶斯网络,给定的代码压缩包已经提示贝叶斯网络有五种变量: x位置、y位置、食物店、鬼屋和观测值。 必须命名这些变量,并填充贝叶斯网络的边缘以构建贝叶斯网络。

首先,设置“variabledomainsdict [ var ]=values”。 其中“values‘”是“var”中可能的赋值集。 它们在给定文件的顶部定义了常数。 所以对应起来写出

然后构建边,根据主题给出的关系,边包括(x位置-鬼屋)、(x位置-食物屋)、(y位置-鬼屋),并将这些边添加到文档中定义的边集合edges中。

定义观测值,根据提示知道可以在两个for循环中构建后,和上述方法一样,将对应的边添加到边的集合中。

question2(1points ):Bayes Net Probabilities在这个问题上,需要使用在前面的问题中构建的贝叶斯网络,指定控制y位置变量的因素,给出y位置变量的先验概率。

按照文件中已经提供的fillXCPT函数完成fillYCPT函数,但略有不同的是y位置有四个方向值。 概率可以使用从上面导入的PROB_常数为文件提供概率值。

question3(5points ) :必须在Join Factors问题factorOperations.py中实现Join Factors函数。 接受工厂列表,并以输入到工厂的对应行的乘积的概率返回新工厂。 连接因子可以用作乘积规则,具体实现形式为p(x|y ) *p ) y=p ) x,y )。

众所周知贝叶斯方法的特点是用概率表示所有形式的不确定性,学习和其他形式的推理用概率规则来实现。 贝叶斯学习的结果表示为随机变量的概率分布,贝叶斯定理将事件的先验概率和后验概率联系起来。

在本文中可以根据提示输入的factor是一系列的factor。 我们应该计算非条件变量和条件变量的集合,并返回包含这些变量的新因子,其概率是输入因子的对应行的乘积。 由于所有输入因子的variableDomainsDict来自同一BayesNet,因此可以假设它们是相同的。 在连接因子中,不协调edvariables只能出现在一个输入因子中。 此外,接受assignmentDict作为输入的Factor方法(如getProbability和setProbability )可以处理分配给此系数更多变量的assignmentDict。

question4(4points ) :必须在Eliminate问题factorOperations.py中实现elimiate函数。 参数列表实现删除和返回Factor和不包含该变量的新Factor的功能。 也就是说,Factor将仅清除的变量值不同的所有项目求和。

函数能够实现的功能是从概率表中排除变量,即

从提示中,必须注意无条件变量和有条件变量。 在参数列表中输入的清除变量必须是非条件变量。实现思路:

Factors包含原始BayesNet的variableDomainsDict,返回的Factor必须与输入Factor具有相同的variableDomainsDict。 在函数实现中,计算非条件变量和条件变量的集合,通过删除变量得到要因。 发生输入删除变量的行,只要与其他变量代入一致的行相加就可以实现。代码实现如下:

question5(4points ):Normalize问题5需要在factorOperations.py中实现Normalize函数。 也就是标准化的因子。 将一个工厂标准化为输入,并缩放工厂中的所有项目,使工厂中所有项目的总和为1。 输入因子的概率和为0时,应该返回None。

归一化因子的条件变量集由输入因子的条件变量和输入因子定义域中只有一个条目的任何非条件变量组成。 在具体实现中,如果变量的域中只有一个元素,则认为域中只有一个变量。实现思路:

(1)首先,Factor调用getAllPossibleAssignmentDicts函数进行加法运算,加入特殊判定,如果为0,则返回None,否则继续

续。
(2) 获取Factor中的条件变量和非条件变量,对于非条件变量的副本。
(3) 如果它域中的因素为1,则加入到条件变量集中,并从非条件变量中去除。
(4) 最后一步重新整合NewFactor,归一设置其概率和为1,最终返回NewFactor。
实现代码:

Question 6(4 points):Variable Elimination

问题六需要我们在inference.py中实现inferenceByVariableElimination函数。函数实现上述问题功能的整合,最终使用BayesNet、查询变量列表等返回归一化的概率表。
根据提示,算法实现应该按照消除顺序遍历隐藏变量,执行连接并消除该变量,直到只剩下查询变量和证据变量。枚举推理首先连接所有变量,然后消除所有隐藏变量。相反,变量消除通过迭代所有隐藏变量来交叉连接和消除,并在执行下一个隐藏变量之前对单个隐藏变量执行连接和消除。
实现思路:
(1) 首先通过调用BayesNet.getallcptswitheevidence()函数返回所有条件概率表。
(2) 对于eliminationOder中的变量,我们使用joinFactorsByVariable来联接包含变量的所有因素。
(3) 如果当前Factor中的无条件变量的因素只有一个,调用eliminate函数将变量排除。将新生成的Factor加入到概率表中。
(4) 最终调用normalize函数返回一个归一化的概率表。

代码实现:

Question1~6结果:

Question1、2的主要问题是构建贝叶斯网络并给出变量的先验概率。这两个问题并无难点主要是贝叶斯网络的实际实现问题,根据文件中给出的食物屋、鬼屋的变量信息即可完成。贝叶斯网络边缘化,标准化的实现。代码实现并无难度,重要的在于贝叶斯网络的理解上。归一化的核心在于对变量域中因素的考虑,如果变量域中因素的个数为1,我们将变量认为是有条件变量,添加到有条件变量集中,并从无条件变量集中去除。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。