语音识别语言模型介绍
语言模型技术广泛应用于语音识别、OCR、机器翻译、输入法等产品上。语言模型建模过程中,包括词典、语料、模型选择,对产品的性能有至关重要的影响。语言模型的建模需要利用复杂的模型公式进行模拟计算,是人工智能领域的关键技术之一。
1. 语言模型的背景
语言模型是针对某种语言建立的概率模型,目的是建立一个能够描述给定词序列在语言中的出现的概率的分布。给定下边两句话:
定义机器人时代的大脑引擎,让生活更便捷、更有趣、更安全。
代时人机器定义引擎的大脑,生活让更便捷,有趣更,安更全。
语言模型会告诉你,第一句话的概率更高,更像一句”人话”。
语言模型技术广泛应用于语音识别、OCR、机器翻译、输入法等产品上。语言模型建模过程中,包括词典、语料、模型选择,对产品的性能有至关重要的影响。Ngram模型是最常用的建模技术,采用了马尔科夫假设,目前广泛地应用于工业界。
2. 语言模型的技术难点
语言模型的性能,很大程度上取决于语料的质量和体量。和特定任务匹配的大语料,永远是最重要的。但是实际应用中,这样的语料往往可遇不可求。
传统的ngram建模技术,对长距离的依赖处理的欠佳。如工业界常用的四元模型,即当前词的概率,只依赖三个历史词。因此,更远距离的历史词在建模中,没有对当前词概率产生影响。
此外,ngram模型建模的参数空间过于庞大。同样以四元模型为例,词典大小为V,参数空间就是。实际应用中V大小为几万到几百万,可想而知,参数空间有多大。在这样的参数规模下,多大的数据显得都有些稀疏。
近年来提出的神经网络语言模型技术,一定程度上解决了参数空间大,长距离依赖的问题。而且对于相似的词,概率估计上自带一定程度的平滑,从另一个角度解决了数据稀疏的问题。但是神经网络语言模型的缺点是训练时间长,实际应用中查询速度较慢,需要结合硬件做加速。
3. Ngram语言模型
如上所说,ngram语言模型是应用最常见的语言模型。它采用了n元依赖假设,即当前词的概率,只依赖于前n-1个词。即
不考虑平滑,模型概率估计使用最大似然概率:
这种估计理解起来比较简单,即当前历史词下出现当前词,占当前历史词下出现所有可能词的比重。然而这种估计方法,会遇到我们上述提到的参数空间过大的问题。语料中不可能覆盖个估计场景,肯定会有很多零点,如果使用最大似然,最后很多句子的概率都会是0,这会导致ngram基本不可用。
4. 平滑技术
平滑技术,可以说是ngram得以应用的重要原因,它很好地解决了参数空间大,数据稀疏的问题。工业应用中,最常用的是Katz平滑和KN平滑技术。
平滑理解起来很简单,就是把概率高的文法进行折扣,折扣出来的概率分给低概率的文法,即“劫富济贫”。以下图为例,即将w1到w4的概率,分给w5到w10。
加一平滑是最简单的平滑算法,可以帮助我们理解平滑的本质。所有的文法的频次都加1,这样就不存在概率为0的文法了。反之,高频词文法的概率得到了一定程度的降低。
5. 语言模型的评价指标
交叉熵和困惑度是用来评估语言模型最重要的两个指标。
交叉熵(cross entropy)的定义来自预测概率与压缩算法的关系,给定语言模型下可以得到一个压缩算法,对一个概率为p(s)的句子,用-p(s)bits保存该句子。交叉熵可以理解为,在给定语言模型下的压缩算法,对句子中每个词需要的平均bits数。
交叉熵一般用下面的公式计算,m为概率p的模型:
这个值即为困惑度(ppl)。从直觉上,我们可以把困惑度理解为在随机实验中选择随机变量的加权平均数。越小的困惑度对应一个越好的语言模型,语言模型的预测能力越强。
此外,实际产品中的性能,如语音识别中的字错误率,输入法中的句准确率等,也是衡量模型好坏的标准。
6. 语言模型技术的最新进展
语言模型的最新进展,主要集中在神经网络的应用上。Bengio最早提出nnlm,将几个历史词拼在一起作为输入,将当前词放在输出层作为目标。为了解决词典的高维数问题,nnlm利用了映射层,对输入进行降维。Nnlm属于连续型模型,自带平滑,对相同的词历史有一定的聚类功能,一定程度上增加了模型的鲁棒性。如果和ngram模型进行融合,实验中会获得进一步的提升。
因Rnn在序列建模上有很大的优势,Mikolov在nnlm上的基础上,提出了rnnlm。Rnnlm将词历史抽象成一个state,降低了输入维数。此外,为了解决输出维数,将输出层的词进行聚类,通过因式分解,降低了计算复杂度。
Mikolov的rnnlm之后,lstm、cnn在语言模型上也有研究陆续在跟进。此外,在输入层,引入语义特征,也会带来性能的提升。语言模型作为语音识别、OCR、输入法等产品中的重要模型,未来如何融合语义和产品、提升用户体验,我们充满期待。
原文连接
语音识别语言模型介绍相关推荐
- 语音识别声学模型介绍
关于声学模型,主要有两个问题,分别是特征向量序列的可变长和音频信号的丰富变化性.可变长特征向量序列问题在学术上通常有动态时间规划(Dynamic Time Warping, DTW)和隐马尔科夫模型( ...
- 人工智能:语音识别技术介绍
❤️作者主页:IT技术分享社区 ❤️作者简介:大家好,我是IT技术分享社区的博主,从事C#.Java开发九年,对数据库.C#.Java.前端.运维.电脑技巧等经验丰富. ❤️个人荣誉: 数据库领域优质 ...
- 语音识别中的WFST和语言模型
导读 在语音识别系统中,有限加权状态转换机(Weighted Finite State Transducers, WFST)扮演着重要角色.本文主要介绍发音词典.语言模型和WFST的原理,以及在实践过 ...
- 语音识别一、语音识别介绍
语音识别就是将包含文字信息的语音通过计算机转化成文字的过程,也叫语音转写,英文叫automatic speech recognition(ASR)或者 speech to text(STT),语音识别 ...
- 语言模型自然语言处理[置顶] 哥伦比亚大学 自然语言处理 公开课 授课讲稿 翻译(四)...
每日一贴,今天的内容关键字为语言模型自然语言处理 媒介:灵机一动看了一个自然语言处理公开课,大牛柯林斯讲解的.认为很好,就自己动手把它的讲稿翻译成中文.一方面,希望通过这个翻译过程,让自己更加理解大牛 ...
- 一文读懂“大语言模型”
1.背景 本文基于谷歌云的官方视频:<Introduction to Large Language Models> ,使用 ChatGPT4 整理而成,希望对大家入门大语言模型有帮助. 本 ...
- [我们是这样理解语言的-2]统计语言模型
[我们是这样理解语言的-2]统计语言模型 2015/02/28 搜索技术.自然语言处理 LM.n-gram.NLP.统计语言模型.自然语言处理.语言模型 fandywang 记得最早学习语言模型是在研 ...
- python androidhelper 语音识字_Android语音播报、后台播报、语音识别
Android语音播报.后台播报.语音识别 本文介绍使用讯飞语音实现语音播报.语音识别功能. 程序效果图: 简单的XML布局 xml version="1.0" encoding= ...
- 深入浅出讲解语言模型
转载自 深入浅出讲解语言模型 深入浅出讲解语言模型 1.什么是语言模型呢? 简单地说,语言模型就是用来计算一个句子的概率的模型,也就是判断一句话是否是人话的概率? 那么如何计算一个句子的概率呢?给定 ...
- 教你在win10系统开启和使用语音识别
Win10系统怎么开启语音识别?win10系统怎么使用语音识别?win10怎么关闭语音识别?win10的语音识别功能经过微软长时间的开发,在win10系统中已经能准确识别了.那么在win10系统中,如 ...
最新文章
- ORB_SLAM2代码阅读(1)——系统入口
- 总结三种 MySQL 大表优化方案
- XML(一)XML大揭秘
- 源码mysql5.7安装过程_mysql5.7 源码安装步骤
- brew 安装软件能指定文件夹吗_Mac下Homebrew安装的软件放在什么地方
- Java进阶:SpringMVC文件上传
- java动态代理_Java核心 -- 动态代理
- python爬取天天基金网_Python爬虫日记二:爬取天天基金网
- Matlab 多项式展开或化简(即提取公因式
- SpringCloud 配置管理:Nacos
- 看董事长陈睿11周年演讲,一起了解B站未来的三个使命吧
- 全面解析Linux 内核 3.10.x - Device Tree 详解
- 【华人学者风采】胡事民 清华大学
- 如果实现类似微信附近的人功能
- Google Chrome浏览器字体模糊不清
- IPD管理体系中的产品和技术研发执行团队
- LattePanda入手笔记
- 决策树(2.回归树)
- STC15系列单片机与 OV7670 SCCB通讯
- hdu 1541 树状数组版)——咯咯