有了数据集以后,研究人员建立了一个模型,通过最大后验概率推理来解释在一组pair集合上生成语法规则,对词的变化进行解释。
在声音的表示上,音素(原子音)被表示为二元特征的向量,比如/m/,/n/,是鼻音,然后基于该特征空间定义语音规则。
研究人员采用经典的规则表述方式,即情境相关记忆(context-dependent),有时也称之为SPE-style规则,其广泛应用于英语的音型(Sound Pattern of English)表示。
每个规则的写法是
(focus)→(structural_change)/(left_trigger)_(right_trigger),意思是只要左/右触发环境紧靠focus的左/右,焦点音素就会根据结构变化进行转换。
触发环境指定了特征的连接(表征音素的集合),例如在英语中,只要左边的音素是[-sonorant],在词末的发音就会从/d/变成/t/,写成规则就是[-sonorant] → [-voice]/[-voice -sonorant]_#,比如说walked应用这一规则后,发音就从/wɔkd/转化为/wɔkt/。
当这种规则被限制为不能循环应用于自己的输出时,规则和词法学就对应于双向有理函数(2-way rational functions),又对应于有穷状态转换器(finite-state transductions)。有人认为有穷状态转换器的空间有足够的表现力来涵盖形态语音学中已知的经验现象,并代表了对语音学理论实际使用的描述能力的限制。
为了学习这种语法,研究人员采用了贝叶斯程序学习(Bayesian Program Learning, BPL)的方法。将每个语法规则T建模为一种编程语言中的程序,这种语言捕捉了问题空间的特定领域的约束。所有语言共同的语言结构被称为通用语法(universal grammar)。该方法可以被看作是语言学中一个长期存在的方法的现代实例,并采用人类可理解的生成性代表来正式确定通用语法。
在定义好BPL需要解决的问题后,在所有程序的搜索空间都是无穷大,不给出如何解决这个问题的任何指导方向,且缺乏像梯度下降或马尔科夫链蒙特卡洛这样局部优化算法所利用的局部平稳性的情况下,研究人员采用了一种基于约束的程序合成的策略,将优化问题转化为组合约束满足问题,并使用布尔可满足性(SAT)求解器来解决。
这些求解器实现了详尽但相对有效地搜索,并保证在有足够时间的情况下,会找到一个最优解。使用Sketch程序合成器可以解决与某些数据一致的最小的语法,但必须符合语法大小的上限。
但在实践中,SAT求解器所采用的穷举搜索技术无法扩展到解释大型语料库所需的海量规则。
为了将求解器扩展到大型和复杂的理论,研究人员从儿童获得语言能力和科学家建立理论的一个基本特征中得到了启发。
儿童并不是一蹴而就地学习语言,而是通过语言发展的中间阶段,逐步丰富他们对语法和词汇的掌握。同样地,一个复杂的科学理论可能从一个简单的概念内核开始,然后逐渐发展到涵盖越来越多的语言现象。
基于上述想法,研究人员又设计了一种程序合成算法,从一个小程序开始,然后反复使用SAT求解器来寻找小的修改点,使其能够解释越来越多的数据。具体来说,就是找到一个对当前理论的反例,然后使用求解器详尽地探索可以容纳这个反例的理论的所有小修改的空间。