HLP 研究的内容
Human Language Processing 研究的内容根据输入输出的不同,可以分为如下 6 种
从左到右,从上到下依次是
- ASR(Speech2Text)
- TTS(Text2Speech)
- Voice Conversion(Speech2Speech)
- Translation、Chat-Bot、Summarization、QA(Text2Text)
- Speaker Recognition(Speech2Class)
- Sentiment Analysis(Text2Class)
Speech2Text
语音转文字最典型的应用就是语音识别(Speech Reconition),也叫做 Automatic Speech Recognition,简称 ASR。早期的语音识别,往往采用基于 HMM 模型的算法,加上声学模型(Acoustic Model),语言模型(Language Model)和 词典(Lexicon)。虽然经过多年的研究,效果不错,但是算法流程复杂,模型很大,难以适应目前物联网发展中嵌入式 AI 对语音识别性能的要求
随着深度学习的发展以及轻量网络模型的推陈出新,现在的 ASR 往往是采用 Seq2Seq 方法,训练一个模型直接 end-to-end 得到最终结果。流程简单,效果逐年提升,而且模型可以做得很小,使得能够放置到手机、智能家居或者是物联网设备中
世界上的语言有 5000 多种,每种语言都可以拿来做语音识别。 因此按照语言的不同,又可以分为中文语音识别(Chinese ASR)、英文语音识别(English ASR)、西班牙语识别(Spanish ASR)等等。这些语言的差异,在于组成语句的颗粒不一样:比如中文由 4000 + 个汉字组成,汉字是组成句子的最小单位。英文的最小单位为 26 个英文字母,字母组成单词,单词组合成句子。当然,我们也可以做一个通用的语音识别系统,即输入任何一句话,他都要能输出对应的文本,这就是通用语音识别(General ASR)所追求的目标,不过目前看来,要实现这个目标,还为时尚早
Text2Speech
文字转语音最常见的应用就是语音合成(Text-to-Speech Synthesis)。这样的应用在生活中比比皆是。一个能够和人类互动的 robot,既要能够听懂人类说的话(ASR), 也要能够说出人类能够听得懂的话(TTS)。 中间 Text 到 Text 处理的过程就是自然语言处理(NLP)
现在做语音合成,也是采用 Seq2Seq 模型,和语音识别在模型的选择上并没有本质的不同,依然是深度学习 end-to-end 硬 train 一发,就完事了
Speech2Speech
该类任务有以下 3 种典型的应用场景
- Speech Denosing:语音去噪。将语音中的噪声部分去除,保留比较干净的信息
- Speech Separation:典型的场景如嘈杂的环境中有多人同时说话,通过语音分离,将每个人说的话,分别提取出来
- Voice Conversion:声音转换,例如柯南的变声器
Speech2Class
输入一段语音信号,输出一个类别。该类任务有以下三种典型的应用
- Speaker Recognition:语音识别,即依据你说话的声音来判断是不是同一个人,或者是哪一个人。类似于 Face Recognition,主要用在门禁、身份认证等领域
- Keyword Spotting:关键词检测,通常用在工业控制或者智能家居中;需要检测出语音中是否含有预先定义的几个关键词,如智能音响需要能够检测出 turn on/turn off/volumn up/volumn down 等少数几个关键词
- WakeUp words detect:一种特殊的 Keyword Spotting 的情形, 只需要判断语句中是否含有预先定义的唤醒词, 如 “hey Siri”,"Alexa", "OK Google"
Text2Text
这类任务就是 NLP 主要研究的领域,应用的方向非常之多。输出的内容含义不同,就可以实现不同的功能
可以看到,这类任务的应用包括自动翻译、文本摘要、聊天机器人、阅读理解、智能问答等等,甚至可以做语法剖析、词性标注; 虽然任务种类很多,但要说到模型选择,依然是那个你最熟悉的 Seq2Seq Model
Text2Class
这类任务的应用也非常广泛,举例如下
- 垃圾邮件分类
- 情感分析
- 文章主题分类
各类任务之间有什么联系?
可以看到,任务之间有相互对应的关系,比如 Text2Speech 和 Speech2Text 就是一对互相关联的任务。当 Word2Vec 诞生之后,以及各种各样 Pre-trained Model 的出现,使得 Text 和 Speech 在表达形式上达成了统一,都可以看作是二维 matrix. 因此,抛开信号在客观世界中的表现形式,所有的任务其实都是 Matrix2Matrix 之间的转化,都可以采用 Seq2Seq 的 supervised model 来处理
另外,对于输入为 Text 的三类任务,Pretrained-Model 使得输入的处理变得规范统一,BERT 家族的兴旺正是对于 Word2Vec 思想发扬光大,追求更好的单词向量表示的明证
而对于输出为 Text 的两类任务,在词语输出的顺序上研究人员存在分歧,这也导致出现了两类方法,Autogressive 和 Non-autoregressive。比方说下面的例子,非自回归会觉得应该先生成这个句子最重要的部分,也就是 "dream" 这个单词,然后模型会考虑谁是 "dream" 的主体,因此会生成 "I",之后模型会考虑 "I" 和 "dream" 之间的关系是什么,因此会生成 "have",最后模型考虑我有几个梦想?因此就会输出 "a"
HLP 领域还有哪些值得研究的课题
Unsupervised Learning
实际应用中,采用监督学习的方法,收集已经标注好的数据往往是非常困难的,因此是否可以从中进行学习是一个非常有价值的研究方向
以 Voice Conversion 为例:假如采用监督学习的思路,用 Seq2Seq 模型来进行处理,我们需要获取 SpeakA 和 SpeakB 关于同一个 text 的 speech,但实际上我们难以获取到这样的输入对。我们能采集到的是 Speak A 的语音集合和 Speak B 的语音集合, 这两个集合之间并没有一对一的对应关系
Few Shot Learning / One Shot Learning
同样以 Voice Conversion 为例,如果我们在实际生活中,只能获取到 Speaker A 或者是 Speaker B 很少的语音信息,甚至只有一条语音记录,那又该如何处理
Adversarial Attack
Adversarial Attack 在图像领域非常常见,最有名的就是 GAN 网络。而在 HLP 中,语音、文字也是可以做到的,举例来说:我们可以设计一个 Discriminator 判断一段声音是否是机器合成的
系统鲁棒性的追求,与欺诈的对抗是一个永不过时、永不停歇的课题
Explainable AI
到底机器学到了什么?机器能够正确得回答问题,他是如何做到的?