Angluins L*算法(通俗易懂版本)
来源:互联网 发布:什么是javascript对象 编辑:程序博客网 时间:2024/05/28 16:04
最近研究模型学习,其中最经典的算法应该是Angluins L*算法,发现中文的资料实在太少,所以弄一个简单点的教程来说明这个算法。
这个算法的目标:构造DFA或者Mealy automate,使之同一个Black system吻合。这个算法假定了一个“teacher”的角色,他是先知,知道这
个黑盒SUL的一切。在构造过程中我们可以问老师二种类型的问题。一是称为membership query成员查询, 对于构造Mealy automate来说就是输入
某个字串,SUL输出什么?(对于DFA来说,对应于回答这个字串是否被SUL接受,如果接受输出1,否则为0);第二种称为equivalence query(等
价查询),即目前构造的DFA或者Mealy自动机和SUL是否等价,如果等价,则Teacher回答yes,否则也返回一个反例字串,来说明他们的不同。
说这个算法前,我先说说我对“Teacher”的理解,默认构造Mealy自动机,举例:一台电视机,把他当做SUL,则你的按键操作(输入)都能得
到一个可见的显示效果(输出),所以成员查询是很简单的就能实现;而对于等价查询,只要穷举所有的按键操作的组合,如果都符合,则等价,回答
yes,否则就把对应的不同的按键组合返回出去就可以了。所以Teacher这个角色是可行的。【这个算法唯一值得商榷的地方就是他的普适性,这个黑
盒子首先要能用DFA或者mealy自动机来表示】
为了清晰的说明算法精髓,我先介绍一下几个概念,一是OT表(observation table),OT表是算法的中间产物,最后算法生成的OT表将直接对
应于SUL。OT表行坐标row分二大区域,一个是构造的Mealy自动机的状态S区域,另外一个是SUI,这里的I是指输入基本字的集合(即电视机的单个按
键),我们称其为辅助行区域SUI;而OT表的纵坐标为E,一般就是指基本字的集合,一般为一个字串的后缀;而OT表的内容就是由行r和列e加起来的
字串w所对应的SUL的输出T(w),这个通过成员查询可以很方便的求出。二是关于算法中的二个特别重要的性质,所谓一致性和闭包性,所谓闭包性形
象的理解就是辅助行区域T(SUI)在T(S)中,否则就在S域中添加SUI中不包含在原S域中对应的行标签及其所有前缀;所谓一致性就是指如果S域中二个
行标签如果对应的值相同,则其加入同一个基本字a作为后缀,其值也要相同,否则为了区别这两个状态,需要在E中添加这aUe。所谓Angluins L*算
法就是不断的通过询问的方式来更新OT表,使其得到一致性和闭包性并被SUL接受为止。下图为Angluins L*算法的主体框架图:【初始化的时候,S
为空,辅助表为SUI,E一般取I即输入集合】
下面用一个例子来说算法的运行过程:第一步初始化表OT,如下图,其中的A、B为通过成员查询SUL的输出
然后检查这个OT表的一致性和闭包性,明显都满足,现在就要构造对应的模型了M(S,E,T),具体的构造过程很简单,S域的每一个行标签对应为一个状
态【辅助区域可以完全不看了】,然后直接看对应的E区域的列标签(即基本字)所得到的值(即该基本字所对应的输出)
构造好了后,就问Teacher,我这个对否,结果Teacher返回说,不对,字串bba,SUL输出是C,而你输出是A;这个时候,算法就将bba这个字串
及其所有前缀添加进OT表的S域,当然同时要需要更新辅助域,规则就是SUI即可然后重新经过成员查询得到OT表的值,如下图所示:
这个时候明显可以看到,T(SUI)都包含于T(S),所以是闭包的,但是检查一致性的时候发现,在S域T( ε)和T(b)都一样是A B,可是其加上同一个后缀
b,这个时候T(b)和T(bb)不同,一个是A B,一个是C B,所以不满足一致性,则需要在E中添加bUe即ba【??按照定义,应该还有bb呀?我的理解是
一次只能添加一个,可以是ba,也可以是bb】,然后通过成员查询,得到OT表中所有的值:
通过询问Teacher,M和SUL是否等价,得到yes回答,则将上图作为SUL的等价模型。
今天简单的介绍一下这个针对黑盒系统的模型学习的算法,可以说这个算法是模型学习的老祖宗,许多后面的算法都是在这个算法的基础上改进优化
而来。
0 0
- Angluins L*算法(通俗易懂版本)
- 遗传算法理解(通俗易懂)
- KMP算法(通俗易懂的字符串比较算法)
- 通俗易懂遗传算法例子
- 通俗易懂的匈牙利算法
- kmp算法--通俗易懂
- 通俗易懂掌握Bayes算法
- A星算法详解(个人认为最详细,最通俗易懂的一个版本)
- A星算法详解(个人认为最详细,最通俗易懂的一个版本)
- A星算法详解(个人认为最详细,最通俗易懂的一个版本)
- 最大后验概率估计算法(简单,通俗易懂)
- 最大似然估计算法(简单,通俗易懂)
- 字符串匹配的KMP算法(通俗易懂版)
- MySql索引算法理解析(通俗易懂 只讲Btree)
- BFS和DFS算法原理(通俗易懂版)
- 最大似然估计算法(简单,通俗易懂)
- FAQ13620]L版本AAL功能(2)——L版本AAL新架构
- L版本GMS预置
- POJ1003水题
- MVC与layout
- 模拟赛【修路】题解--kruskal
- SoapUI模拟服务端进行接口测试
- 泰课在线Unity3d 动作游戏全攻略——有素材和代码
- Angluins L*算法(通俗易懂版本)
- 详解java设计模式(一)之单例模式(创建型)
- Fragment知识点全解析(一)
- Python语法元素分析
- bzoj 4540: [Hnoi2016]序列 (莫队+ST表+单调栈|线段树)
- hdu 2072 单词数
- Install Oracle Database 12cR2 On RHEL7.3
- 过程中你可以占用房间,但是结束的时候房间不能占用。
- Codeforces Round #403 B. The Meeting Place Cannot Be Changed【二分】