ASR语音识别—Fst热词模型

有限加权【热词】状态转换机(Weighted Finite State Transducers, WFST)

最近在做ASR语音识别任务,基于阿里FunASR框架,特此记录下跟热词模型相关知识。

wfst热词增强

热词构图,我们采用AC自动机结构进行热词网络构图,解决热词前缀重叠场景下难以有效激励的问题。例如热词列表包含“阳光保险”与“保定”两个热词,实际语音内容为“阳光保定”,在匹配到“定”时匹配失败则会根据AC自动机回退机制回退至“保定”热词路径,确保仍可继续匹配的最大子串路径可正常激励。

如下是热词网络实例图。

热词发现与匹配我们采用对主解码网络弧上ilabel音素/字符序列信息进行热词发现及匹配,而非在网络搜索出词时再对整词匹配,该方式优势是能够更早实现对尚未出词热词路径激励,避免热词路径被过早误裁减,其次也可避免由于热词分词结构不一致而导致匹配失败。

热词激励方式,我们采用过程渐进激励和整词激励相结合的方式,而非热词首字或尾字激励。采用仅首字激励方式可能存在部分case在热词后续字的解码过程中路径仍被裁剪掉的情况,而仅在尾字出词时施加激励则可能激励过晚。

过程渐进激励(incremental bias)对过程中每匹配成功一步即进行等量激励,如在后续扩展过程匹配失败则通过回退弧跳转进行激励减除。

整词激励(word bias)支持用户针对不同的热词做差异化的激励分配置,在热词整词出词时进一步施加对应的补偿或惩罚,进而提高热词综合效果。

FST热词是一种基于 有限状态转换器(Finite State Transducer)的关键词识别技术,它具有较高的准确率和实时性,适用于对大量文本进行快速匹配的场景。 但是,FST热词需要提前构建好词典和规则库,且不支持多语种和变体。

FST目前在语音识别和自然语言搜索、处理等方向被广泛应用。例如,在自然语言处理中,经常会遇到一些针对某些内容法则做出修改的操作,比如:如果c的后面紧接x的话,则把c变为b,FST则是基于这些规则上的数学操作,来把若干个规则整合成一个单程的大型规则,以有效提高基于规则的系统(rule-based system)的效率。其功能类似于字典的功能,但其查找是O(1)的,仅仅等于所查找的key长度。目前Lucene4.0在查找Term时就用到了该算法来确定此Term在字典中的位置。FST 可以表示成FST<Key, Value>的形式,我们可以用O(length(key))的复杂度,找到key所对应的值。除此之外,FST 还支持用Value来查找key以及查找Value最优的key等功能。在查找最优的Value时,会用到求最短路径的Dijikstra算法,但建图过程与此无关。

FST是一种用于映射输入符号序列到输出符号序列的有向图结构。它由一组状态组成,状态之间通过带有权重的转换(transitions)相连。每个转换关联输入符号、输出符号和权重(或代价),用于表示从一个状态转移到另一个状态时的条件。

FST与热词的结合

  • 提高权重或优先级FST可以通过增加热词的优先级或降低其识别权重,使得在解码过程中,热词的路径更容易被选择。
  • 热词优先通路:可以通过引入热词的专有路径(transition paths),使得这些词比其他普通词汇更容易通过FST的状态转换。
  • 增强精度通过调整FST中热词的权重或映射路径,系统在遇到热词时会优先选择包含热词的路径,从而提高识别或转换的准确率。

