0. 知识补充:

有穷自动机(Finite Automata):一个有穷自动机有一个有限的状态集合以及状态之间的跳转,其中每个跳转至少有一个标签(label)。

        最基本的FA是有限状态接收机(finite state acceptor/FSA),输入一个输入符号序列,FSA返回“接受”/“不接受”。其判断条件为:是否存在一条从初始状态到终止状态的路径,使得路径上的标签序列正好等于输入符号序列,如果是则返回“接受”,否则返回“不接受”。

下图为一个FSA的例子:

图中的节点代表状态,节点间的连线代表状态之间的跳转,连线上的字母为每个跳转的标签(label),加粗的圆圈表示初始状态,两个圆圈表示终止状态。

当输入序列为“abbcd”时,这个FSA返回接受,因为存在开始状态 0 到终止状态 5 的一条路径“011125”,使得路径上的标签序列正好等于输入符号序列。当输入序列为“abccd”时,则返回“不接受”,因为不存在满足条件的路径。

上述FSA匹配的所有字符串用正则表达式表示为:ab*cd | bcd*e

FSA有几种扩展,即有限状态转录机(Finite-State Transducer/FST)、加权有限状态接收机(Weighted Finite-State Acceptor/WFSA)、加权有限状态转录机(Weighted Finite-State Transducer/WFST)。其继承了FSA的基本特性,但是他们的输出不再局限于“接受”/“不接受”。

有限状态转录机(Finite-State Transducer/FST):其每个边上是一个pair<输入标签:输出标签>,如下图所示:

其中每个边的 pair 用“输入:输出”表示。

其描述了把一个接受的输入序列转换为另一个输出序列的转换规则。例如,输入序列为“abcd”时,输出序列为“zyxw”。

加权有限状态接收机(Weighted Finite-State Acceptor/WFSA):其每个边上增加了一个权重weight,此外初始状态和终止状态也有对应的初始weight和终止weight。其中weight通常表示状态跳转的概率或者代价,一条路径中的weight通过“乘法”累计,不同路径的weight通过“加法”累计。从而输出接受的不同路径的度量。WFSA如下图所示:

当输入状态为“abcd”时,输出为:0.5*1.2*0.7*3*2*0.1=0.252。

加权有限状态转录机(Weighted Finite-State Transducer/WFST):其每条边上不仅是一个pair<输入标签:输出标签>,还有对应的权重,此外初始状态和终止状态也有对应的初始weight和终止weight。WFST如下图所示:

当输入序列为“abcd”时,输出为“zyxw / 0.252”。

半环(Semiring):半环类似于环,这是一种代数结构,这里用来定义WFST的加权值,一个半环定义为。其中 K 是一个集合; 是在 K 上的“加法”和“乘法”;分别表示零元和幺元。一下是一些半环举例:

这样定义的好处是可以使WFST相关操作的表达式统一。例如当权重是概率时,路径总权重一般为相乘;当权重是损失时,路径总权重一般是相加 。分开定义会很冗杂,引入半环定义后,可以统一公式,在权重代表不同的意义时,即其在不同的半环集合中时,使用其对应的“加法”、“乘法”、零元和幺元即可。

1. 加权有限状态转录机(Weighted Finite-State Transducer/WFST)

WFST(Weight finite state transducer),带权有限状态转录器,可以用一个八元组进行表示:

         在语音识别解码器中,他包含了H、C、L、G这四个网络,通过一定的操作,形成了解码网络N。

一般网络构建流程如下:

只要复合的WFST构建完毕,解码器的工作就是对于给定的语音输入搜索最优的路径。如果模型没有发生变化,则WFST不需要更新(静态解码网络)。

1.1 四个网络

1)声学模型(H)

        在基于WFST的方法里,一个声学模型可以被看成一个转换机(transducer),其将输入的语音信号转化为一个上下文相关的phone(音子,音素)序列(HMM模型)。

一个典型的声学模型:

其中 :

s(t) 表示 s 右边有 phone t , 左边没有 phone

(s)s 表示左边有 phone s ,右边没有 phone

(s)s(t) 表示左边有 phone s ,右边没有 phone t

2)跨词三音子模型(H)

        声学模型的输出是上下文相关的因子序列。但是,L要求的输入是上下文无关的因子序列。所以需要C来把上下文相关的因子序列转换成上下文无关的。

3)发音词典(L)

对于每一个词,根据发音词典输入是一个(或者多个)子词单元的phone的序列,而输出是这个词。

以START、STOP、IT这几个词为例:

4)语言模型(G)

有限状态文法Finite State Grammar (FSG)和n-gram模型是在语音识别里被广泛使用的语言模型。

一个经典的FSG:

(有关n-gram:N-gram语言模型_章魚.的博客-CSDN博客)

1.2 四个操作:

        WFST常用的四个操作为:组合(Composition)、确定化(Determinization)、转移消除(-removal)、最小化(Minimization)(最小化前需要进行 权重规整(Weight-Pushing))。

