微软研究院在IJCAI2016第一天的Tutorial上讲述了自己将深度学习、深度神经网络应用于语义理解上的一些经验和收获。作为小娜和小冰的开发者,微软在自然预言语义理解上的造诣无疑是很高的。而早在一月就将其深度学习开发工具包CNTK开源的举动也表明微软确实希望促进人工智能的发展。这次就让我们通过Tutorial上演讲PPT的概览部分,看看微软在他们最擅长的语义识别领域会分享给我们一些什么样的经验。我们将PPT的文字翻译直接放在了幻灯片内,有兴趣的读者可以点开大图查看,不过大家也可以直接观看我们在每张图后写下的注解,一样能帮你理解微软的意思。
微软首先介绍了深度神经网络的简要历史。经过了上图中所示技术爆发点,幻灭的低谷,生产平稳期,膨胀期望巅峰等几个阶段。终于迎来了新的高潮。
在2013年,深度学习成为了MIT评选的年度十大科技突破之一。
而对深度学习的学术研究也从2012年开始到2015年出现爆发式的增长。在NIPS 2015会议中集中爆发,典型的证据就是主会场内的相关研究参与人数有了巨大增长,相关话题的指导报告更是增加了100%还多。
2012年纽约时报的报道“科学家们在深度学习上看到了希望”被视为深度学习崛起的标志之一。
DNN是一种完全连接的深度神经网络,简单来说,先训练每个都含有一个隐含层的生产力模型,然后把它们组合成一个深度信任网络,然后添加输出并利用反向传播来训练DNN网络。
上图是微软在各种领域对基于深度学习的语义识别的应用。
今天微软要讲的这个指南的焦点,并非集中在语音识别或者图像识别上,而是语音文本的处理和理解,一共分为5部分
上图是一个需求分类问题的举例,比如输入一个问题:丹佛市中心的寿司店,但这个店属于餐馆,酒店,夜店,航班那个领域的店或者馆呢?这个是需要搜索引擎更加细化分类的。
上图给出了一个单神经元模型的原理,当输入一个X值后,函数最终会将其通过logistic回归进行分类,决定是否要给Y加上标签,并与事先准备好的标签核对。以此来完成学习的过程。
上图是单个的神经元模型,把一个数值转化为概率,然后把概率转化为一个非线性激活函数,再进行logistic回归。
在上图中,微软给出了训练模型的思路,由于是只有一个神经元组成的神经网络,因此方法比较简单,要训练的数据集是一组由二维数组组成的数对。
训练参数的过程,就是不断的更换w,使得损失函数最小。具体方式是使用随机梯度下降,将所有训练样本更新直到函数收敛。
实际问题基本不可能用单个神经元的网络就能解决。上图是一个多层神经网络的流程图,实际上也和目前绝大多数的神经网络结构类似。如果我们忽略下部的结构,只看输入层、最上面的一层隐含层和输出层,我们就会发现这正是一个单神经元神经网络的架构示意。而包含了下面的其他隐含层之后,就是一个多层神经元的结构了,将原始数据(词语向量)输入隐藏层中,经过参数w的投射生成新的向量,这个过程就称作特性生成。
可以看到,标准机器学习的过程同深度学习最大的区别,正在于特征训练的方式,传统的特征训练需要开发者手动提取特征,显得比较累。而深度学习可以自动从训练数据中学习到特征。显得灵活很多,不过代价就是函数优化和参数选择等的工作量会更重。
为什么要使用多个隐含层呢?毫无疑问的,适当增加隐藏层会让算法的效果更好。对特征的学习和转换也更灵活。类似深度学习用于图像识别时的像素→边缘→纹理→主题→局部→物体整体的过程。深度学习用于文本分析的时候也遵循了一个从字母→单词→词组→从句→句子→整个故事的过程。训练层数越多,对这些特征的描述就越精确。最终提取出来的效果也会越好。
DNN有许多中不同的表现形式,它们分别有各自的应用场景和优势。在此微软将其分为了三大类和六小类:
分类任务——通过X将Y分类标注
主要应用:多层感知机,卷积神经网络。
分级任务——通过计算X和Y的加权和进行分级。
主要应用:暹罗神经网络、深度语义相似模型
文本生成任务:由X的值生成Y
主要应用:序列对序列网络、记忆网络
在上图中,微软开始讲解一个具体的例子:深度语义相似模型(DSSM)。这种模型的处理方式是使用X和Y组成的文本流来计算语义相似度。方式是使用深度神经网络先在潜在语义空间建立一个x和y的两个特征向量。然后计算特征向量之间的余弦相似程度。
上两图是一个具体的原理图。表现了计算相似语义空间的方法,而最后一张图给出了一个基于此方法的整个卷积DSSM网络的示意图和原理说明。
总结:
深度学习曾被认为不适合用来做语义理解。主要是因为词语之间的相似程度与其含义的相似程度并无太大关系。词表的出现一定程度上解决了这个问题。而现在,深度学习在语义理解上的障碍已经基本不存在了,微软此次提供的思路也是一个很好的参考。相信应用上了深度学习的语义理解程序的表现将会有极大的提升。
雷锋网将持续关注IJCAI大会的最新消息,为大家带来AI科研领域的最新消息,欢迎持续关注。