Dana Angluin用于学习常规集的算法是否有改进


33

Dana Angluin在1987年的开创性论文中提出了一种多项式时间算法,用于从成员资格查询和理论查询(拟议DFA的反例)中学习DFA。

她表明,如果您尝试学习具有个状态的最小DFA ,而最大的countexample的长度为m,那么您需要进行O m n 2)个成员资格查询,最多需要进行n 1个理论查询。nmO(mn2)n1

学习常规集所需的查询数量是否有了重大改进?


参考文献和相关问题


希望@DominikFreydenberger在将来的某个时候掉队。他会知道。
拉斐尔

2
我怀疑@LevReyzin也知道答案……这就是为什么我最初考虑在cstheory上提问,但是我想我应该帮助发展这个新网站。
Artem Kaznatcheev 2012年

不能回答这个问题,但可能仍会有所帮助:[ citeulike.org/user/erelsegal-halevi/article/9275508学习常规语言的通用内核]
Erel Segal-Halevi 2012年

感谢您提供@Erel链接,但我不明白它的关系。Kontorovich的通用内核无法有效计算,并且学习模型没有反例。
Artem Kaznatcheev

Answers:


15

在 对cstheory.SE的回答中,列夫·雷津(Lev Reyzin)指导我了解罗伯特· 沙皮尔Robert Schapire)的论点,该论点改进了5.4.5节中对成员资格查询的限制。反例查询的数量保持不变。在反例查询之后,Schapire使用的算法有所不同。O(n2+nlogm)


改进草图

在最高级别,Schapire力从Angluin的算法有额外的条件,对于一个封闭的小号ē 牛逼和各s ^ 1S ^ 2小号,如果小号1小号2[R o w s 1r o w s 2。这保证了| S |(S,E,T)(S,E,T)s1,s2Ss1s2row(s1)row(s2)也使得一致性Angluin算法的性能容易的去满足。为了确保这一点,他必须以不同的方式处理反例的结果。|S|n

给定一个反,Angluin简单地添加ž及其所有前缀小号。Schapire通过向E添加单个元素e来做一些更细微的事情。在Angluin的意义上,这个新的e将使S E T 不被关闭,并且通过在S上引入至少一个新字符串,同时保持所有行都不同来进行更新以使其闭合。e的条件是:zzSeEe(S,E,T)Se

s,sS,aΣs.trow(s)=row(sa)ando(δ(q0,se))o(δ(q0,sae))

其中是输出函数,q 0是初始状态,δ是真正的“未知” DFA的更新规则。。换句话说,ē必须作为一个见证未来区分小号小号'一个oq0δessa

为了弄清楚这个ž我们做一个二进制搜索找出一个子[R 这样ž = p [R 0 | p | = < | z | 使得我们的被推测机器的行为基于一个输入字符而有所不同。更具体地说,我们让小号是对应于状态字符串按照我们猜想机达到p 。我们使用二进制搜索(这是日志mezriz=piri0|pi|=i<|z|sipilogm来找到一个使得o δ q 0s k r ko δ q 0s k + 1 r k + 1。换句话说,r k + 1区分两个指出我们猜想的机器发现等,因而满足该条件Ë,所以我们把它添加到Ëko(δ(q0,skrk))o(δ(q0,sk+1rk+1)rk+1eE


5

我不知道我的答案是否仍然有用。最近,已经描述了一种新算法的实现,该算法称为“观察包”,或者在某些情况下由Falk Howar实现。该算法类似于L *,但使用Rivest-Shapire或其他方法(请参见Steffen和Isberner)进行句柄反例分解;它使用一种数据结构,一个鉴别树(一个二叉树)来有效地进行“筛选”,即插入一个新状态的A转换(其中A是字母的每个符号),直到没有封闭为止。该算法有两个版本:根据是否将分解中建立的后缀添加到每个组件中(在该组件中添加后缀的比例),OneGlobally和OneLocally(算法的比率是,组件中的所有前缀都等于短前缀,并根据找到的后缀表示目标中的相同状态稍后,在一个新的反例中,发现了一个新的后缀,该后缀区分出同一组件的至少2个前缀(这导致该组件分成两个组件)。使用OneLocally,成员资格查询要少得多,但是当目标DFA较大时,等效查询的数量会急剧增加。而是,OneGlobally的成员资格查询数始终小于L *(但大于OneLocally),并且等效查询的数量与L *类似 后来有了一个新的反例,发现了一个新后缀,该后缀可以区分同一组件的至少2个前缀。这导致该组件分成两个组件)。使用OneLocally,成员资格查询要少得多,但是当目标DFA较大时,等效查询的数量会急剧增加。而是,OneGlobally的成员资格查询数始终小于L *(但大于OneLocally),并且等效查询的数量与L *类似 后来有了一个新的反例,发现了一个新后缀,该后缀可以区分同一组件的至少2个前缀。这导致该组件分成两个组件)。使用OneLocally,成员资格查询要少得多,但是当目标DFA较大时,等效查询的数量会急剧增加。而是,OneGlobally的成员资格查询数始终小于L *(但大于OneLocally),并且等效查询的数量与L *类似

我知道也存在另一种算法:TTT算法也比观察包更好,但我对此并不了解.TTT算法应该是最新技术


感谢您的回答!您有关于Howar算法和TTT的论文参考吗?
Artem Kaznatcheev

这个用于观察包的链接Howar 和这个用于TTT算法的链接TTT 您可以在LearLib中找到实现(观察包在那儿称为歧视树)
Umbert
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.