设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 手机 数据 公司
当前位置: 首页 > 运营中心 > 建站资源 > 经验 > 正文

60年技术简史,带你读懂AI的前世今生(4)

发布时间:2019-07-08 17:52 所属栏目:19 来源:佚名
导读:半监督学习这里指的是通过未标注的图片来预训练学习特征,然后用少量监督的数据进行学习。最新的文章是Google DeepMind的《Data-Efficient Image Recognition with Contrastive Predictive Coding》。这篇文章通过C

半监督学习这里指的是通过未标注的图片来预训练学习特征,然后用少量监督的数据进行学习。最新的文章是Google DeepMind的《Data-Efficient Image Recognition with Contrastive Predictive Coding》。这篇文章通过Contrastive Predictive Coding的方法来从大量未标注的数据量提取特征。在这些特征上简单的加上一个线性的softmax层,在ImageNet上就可以超过使用AlexNet有监督学习的模型。

如果每个类的训练数据只有13个,则本文的方法比只用13个数据训练的模型的Top-5准确率要高20%,比之前最好的半监督模型高10%。传统的很多无监督的特征在少量数据会比较好,但是当数据量足够多的时候会比完全的监督学习要差,但是本文的方法得到的特征使用全部的ImageNet数据训练,也可以达到和完全监督学习类似的效果,这说明它学到的特征足够好。

语音识别

语音识别系统是一个非常复杂的系统,在深度学习技术之前的主流系统都是基于HMM模型。它通常时候HMM-GMM来建模subword unit(比如triphone),通过发音词典来把subword unit的HMM拼接成词的HMM,最后解码器还要加入语言模型最终来融合声学模型和语言模型在巨大的搜索空间里寻找最优的路径。

Hinton一直在尝试使用深度神经网络来改进语音识别系统,最早(2006年后)的工作是2009年发表的《Deep belief networks for phone recognition》,这正是Pretraining流行的时期,把DBN从计算机视觉用到语音识别是非常自然的想法。类似的工作包括2010年的《Phone Recognition using Restricted Boltzmann Machines》。但是这些工作只是进行最简单的phone分类,也就是判断每一帧对应的phone,这距离连续语音识别还相差的非常远。

真正把深度神经网络用于语音识别的重要文章是Hinton等人2012年《Deep Neural Networks for Acoustic Modeling in Speech Recognition》的文章,这篇文章使用DNN替代了传统HMM-GMM声学模型里的GMM模型,从此语音识别的主流框架变成了HMM-DNN的模型。接着在2013年Sainath等人在《Deep convolutional neural networks for LVCSR》用CNN替代普通的全连接网络。从George等人的文章《Improving deep neural networks for LVCSR using rectified linear units and dropout》也可以发现在计算机视觉常用的一些技巧也用到了语音识别上。

前面的HMM-DNN虽然使用了深度神经网络来替代GMM,但是HMM和后面的N-gram语言模型仍然存在,而且DNN本身的训练还需要使用HMM-GMM的强制对齐来提供帧级别的训练数据。

怎么构建一个End-to-end的语音识别系统一直是学术界关注的重点。RNN我们现在处理时序数据的有力武器,2013年的时候Graves等人在论文《Speech Recognition with Deep Recurrent Neural Networks》里把RNN用于了语音识别。这篇文章使用了RNN加上CTC损失函数,CTC是后来的Deep Speech的核心。虽然”真正”把CTC用于语音识别是在2013年,但是Graves却是早在2006年的时候就在论文《Connectionist temporal classification: labelling unsegmented sequence data with recurrent neural networks》提出了CTC。

Hannun等人在2014年提出的《Deep Speech: Scaling up end-to-end speech recognition》是首个效果能和HMM-DNN媲美的End-to-end系统,包括后续的《Deep Speech 2: End-to-End Speech Recognition in English and Mandarin》。Deep Speech的系统非常简单,输入是特征序列,输出就是字符序列,没有HMM、GMM、发音词典这些模块,甚至没有phone的概念。

除了基于CTC损失函数的End-to-end系统,另外一类End-to-end系统借鉴了机器翻译等系统常用的seq2seq模型。这包括最早的《Listen, attend and spell: A neural network for large vocabulary conversational speech recognition》,Google的《State-of-the-art Speech Recognition With Sequence-to-Sequence Models》总结了用于语音识别的SOTA的一些Seq2Seq模型,并且称他们在实际的系统中使用了这个模型之后词错误率从原来的6.7%下降到5.6%。这是首个在业界真正得到应用的End-to-end的语音识别系统(虽然Andrew Ng领导的百度IDL提出了Deep Speech和Deep Speech2,但是在百度的实际系统中并没有使用它)。

下图是常见数据集上的效果,拿SwitchBoard为例,在2006年之前的进展是比较缓慢的,但是在使用了深度学习之后,词错误率持续下降,图中是2017年的数据,微软的系统已经降到了6.3%的词错误率。

60年技术简史,带你读懂AI的前世今生


图:词错误率变化

自然语言处理

和语音识别不同,自然语言处理是一个很”庞杂”的领域,语音识别就一个任务——把声音变成文字,即使加上相关的语音合成、说话人识别等任务,也远远无法和自然语言处理任务数量相比。自然语言处理的终极目标是让机器理解人类的语言,理解是一个很模糊的概念。相对论的每个词的含义我都可能知道,但是并不代表我理解了相对论。

因为这个原因,在这里我关注的是比较普适性的方法,这些方法能用到很多的子领域而不是局限于某个具体的任务。

自然语言和连续的语音与图像不同,它是人类创造的离散抽象的符号系统。传统的特征表示都是离散的稀疏的表示方法,其泛化能力都很差。比如训练数据中出现了很多”北京天气”,但是没有怎么出现”上海天气”,那么它在分类的时候预测的分数会相差很大。但是”北京”和”上海”很可能经常在相似的上下文出现,这种表示方法无法利用这样的信息。

在2003年到时候,Bengio在论文《A Neural Probabilistic Language Model》就提出了神经网络的语言模型,通过Embedding矩阵把一个词编码成一个低维稠密的向量,这样实现相似上下文的共享——比如”北京”和”上海”经常在相似的上下文出现,则它们会被编码成比较相似的向量,这样即使”上海天气”在训练数据中不怎么出现,也能通过”北京天气”给予其较大的概率。

不过2003年的时候大家并不怎么关注神经网络,因此这篇文章当时并没有太多后续的工作。到了2012年之后,深度神经网络在计算机视觉和语音识别等领域取得了重大的进展,把它应用到自然语言处理领域也是非常自然的事情。但是这个时候面临一个问题——没有大量有监督的标注数据。这其实也是前面提到的自然语言处理是很”庞杂”的有关。

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读