实现方法

  • 构建基础FST: 首先,需要基于词典或语言模型构建一个基础FST。这个FST将输入符号(如字母、音素或单词)映射到输出符号。在语音识别中,FST通常将输入的音素序列映射为单词。
  • 加入热词权重
    • 修改权重对热词的转换路径赋予更低的权重,降低其状态转换代价,使得解码器(decoder)在搜索时更倾向于选择这些路径。例如,使用一个加权的FST,可以将普通词的转换权重设为较大值,而将热词的权重设为较小值。
    • 插入额外路径将热词的路径单独插入到FST中,创建直接通路,以便系统在解码过程中直接选择这些热词而不需要复杂的转移。
  • 组合语言模型和热词FST在实际应用中,通常会将热词FST与其他语言模型(如N-gram或神经网络语言模型)结合起来。例如:
    • 使用热词FST作为一个小型的子图插入到更大规模的语言模型FST中。
    • 热词FST可以作为一个前端过滤器,预处理输入序列以优先选择热词的路径。
  • 动态插入热词: 热词列表可能会根据应用场景动态变化。例如,在语音助手中,用户可能会要求系统识别特定的品牌名称。在这种情况下,FST需要支持动态更新,即在运行时动态插入或删除热词路径。这可以通过以下几种方式实现:
    • On-the-fly 插入:根据实时需求,将新的热词添加到现有FST结构中,可能使用备用状态机或其他支持增量更新的FST实现。
    • 重构FST:当热词发生较大变化时,重新构建FST,以反映新的热词权重。

InternVL家族:通过开源组件缩小与商业多模态模型的差距 —— GPT-4o的开源替代方案

InternVL家族:用开源组件缩小与商业多模态模型的差距——一个开创性的开源替代方案,旨在平替GPT-4o

https://github.com/OpenGVLab/InternVL/

[🆕 博客] [🚀 InternVL2 博客] [🗨️ 对话Demo] [🤗 HF Demo] [📖 文档] [🌐 API] [🚀 快速开始]

[📜 InternVL 1.0 论文] [📜 InternVL 1.5 报告] [📖 1.0 中文解读] [📖 1.5 中文解读] [📖 2.0 中文解读]

我们的 InternVL2-Llama3-76B 在 OpenCompass 多模态排行榜上取得了比 GPT-4o 更高的分数。尽管这让我们感到兴奋,但我们必须指出,这个分数仅捕捉了模型性能的一部分,特别是在与视觉相关的任务方面。我们认识到,在指令跟随、用户体验、纯文本处理能力和整体理解能力等方面,我们的模型与 GPT-4 之间仍存在显著差距。我们致力于不断改进我们的模型,以更好地满足现实世界的应用需求。

书生·万象多模态大模型。万象,代表对多模态大模型的愿景,即理解真实世界一切事物和景象,实现全模态全任务的通用智能。它涵盖图像,视频,文字,语音、三维点云等5种模态,首创渐进式对齐训练,实现了首个与大语言模型对齐的视觉基础模型,通过模型”从小到大”、数据”从粗到精”的渐进式的训练策略,以1/5成本完成了大模型的训练。它在有限资源下展现出卓越的性能表现,横扫国内外开源大模型,媲美国际顶尖商业模型,同时也是国内首个在MMMU(多学科问答)上突破60的模型它在数学、图表分析、OCR等任务中表现优异,具备处理复杂多模态任务、真实世界感知方面的强大能力,是当之无愧的最强多模态开源大模型。

书生万象具有千亿规模参数,支持图像,视频,文字,语音、三维点云等模态。为了使模型能够支持丰富的输出格式,书生万象首次使用了向量链接技术,链接各领域专用解码器,打通梯度传输链路,实现通专融合,支持检测、分割、图像生成、视觉问答等百种细分任务,性能媲美各领域的专家模型。为了训练书生万象模型,我们从各类来源构建了最大图文交错数据集OmniCorpus,包含约160亿图像,3万亿文本词元,相比现有开源图文数据集 ,图像数量扩大了三倍,文本数量扩大了十倍。

传统的预训练范式直接使用大模型+大数据进行一步到位训练,需要大量的算力资源。为了提高训练效率,研究团队首创了渐进式训练策略,先利用小模型在海量带噪数据上进行高效预训练,然后再使用大模型在较少高质量精选数据上进行高效对齐,模型”从小到大”,数据”从粗到精”,仅需20%的算力资源即可取得同等效果。 采用这种训练策略,我们实现了首个与大模型对齐的视觉基础模型,同时,我们的多模态大模型,展现出卓越的性能,在MathVista(数学)、AI2D(科学图表)、MMBench(通用视觉问答)、MM-NIAH(多模态长文档)等评测上可比肩GPT-4o、Gemini 1.5 Pro等闭源商用大模型。