1)组合(Composition)

        组合就是用来把两个不同层级的WFST“整合”成一个WFST。用一个串联的WFST模型序列生成单一的WFST,使得新WFST的输入输出关系与原WFST序列相同。

前提:串联。前一个WFST的输出属于后一个WFST的输入

算法公式如下:

基于Probability SR,其中“乘法”为 ×, “加法”为 +。(WFST中路径权值为概率等,即计算一条路径总权值 = 权值相乘时,常采用Probability SR)

举例组合如下两个 WFST :

组合结果如下:

其中代表 A 的第 a 个节点和 B 的第 b 个节点。

2)确定化(Determinization)

        如果从一个状态遇到一个字母会有两条及其以上的边,那么它就是非确定的。

确定化的算法就是把一个非确定的WFST转换成等价的确定的WFST的算法,确定化后,网络将变为唯一输入唯一输出。(与FSA相同)

举例非确定 WFSA 如下:

计算基于Tropical SR,“乘法”为 +;“加法”为 min;头结点的权重默认初始化为。(WFST中路径为损失等,即计算一条路径总权值 = 权值相加时,常采用Tropical SR)

对于 0 节点,下一状态为 1,2。计算新弧的权值如下:

其中 W(0)代表状态节点的权值,W(0-1)代表从 0 到 1 的转移弧上的权值。

即:

则状态1,2剩余权值计算如下:

即 剩余权重 = 上一状态权重 + 转移权重 - 已经有的转移权重:

同理可得:

则确定化第一次的WFST如下:

图中代表状态 i, 权重为 j。

此后将状态1,2当做一个状态,继续进行确定化操作,依次类推,即可得到如下确定化WFST:

去除计算量得新的WFST为:

可以举例计算,其路径权值与原网络相同。

3.1)权重规整(Weight-Pushing)

        语音识别问题可以转化为搜索最优路径。在构图时清除掉“绝路”能够有效缩短搜索时间。而且权重调整是最小化操作的必要条件,变换前后路径上的总权重相等。

思想是重分配WFST上的权重,使得权重尽可能提前。即把一个WFST所有路径的weight分布往初始状态push,但是不改变任何成功路径的weight。

举例 WFST 如下:

计算基于Tropical SR,“乘法”为 +;“加法”为 min;

1)首先计算各个节点相对于终止节点的“势”,如果有多条路径取最小值。

对于 0 状态点:

其中:

同理得:

故:

依次类推计算得其他状态“势”为:

2)调整初始和终止节点的权重。

调整后权重权重:

此处 V(0) 可以看做两部分,一部分为路径到达终止状态时“乘”上的权重(0.5),另一部分为所有从初始状态到结束状态路径中,最小的转移弧权值“乘积”,即其他任何路径的转移弧权值“乘积”都大于这一部分(2.0),方便讲解,暂将这一部分叫做最大公共“势”。

故可以将这两部分的权值提前。将最末尾“乘”上的权重提前到初始状态;每条路径都会有的转移弧权值“乘积”也“推”到初始状态。这样后续的路径计算只需要计算路径间的不同即可,减少计算量。

对于中间节点的权重,可以将其看做其所在子网络中的初始节点,即:

3)从起始状态依次调整转移弧权重

对于所有状态节点,有:

​​​​​​​

等式右边为以终止节点为 0 参照时,i 节点经过 j 节点的最大公共“势”;左边 为 i 节点已经有的势,Weight-Pushing要尽可能的把权重提前,故将剩余最大公共“势”全部赋值给最接近的这一条转移弧。

那么:

即:

​​​​​​​

依次计算得最后的网络为:

3.2)最小化(Minimization)

        最小化之前首先要保证网络已经确定化完毕,且经过权重规整(Weight-Pushing)。

最小化的目的是最小化状态的数量。

对于网络中 P 和 Q两个状态节点,如果从这两个节点出发到终止状态的所有路径上的所有字元和权重全部相同,则称 P 和 Q 等价,可以将他们合并成一个状态节点。。

4) 转移消除(-removal)

        转移消除(ε-removal)的作用,主要是去空弧,在WFST网络之中,ε是一个特殊的(输入和输出)符号,它代表空,没有输入/输出。输入符号为ε的跳转叫做ε-跳转,这个状态的跳转不需要任何输入符号就可以进行。

前期优化过程中留下、生成或引入空弧标记(例如组合声学模型(H)时,会引入大量空弧),最后进行去空弧操作减少整体复杂度。

以如下 WFSA 为例:

计算基于Tropical SR,“乘法”为 +;“加法”为 min;

要想消除空弧,即将空弧连接的节点看为一个节点,空弧连接路径最开始的节点为合并后的初始节点。

对于含有空弧的路径0-1-2-4:

对其他含空弧路径进行合并得到新的网络:

2.总结

WFST(Weight finite state transducer),带权有限状态转录器。

语音识别中,通过合理安排四个个操作( 组合(Composition)、确定化(Determinization)、转移消除(-removal)、最小化(Minimization))的顺序,将四个网络(声学模型(H)、跨词三音子模型(C)、发音词典(L)、语言模型(G))组合成高效的静态解码空间。

