Human Language Processing研究的内容根据输入输出的不同,可以分为如下6种
从左到右,从上到下依次是
语音转文字最典型的应用就是语音识别(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)所追求的目标,不过目前看来,要实现这个目标,还为时尚早
文字转语音最常见的应用就是语音合成(Text-to-Speech Synthesis)。这样的应用在生活中比比皆是。一个能够和人类互动的robot,既要能够听懂人类说的话(ASR), 也要能够说出人类能够听得懂的话(TTS)。 中间Text到Text处理的过程就是自然语言处理(NLP)
现在做语音合成,也是采用Seq2Seq模型,和语音识别在模型的选择上并没有本质的不同,依然是深度学习end-to-end硬train一发,就完事了
该类任务有以下3种典型的应用场景
输入一段语音信号,输出一个类别。该类任务有以下三种典型的应用
这类任务就是NLP主要研究的领域,应用的方向非常之多。输出的内容含义不同,就可以实现不同的功能
可以看到,这类任务的应用包括自动翻译、文本摘要、聊天机器人、阅读理解、智能问答等等,甚至可以做语法剖析、词性标注; 虽然任务种类很多,但要说到模型选择,依然是那个你最熟悉的Seq2Seq Model
这类任务的应用也非常广泛,举例如下
可以看到,任务之间有相互对应的关系,比如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"
实际应用中,采用监督学习的方法,收集已经标注好的数据往往是非常困难的,因此是否可以从中进行学习是一个非常有价值的研究方向
以Voice Conversion为例:假如采用监督学习的思路,用Seq2Seq模型来进行处理,我们需要获取SpeakA和SpeakB 关于同一个text的speech,但实际上我们难以获取到这样的输入对。我们能采集到的是Speak A的语音集合和Speak B的语音集合, 这两个集合之间并没有一对一的对应关系
同样以Voice Conversion为例,如果我们在实际生活中,只能获取到Speaker A或者是Speaker B很少的语音信息,甚至只有一条语音记录,那又该如何处理
Adversarial Attack在图像领域非常常见,最有名的就是GAN网络。而在HLP中,语音、文字也是可以做到的,举例来说:我们可以设计一个Discriminator判断一段声音是否是机器合成的
系统鲁棒性的追求,与欺诈的对抗是一个永不过时、永不停歇的课题
到底机器学到了什么?机器能够正确得回答问题,他是如何做到的?