InternVL2系列基于以下设计构建:

1、渐进式与大型语言模型:我们引入了渐进式对齐训练策略,从而使第一个视觉基础模型与大型语言模型原生对齐。通过采用渐进式训练策略,即模型从小到大,而数据从粗到细,我们以相对较低的成本完成了大型模型的训练。这一方法在有限的资源下表现出了出色的性能。

2、多模式输入:通过一组参数,我们的模型支持多种输入模式,包括文本、图像、视频和医疗数据。

3、多任务输出:由我们最近的工作VisionLLMv 2提供支持,我们的模型支持各种输出格式,如图像,边界框和蒙版,展示了广泛的通用性。通过将MLLM与多个下游任务解码器连接,InternVL 2可以推广到数百个视觉语言任务,同时实现与专家模型相当的性能。

训练策略

性能:

InternVL2在处理复杂的多模态数据方面表现出强大的能力,在数学、科学图表、通用图表、文档、信息图表和OCR等任务中表现出色。例如,在MathVista基准测试中,InternVL2的准确率达到66.3%,大大超过了其他闭源商业模型和开源模型。此外,InternVL2在广泛的基准测试中实现了最先进的性能,包括通用图表基准测试ChartQA,文档基准测试DocVQA,信息图表基准测试InfographicVQA和通用视觉问答基准测试MMBench。

nameMMMU
(val)
MathVista
(testmini)
AI2D
(test)
ChartQA
(test)
DocVQA
(test)
InfoVQA
(test)
OCRBenchMMB-EN
(test)
MMB-CN
(test)
OpenCompass
(avg score)
GPT-4V*
(20240409)
63.1 / 61.758.189.478.187.267881.080.263.5
Gemini Pro 1.5*58.5 / 60.657.780.381.386.572.775473.973.864.4
Claude3.5-Sonnet*68.3 / 65.967.794.790.895.278879.780.767.9
GPT-4o*
(20240513)
69.1 / 69.263.894.285.792.873683.482.169.9
Cambrian-149.7 / 50.453.279.775.675.560081.458.3
LLaVA-NeXT Qwen1.550.149.080.479.785.780.5
InternVL2-Pro58.9 / 62.066.387.3 / 96.087.195.183.383787.887.271.8
nameMMMU
(val)
MathVista
(testmini)
AI2D
(test)
ChartQA
(test)
DocVQA
(test)
InfoVQA
(test)
OCRBenchMMB-EN
(test)
MMB-CN
(test)
OpenCompass
(avg score)
InternVL2-1B35.4 / 36.737.764.172.981.750.975465.460.748.3
InternVL2-2B34.3 / 36.346.374.176.286.958.978473.270.954.0
InternVL2-4B47.0 / 48.358.678.981.589.267.078878.673.960.6
InternVL2-8B49.3 / 51.258.383.883.391.674.879481.781.264.1
InternVL2-26B48.3 / 50.759.484.584.992.975.982583.482.066.4
InternVL2-40B53.9 / 55.263.787.186.293.978.783786.886.569.7
InternVL2-Llama3-76B55.2 / 58.265.587.688.494.182.083986.586.371.0
InternVL2-Pro58.9 / 62.066.387.3 / 96.087.195.183.383787.887.271.8

实例:

Mixtral 8x7B

  • 论文地址:https://arxiv.org/pdf/2401.04088.pdf
  • 项目地址:https://github.com/mistralai/mistral-src
  • 论文主页:https://mistral.ai/news/mixtral-of-experts/
专家层的混合。每个输入向量由路由器分配给 8 个专家中的 2 个。该层的输出是两个所选专家输出的加权和。在 Mixtral 中,专家是标准前馈块,就像普通变压器架构中一样