加权有限状态转录机(Weighted Finite-State Transducer/WFST)相关推荐

  1. lucene随笔-FST(Finite State Transducer)有限状态传感器

    lucene版本:6.5.1 有限状态传感器,FST(Finite State Transducer)在lucene中扮演着非常重要的一个角色,在4.0后的版本lucene大量使用了这种数据结构,主要 ...

  2. FST(Finite State Transducers, 有限状态转换器)简介及示例

    一.简介 Finite State Transducers 简称 FST, 中文名:有穷状态转换器.FST目前在语音识别和自然语言搜索.处理等方向被广泛应用. 例如,在自然语言处理中,经常会遇到一些针 ...

  3. 字典数据结构-FST(Finite State Transducers)

    http://www.cnblogs.com/LBSer/p/4119841.html 1 lucene字典 使用lucene进行查询不可避免都会使用到其提供的字典功能,即根据给定的term找到该te ...

  4. 有限状态机FSM(Finite State Machine)及实现方式介绍(转)

    原文:https://www.cnblogs.com/barrywxx/p/12860573.html 一.为什么引入有限状态机? 最近做一个项目,项目中很多实体(Entity),每个实体都有很多状态 ...

  5. 计算机态,(计算机)有限态自动机,FSM(finite state machine),音标,读音,翻译,英文例句,英语词典...

    补充资料:ω-有限自动机 ω-有限自动机 ω-finite state automata 1094·.一youx一anz}dongJ-..有限自动机(.一rinite state automata)一 ...

  6. 证明与计算(7): 有限状态机(Finite State Machine)

    什么是有限状态机(Finite State Machine)? 什么是确定性有限状态机(deterministic finite automaton, DFA )? 什么是非确定性有限状态机(nond ...

  7. 机器学习笔记(一)-局部加权回归(Locally weighted regression)LWR

    在网上通过看斯坦福大学的机器学习课程,觉得讲的非常好.同时,为了加强自己的记忆,决定将自己学到的东西和一些理解记录下来,希望有所收获.废话不多说,直接开始笔记: 局部加权回归(locally weig ...

  8. 有限状态机FSM(finite state machine) 二

    有限状态机FSM(finite state machine) 二 延续上一篇继续有限状态机 上一篇中的状态切换判断是在每一个状态类的 OnExecute 方法中各种 if else 硬编码逻辑 当状态 ...

  9. FSM(Finite State Machine,有限状态机)设计

    有限状态机(Finite State Machine, FSM),根据状态机的输出是否与输入有关,可分为Moore型状态机和Mealy型状态机.Moore型状态机输出仅仅与现态有关和Mealy型状态机 ...

  10. Verilog学习笔记HDLBits——Finite State Machines(1)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.Finite State Machines 1.Simple FSM 1(asychronous reset) 2 ...

最新文章

  1. Winform程序怎么降低占用的内存?
  2. python基本输入输出代码示例
  3. nyoj 14 会场安排问题(贪心专题)
  4. iOS学习笔记之typedef
  5. 如何方便的让你的集合引发改变事件
  6. oracle如何获取日期月份差,Oracle获取日期和月份
  7. Windows 8实用窍门系列:1.使用Xaml+C#开发第一个Metro Style应用程序
  8. chainmaker go.mod no such file or directory
  9. jquery 删除元素remove,empty
  10. rsync同步目录及同步文件
  11. c语言除法计算和取模计算
  12. aws saa考试费用是多少?aws saa考试准备多久才能考试?
  13. Android常见公有方法(隐藏虚拟按键/隐藏软键盘/获取屏幕宽高等)
  14. opencv和magick两个图像处理库的使用心得
  15. 程序员五一被拉去相亲,结果彻底搞懂了HTTP常用状态码
  16. C语言实现归并排序——2路归并排序
  17. 【JavaScript】 模块 module
  18. php 随机生成邮箱,php 生成随机帐号密码邮箱
  19. Xshell登录进入CentOS 6.5系统后,Python交互模式和数据库模式下,出现乱码的问题及解决方法
  20. Keil环境下完成一个基于STM32汇编程序的编写

热门文章

  1. Ubuntu20.04安装视频播放器SMPlayer
  2. android Wifi热点启动流程,[android]WIFI热点启动流程分析
  3. 微信小程序实现类似微信提现、支付宝提现充值等 “自定义键盘“可实现自定义右下角搜索内容,手写input功能view组件,实现焦点获取事件
  4. 【React】状态管理仓库 原生\封装\第三方
  5. 目标跟踪VOT2016的配置
  6. 重启该计算机 选择操作系统,电脑为什么会自动重启 电脑经常自动重启修复方法...
  7. python图形包是什么_介绍Python 图形计算工具包
  8. 桌面图标去掉小箭头的方法
  9. 很全的HTML5功能概述,温故而知新,可以为师矣!
  10. linux时间设置与同步--NTP