概览
包括:半环定义、例行证明、完备半环定义和解释;先把这几个半环摆出来吧:
为什么WFST要基于半环构建呢?我的理解是:一方面环这样的代数结构是比我们熟知的域()更加普遍的、实用性更广的结构,可以让WFST更加普适。另一方面,WFST库的设计只需考虑面向这些代数结构编程,只要WFST框架内的运算模块符和环的定义,无需考虑具体的任务相关知识;而使用者则需根据业务设计具体的适当的权重环就能直接利用WFST框架,不同环对应的功能;换句话说,这是个很棒的接口,例如kaldi中的代码WeightType::Zero(),WeightType::One()就代表了环的加法中性元和乘法中性元。
我们先来简单介绍一下基本的代数结构:
环(ring)
设是一个集合,其上定义了两个二元运算,分别称为“加法”和“乘法”,分别使用和作为记号,定义为,,并且满足下面的条件:
1)关于运算封闭
2)关于运算构成Abelian群
3)关于运算构成幺半群
4)乘法运算关于加法运算满足左分配律和右分配律
我们说构成了一个环,为了强调这里的0和1是抽象环的“加法中性元”和“乘法中性元”,遵循Mohri的文章,我们特意使用上加bar来表示,下面也称”中性元“是”单位元“或”幺元“。
注:不同的书上对环的定义会有些许的不同,比如有人喜欢把上面条件(3)改为“关于运算构成半群semi-group“,而不是上面的幺半群monoid,这无非只是更倾向于是否把乘法中性元(即”幺“)放到乘法半群中去;当你需要环的性质时,你把它称述清楚即可;这里我们还是遵循Mohri的定义。
半环(semi-ring)
有了上面的环的定义,那么什么叫半环呢?“半”的性质肯定来自环的子结构(即“群”),自然已经关于运算构成半群,那么“半环”的“半”字肯定就来自加法群了;即将上面“环”的定义做个剪裁:
1)、3)、4)保持不变;
2)关于构成幺半群,当然交换性依然满足(即上面的abelian修饰词),也就是不是所有的元素都有加法逆元了。
显然,半环比环的条件更加弱,因此更加普适。
以下我们用五元组来代表半环结构,并且我们既使用来表示进行运算的元素所在集合,也用表示这个半环的五元组定义。
简单的形式证明
下面我们来证明一下上面表格(1)中的各个集合在对应的运算下的确构成半环,证明过程非常的形式化和简单,我们权当做个练习。
Boolean Semiring
verbose proof:
1),显然关于加法封闭,而且“交换性”可以直接看出来,不过也可以由逻辑运算的交换性来保证。“幺元”显然就是0,因为它与其它元素作加法运算,结果还是其它元素自己;最后可以发现元素1的确不存在加法逆元。
2)加法结合率: 显然成立,因为只要中有一个是1,则两边均为1;全为0的时候,两边显然都是0。
3),可见关于乘法运算封闭,存在乘法单位元。
4)乘法结合律:显然成立,因为只要中有一个为0,则两边全为0;全为1的时候,两边都是1。
5)分配律:
在case1中,当,这意味着,进而有,即此时分配律成立;
在case2中,若,则;若,则;显然case2中分配律也成立;
由于这里的环是交换的,所以我们没有刻意强调左右分配律。
Probability Semiring
verbose proof:
1)由于这里的半环运算就是实数域中的加法和乘法运算,因此由实数公理,可知关于加法和乘法封闭;
2)再由无穷大运算相关性质:
可知集合的确关于加法和乘法封闭;
3)加法、乘法结合率,加法、乘法交换律,以及乘法关于加法的分配律都继承自实数的运算律;
4)显然加法幺元,乘法幺元都存在;
5)再次,除了0都不存在加法逆元,所以是半环。
Log Semiring
,其中加法运算定义为:
verbose proof:
1)显然对于任意实数,都有是一个实数;下面考虑几个特殊情况,:
2)显然,由于满足交换性,我们只要验证下面表格中的情况:
,令,则,所以,即
3)显然,通过观察上面的(1)和(2)可以发现的确是“加法中性元”;
4)由于Log-半环的乘法运算只是实数域的加法运算,显然也满足封闭性、交换性、结合性等等;
5)并且满足,,,;
6)最后,在拓展的实数域中不是一个数,这样的运算是无意义的;但是Mohri的文章中似乎没提到这点,如果这条封闭性不满足,那么严格意义上并不构成半环;不过是否可以参考积分学中的“主值意义下的积分”思路,定义呢?这样就算封闭了;但是如果实际中,并不会出现这样的运算,那么这一点也是无关紧要的。
7)Log-半环的乘法运算关于加法运算的分配律,也很好验证,比如:
其中符号“”是“by definition“的意思,并且;
显然上式说明Log-半环的分配律在实数中成立,再来看看一些边界case:
,另一方面,所以分配律此时也成立;
但是这里出现一个例外情况:
而,因此有;我们发现此时若使用主值意义下的无穷大加法,则不满足分配律!
所以,前面的讨论是欠考虑了(ok,这些随笔都是我想到哪写到哪,只要不是低级错误就不改了);看来我们需要定义,因为取主值是没什么明显道理的;而让运算满足分配律则是明确的动机;不过回过头来,以Log-半环的乘法运算视角来看,上面新的定义就是:,这的确是相当自然的(联想一下实数域的平行case:)。
8)Log-半环的乘法单位元显然是0,显然有成立。
Tropical Semiring
插曲
说到Tropical Semiring,这个名字很特别,我特意查了一下Tropical Semiring的含义:这个半环起初是由巴西的一个数学家提出来的,而那些主导学术和技术的西方国家因为懒得去了解这位数学家,于是就凭着“巴西就是某个处于赤道上的国家”这一刻板印象,随意地为这个半环取了这样的一个名字;在我看来,这真切地体现了西方国家一贯的傲慢形象。
说到这里,我又想起来西方人起的另一个名字“中国余数定理”,虽然(大概)所有的书上都是这么写的,并且一些老师可能也是这么介绍的,但我真的很反感这样的名字。不得不说,虽然我一直在吐槽“百度文库”,但是这次它给这个定理用了中国人应该用的名字“孙子定理”。
proof:
1)显然有成立,因此关于半环加法封闭;
2)和Log-半环一样,成立,因此关于半环乘法也封闭;
3)结合率、交换律仍然是继承自实数域;
4)显然有成立,因此的确是半环S的加法单位元;
5)显然有成立,因此0的确是半环S的乘法单位元;
6)最后验证以下分配律,不妨设,则,而,所以分配律对成立;根据Log Semiring中的讨论结果,亦可验证这里当都成立。
半环的其它属性
交换性(commutative)
注意,在环的定义中,并没有要求乘法运算满足交换性,例如一个矩阵环就是不交换的,当一个半环的乘法运算满足交换律的时候,我们称其为“交换半环”;显然,有上面的讨论,可知上面的四个环均满足交换性。
幂等性(idempotent)
若半环S满足都成立,则称其满足幂等性;由可知Boolean Semiring是幂等的;由成立可知Tropical Semiring也是幂等的。
完备半环(Complete Semiring)
设为半环,设为任意索引族(有限或无穷),和任意由中的元素构成的集合,都有关于累加运算封闭;并且的结果不依赖于求和运算中元素的顺序;则我们称其为“完备半环”,若还满足下面几个条件:
星半环(Starsemiring)
在半环上增加了星运算(即一元闭包运算),其定义为:,并且对无穷级数满足结合率、交换律、分配律。
显然一个完备半环是一个星半环,因为对于任意n,有,再由完备半环关于无穷级数的封闭性,和性质(5)(6)分配性即可得。
布尔半环是个完备半环,且,;
热带半环也是一个完备半环,且有:
以上两个半环都是幂等半环,也有非幂等半环满足完备性,例如概率半环,且有:
我们已经对WFST引入了半环结构,使得在WFST上的相关运算是良定的;那么,为什么还要引入“完备半环”和“星半环”的概念呢?
虽然在实际中WFST中只能处理有限个顶点,和有限多个转移弧,即有限的图;但是别忘了,我们在图中会出现循环连接,比如:自循环(self-loop),那么这样就会出现无穷条路径,而我们在WFST中经常会遇到一族路径的权重的累加运算。
比如,当有限长度的路径中出现一个自循环,则会出现可数无穷条路径到达终点;当出现两个自循环时则会可数多个可数条路径,再次仍是可数的,因此在图中出现有限多个循环时,总是可数无穷条路径。
不管怎样,我们的确需要考虑无穷的情况,即我们不仅需要半环对加法、乘法封闭,还需要对极限运算封闭;因此我们需要引入完备性概念,确保我们在WSFT中的相关运算都是良定的。
参考:Mohri, Weighted Automata Algorithms