Mixtral 8x7B由法国的Mistral AI发布,性能直逼Llama2-70B,超越了GPT-3.5。此前,由于 OpenAI 团队一直对 GPT-4 的参数量和训练细节守口如瓶。Mistral 8x7B 的放出,无疑给广大开发者提供了一种「非常接近 GPT-4」的开源选项。要知道,很早之前就有人爆料,OpenAI 也是采用了「混合专家模型」(Mixture of Experts,MoE)的构架来搭建 GPT-4。

Mixtral 8x7B 是一种具有开放权重的稀疏专家混合模型 (Sparse Mixture of Experts : SMoE),在大多数基准测试中都优于 Llama 2 70B 和 GPT-3.5。Mixtral 可以在小批量大小下实现更快的推理速度,并在大批量大小下实现更高的吞吐量。Mixtral (即 Mixtral 8x7B)与单个 Mistral 7B 架构相同。Mistral 7B 模型同样来自这家法国人工智能初创公司 Mistral AI ,这篇论文发表于去年 10 月,在每个基准测试中,Mistral 7B 都优于 Llama 2 13B,并且在代码、数学和推理方面也优于 LLaMA 1 34B。

与 Mistral 7B 不同的是,Mixtral 8x7B 是一种仅包含解码器的模型,每层由 8 个前馈块(即专家)组成。对于每个 token,在每一层,路由器网络都会选择两名专家来处理当前状态并组合他们的输出。尽管每个 token 只看到两个专家,但所选的专家在每个时间步上都可能不同。因此,每个 token 可以访问 47B 参数,但在推理过程中仅使用 13B 激活参数
从这里我们也可以看出,Mixtral 8x7B 并不是大家认为的有 8 个 Mistral 7B 模型,名字中的 8 代表 8 个专家。

Mixtral 预训练上下文的大小为 32k,在多项基准测试中,它的性能达到或超过 Llama 2 70B 和 GPT-3.5。尤其是,Mixtral 在数学、代码生成和需要多语言理解的任务方面表现出了卓越的能力,并在这些领域显著优于 Llama 2 70B。实验表明,Mixtral 能够成功地从 32k token 的上下文窗口中检索信息,无论序列长度和信息在序列中的位置如何。
除了 Mixtral 8x7B,该研究还推出了 Mixtral 8x7B – Instruct 聊天模型,其性能在人类评估基准上明显超过了 GPT-3.5 Turbo、Claude-2.1、Gemini Pro 和 Llama 2 70B 聊天模型。在 BBQ 和 BOLD 等基准中,Mixtral – Instruct 也显示出更少的偏见。

不过,有研究者表示 Mixtral 中的专家似乎专注于语法而不是领域,特别是在初始层和最终层(参见路由分析部分)

Mixtral 8x7B 如此令人兴奋的原因在于它探索了一种新的架构范式,即「专家混合」的方法,与大多数 LLM 所遵循的方法形成鲜明的对比。MoE 结合了多个专家模型的优势来解决问题,在 MoE 中,仅使用一名或少数专家就能进行预测。这种方法有两个主要组成部分:

  • 路由器:决定对于给定输入信任哪个专家以及如何权衡每个专家对于特定输入的结果
  • 专家:专门研究问题不同方面的个体模型。

在 Mixtral 的案例中,有八位专家,其中两位是被选中的。我们接下来看具体细节。

架构细节

Mixtral 基于 Transformer 架构,支持上下文长度达到 32k token,并且前馈块被 Mixture-of-Expert(MoE)层取代。

稀疏专家混合

对于给定的输入 x,MoE 模块的输出由专家网络输出的加权和决定,其中权重由门控网络的输出给出。即给定 n 个专家网络 {E_0, E_i, …, E_(n−1)},则专家层的输出为:

这里,G (x)_i 表示第 i 个专家的门控网络的 n 维输出,E_i (x) 是第 i 个专家网络的输出。不过实现 G (x) 有多种替代方案,其中简单且高性能的方法是通过在线性层的 Top-K logits 上采用 softmax 来实现。即:

