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
到底机器学到了什么?机器能够正确得回答问题,他是如何做到的?