MoE 层可以在具有高性能专用内核的单个 GPU 上高效运行。例如,Megablocks 将 MoE 层的前馈网络(FFN)操作转换为大型稀疏矩阵乘法,显著提高了执行速度。此外,MoE 层可以通过标准模型并行技术以及一种称为专家并行 (EP) 的特殊分区策略分布到多个 GPU 上。 
在 MoE 层执行期间,本应由特定专家处理的 token 将被路由到相应的 GPU 进行处理,并且专家的输出将返回到原始 token 位置。
在 Transformer 模型中,MoE 层独立的应用于每个 token,并取代 Transformer 块的前馈 (FFN) 子块。对于 Mixtral,该研究使用与专家函数 E_i (x) 相同的 SwiGLU 架构,并设置 K = 2。这意味着每个 token 都被路由到具有不同权重集的两个 SwiGLU 子块。将所有这些放在一起,输入 token x 的输出 y 计算如下:

实验及结果

研究者将 Mixtral 与 Llama 进行了比较,并使用自己的评估 pipeline 重新运行了所有基准,以进行公平比较。该研究对以下各种任务的性能进行了测量:常识推理、世界知识、阅读理解、数学、代码等。具体任务详情见原论文.

表 2 列出了 Mixtral、Mistral 7B 和 Llama 2 7B/13B/70B 以及 Llama 1 34B 的详细结果。

图 2 比较了 Mixtral 和 Llama 在不同类别任务中的性能。在大多数指标上,Mixtral 都超过了 Llama 2 70B。特别是在代码和数学基准测试中,Mixtral 的表现更胜一筹。

研究者将 Mixtral 与 Llama 2 系列进行了比较。如图 3 所示,作为一个稀疏专家混合模型,Mixtral 每个 token 仅使用 13B 个激活参数。尽管激活参数减少了 5 倍,Mixtral 在大多数类别中仍然能够胜过 70 亿参数的 Llama 2。

多语言基准测试
与 Mistral 7B 相比,研究者在预训练时大幅提高了多语言数据的采样比例。额外的容量使 Mixtral 在多语言基准测试中表现出色,同时保持了较高的英语准确率。如表 4 所示,Mixtral 在法语、德语、西班牙语和意大利语方面的表现明显优于 Llama 2 70B。

长距离性能
图 4(左)结果表明,无论上下文长度或 passkey 在序列中的位置如何,Mixtral 的检索准确率都达到了 100%。图 4(右)显示,随着上下文大小的增加,Mixtral 在 proof-pile 数据集的一个子集上的困惑度单调降低。

图片

偏见基准测试
研究者使用他们自己的评估框架对 Llama 2 和 Mixtral 在 BBQ 和 BOLD 上进行基准测试,结果如表 5 所示。与 Llama 2 相比,Mixtral 在 BBQ 基准测试中展现出较少的偏见。在 BOLD 的中,更高的平均情感得分意味着更积极的情感,而更低的标准差表示该群组内的偏见较少。总体而言,Mixtral 比 Llama 2 显示出更积极的情感,并且各组内的差异类似。

图片

路由分析
研究者对路由器选择专家的情况进行了少量分析,他们尤其想知道在训练过程中,一些专家是否专攻某些特定领域,如数学、生物学、哲学等。
为了研究这一点,研究者测量了在 The Pile 验证数据集的不同子集中所选专家的分布情况。图 7 展示了第 0 层、第 15 层和第 31 层的结果。

图片

令人惊讶的是,研究者在根据主题分配专家时没有观察到明显的模式。例如,在所有层中,ArXiv 论文(用 Latex 编写)、生物学(PubMed Abstracts)和哲学(PhilPapers)文档的专家分配分布非常相似。只有在 DM 数学中,专家的分布略有不同。
这表明路由器表现出一些结构化的语法行为。
图 8 显示了不同领域(Python 代码、数学和英语)的文本示例,其中每个 token 都用与其所选专家相对应的背景色突出显示。从图 8 中可以看到,连续的 token 往往被分配给相同的专家。
每个 token 都用第一个专家选择着色。专家的选择似乎更符合语法而不是领域,特别是在初始层和最后层。

图片

表 5 显示了每个领域和层中连续 token 获得相同专家分配的比例。对于较高的层,重复连续分配的比例明显高于随机分配。

图片